9
9
import java .util .Iterator ;
10
10
import java .util .List ;
11
11
import java .util .Map ;
12
+ import java .util .stream .Collectors ;
12
13
import software .amazon .smithy .codegen .core .CodegenException ;
13
14
import software .amazon .smithy .codegen .core .Symbol ;
14
15
import software .amazon .smithy .model .knowledge .ServiceIndex ;
@@ -286,8 +287,10 @@ private void generateHttpAuthSchemeInputConfigInterface(
286
287
w .write ("httpAuthSchemeProvider?: $L;\n " , httpAuthSchemeProviderName );
287
288
288
289
for (ConfigField configField : configFields .values ()) {
289
- configField .docs ().ifPresent (docs -> w .writeDocs (() -> w .write ("$C" , docs )));
290
- w .write ("$L?: $T;" , configField .name (), configField .inputType ());
290
+ if (configField .configFieldWriter ().isPresent ()) {
291
+ configField .docs ().ifPresent (docs -> w .writeDocs (() -> w .write ("$C" , docs )));
292
+ w .write ("$L?: $T;" , configField .name (), configField .inputType ());
293
+ }
291
294
}
292
295
w .dedent ();
293
296
w .write ("}\n " );
@@ -349,8 +352,10 @@ private void generateHttpAuthSchemeResolvedConfigInterface(
349
352
@internal""" );
350
353
w .write ("readonly httpAuthSchemeProvider: $L;\n " , httpAuthSchemeProviderName );
351
354
for (ConfigField configField : configFields .values ()) {
352
- configField .docs ().ifPresent (docs -> w .writeDocs (() -> w .write ("$C" , docs )));
353
- w .write ("readonly $L?: $T;" , configField .name (), configField .resolvedType ());
355
+ if (configField .configFieldWriter ().isPresent ()) {
356
+ configField .docs ().ifPresent (docs -> w .writeDocs (() -> w .write ("$C" , docs )));
357
+ w .write ("readonly $L?: $T;" , configField .name (), configField .resolvedType ());
358
+ }
354
359
}
355
360
w .dedent ();
356
361
w .write ("}\n " );
@@ -379,33 +384,23 @@ private void generateResolveHttpAuthSchemeConfigFunction(
379
384
w .pushState (s );
380
385
Map <String , ConfigField > configFields = s .getConfigFields ();
381
386
Map <Symbol , ResolveConfigFunction > resolveConfigFunctions = s .getResolveConfigFunctions ();
387
+ Map <Symbol , ResolveConfigFunction > previousResolvedFunctions = resolveConfigFunctions .entrySet ().stream ()
388
+ .filter (e -> e .getValue ().previouslyResolved ().isPresent ())
389
+ .collect (Collectors .toMap (Map .Entry ::getKey , Map .Entry ::getValue ));
382
390
w .writeDocs ("@internal" );
383
391
w .writeInline ("export const resolveHttpAuthSchemeConfig = <T>(config: T & HttpAuthSchemeInputConfig" );
384
- if (!resolveConfigFunctions .isEmpty ()) {
385
- w .writeInline (" & " );
386
- Iterator <ResolveConfigFunction > iter = resolveConfigFunctions .values ().iterator ();
387
- while (iter .hasNext ()) {
388
- ResolveConfigFunction entry = iter .next ();
389
- w .writeInline ("$T" , entry .inputConfig ());
390
- entry .previouslyResolved ().ifPresent (p -> w .writeInline (" & $T" , p ));
391
- if (iter .hasNext ()) {
392
- w .writeInline (" & " );
393
- }
394
- }
395
- }
396
- w .writeInline ("): T & HttpAuthSchemeResolvedConfig" );
397
- if (!resolveConfigFunctions .isEmpty ()) {
392
+ if (!previousResolvedFunctions .isEmpty ()) {
398
393
w .writeInline (" & " );
399
- Iterator <ResolveConfigFunction > iter = resolveConfigFunctions .values ().iterator ();
394
+ Iterator <ResolveConfigFunction > iter = previousResolvedFunctions .values ().iterator ();
400
395
while (iter .hasNext ()) {
401
396
ResolveConfigFunction entry = iter .next ();
402
- w .writeInline ("$T" , entry .resolvedConfig ());
397
+ w .writeInline ("$T" , entry .previouslyResolved (). get ());
403
398
if (iter .hasNext ()) {
404
399
w .writeInline (" & " );
405
400
}
406
401
}
407
402
}
408
- w .write (" => {" );
403
+ w .write ("): T & HttpAuthSchemeResolvedConfig => {" );
409
404
w .indent ();
410
405
w .pushState (ResolveHttpAuthSchemeConfigFunctionConfigFieldsCodeSection .builder ()
411
406
.service (s .getService ())
@@ -417,7 +412,7 @@ private void generateResolveHttpAuthSchemeConfigFunction(
417
412
.build ());
418
413
w .addDependency (TypeScriptDependency .SMITHY_CORE );
419
414
for (ConfigField configField : configFields .values ()) {
420
- configField .configFieldWriter ().accept (w , configField );
415
+ configField .configFieldWriter ().ifPresent ( cfw -> cfw . accept (w , configField ) );
421
416
}
422
417
w .popState ();
423
418
w .pushState (ResolveHttpAuthSchemeConfigFunctionReturnBlockCodeSection .builder ()
@@ -428,16 +423,23 @@ private void generateResolveHttpAuthSchemeConfigFunction(
428
423
.integrations (s .getIntegrations ())
429
424
.configFields (configFields )
430
425
.build ());
431
-
426
+ Integer i = 0 ;
427
+ String configName = "config" ;
432
428
for (ResolveConfigFunction resolveConfigFunction : resolveConfigFunctions .values ()) {
433
- w .write ("config = $T(config);" , resolveConfigFunction .resolveConfigFunction ());
429
+ w .write ("const config_$L = $T($L);" , i , resolveConfigFunction .resolveConfigFunction (), configName );
430
+ configName = "config_" + i ;
431
+ i ++;
434
432
}
435
- w .openBlock ("return {" , "} as T & HttpAuthSchemeResolvedConfig;" , () -> {
436
- w .write ("...config," );
437
- for (ConfigField configField : configFields .values ()) {
433
+ w .write ("return {" );
434
+ w .indent ();
435
+ w .write ("...$L," , configName );
436
+ for (ConfigField configField : configFields .values ()) {
437
+ if (configField .configFieldWriter ().isPresent ()) {
438
438
w .write ("$L," , configField .name ());
439
439
}
440
- });
440
+ }
441
+ w .dedent ();
442
+ w .write ("} as T & HttpAuthSchemeResolvedConfig;" );
441
443
w .popState ();
442
444
w .dedent ();
443
445
w .write ("};" );
0 commit comments