@flowscripter/dynamic-cli-framework 1.2.2 → 1.3.1
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/README/core-service-providers.md +2 -2
- package/README/development.md +3 -6
- package/README/implementation-details.md +17 -17
- package/README/key-concepts.md +17 -17
- package/README.md +4 -4
- package/bun.lock +0 -2
- package/index.ts +22 -30
- package/package.json +19 -19
- package/src/api/argument/Argument.ts +1 -1
- package/src/api/argument/ArgumentValueTypes.ts +3 -10
- package/src/api/argument/ComplexOption.ts +5 -9
- package/src/api/command/GlobalCommand.ts +1 -4
- package/src/api/service/core/ArgumentPrompterService.ts +1 -3
- package/src/api/service/core/AsciiBannerGeneratorService.ts +1 -4
- package/src/api/service/core/CompletionService.ts +2 -6
- package/src/api/service/core/ImagePrinterService.ts +1 -2
- package/src/api/service/core/KeyValueService.ts +1 -2
- package/src/api/service/core/PrettyPrinterService.ts +1 -4
- package/src/api/service/core/PrinterService.ts +8 -9
- package/src/api/service/core/PrompterService.ts +4 -11
- package/src/api/service/core/ShutdownService.ts +1 -2
- package/src/api/service/core/SyntaxHighlighterService.ts +1 -5
- package/src/api/service/core/Table.ts +7 -25
- package/src/api/service/core/TreePrinterService.ts +1 -2
- package/src/cli/BaseCLI.ts +17 -47
- package/src/cli/DefaultRuntimeCLI.ts +1 -4
- package/src/command/CompletionCommand.ts +19 -45
- package/src/command/MultiCommandCliHelpCommand.ts +45 -92
- package/src/command/SingleCommandCliHelpCommand.ts +17 -28
- package/src/command/UsageCommand.ts +6 -12
- package/src/command/VersionCommand.ts +2 -6
- package/src/launcher.ts +4 -2
- package/src/runtime/DefaultContext.ts +2 -5
- package/src/runtime/argument/ArgumentTypeGuards.ts +1 -3
- package/src/runtime/command/CommandTypeGuards.ts +5 -14
- package/src/runtime/command/CommandValidator.ts +56 -118
- package/src/runtime/parser.ts +13 -17
- package/src/runtime/registry/CommandRegistry.ts +2 -7
- package/src/runtime/registry/DefaultCommandRegistry.ts +32 -84
- package/src/runtime/registry/DefaultServiceProviderRegistry.ts +3 -9
- package/src/runtime/runner.ts +103 -142
- package/src/runtime/scanner.ts +28 -46
- package/src/runtime/values/ValuePopulationResult.ts +1 -2
- package/src/runtime/values/argumentValueMerge.ts +16 -28
- package/src/runtime/values/argumentValueValidation.ts +21 -67
- package/src/runtime/values/globalCommandValuePopulation.ts +9 -18
- package/src/runtime/values/subCommandValuePopulation.ts +42 -65
- package/src/service/argumentPrompter/ArgumentPrompterServiceProvider.ts +3 -10
- package/src/service/argumentPrompter/DefaultArgumentPrompterService.ts +22 -59
- package/src/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.ts +5 -14
- package/src/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.ts +59 -77
- package/src/service/banner/BannerServiceProvider.ts +13 -35
- package/src/service/banner/command/NoBannerCommand.ts +2 -8
- package/src/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.ts +5 -10
- package/src/service/completion/CompletionServiceProvider.ts +20 -48
- package/src/service/completion/DefaultCompletionService.ts +17 -56
- package/src/service/completion/shell/ShellHandler.ts +1 -3
- package/src/service/completion/shell/fish.ts +1 -1
- package/src/service/completion/shell/powershell.ts +2 -12
- package/src/service/completion/shell/zsh.ts +1 -1
- package/src/service/configuration/ConfigurationServiceProvider.ts +40 -133
- package/src/service/configuration/DefaultKeyValueService.ts +6 -20
- package/src/service/configuration/DefaultSecretService.ts +10 -14
- package/src/service/configuration/command/ConfigCommand.ts +1 -4
- package/src/service/configuration/command/DumpConfigCommand.ts +9 -21
- package/src/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.ts +5 -14
- package/src/service/dataDumpGenerator/DefaultDataDumpGeneratorService.ts +5 -12
- package/src/service/imagePrinter/DefaultImagePrinterService.ts +1 -5
- package/src/service/imagePrinter/ImagePrinterServiceProvider.ts +1 -4
- package/src/service/prettyPrinter/DefaultPrettyPrinterService.ts +4 -12
- package/src/service/prettyPrinter/PrettyPrinterServiceProvider.ts +3 -10
- package/src/service/printer/DefaultPrinterService.ts +20 -83
- package/src/service/printer/PrinterServiceProvider.ts +3 -11
- package/src/service/printer/command/DarkModeCommand.ts +3 -10
- package/src/service/printer/command/LogLevelCommand.ts +7 -26
- package/src/service/printer/command/NoColorCommand.ts +3 -10
- package/src/service/printer/command/NoHyperlinksCommand.ts +3 -10
- package/src/service/printer/terminal/Progress.ts +99 -90
- package/src/service/printer/terminal/Spinner.ts +7 -26
- package/src/service/prompter/DefaultPrompterService.ts +2 -6
- package/src/service/prompter/PrompterServiceProvider.ts +3 -11
- package/src/service/prompter/command/NoPromptCommand.ts +3 -10
- package/src/service/prompter/prompt/PromptContext.ts +5 -18
- package/src/service/prompter/prompt/promptMultiSelect.ts +6 -21
- package/src/service/prompter/prompt/promptOpenUrl.ts +7 -22
- package/src/service/prompter/prompt/promptSingleSelect.ts +6 -23
- package/src/service/prompter/prompt/promptText.ts +10 -27
- package/src/service/prompter/prompt/promptToggle.ts +8 -8
- package/src/service/shutdown/ShutdownServiceProvider.ts +3 -10
- package/src/service/syntaxHighlighter/DefaultSyntaxHighlighterService.ts +13 -26
- package/src/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.ts +8 -21
- package/src/service/tableGenerator/DefaultTableGeneratorService.ts +44 -68
- package/src/service/tableGenerator/TableGeneratorServiceProvider.ts +7 -16
- package/src/service/treePrinter/DefaultTreePrinterService.ts +2 -7
- package/src/service/treePrinter/TreePrinterServiceProvider.ts +4 -12
- package/src/terminal/ImageRenderer.ts +35 -54
- package/src/terminal/PngDecoder.ts +10 -19
- package/src/terminal/TtyStyler.ts +11 -9
- package/src/terminal/TtyTerminal.ts +2 -10
- package/src/terminal/supportsHyperlinks.ts +4 -10
- package/src/util/configHelper.ts +3 -10
- package/src/util/envVarHelper.ts +50 -88
- package/src/util/helpHelper.ts +123 -193
- package/src/util/logger.ts +12 -42
- package/src/util/runnerHelper.ts +20 -61
- package/tests/cli/BaseCLI.test.ts +23 -80
- package/tests/command/CompletionCommand.test.ts +1 -6
- package/tests/command/MultiCommandCliHelpCommand.test.ts +51 -205
- package/tests/command/SingleCommandCliHelpCommand.test.ts +21 -103
- package/tests/command/UsageCommand.test.ts +4 -10
- package/tests/fixtures/Command.ts +87 -68
- package/tests/fixtures/CommandRegistry.ts +1 -3
- package/tests/fixtures/Context.ts +3 -11
- package/tests/fixtures/ServiceProviderRegistry.ts +1 -1
- package/tests/fixtures/prettierPluginFoo.ts +1 -1
- package/tests/fixtures/util.ts +2 -8
- package/tests/runtime/argument/ArgumentTypeGuards.test.ts +1 -3
- package/tests/runtime/command/CommandValidator.test.ts +881 -604
- package/tests/runtime/parser.test.ts +222 -246
- package/tests/runtime/registry/DefaultCommandRegistry.test.ts +15 -37
- package/tests/runtime/registry/DefaultServiceProviderRegistry.test.ts +2 -8
- package/tests/runtime/runner.test.ts +231 -281
- package/tests/runtime/scanner.test.ts +277 -475
- package/tests/runtime/values/argumentValueMerge.test.ts +133 -81
- package/tests/runtime/values/argumentValueValidation.test.ts +444 -588
- package/tests/runtime/values/globalCommandValuePopulation.test.ts +71 -253
- package/tests/runtime/values/subCommandValuePopulation.test.ts +1342 -1570
- package/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.ts +3 -12
- package/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.ts +36 -45
- package/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.ts +2 -8
- package/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.ts +40 -62
- package/tests/service/banner/BannerServiceProvider.test.ts +5 -18
- package/tests/service/banner/command/NoBannerCommand.test.ts +1 -4
- package/tests/service/completion/CompletionServiceProvider.test.ts +145 -214
- package/tests/service/completion/DefaultCompletionService.test.ts +17 -79
- package/tests/service/completion/shell/fish.test.ts +1 -3
- package/tests/service/configuration/ConfigurationServiceProvider.test.ts +26 -75
- package/tests/service/configuration/DefaultKeyValueService.test.ts +9 -21
- package/tests/service/configuration/DefaultSecretService.test.ts +7 -15
- package/tests/service/configuration/command/DumpConfigCommand.test.ts +4 -13
- package/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.ts +6 -12
- package/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.ts +1 -10
- package/tests/service/imagePrinter/DefaultImagePrinterService.test.ts +5 -70
- package/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.ts +4 -11
- package/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.ts +2 -6
- package/tests/service/printer/DefaultPrinterService.test.ts +57 -255
- package/tests/service/printer/PrinterServiceProvider.test.ts +2 -8
- package/tests/service/printer/command/DarkModeCommand.test.ts +4 -12
- package/tests/service/printer/command/LogLevelCommand.test.ts +4 -17
- package/tests/service/printer/command/NoColorCommand.test.ts +4 -12
- package/tests/service/printer/command/NoHyperlinksCommand.test.ts +7 -21
- package/tests/service/printer/terminal/Progress.test.ts +1 -3
- package/tests/service/printer/terminal/Spinner.test.ts +2 -8
- package/tests/service/prompter/DefaultPrompterService.test.ts +52 -69
- package/tests/service/prompter/PrompterServiceProvider.test.ts +2 -8
- package/tests/service/shutdown/ShutdownServiceProvider.test.ts +1 -3
- package/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.ts +13 -99
- package/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.ts +2 -7
- package/tests/service/tableGenerator/DefaultTableGeneratorService.test.ts +12 -33
- package/tests/service/tableGenerator/TableGeneratorServiceProvider.test.ts +2 -2
- package/tests/service/treePrinter/DefaultTreePrinterService.test.ts +4 -6
- package/tests/service/treePrinter/TreePrinterServiceProvider.test.ts +4 -8
- package/tests/terminal/ImageRenderer.test.ts +2 -11
- package/tests/terminal/PngDecoder.test.ts +2 -6
- package/tests/util/configHelper.test.ts +55 -137
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
495
|
-
|
|
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
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
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
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
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
|
-
|
|
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
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
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
|
-
|
|
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";
|