3333import software .amazon .smithy .model .Model ;
3434import software .amazon .smithy .model .knowledge .OperationIndex ;
3535import software .amazon .smithy .model .knowledge .TopDownIndex ;
36+ import software .amazon .smithy .model .pattern .SmithyPattern ;
3637import software .amazon .smithy .model .shapes .MemberShape ;
3738import software .amazon .smithy .model .shapes .OperationShape ;
3839import software .amazon .smithy .model .shapes .ServiceShape ;
4748import software .amazon .smithy .model .traits .HttpHeaderTrait ;
4849import software .amazon .smithy .model .traits .HttpPayloadTrait ;
4950import software .amazon .smithy .model .traits .StreamingTrait ;
51+ import software .amazon .smithy .model .traits .Trait ;
5052import software .amazon .smithy .model .transform .ModelTransformer ;
5153import software .amazon .smithy .rulesengine .traits .EndpointRuleSetTrait ;
5254import software .amazon .smithy .typescript .codegen .LanguageTarget ;
@@ -89,7 +91,23 @@ public final class AddS3Config implements TypeScriptIntegration {
8991 public static Shape removeHostPrefixTrait (Shape shape ) {
9092 return shape .asOperationShape ()
9193 .map (OperationShape ::shapeToBuilder )
92- .map (builder -> ((OperationShape .Builder ) builder ).removeTrait (EndpointTrait .ID ))
94+ .map ((Object object ) -> {
95+ OperationShape .Builder builder = (OperationShape .Builder ) object ;
96+ Trait trait = builder .getAllTraits ().get (EndpointTrait .ID );
97+ if (trait instanceof EndpointTrait endpointTrait ) {
98+ if (
99+ endpointTrait .getHostPrefix ().equals (
100+ SmithyPattern .builder ()
101+ .segments (List .of ())
102+ .pattern ("{AccountId}." )
103+ .build ()
104+ )
105+ ) {
106+ builder .removeTrait (EndpointTrait .ID );
107+ }
108+ }
109+ return builder ;
110+ })
93111 .map (OperationShape .Builder ::build )
94112 .map (s -> (Shape ) s )
95113 .orElse (shape );
@@ -224,7 +242,7 @@ public Model preprocessModel(Model model, TypeScriptSettings settings) {
224242
225243 Model builtModel = modelBuilder .addShapes (inputShapes ).build ();
226244 if (hasRuleset ) {
227- ModelTransformer .create ().mapShapes (
245+ return ModelTransformer .create ().mapShapes (
228246 builtModel , AddS3Config ::removeHostPrefixTrait
229247 );
230248 }
@@ -246,9 +264,9 @@ public void addConfigInterfaceFields(
246264 .write ("signingEscapePath?: boolean;\n " );
247265 writer .writeDocs (
248266 "Whether to override the request region with the region inferred from requested resource's ARN."
249- + " Defaults to false ." )
267+ + " Defaults to undefined ." )
250268 .addImport ("Provider" , "Provider" , TypeScriptDependency .SMITHY_TYPES )
251- .write ("useArnRegion?: boolean | Provider<boolean>;" );
269+ .write ("useArnRegion?: boolean | undefined | Provider<boolean | undefined >;" );
252270 }
253271
254272 @ Override
@@ -266,7 +284,7 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
266284 writer .write ("false" );
267285 },
268286 "useArnRegion" , writer -> {
269- writer .write ("false " );
287+ writer .write ("undefined " );
270288 }
271289 );
272290 case NODE :
0 commit comments