@flowscripter/dynamic-cli-framework 1.2.2 → 1.3.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 (166) hide show
  1. package/README/core-service-providers.md +2 -2
  2. package/README/development.md +3 -6
  3. package/README/implementation-details.md +17 -17
  4. package/README/key-concepts.md +17 -17
  5. package/README.md +4 -4
  6. package/bun.lock +0 -2
  7. package/index.ts +22 -30
  8. package/package.json +19 -19
  9. package/src/api/argument/Argument.ts +1 -1
  10. package/src/api/argument/ArgumentValueTypes.ts +3 -10
  11. package/src/api/argument/ComplexOption.ts +5 -9
  12. package/src/api/command/GlobalCommand.ts +1 -4
  13. package/src/api/service/core/ArgumentPrompterService.ts +1 -3
  14. package/src/api/service/core/AsciiBannerGeneratorService.ts +1 -4
  15. package/src/api/service/core/CompletionService.ts +2 -6
  16. package/src/api/service/core/ImagePrinterService.ts +1 -2
  17. package/src/api/service/core/KeyValueService.ts +1 -2
  18. package/src/api/service/core/PrettyPrinterService.ts +1 -4
  19. package/src/api/service/core/PrinterService.ts +8 -9
  20. package/src/api/service/core/PrompterService.ts +4 -11
  21. package/src/api/service/core/ShutdownService.ts +1 -2
  22. package/src/api/service/core/SyntaxHighlighterService.ts +1 -5
  23. package/src/api/service/core/Table.ts +7 -25
  24. package/src/api/service/core/TreePrinterService.ts +1 -2
  25. package/src/cli/BaseCLI.ts +17 -47
  26. package/src/cli/DefaultRuntimeCLI.ts +1 -4
  27. package/src/command/CompletionCommand.ts +19 -45
  28. package/src/command/MultiCommandCliHelpCommand.ts +45 -92
  29. package/src/command/SingleCommandCliHelpCommand.ts +17 -28
  30. package/src/command/UsageCommand.ts +6 -12
  31. package/src/command/VersionCommand.ts +2 -6
  32. package/src/launcher.ts +4 -2
  33. package/src/runtime/DefaultContext.ts +2 -5
  34. package/src/runtime/argument/ArgumentTypeGuards.ts +1 -3
  35. package/src/runtime/command/CommandTypeGuards.ts +5 -14
  36. package/src/runtime/command/CommandValidator.ts +56 -118
  37. package/src/runtime/parser.ts +13 -17
  38. package/src/runtime/registry/CommandRegistry.ts +2 -7
  39. package/src/runtime/registry/DefaultCommandRegistry.ts +32 -84
  40. package/src/runtime/registry/DefaultServiceProviderRegistry.ts +3 -9
  41. package/src/runtime/runner.ts +103 -142
  42. package/src/runtime/scanner.ts +28 -46
  43. package/src/runtime/values/ValuePopulationResult.ts +1 -2
  44. package/src/runtime/values/argumentValueMerge.ts +16 -28
  45. package/src/runtime/values/argumentValueValidation.ts +21 -67
  46. package/src/runtime/values/globalCommandValuePopulation.ts +9 -18
  47. package/src/runtime/values/subCommandValuePopulation.ts +42 -65
  48. package/src/service/argumentPrompter/ArgumentPrompterServiceProvider.ts +3 -10
  49. package/src/service/argumentPrompter/DefaultArgumentPrompterService.ts +22 -59
  50. package/src/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.ts +5 -14
  51. package/src/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.ts +59 -77
  52. package/src/service/banner/BannerServiceProvider.ts +13 -35
  53. package/src/service/banner/command/NoBannerCommand.ts +2 -8
  54. package/src/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.ts +5 -10
  55. package/src/service/completion/CompletionServiceProvider.ts +20 -48
  56. package/src/service/completion/DefaultCompletionService.ts +17 -56
  57. package/src/service/completion/shell/ShellHandler.ts +1 -3
  58. package/src/service/completion/shell/fish.ts +1 -1
  59. package/src/service/completion/shell/powershell.ts +2 -12
  60. package/src/service/completion/shell/zsh.ts +1 -1
  61. package/src/service/configuration/ConfigurationServiceProvider.ts +40 -133
  62. package/src/service/configuration/DefaultKeyValueService.ts +6 -20
  63. package/src/service/configuration/DefaultSecretService.ts +10 -14
  64. package/src/service/configuration/command/ConfigCommand.ts +1 -4
  65. package/src/service/configuration/command/DumpConfigCommand.ts +9 -21
  66. package/src/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.ts +5 -14
  67. package/src/service/dataDumpGenerator/DefaultDataDumpGeneratorService.ts +5 -12
  68. package/src/service/imagePrinter/DefaultImagePrinterService.ts +1 -5
  69. package/src/service/imagePrinter/ImagePrinterServiceProvider.ts +1 -4
  70. package/src/service/prettyPrinter/DefaultPrettyPrinterService.ts +4 -12
  71. package/src/service/prettyPrinter/PrettyPrinterServiceProvider.ts +3 -10
  72. package/src/service/printer/DefaultPrinterService.ts +20 -83
  73. package/src/service/printer/PrinterServiceProvider.ts +3 -11
  74. package/src/service/printer/command/DarkModeCommand.ts +3 -10
  75. package/src/service/printer/command/LogLevelCommand.ts +7 -26
  76. package/src/service/printer/command/NoColorCommand.ts +3 -10
  77. package/src/service/printer/command/NoHyperlinksCommand.ts +3 -10
  78. package/src/service/printer/terminal/Progress.ts +99 -90
  79. package/src/service/printer/terminal/Spinner.ts +7 -26
  80. package/src/service/prompter/DefaultPrompterService.ts +2 -6
  81. package/src/service/prompter/PrompterServiceProvider.ts +3 -11
  82. package/src/service/prompter/command/NoPromptCommand.ts +3 -10
  83. package/src/service/prompter/prompt/PromptContext.ts +5 -18
  84. package/src/service/prompter/prompt/promptMultiSelect.ts +6 -21
  85. package/src/service/prompter/prompt/promptOpenUrl.ts +7 -22
  86. package/src/service/prompter/prompt/promptSingleSelect.ts +6 -23
  87. package/src/service/prompter/prompt/promptText.ts +10 -27
  88. package/src/service/prompter/prompt/promptToggle.ts +8 -8
  89. package/src/service/shutdown/ShutdownServiceProvider.ts +3 -10
  90. package/src/service/syntaxHighlighter/DefaultSyntaxHighlighterService.ts +13 -26
  91. package/src/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.ts +8 -21
  92. package/src/service/tableGenerator/DefaultTableGeneratorService.ts +44 -68
  93. package/src/service/tableGenerator/TableGeneratorServiceProvider.ts +7 -16
  94. package/src/service/treePrinter/DefaultTreePrinterService.ts +2 -7
  95. package/src/service/treePrinter/TreePrinterServiceProvider.ts +4 -12
  96. package/src/terminal/ImageRenderer.ts +35 -54
  97. package/src/terminal/PngDecoder.ts +10 -19
  98. package/src/terminal/TtyStyler.ts +11 -9
  99. package/src/terminal/TtyTerminal.ts +2 -10
  100. package/src/terminal/supportsHyperlinks.ts +4 -10
  101. package/src/util/configHelper.ts +3 -10
  102. package/src/util/envVarHelper.ts +50 -88
  103. package/src/util/helpHelper.ts +123 -193
  104. package/src/util/logger.ts +12 -42
  105. package/src/util/runnerHelper.ts +20 -61
  106. package/tests/cli/BaseCLI.test.ts +23 -80
  107. package/tests/command/CompletionCommand.test.ts +1 -6
  108. package/tests/command/MultiCommandCliHelpCommand.test.ts +51 -205
  109. package/tests/command/SingleCommandCliHelpCommand.test.ts +21 -103
  110. package/tests/command/UsageCommand.test.ts +4 -10
  111. package/tests/fixtures/Command.ts +87 -68
  112. package/tests/fixtures/CommandRegistry.ts +1 -3
  113. package/tests/fixtures/Context.ts +3 -11
  114. package/tests/fixtures/ServiceProviderRegistry.ts +1 -1
  115. package/tests/fixtures/prettierPluginFoo.ts +1 -1
  116. package/tests/fixtures/util.ts +2 -8
  117. package/tests/runtime/argument/ArgumentTypeGuards.test.ts +1 -3
  118. package/tests/runtime/command/CommandValidator.test.ts +881 -604
  119. package/tests/runtime/parser.test.ts +222 -246
  120. package/tests/runtime/registry/DefaultCommandRegistry.test.ts +15 -37
  121. package/tests/runtime/registry/DefaultServiceProviderRegistry.test.ts +2 -8
  122. package/tests/runtime/runner.test.ts +231 -281
  123. package/tests/runtime/scanner.test.ts +277 -475
  124. package/tests/runtime/values/argumentValueMerge.test.ts +133 -81
  125. package/tests/runtime/values/argumentValueValidation.test.ts +444 -588
  126. package/tests/runtime/values/globalCommandValuePopulation.test.ts +71 -253
  127. package/tests/runtime/values/subCommandValuePopulation.test.ts +1342 -1570
  128. package/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.ts +3 -12
  129. package/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.ts +36 -45
  130. package/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.ts +2 -8
  131. package/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.ts +40 -62
  132. package/tests/service/banner/BannerServiceProvider.test.ts +5 -18
  133. package/tests/service/banner/command/NoBannerCommand.test.ts +1 -4
  134. package/tests/service/completion/CompletionServiceProvider.test.ts +145 -214
  135. package/tests/service/completion/DefaultCompletionService.test.ts +17 -79
  136. package/tests/service/completion/shell/fish.test.ts +1 -3
  137. package/tests/service/configuration/ConfigurationServiceProvider.test.ts +26 -75
  138. package/tests/service/configuration/DefaultKeyValueService.test.ts +9 -21
  139. package/tests/service/configuration/DefaultSecretService.test.ts +7 -15
  140. package/tests/service/configuration/command/DumpConfigCommand.test.ts +4 -13
  141. package/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.ts +6 -12
  142. package/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.ts +1 -10
  143. package/tests/service/imagePrinter/DefaultImagePrinterService.test.ts +5 -70
  144. package/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.ts +4 -11
  145. package/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.ts +2 -6
  146. package/tests/service/printer/DefaultPrinterService.test.ts +57 -255
  147. package/tests/service/printer/PrinterServiceProvider.test.ts +2 -8
  148. package/tests/service/printer/command/DarkModeCommand.test.ts +4 -12
  149. package/tests/service/printer/command/LogLevelCommand.test.ts +4 -17
  150. package/tests/service/printer/command/NoColorCommand.test.ts +4 -12
  151. package/tests/service/printer/command/NoHyperlinksCommand.test.ts +7 -21
  152. package/tests/service/printer/terminal/Progress.test.ts +1 -3
  153. package/tests/service/printer/terminal/Spinner.test.ts +2 -8
  154. package/tests/service/prompter/DefaultPrompterService.test.ts +52 -69
  155. package/tests/service/prompter/PrompterServiceProvider.test.ts +2 -8
  156. package/tests/service/shutdown/ShutdownServiceProvider.test.ts +1 -3
  157. package/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.ts +13 -99
  158. package/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.ts +2 -7
  159. package/tests/service/tableGenerator/DefaultTableGeneratorService.test.ts +12 -33
  160. package/tests/service/tableGenerator/TableGeneratorServiceProvider.test.ts +2 -2
  161. package/tests/service/treePrinter/DefaultTreePrinterService.test.ts +4 -6
  162. package/tests/service/treePrinter/TreePrinterServiceProvider.test.ts +4 -8
  163. package/tests/terminal/ImageRenderer.test.ts +2 -11
  164. package/tests/terminal/PngDecoder.test.ts +2 -6
  165. package/tests/util/configHelper.test.ts +55 -137
  166. package/tests/util/envVarHelper.test.ts +46 -110
