Skip to content

Commit cb4e502

Browse files
committed
feat: enable ctor arg passthrough for requestHandler
1 parent d70a00a commit cb4e502

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/RuntimeConfigGenerator.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ final class RuntimeConfigGenerator {
5858
writer.addDependency(TypeScriptDependency.AWS_SDK_NODE_HTTP_HANDLER);
5959
writer.addImport("NodeHttpHandler", "RequestHandler",
6060
TypeScriptDependency.AWS_SDK_NODE_HTTP_HANDLER);
61-
writer.write("new RequestHandler(defaultConfigProvider)");
61+
writer.write("RequestHandler.create(config.requestHandler ?? defaultConfigProvider)");
6262
},
6363
"sha256", writer -> {
6464
writer.addDependency(TypeScriptDependency.AWS_SDK_HASH_NODE);
@@ -81,7 +81,7 @@ final class RuntimeConfigGenerator {
8181
writer.addDependency(TypeScriptDependency.AWS_SDK_FETCH_HTTP_HANDLER);
8282
writer.addImport("FetchHttpHandler", "RequestHandler",
8383
TypeScriptDependency.AWS_SDK_FETCH_HTTP_HANDLER);
84-
writer.write("new RequestHandler(defaultConfigProvider)");
84+
writer.write("RequestHandler.create(config.requestHandler ?? defaultConfigProvider)");
8585
},
8686
"sha256", writer -> {
8787
writer.addDependency(TypeScriptDependency.AWS_CRYPTO_SHA256_BROWSER);
@@ -197,11 +197,20 @@ void generate(LanguageTarget target) {
197197
}
198198
int indentation = target.equals(LanguageTarget.SHARED) ? 1 : 2;
199199
configs.forEach((key, value) -> {
200-
writer.indent(indentation).disableNewlines().openBlock("$1L: config?.$1L ?? ", ",\n", key,
201-
() -> {
202-
value.accept(writer);
203-
});
204-
writer.dedent(indentation);
200+
String defaultPrefix = "config?.$1L ?? ";
201+
if (key.equals("requestHandler")) {
202+
defaultPrefix = "";
203+
}
204+
writer
205+
.indent(indentation)
206+
.disableNewlines()
207+
.openBlock(
208+
"$1L: " + defaultPrefix, ",\n", key,
209+
() -> {
210+
value.accept(writer);
211+
}
212+
)
213+
.dedent(indentation);
205214
});
206215
});
207216
writer.dedent();

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/ServiceBareBonesClientGenerator.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,11 +253,13 @@ private void generateClientDefaults() {
253253

254254
writer.writeDocs("@public")
255255
.openBlock("export interface ClientDefaults\n"
256-
+ " extends Partial<__SmithyResolvedConfiguration<$T>> {", "}",
256+
+ " extends Partial<__SmithyConfiguration<$T>> {", "}",
257257
applicationProtocol.getOptionsType(), () -> {
258-
writer.addImport("HttpHandler", "__HttpHandler", TypeScriptDependency.PROTOCOL_HTTP);
259-
writer.writeDocs("The HTTP handler to use. Fetch in browser and Https in Nodejs.");
260-
writer.write("requestHandler?: __HttpHandler;\n");
258+
writer.addImport("HttpHandlerUserInput", "__HttpHandlerUserInput", TypeScriptDependency.PROTOCOL_HTTP);
259+
writer.writeDocs(
260+
"The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs."
261+
);
262+
writer.write("requestHandler?: __HttpHandlerUserInput;\n");
261263

262264
writer.addImport("HashConstructor", "__HashConstructor", TypeScriptDependency.SMITHY_TYPES);
263265
writer.addImport("ChecksumConstructor", "__ChecksumConstructor", TypeScriptDependency.SMITHY_TYPES);

0 commit comments

Comments
 (0)