Skip to content

Commit 19568d5

Browse files
committed
only mixin stream utils in client SDK
1 parent 53dc4e9 commit 19568d5

File tree

4 files changed

+29
-34
lines changed

4 files changed

+29
-34
lines changed

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

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ static List<MemberShape> getBlobStreamingMembers(Model model, StructureShape sha
117117
return shape.getAllMembers().values().stream()
118118
.filter(memberShape -> {
119119
// Streaming blobs need to have their types modified
120-
// See `writeStreamingCommandTypeToSer`
120+
// See `writeClientCommandStreamingInputType`
121121
Shape target = model.expectShape(memberShape.getTarget());
122122
return target.isBlobShape() && target.hasTrait(StreamingTrait.class);
123123
})
@@ -132,18 +132,20 @@ static List<MemberShape> getBlobStreamingMembers(Model model, StructureShape sha
132132
* more permissive than the type to be deserialized.
133133
* Refer here for more rationales: https://github.com/aws/aws-sdk-js-v3/issues/843
134134
*/
135-
static void writeStreamingCommandTypeToSer(
135+
static void writeClientCommandStreamingInputType(
136136
TypeScriptWriter writer,
137137
Symbol containerSymbol,
138138
String typeName,
139139
MemberShape streamingMember
140140
) {
141141
String memberName = streamingMember.getMemberName();
142142
String optionalSuffix = streamingMember.isRequired() ? "" : "?";
143-
writer.openBlock("type $LType = Omit<$T, $S> & {", "};", typeName, containerSymbol, memberName, () -> {
144-
writer.writeDocs(String.format("For *`%1$s[\"%2$s\"]`*, see {@link %1$s.%2$s}.",
145-
containerSymbol.getName(), memberName));
146-
writer.write("$1L$2L: $3T[$1S]|string|Uint8Array|Buffer;", memberName, optionalSuffix, containerSymbol);
143+
writer.openBlock("type $LType = Omit<$T, $S> & {", "};", typeName,
144+
containerSymbol, memberName, () -> {
145+
writer.writeDocs(String.format("For *`%1$s[\"%2$s\"]`*, see {@link %1$s.%2$s}.",
146+
containerSymbol.getName(), memberName));
147+
writer.write("$1L$2L: $3T[$1S]|string|Uint8Array|Buffer;", memberName, optionalSuffix,
148+
containerSymbol);
147149
});
148150
writer.writeDocs(String.format("This interface extends from `%1$s` interface. There are more parameters than"
149151
+ " `%2$s` defined in {@link %1$s}", containerSymbol.getName(), memberName));
@@ -155,23 +157,18 @@ static void writeStreamingCommandTypeToSer(
155157
* member of the shape. The type marks the streaming blob member to contain the utility methods to transform the
156158
* stream to string, buffer or WHATWG stream API.
157159
*/
158-
static void writeStreamingCommandTypeFromDeser(
160+
static void writeClientCommandStreamingOutputType(
159161
TypeScriptWriter writer,
160162
Symbol containerSymbol,
161163
String typeName,
162-
MemberShape streamingMember,
163-
TypeScriptSettings settings
164+
MemberShape streamingMember
164165
) {
165166
String memberName = streamingMember.getMemberName();
166167
String optionalSuffix = streamingMember.isRequired() ? "" : "?";
167-
boolean isClientSdk = settings.generateClient();
168-
if (isClientSdk) {
169-
writer.addImport("MetadataBearer", "__MetadataBearer", TypeScriptDependency.AWS_SDK_TYPES.packageName);
170-
}
171-
String metadataBearerType = isClientSdk ? "__MetadataBearer & " : "";
168+
writer.addImport("MetadataBearer", "__MetadataBearer", TypeScriptDependency.AWS_SDK_TYPES.packageName);
172169
writer.addImport("SdkStream", "__SdkStream", TypeScriptDependency.AWS_SDK_TYPES.packageName);
173-
writer.openBlock("type $LType = $LOmit<$T, $S> & {", "};",
174-
typeName, metadataBearerType, containerSymbol, memberName, () -> {
170+
writer.openBlock("type $LType = __MetadataBearer & Omit<$T, $S> & {", "};",
171+
typeName, containerSymbol, memberName, () -> {
175172
writer.writeDocs(String.format("For *`%1$s[\"%2$s\"]`*, see {@link %1$s.%2$s}.",
176173
containerSymbol.getName(), memberName));
177174
writer.write("$1L$2L: __SdkStream<Required<$3T>[$1S]>;", memberName, optionalSuffix,

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
package software.amazon.smithy.typescript.codegen;
1717

1818
import static software.amazon.smithy.typescript.codegen.CodegenUtils.getBlobStreamingMembers;
19-
import static software.amazon.smithy.typescript.codegen.CodegenUtils.writeStreamingCommandTypeFromDeser;
20-
import static software.amazon.smithy.typescript.codegen.CodegenUtils.writeStreamingCommandTypeToSer;
19+
import static software.amazon.smithy.typescript.codegen.CodegenUtils.writeClientCommandStreamingInputType;
20+
import static software.amazon.smithy.typescript.codegen.CodegenUtils.writeClientCommandStreamingOutputType;
2121

2222
import java.nio.file.Paths;
2323
import java.util.List;
@@ -247,7 +247,7 @@ private void writeInputType(String typeName, Optional<StructureShape> inputShape
247247
if (blobStreamingMembers.isEmpty()) {
248248
writer.write("export interface $L extends $T {}", typeName, symbolProvider.toSymbol(input));
249249
} else {
250-
writeStreamingCommandTypeToSer(writer, symbolProvider.toSymbol(input), typeName,
250+
writeClientCommandStreamingInputType(writer, symbolProvider.toSymbol(input), typeName,
251251
blobStreamingMembers.get(0));
252252
}
253253
} else {
@@ -267,8 +267,8 @@ private void writeOutputType(String typeName, Optional<StructureShape> outputSha
267267
writer.write("export interface $L extends $T, __MetadataBearer {}",
268268
typeName, symbolProvider.toSymbol(outputShape.get()));
269269
} else {
270-
writeStreamingCommandTypeFromDeser(writer, symbolProvider.toSymbol(output), typeName,
271-
blobStreamingMembers.get(0), settings);
270+
writeClientCommandStreamingOutputType(writer, symbolProvider.toSymbol(output), typeName,
271+
blobStreamingMembers.get(0));
272272
}
273273
} else {
274274
writer.write("export interface $L extends __MetadataBearer {}", typeName);

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

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@
1515

1616
package software.amazon.smithy.typescript.codegen;
1717

18-
import static software.amazon.smithy.typescript.codegen.CodegenUtils.getBlobStreamingMembers;
19-
import static software.amazon.smithy.typescript.codegen.CodegenUtils.writeStreamingCommandTypeFromDeser;
20-
2118
import java.nio.file.Paths;
2219
import java.util.Collections;
2320
import java.util.Iterator;
@@ -31,7 +28,6 @@
3128
import software.amazon.smithy.model.Model;
3229
import software.amazon.smithy.model.knowledge.OperationIndex;
3330
import software.amazon.smithy.model.knowledge.TopDownIndex;
34-
import software.amazon.smithy.model.shapes.MemberShape;
3531
import software.amazon.smithy.model.shapes.OperationShape;
3632
import software.amazon.smithy.model.shapes.ServiceShape;
3733
import software.amazon.smithy.model.shapes.StructureShape;
@@ -101,13 +97,15 @@ private void addInputAndOutputTypes() {
10197
private void writeInputType(String typeName, Optional<StructureShape> inputShape) {
10298
if (inputShape.isPresent()) {
10399
StructureShape input = inputShape.get();
104-
List<MemberShape> blobStreamingMembers = getBlobStreamingMembers(model, input);
105-
if (blobStreamingMembers.isEmpty()) {
106-
writer.write("export interface $L extends $T {}", typeName, symbolProvider.toSymbol(input));
107-
} else {
108-
writeStreamingCommandTypeFromDeser(writer, symbolProvider.toSymbol(input), typeName,
109-
blobStreamingMembers.get(0), settings);
110-
}
100+
// List<MemberShape> blobStreamingMembers = getBlobStreamingMembers(model, input);
101+
// if (blobStreamingMembers.isEmpty()) {
102+
// writer.write("export interface $L extends $T {}", typeName, symbolProvider.toSymbol(input));
103+
// } else {
104+
// writeClientCommandStreamingOutputType(writer, symbolProvider.toSymbol(input), typeName,
105+
// blobStreamingMembers.get(0), settings);
106+
// }
107+
writer.write("export interface $L extends $T {}", typeName,
108+
symbolProvider.toSymbol(inputShape.get()));
111109
renderNamespace(typeName, input);
112110
} else {
113111
// If the input is non-existent, then use an empty object.
@@ -134,7 +132,6 @@ private void renderNamespace(String typeName, StructureShape input) {
134132

135133
private void writeOutputType(String typeName, Optional<StructureShape> outputShape) {
136134
if (outputShape.isPresent()) {
137-
//TODO: refer to writeStreamingCommandTypeToSer when streaming is supported.
138135
writer.write("export interface $L extends $T {}",
139136
typeName, symbolProvider.toSymbol(outputShape.get()));
140137
} else {

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpBindingProtocolGenerator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2295,6 +2295,7 @@ private HttpBinding readPayload(
22952295
HttpBinding binding
22962296
) {
22972297
TypeScriptWriter writer = context.getWriter();
2298+
boolean isClientSdk = context.getSettings().generateClient();
22982299

22992300
// There can only be one payload binding.
23002301
Shape target = context.getModel().expectShape(binding.getMember().getTarget());
@@ -2303,7 +2304,7 @@ private HttpBinding readPayload(
23032304
if (target.hasTrait(StreamingTrait.class)) {
23042305
writer.write("const data: any = output.body;");
23052306
// If payload is streaming blob, return low-level stream with the stream utility functions mixin.
2306-
if (target instanceof BlobShape) {
2307+
if (isClientSdk && target instanceof BlobShape) {
23072308
writer.write("context.sdkStreamMixin(data);");
23082309
}
23092310
} else if (target instanceof BlobShape) {

0 commit comments

Comments
 (0)