@@ -50,64 +50,9 @@ describe("DefaultPrinterService tests", () => {
50
50
  expectBytesEquals(
51
51
  dummyStderr.getString(),
52
52
  new Uint8Array([
53
- 27,
54
- 91,
55
- 51,
56
- 56,
57
- 59,
58
- 50,
59
- 59,
60
- 49,
61
- 51,
62
- 49,
63
- 59,
64
- 49,
65
- 52,
66
- 56,
67
- 59,
68
- 49,
69
- 53,
70
- 48,
71
- 109,
72
- 104,
73
- 101,
74
- 108,
75
- 108,
76
- 111,
77
- 32,
78
- 27,
79
- 91,
80
- 51,
81
- 56,
82
- 59,
83
- 50,
84
- 59,
85
- 51,
86
- 56,
87
- 59,
88
- 49,
89
- 51,
90
- 57,
91
- 59,
92
- 50,
93
- 49,
94
- 48,
95
- 109,
96
- 119,
97
- 111,
98
- 114,
99
- 108,
100
- 100,
101
- 27,
102
- 91,
103
- 51,
104
- 57,
105
- 109,
106
- 27,
107
- 91,
108
- 51,
109
- 57,
110
- 109,
53
+ 27, 91, 51, 56, 59, 50, 59, 49, 51, 49, 59, 49, 52, 56, 59, 49, 53, 48, 109, 104, 101, 108,
54
+ 108, 111, 32, 27, 91, 51, 56, 59, 50, 59, 51, 56, 59, 49, 51, 57, 59, 50, 49, 48, 109, 119,
55
+ 111, 114, 108, 100, 27, 91, 51, 57, 109, 27, 91, 51, 57, 109,
111
56
  ]),
112
57
  );
113
58
  });
