@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
@@ -78,44 +78,56 @@ describe("argumentValueMerge tests", () => {
78
78
  });
79
79
 
80
80
  test("Complex object and arrays merge", () => {
81
- const result = argumentValueMerge({ a: { b: { c: "foo" } } }, {
82
- d: [{ e: [{ f: 1 }] }],
83
- });
81
+ const result = argumentValueMerge(
82
+ { a: { b: { c: "foo" } } },
83
+ {
84
+ d: [{ e: [{ f: 1 }] }],
85
+ },
86
+ );
84
87
  expect(result).toEqual({ a: { b: { c: "foo" } }, d: [{ e: [{ f: 1 }] }] });
85
88
  });
86
89
 
87
90
  test("Complex object and arrays merge and override", () => {
88
- let result = argumentValueMerge({
89
- a: { b: { c: "foo", c1: "bar", c2: "car" } },
90
- d: [{ e: [{ f: 1 }, { g: 2 }, { g2: 3 }] }],
91
- }, {
92
- a: { b: { c: "boo", c1: "bar" } },
93
- d: [{ e: [{ f: 0 }, { g: 0 }, { g1: 2 }] }],
94
- });
91
+ let result = argumentValueMerge(
92
+ {
93
+ a: { b: { c: "foo", c1: "bar", c2: "car" } },
94
+ d: [{ e: [{ f: 1 }, { g: 2 }, { g2: 3 }] }],
95
+ },
96
+ {
97
+ a: { b: { c: "boo", c1: "bar" } },
98
+ d: [{ e: [{ f: 0 }, { g: 0 }, { g1: 2 }] }],
99
+ },
100
+ );
95
101
  expect(result).toEqual({
96
102
  a: { b: { c: "foo", c1: "bar", c2: "car" } },
97
103
  d: [{ e: [{ f: 1 }, { g: 2 }, { g1: 2, g2: 3 }] }],
98
104
  });
99
105
 
100
- result = argumentValueMerge({
101
- a: { b: { c: "foo", c1: "bar", c2: "car" } },
102
- d: [{ e: [{ f: 1 }, { g: 2 }, { g2: 3 }] }],
103
- }, {
104
- a: { b: { c: "boo", c1: "bar" } },
105
- d: [{ e: [{ f: 0 }, { g: 0 }, { g1: 2 }, { g3: 4 }] }],
106
- });
106
+ result = argumentValueMerge(
107
+ {
108
+ a: { b: { c: "foo", c1: "bar", c2: "car" } },
109
+ d: [{ e: [{ f: 1 }, { g: 2 }, { g2: 3 }] }],
110
+ },
111
+ {
112
+ a: { b: { c: "boo", c1: "bar" } },
113
+ d: [{ e: [{ f: 0 }, { g: 0 }, { g1: 2 }, { g3: 4 }] }],
114
+ },
115
+ );
107
116
  expect(result).toEqual({
108
117
  a: { b: { c: "foo", c1: "bar", c2: "car" } },
109
118
  d: [{ e: [{ f: 1 }, { g: 2 }, { g1: 2, g2: 3 }, { g3: 4 }] }],
110
119
  });
111
120
 
112
- result = argumentValueMerge({
113
- a: { b: { c: "foo", c1: "bar", c2: "car" } },
114
- d: [{ e: [{ f: 1 }, { g: 2 }, { g2: 3 }] }],
115
- }, {
116
- a: { b: { c: "boo", c1: "bar" } },
117
- d: [{ e: [{ f: 0 }, { g: 0 }, { g2: 2 }, { g3: 4 }] }],
118
- });
121
+ result = argumentValueMerge(
122
+ {
123
+ a: { b: { c: "foo", c1: "bar", c2: "car" } },
124
+ d: [{ e: [{ f: 1 }, { g: 2 }, { g2: 3 }] }],
125
+ },
126
+ {
127
+ a: { b: { c: "boo", c1: "bar" } },
128
+ d: [{ e: [{ f: 0 }, { g: 0 }, { g2: 2 }, { g3: 4 }] }],
129
+ },
130
+ );
119
131
  expect(result).toEqual({
120
132
  a: { b: { c: "foo", c1: "bar", c2: "car" } },
121
133
  d: [{ e: [{ f: 1 }, { g: 2 }, { g2: 3 }, { g3: 4 }] }],
@@ -137,54 +149,78 @@ describe("argumentValueMerge tests", () => {
137
149
  });
138
150
 
139
151
  test("Complex object array merge and insert", () => {
140
- let result = argumentValueMerge({ a: [{ b: 1 }, { c: 2 }, { d: 3 }] }, {
141
- a: [{ b: 1 }, { c: 2 }, { d: 3 }],
142
- });
152
+ let result = argumentValueMerge(
153
+ { a: [{ b: 1 }, { c: 2 }, { d: 3 }] },
154
+ {
155
+ a: [{ b: 1 }, { c: 2 }, { d: 3 }],
156
+ },
157
+ );
143
158
  expect(result).toEqual({ a: [{ b: 1 }, { c: 2 }, { d: 3 }] });
144
159
 
145
- result = argumentValueMerge({
146
- a: [{ b: 1 }, { c: 2 }, { d: 3 }, { e: 4 }],
147
- }, { a: [{ b: 1 }, { c: 2 }, { d: 3 }] });
160
+ result = argumentValueMerge(
161
+ {
162
+ a: [{ b: 1 }, { c: 2 }, { d: 3 }, { e: 4 }],
163
+ },
164
+ { a: [{ b: 1 }, { c: 2 }, { d: 3 }] },
165
+ );
148
166
  expect(result).toEqual({ a: [{ b: 1 }, { c: 2 }, { d: 3 }, { e: 4 }] });
149
167
 
150
- result = argumentValueMerge({ a: [{ b: 1 }, { c: 2 }, { d: 3 }] }, {
151
- a: [{ b: 1 }, { c: 2 }, { d: 3 }, { e: 4 }],
152
- });
168
+ result = argumentValueMerge(
169
+ { a: [{ b: 1 }, { c: 2 }, { d: 3 }] },
170
+ {
171
+ a: [{ b: 1 }, { c: 2 }, { d: 3 }, { e: 4 }],
172
+ },
173
+ );
153
174
  expect(result).toEqual({ a: [{ b: 1 }, { c: 2 }, { d: 3 }, { e: 4 }] });
154
175
 
155
- result = argumentValueMerge({ a: [{ b: 1 }, { c: 2 }, { d: 3 }] }, {
156
- a: [{ b: 4 }, { c: 5 }, { d: 6 }, { e: 7 }],
157
- });
176
+ result = argumentValueMerge(
177
+ { a: [{ b: 1 }, { c: 2 }, { d: 3 }] },
178
+ {
179
+ a: [{ b: 4 }, { c: 5 }, { d: 6 }, { e: 7 }],
180
+ },
181
+ );
158
182
  expect(result).toEqual({ a: [{ b: 1 }, { c: 2 }, { d: 3 }, { e: 7 }] });
159
183
 
160
- result = argumentValueMerge({ a: [{ b: 1 }, { c: 2 }, { d: 3 }] }, {
161
- a: [{ b1: 4 }, { c1: 5 }, { d1: 6 }, { e1: 7 }],
162
- });
184
+ result = argumentValueMerge(
185
+ { a: [{ b: 1 }, { c: 2 }, { d: 3 }] },
186
+ {
187
+ a: [{ b1: 4 }, { c1: 5 }, { d1: 6 }, { e1: 7 }],
188
+ },
189
+ );
163
190
  expect(result).toEqual({
164
191
  a: [{ b: 1, b1: 4 }, { c: 2, c1: 5 }, { d: 3, d1: 6 }, { e1: 7 }],
165
192
  });
166
193
 
167
- result = argumentValueMerge({ a: [{ a: 1 }, { a: 2 }, { a: 3 }] }, {
168
- a: [{ a: 4 }, { a: 5 }, { a: 6 }, { a: 7 }],
169
- });
194
+ result = argumentValueMerge(
195
+ { a: [{ a: 1 }, { a: 2 }, { a: 3 }] },
196
+ {
197
+ a: [{ a: 4 }, { a: 5 }, { a: 6 }, { a: 7 }],
198
+ },
199
+ );
170
200
  expect(result).toEqual({
171
201
  a: [{ a: 1 }, { a: 2 }, { a: 3 }, { a: 7 }],
172
202
  });
173
203
  });
174
204
 
175
205
  test("Complex object and arrays merge with no defaults", () => {
176
- const result = argumentValueMerge({
177
- a: { b: { c: "foo" } },
178
- d: [{ e: [{ f: 1 }] }],
179
- }, {});
206
+ const result = argumentValueMerge(
207
+ {
208
+ a: { b: { c: "foo" } },
209
+ d: [{ e: [{ f: 1 }] }],
210
+ },
211
+ {},
212
+ );
180
213
  expect(result).toEqual({ a: { b: { c: "foo" } }, d: [{ e: [{ f: 1 }] }] });
181
214
  });
182
215
 
183
216
  test("Complex object and arrays merge with no overrides", () => {
184
- const result = argumentValueMerge({}, {
185
- a: { b: { c: "foo" } },
186
- d: [{ e: [{ f: 1 }] }],
187
- });
217
+ const result = argumentValueMerge(
218
+ {},
219
+ {
220
+ a: { b: { c: "foo" } },
221
+ d: [{ e: [{ f: 1 }] }],
222
+ },
223
+ );
188
224
  expect(result).toEqual({ a: { b: { c: "foo" } }, d: [{ e: [{ f: 1 }] }] });
189
225
  });
190
226
 
@@ -211,27 +247,36 @@ describe("argumentValueMerge tests", () => {
211
247
  });
212
248
 
213
249
  test("Primitive array merge with undefined values", () => {
214
- const result = argumentValueMerge({ a: [1, 2, 3, undefined] }, {
215
- a: [1, 2, 3],
216
- });
250
+ const result = argumentValueMerge(
251
+ { a: [1, 2, 3, undefined] },
252
+ {
253
+ a: [1, 2, 3],
254
+ },
255
+ );
217
256
  expect(result).toEqual({ a: [1, 2, 3, undefined] });
218
257
  });
219
258
 
220
259
  test("Primitive array merge and override with undefined values", () => {
221
- const result = argumentValueMerge({ a: [1, 2, undefined] }, {
222
- a: [1, 2, 3],
223
- });
260
+ const result = argumentValueMerge(
261
+ { a: [1, 2, undefined] },
262
+ {
263
+ a: [1, 2, 3],
264
+ },
265
+ );
224
266
  expect(result).toEqual({ a: [1, 2, 3] });
225
267
  });
226
268
 
227
269
  test("Complex object and arrays merge undefined values", () => {
228
- const result = argumentValueMerge({
229
- a: { b: { c: undefined } },
230
- d: [{ e: [{ f: 1 }, { g: 2 }, { g2: 3 }, undefined] }],
231
- }, {
232
- a: { b: { c1: "foo" } },
233
- d: [{ e: [{ f: 0 }, { g: 2 }, { g1: 2 }] }],
234
- });
270
+ const result = argumentValueMerge(
271
+ {
272
+ a: { b: { c: undefined } },
273
+ d: [{ e: [{ f: 1 }, { g: 2 }, { g2: 3 }, undefined] }],
274
+ },
275
+ {
276
+ a: { b: { c1: "foo" } },
277
+ d: [{ e: [{ f: 0 }, { g: 2 }, { g1: 2 }] }],
278
+ },
279
+ );
235
280
  expect(result).toEqual({
236
281
  a: { b: { c: undefined, c1: "foo" } },
237
282
  d: [{ e: [{ f: 1 }, { g: 2 }, { g1: 2, g2: 3 }, undefined] }],
@@ -239,10 +284,13 @@ describe("argumentValueMerge tests", () => {
239
284
  });
240
285
 
241
286
  test("Complex object and arrays merge and override with undefined values", () => {
242
- const result = argumentValueMerge({
243
- a: { b: { c: undefined } },
244
- d: [{ e: [{ f: 1 }, undefined, { g2: 3 }] }],
245
- }, { a: { b: { c: "foo" } }, d: [{ e: [{ f: 0 }, { g: 2 }, { g1: 2 }] }] });
287
+ const result = argumentValueMerge(
288
+ {
289
+ a: { b: { c: undefined } },
290
+ d: [{ e: [{ f: 1 }, undefined, { g2: 3 }] }],
291
+ },
292
+ { a: { b: { c: "foo" } }, d: [{ e: [{ f: 0 }, { g: 2 }, { g1: 2 }] }] },
293
+ );
246
294
  expect(result).toEqual({
247
295
  a: { b: { c: "foo" } },
248
296
  d: [{ e: [{ f: 1 }, { g: 2 }, { g1: 2, g2: 3 }] }],
@@ -250,16 +298,22 @@ describe("argumentValueMerge tests", () => {
250
298
  });
251
299
 
252
300
  test("Complex object merge with undefined objects", () => {
253
- const result = argumentValueMerge({ a: { b1: undefined } }, {
254
- a: { b2: { c: "foo" } },
255
- });
301
+ const result = argumentValueMerge(
302
+ { a: { b1: undefined } },
303
+ {
304
+ a: { b2: { c: "foo" } },
305
+ },
306
+ );
256
307
  expect(result).toEqual({ a: { b1: undefined, b2: { c: "foo" } } });
257
308
  });
258
309
 
259
310
  test("Complex object merge and override with undefined objects", () => {
260
- const result = argumentValueMerge({ a: { b: undefined } }, {
261
- a: { b: { c: "foo" } },
262
- });
311
+ const result = argumentValueMerge(
312
+ { a: { b: undefined } },
313
+ {
314
+ a: { b: { c: "foo" } },
315
+ },
316
+ );
263
317
  expect(result).toEqual({ a: { b: { c: "foo" } } });
264
318
  });
265
319
 
@@ -268,14 +322,12 @@ describe("argumentValueMerge tests", () => {
268
322
  for (let i = 0; i <= MAXIMUM_ARGUMENT_ARRAY_SIZE; i++) {
269
323
  illegal.push(i);
270
324
  }
271
- expect(() => argumentValueMerge({ a: illegal }, { a: [1, 2] }))
272
- .toThrowError(
273
- "Maximum array size exceeded: 256",
274
- );
275
- expect(() => argumentValueMerge({ a: [1, 2] }, { a: illegal }))
276
- .toThrowError(
277
- "Maximum array size exceeded:",
278
- );
325
+ expect(() => argumentValueMerge({ a: illegal }, { a: [1, 2] })).toThrowError(
326
+ "Maximum array size exceeded: 256",
327
+ );
328
+ expect(() => argumentValueMerge({ a: [1, 2] }, { a: illegal })).toThrowError(
329
+ "Maximum array size exceeded:",
330
+ );
279
331
  });
280
332
 
281
333
  test("Maximum nesting depth asserted", () => {