@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
|
@@ -78,44 +78,56 @@ describe("argumentValueMerge tests", () => {
|
|
|
78
78
|
});
|
|
79
79
|
|
|
80
80
|
test("Complex object and arrays merge", () => {
|
|
81
|
-
const result = argumentValueMerge(
|
|
82
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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(
|
|
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
|
-
|
|
147
|
-
|
|
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(
|
|
151
|
-
a: [{ b: 1 }, { c: 2 }, { d: 3 }
|
|
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(
|
|
156
|
-
a: [{ b:
|
|
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(
|
|
161
|
-
a: [{
|
|
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(
|
|
168
|
-
a: [{ a:
|
|
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
|
-
|
|
178
|
-
|
|
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
|
-
|
|
186
|
-
|
|
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(
|
|
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(
|
|
222
|
-
a: [1, 2,
|
|
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
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
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
|
-
|
|
244
|
-
|
|
245
|
-
|
|
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(
|
|
254
|
-
|
|
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(
|
|
261
|
-
a: { b:
|
|
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
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
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", () => {
|