@@ -129,53 +74,9 @@ describe("DefaultPrinterService tests", () => {
129
74
  expectBytesEquals(
130
75
  dummyStderr.getString(),
131
76
  new Uint8Array([
132
- 27,
133
- 91,
134
- 51,
135
- 56,
136
- 59,
137
- 50,
138
- 59,
139
- 49,
140
- 48,
141
- 49,
142
- 59,
143
- 49,
144
- 50,
145
- 51,
146
- 59,
147
- 49,
148
- 51,
149
- 49,
150
- 109,
151
- 27,
152
- 91,
153
- 51,
154
- 56,
155
- 59,
156
- 50,
157
- 59,
158
- 48,
159
- 59,
160
- 48,
161
- 59,
162
- 48,
163
- 109,
164
- 104,
165
- 101,
166
- 108,
167
- 108,
168
- 111,
169
- 27,
170
- 91,
171
- 51,
172
- 57,
173
- 109,
174
- 27,
175
- 91,
176
- 51,
177
- 57,
178
- 109,
77
+ 27, 91, 51, 56, 59, 50, 59, 49, 48, 49, 59, 49, 50, 51, 59, 49, 51, 49, 109, 27, 91, 51, 56,
78
+ 59, 50, 59, 48, 59, 48, 59, 48, 109, 104, 101, 108, 108, 111, 27, 91, 51, 57, 109, 27, 91,
79
+ 51, 57, 109,
179
80
  ]),
180
81
  );
181
82
  });
@@ -194,12 +95,8 @@ describe("DefaultPrinterService tests", () => {
194
95
  );
195
96
  printerService.colorEnabled = true;
196
97
 
197
- expect(() => printerService.color("hello", "foo")).toThrow(
198
- "Invalid color: foo",
199
- );
200
- expect(() => printerService.color("hello", "0x0")).toThrow(
201
- "Invalid color: 0x0",
202
- );
98
+ expect(() => printerService.color("hello", "foo")).toThrow("Invalid color: foo");
99
+ expect(() => printerService.color("hello", "0x0")).toThrow("Invalid color: 0x0");
203
100
  });
204
101
 
205
102
  test("stdout writable accessible", async () => {
@@ -257,14 +154,8 @@ describe("DefaultPrinterService tests", () => {
257
154
  await printerService.print("hello stdout\n");
258
155
  await printerService.info("hello stderr\n");
259
156
 
260
- expectStringEquals(
261
- dummyStdout.getString(),
262
- "hello stdout\n",
263
- );
264
- expectStringEquals(
265
- dummyStderr.getString(),
266
- "hello stderr\n",
267
- );
157
+ expectStringEquals(dummyStdout.getString(), "hello stdout\n");
158
+ expectStringEquals(dummyStderr.getString(), "hello stderr\n");
268
159
  });
269
160
 
270
161
  test("Level filtering works", async () => {
@@ -285,10 +176,7 @@ describe("DefaultPrinterService tests", () => {
285
176
  await printerService.info("hello info 1\n");
286
177
  await printerService.warn("hello warn 1\n");
287
178
 
288
- expectStringEquals(
289
- dummyStderr.getString(),
290
- "hello info 1\nhello warn 1\n",
291
- );
179
+ expectStringEquals(dummyStderr.getString(), "hello info 1\nhello warn 1\n");
292
180
 
293
181
  await printerService.setLevel(Level.WARN);
294
182
 
@@ -296,10 +184,7 @@ describe("DefaultPrinterService tests", () => {
296
184
  await printerService.info("hello info 2\n");
297
185
  await printerService.warn("hello warn 2\n");
298
186
 
299
- expectStringEquals(
300
- dummyStderr.getString(),
301
- "hello info 1\nhello warn 1\nhello warn 2\n",
302
- );
187
+ expectStringEquals(dummyStderr.getString(), "hello info 1\nhello warn 1\nhello warn 2\n");
303
188
 
304
189
  await printerService.setLevel(Level.DEBUG);
305
190
 
@@ -329,17 +214,11 @@ describe("DefaultPrinterService tests", () => {
329
214
 
330
215
  await printerService.info("hello info", Icon.INFORMATION);
331
216
 
332
- expectStringEquals(
333
- dummyStderr.getString(),
334
- "ℹ hello info",
335
- );
217
+ expectStringEquals(dummyStderr.getString(), "ℹ hello info");
336
218
 
337
219
  await printerService.info("hello success", Icon.SUCCESS);
338
220
 
339
- expectStringEquals(
340
- dummyStderr.getString(),
341
- "ℹ hello info✔ hello success",
342
- );
221
+ expectStringEquals(dummyStderr.getString(), "ℹ hello info✔ hello success");
343
222
  });
344
223
 
345
224
  test("Icons work on stdout", async () => {
@@ -358,17 +237,11 @@ describe("DefaultPrinterService tests", () => {
358
237
 
359
238
  await printerService.print("hello info", Icon.INFORMATION);
360
239
 
361
- expectStringEquals(
362
- dummyStdout.getString(),
363
- "ℹ hello info",
364
- );
240
+ expectStringEquals(dummyStdout.getString(), "ℹ hello info");
365
241
 
366
242
  await printerService.print("hello success", Icon.SUCCESS);
367
243
 
368
- expectStringEquals(
369
- dummyStdout.getString(),
370
- "ℹ hello info✔ hello success",
371
- );
244
+ expectStringEquals(dummyStdout.getString(), "ℹ hello info✔ hello success");
372
245
  });
373
246
 
374
247
  test("Spinner works", async () => {
@@ -392,47 +265,8 @@ describe("DefaultPrinterService tests", () => {
392
265
  expectBytesEquals(
393
266
  dummyStderr.getString(),
394
267
  new Uint8Array([
395
- 27,
396
- 91,
397
- 63,
398
- 50,
399
- 53,
400
- 108,
401
- 27,
402
- 91,
403
- 50,
404
- 75,
405
- 27,
406
- 91,
407
- 71,
408
- 226,
409
- 160,
410
- 139,
411
- 32,
412
- 104,
413
- 101,
414
- 108,
415
- 108,
416
- 111,
417
- 32,
418
- 119,
419
- 111,
420
- 114,
421
- 108,
422
- 100,
423
- 27,
424
- 91,
425
- 50,
426
- 75,
427
- 27,
428
- 91,
429
- 71,
430
- 27,
431
- 91,
432
- 63,
433
- 50,
434
- 53,
435
- 104,
268
+ 27, 91, 63, 50, 53, 108, 27, 91, 50, 75, 27, 91, 71, 226, 160, 139, 32, 104, 101, 108, 108,
269
+ 111, 32, 119, 111, 114, 108, 100, 27, 91, 50, 75, 27, 91, 71, 27, 91, 63, 50, 53, 104,
436
270
  ]),
437
271
  );
438
272
  });
@@ -456,14 +290,8 @@ describe("DefaultPrinterService tests", () => {
456
290
  printerService.updateProgressBar(handle, 50);
457
291
  await sleep(50);
458
292
  await printerService.hideProgressBar(handle);
459
- expectStringIncludes(
460
- dummyStderr.getString(),
461
- "foo",
462
- );
463
- expectStringIncludes(
464
- dummyStderr.getString(),
465
- "bits",
466
- );
293
+ expectStringIncludes(dummyStderr.getString(), "foo");
294
+ expectStringIncludes(dummyStderr.getString(), "bits");
467
295
  });
468
296
 
469
297
  test("Multiple progress bars work", async () => {
@@ -490,22 +318,10 @@ describe("DefaultPrinterService tests", () => {
490
318
  await sleep(50);
491
319
  await printerService.hideProgressBar(handle1);
492
320
  await printerService.hideProgressBar(handle2);
493
- expectStringIncludes(
494
- dummyStderr.getString(),
495
- "bits",
496
- );
497
- expectStringIncludes(
498
- dummyStderr.getString(),
499
- "megaflops",
500
- );
501
- expectStringIncludes(
502
- dummyStderr.getString(),
503
- "foo1",
504
- );
505
- expectStringIncludes(
506
- dummyStderr.getString(),
507
- "bar1",
508
- );
321
+ expectStringIncludes(dummyStderr.getString(), "bits");
322
+ expectStringIncludes(dummyStderr.getString(), "megaflops");
323
+ expectStringIncludes(dummyStderr.getString(), "foo1");
324
+ expectStringIncludes(dummyStderr.getString(), "bar1");
509
325
  });
510
326
 
511
327
  test("backgroundBlue with colorLevel 3 and colorEnabled produces background ANSI code", () => {
@@ -592,18 +408,16 @@ describe("DefaultPrinterService tests", () => {
592
408
  new TtyStyler(3),
593
409
  );
594
410
  printerService.colorEnabled = true;
595
- for (
596
- const method of [
597
- "backgroundYellow",
598
- "backgroundOrange",
599
- "backgroundRed",
600
- "backgroundMagenta",
601
- "backgroundViolet",
602
- "backgroundBlue",
603
- "backgroundCyan",
604
- "backgroundGreen",
605
- ] as const
606
- ) {
411
+ for (const method of [
412
+ "backgroundYellow",
413
+ "backgroundOrange",
414
+ "backgroundRed",
415
+ "backgroundMagenta",
416
+ "backgroundViolet",
417
+ "backgroundBlue",
418
+ "backgroundCyan",
419
+ "backgroundGreen",
420
+ ] as const) {
607
421
  const result = printerService[method]("text");
608
422
  expect(result).toStartWith("\x1b[48;2;");
609
423
  expect(result).toEndWith("\x1b[49m");
@@ -623,14 +437,12 @@ describe("DefaultPrinterService tests", () => {
623
437
  new TtyStyler(3),
624
438
  );
625
439
  printerService.colorEnabled = true;
626
- for (
627
- const method of [
628
- "backgroundPrimary",
629
- "backgroundSecondary",
630
- "backgroundEmphasised",
631
- "backgroundSelected",
632
- ] as const
633
- ) {
440
+ for (const method of [
441
+ "backgroundPrimary",
442
+ "backgroundSecondary",
443
+ "backgroundEmphasised",
444
+ "backgroundSelected",
445
+ ] as const) {
634
446
  const result = printerService[method]("text");
635
447
  expect(result).toStartWith("\x1b[48;2;");
636
448
  expect(result).toEndWith("\x1b[49m");
@@ -664,13 +476,8 @@ describe("DefaultPrinterService tests", () => {
664
476
  new TtyTerminal(dummyStderr.writeStream),
665
477
  new TtyStyler(3),
666
478
  );
667
- const result = printerService.hyperlink(
668
- "click here",
669
- "https://example.com",
670
- );
671
- expect(result).toEqual(
672
- "\x1b]8;;\x68ttps://example.com\x07click here\x1b]8;;\x07",
673
- );
479
+ const result = printerService.hyperlink("click here", "https://example.com");
480
+ expect(result).toEqual("\x1b]8;;\x68ttps://example.com\x07click here\x1b]8;;\x07");
674
481
  });
675
482
 
676
483
  test("hyperlink with hyperlinksEnabled false returns url", () => {
@@ -686,10 +493,7 @@ describe("DefaultPrinterService tests", () => {
686
493
  new TtyStyler(3),
687
494
  );
688
495
  printerService.hyperlinksEnabled = false;
689
- const result = printerService.hyperlink(
690
- "click here",
691
- "https://example.com",
692
- );
496
+ const result = printerService.hyperlink("click here", "https://example.com");
693
497
  expect(result).toEqual("click here: https://example.com");
694
498
  });
695
499
 
@@ -706,22 +510,20 @@ describe("DefaultPrinterService tests", () => {
706
510
  new TtyStyler(3),
707
511
  );
708
512
  printerService.colorEnabled = false;
709
- for (
710
- const method of [
711
- "backgroundPrimary",
712
- "backgroundSecondary",
713
- "backgroundEmphasised",
714
- "backgroundSelected",
715
- "backgroundYellow",
716
- "backgroundOrange",
717
- "backgroundRed",
718
- "backgroundMagenta",
719
- "backgroundViolet",
720
- "backgroundBlue",
721
- "backgroundCyan",
722
- "backgroundGreen",
723
- ] as const
724
- ) {
513
+ for (const method of [
514
+ "backgroundPrimary",
515
+ "backgroundSecondary",
516
+ "backgroundEmphasised",
517
+ "backgroundSelected",
518
+ "backgroundYellow",
519
+ "backgroundOrange",
520
+ "backgroundRed",
521
+ "backgroundMagenta",
522
+ "backgroundViolet",
523
+ "backgroundBlue",
524
+ "backgroundCyan",
525
+ "backgroundGreen",
526
+ ] as const) {
725
527
  expectStringEquals(printerService[method]("text"), "text");
726
528
  }
727
529
  });
@@ -22,17 +22,11 @@ describe("PrinterServiceProvider tests", () => {
22
22
  new TtyStyler(3),
23
23
  );
24
24
 
25
- const printerServiceProvider = new PrinterServiceProvider(
26
- 100,
27
- printerService,
28
- );
25
+ const printerServiceProvider = new PrinterServiceProvider(100, printerService);
29
26
  const cliConfig = getCLIConfig();
30
27
  const context = new DefaultContext(cliConfig);
31
28
 
32
- context.addServiceInstance(
33
- SHUTDOWN_SERVICE_ID,
34
- new DefaultShutdownService(),
35
- );
29
+ context.addServiceInstance(SHUTDOWN_SERVICE_ID, new DefaultShutdownService());
36
30
 
37
31
  const serviceInfo = await printerServiceProvider.getServiceInfo(cliConfig);
38
32
  expect(serviceInfo.commands.length).toEqual(4);
@@ -22,16 +22,12 @@ describe("DarkModeCommand tests", () => {
22
22
  new TtyTerminal(streamString.writeStream),
23
23
  new TtyStyler(3),
24
24
  );
25
- const printerServiceProvider = new PrinterServiceProvider(
26
- 100,
27
- printerService,
28
- );
25
+ const printerServiceProvider = new PrinterServiceProvider(100, printerService);
29
26
  const cliConfig = getCLIConfig();
30
27
  const context = new DefaultContext(cliConfig);
31
28
 
32
29
  const shutdownServiceProvider = new ShutdownServiceProvider(1);
33
- const shutdownService =
34
- (await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
30
+ const shutdownService = (await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
35
31
  context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
36
32
 
37
33
  await printerServiceProvider.getServiceInfo(cliConfig);
@@ -58,16 +54,12 @@ describe("DarkModeCommand tests", () => {
58
54
  new TtyTerminal(streamString.writeStream),
59
55
  new TtyStyler(3),
60
56
  );
61
- const printerServiceProvider = new PrinterServiceProvider(
62
- 100,
63
- printerService,
64
- );
57
+ const printerServiceProvider = new PrinterServiceProvider(100, printerService);
65
58
  const cliConfig = getCLIConfig();
66
59
  const context = new DefaultContext(cliConfig);
67
60
 
68
61
  const shutdownServiceProvider = new ShutdownServiceProvider(1);
69
- const shutdownService =
70
- (await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
62
+ const shutdownService = (await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
71
63
  context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
72
64
 
73
65
  await printerServiceProvider.getServiceInfo(cliConfig);
@@ -23,17 +23,12 @@ describe("LogLevelCommand tests", () => {
23
23
  new TtyTerminal(streamString.writeStream),
24
24
  new TtyStyler(3),
25
25
  );
26
- const printerServiceProvider = new PrinterServiceProvider(
27
- 100,
28
- printerService,
29
- );
26
+ const printerServiceProvider = new PrinterServiceProvider(100, printerService);
30
27
  const cliConfig = getCLIConfig();
31
28
  const context = new DefaultContext(cliConfig);
32
29
 
33
30
  const shutdownServiceProvider = new ShutdownServiceProvider(1);
34
- const shutdownService =
35
- (await shutdownServiceProvider.getServiceInfo(cliConfig))
36
- .service!;
31
+ const shutdownService = (await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
37
32
 
38
33
  context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
39
34
 
@@ -41,19 +36,11 @@ describe("LogLevelCommand tests", () => {
41
36
 
42
37
  const logLevelCommand = new LogLevelCommand(printerServiceProvider, 100);
43
38
 
44
- expect(
45
- printerServiceProvider.printerService!.getLevel(),
46
- ).toEqual(
47
- Level.INFO,
48
- );
39
+ expect(printerServiceProvider.printerService!.getLevel()).toEqual(Level.INFO);
49
40
 
50
41
  await logLevelCommand.execute(context, "eRror");
51
42
 
52
- expect(
53
- printerServiceProvider.printerService!.getLevel(),
54
- ).toEqual(
55
- Level.ERROR,
56
- );
43
+ expect(printerServiceProvider.printerService!.getLevel()).toEqual(Level.ERROR);
57
44
 
58
45
  await ShutdownServiceProvider.shutdown();
59
46
  });
@@ -22,16 +22,12 @@ describe("NoColorCommand tests", () => {
22
22
  new TtyTerminal(streamString.writeStream),
23
23
  new TtyStyler(3),
24
24
  );
25
- const printerServiceProvider = new PrinterServiceProvider(
26
- 100,
27
- printerService,
28
- );
25
+ const printerServiceProvider = new PrinterServiceProvider(100, printerService);
29
26
  const cliConfig = getCLIConfig();
30
27
  const context = new DefaultContext(cliConfig);
31
28
 
32
29
  const shutdownServiceProvider = new ShutdownServiceProvider(1);
33
- const shutdownService =
34
- (await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
30
+ const shutdownService = (await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
35
31
  context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
36
32
 
37
33
  await printerServiceProvider.getServiceInfo(cliConfig);
@@ -58,16 +54,12 @@ describe("NoColorCommand tests", () => {
58
54
  new TtyTerminal(streamString.writeStream),
59
55
  new TtyStyler(3),
60
56
  );
61
- const printerServiceProvider = new PrinterServiceProvider(
62
- 100,
63
- printerService,
64
- );
57
+ const printerServiceProvider = new PrinterServiceProvider(100, printerService);
65
58
  const cliConfig = getCLIConfig();
66
59
  const context = new DefaultContext(cliConfig);
67
60
 
68
61
  const shutdownServiceProvider = new ShutdownServiceProvider(1);
69
- const shutdownService =
70
- (await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
62
+ const shutdownService = (await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
71
63
  context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
72
64
 
73
65
  await printerServiceProvider.getServiceInfo(cliConfig);
@@ -22,31 +22,23 @@ describe("NoHyperlinksCommand tests", () => {
22
22
  new TtyTerminal(streamString.writeStream),
23
23
  new TtyStyler(3),
24
24
  );
25
- const printerServiceProvider = new PrinterServiceProvider(
26
- 100,
27
- printerService,
28
- );
25
+ const printerServiceProvider = new PrinterServiceProvider(100, printerService);
29
26
  const cliConfig = getCLIConfig();
30
27
  const context = new DefaultContext(cliConfig);
31
28
 
32
29
  const shutdownServiceProvider = new ShutdownServiceProvider(1);
33
- const shutdownService =
34
- (await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
30
+ const shutdownService = (await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
35
31
  context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
36
32
 
37
33
  await printerServiceProvider.getServiceInfo(cliConfig);
38
34
 
39
35
  const command = new NoHyperlinksCommand(printerServiceProvider, 100);
40
36
 
41
- expect(printerServiceProvider.printerService!.hyperlinksEnabled).toEqual(
42
- true,
43
- );
37
+ expect(printerServiceProvider.printerService!.hyperlinksEnabled).toEqual(true);
44
38
 
45
39
  await command.execute(context, true);
46
40
 
47
- expect(printerServiceProvider.printerService!.hyperlinksEnabled).toEqual(
48
- false,
49
- );
41
+ expect(printerServiceProvider.printerService!.hyperlinksEnabled).toEqual(false);
50
42
 
51
43
  await ShutdownServiceProvider.shutdown();
52
44
  });
@@ -62,16 +54,12 @@ describe("NoHyperlinksCommand tests", () => {
62
54
  new TtyTerminal(streamString.writeStream),
63
55
  new TtyStyler(3),
64
56
  );
65
- const printerServiceProvider = new PrinterServiceProvider(
66
- 100,
67
- printerService,
68
- );
57
+ const printerServiceProvider = new PrinterServiceProvider(100, printerService);
69
58
  const cliConfig = getCLIConfig();
70
59
  const context = new DefaultContext(cliConfig);
71
60
 
72
61
  const shutdownServiceProvider = new ShutdownServiceProvider(1);
73
- const shutdownService =
74
- (await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
62
+ const shutdownService = (await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
75
63
  context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
76
64
 
77
65
  await printerServiceProvider.getServiceInfo(cliConfig);
@@ -80,9 +68,7 @@ describe("NoHyperlinksCommand tests", () => {
80
68
 
81
69
  await command.execute(context, false);
82
70
 
83
- expect(printerServiceProvider.printerService!.hyperlinksEnabled).toEqual(
84
- true,
85
- );
71
+ expect(printerServiceProvider.printerService!.hyperlinksEnabled).toEqual(true);
86
72
 
87
73
  await ShutdownServiceProvider.shutdown();
88
74
  });
@@ -1,7 +1,5 @@
1
1
  import { describe, expect, test } from "bun:test";
2
- import Progress, {
3
- ProgressStyle,
4
- } from "../../../../src/service/printer/terminal/Progress.ts";
2
+ import Progress, { ProgressStyle } from "../../../../src/service/printer/terminal/Progress.ts";
5
3
  import { sleep } from "../../../fixtures/util.ts";
6
4
  import TtyTerminal from "../../../../src/terminal/TtyTerminal.ts";
7
5
  import StreamString from "../../../fixtures/StreamString.ts";
@@ -1,12 +1,6 @@
1
1
  import { describe, test } from "bun:test";
2
- import Spinner, {
3
- SpinnerStyle,
4
- } from "../../../../src/service/printer/terminal/Spinner.ts";
5
- import {
6
- expectStringEquals,
7
- expectStringIncludes,
8
- sleep,
9
- } from "../../../fixtures/util.ts";
2
+ import Spinner, { SpinnerStyle } from "../../../../src/service/printer/terminal/Spinner.ts";
3
+ import { expectStringEquals, expectStringIncludes, sleep } from "../../../fixtures/util.ts";
10
4
  import TtyTerminal from "../../../../src/terminal/TtyTerminal.ts";
11
5
  import StreamString from "../../../fixtures/StreamString.ts";
12
6
  import TtyStyler from "../../../../src/terminal/TtyStyler.ts";