Skip to content

Commit 2f00e55

Browse files
authored
Remove __type and isa function (#208)
1 parent 0dd8c14 commit 2f00e55

File tree

10 files changed

+24
-50
lines changed

10 files changed

+24
-50
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ private void generateErrorResponseTest(
361361
writer.write("try {\n"
362362
+ " await client.send(command);\n"
363363
+ "} catch (err) {\n"
364-
+ " if (!$T.isa(err)) {\n"
364+
+ " if (err.name !== \"$T\") {\n"
365365
+ " console.log(err);\n"
366366
+ " fail(`Expected a $L to be thrown, got $${err.name} instead`);\n"
367367
+ " return;\n"

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

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,16 +69,13 @@ public void run() {
6969
* <p>The following TypeScript is rendered:
7070
*
7171
* <pre>{@code
72-
* import { isa as __isa } from "@aws-sdk/smithy-client";
73-
*
7472
* export interface Person {
75-
* __type?: "Person";
7673
* name: string | undefined;
7774
* age?: number | null;
7875
* }
7976
*
8077
* export namespace Person {
81-
* export const isa = (o: any): o is Person => __isa(o, "Person");
78+
* export const filterSensitiveLog = (obj: Person): any => ({...obj});
8279
* }
8380
* }</pre>
8481
*/
@@ -98,7 +95,6 @@ private void renderNonErrorStructure() {
9895
writer.openBlock("export interface $L extends $L {", symbol.getName(), extendsFrom);
9996
}
10097

101-
writer.write("__type?: $S;", shape.getId().getName());
10298
StructuredMemberWriter config = new StructuredMemberWriter(
10399
model, symbolProvider, shape.getAllMembers().values());
104100
config.writeMembers(writer, shape);
@@ -127,8 +123,7 @@ private void renderNonErrorStructure() {
127123
*
128124
* <pre>{@code
129125
* import {
130-
* SmithyException as __SmithyException,
131-
* isa as __isa
126+
* SmithyException as __SmithyException
132127
* } from "@aws-sdk/smithy-client";
133128
*
134129
* export interface NoSuchResource extends __SmithyException, $MetadataBearer {
@@ -138,7 +133,7 @@ private void renderNonErrorStructure() {
138133
* }
139134
*
140135
* export namespace NoSuchResource {
141-
* export const isa = (o: any): o is NoSuchResource => __isa(o, "NoSuchResource");
136+
* export const filterSensitiveLog = (obj: NoSuchResource): any => ({...obj});
142137
* }
143138
* }</pre>
144139
*/
@@ -169,7 +164,6 @@ private void renderErrorStructure() {
169164
}
170165

171166
private void renderStructureNamespace() {
172-
writer.addImport("isa", "__isa", "@aws-sdk/smithy-client");
173167
writer.addImport("SENSITIVE_STRING", "SENSITIVE_STRING", "@aws-sdk/smithy-client");
174168
Symbol symbol = symbolProvider.toSymbol(shape);
175169
writer.openBlock("export namespace $L {", "}", symbol.getName(), () -> {
@@ -182,9 +176,6 @@ private void renderStructureNamespace() {
182176
structuredMemberWriter.writeFilterSensitiveLog(writer, objectParam);
183177
}
184178
);
185-
writer.write("export const isa = (o: any): o is $L => __isa(o, $S);",
186-
symbol.getName(), shape.getId().getName()
187-
);
188179
});
189180
}
190181
}

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

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -59,39 +59,42 @@
5959
* | Attacker.$UnknownMember;
6060
*
6161
* export namespace Attacker {
62-
* export const ID = "smithy.example#Attacker";
63-
* interface $Base {
64-
* __type?: "Attacker",
65-
* }
66-
* export interface LionMember extends $Base {
62+
*
63+
* export interface LionMember {
6764
* lion: Lion;
6865
* tiger?: never;
66+
* bear?: never;
6967
* $unknown?: never;
7068
* }
71-
* export interface TigerMember extends $Base {
69+
*
70+
* export interface TigerMember {
7271
* lion?: never;
7372
* tiger?: Tiger;
7473
* bear?: never;
7574
* $unknown?: never;
7675
* }
77-
* export interface BearMember extends $Base {
76+
*
77+
* export interface BearMember {
7878
* lion?: never;
7979
* tiger?: never;
8080
* bear: Bear;
8181
* $unknown: never;
8282
* }
83-
* export interface $UnknownMember extends $Base {
83+
*
84+
* export interface $UnknownMember {
8485
* lion?: never;
8586
* tiger?: never;
8687
* bear?: never;
8788
* $unknown: [string, any];
8889
* }
90+
*
8991
* export interface Visitor<T> {
9092
* lion: (value: Lion) => T;
9193
* tiger: (value: Tiger) => T;
9294
* bear: (value: Bear) => T;
9395
* _: (name: string, value: any) => T;
9496
* }
97+
*
9598
* export const visit = <T>(
9699
* value: Attacker,
97100
* visitor: Visitor<T>
@@ -101,6 +104,7 @@
101104
* if (value.bear !== undefined) return visitor.bear(value.bear);
102105
* return visitor._(value.$unknown[0], value.$unknown[1]);
103106
* }
107+
*
104108
* export const filterSensitiveLog = (obj: Attacker) => {
105109
* if (obj.lion !== undefined)
106110
* return { lion: Lion.filterSensitiveLog(obj.lion) };
@@ -163,15 +167,12 @@ public void run() {
163167
}
164168

165169
private void writeUnionMemberInterfaces() {
166-
writer.openBlock("interface $$Base {", "}", () -> {
167-
writer.write("__type?: $S;", shape.getId().getName());
168-
});
169170
writer.write("");
170171

171172
for (MemberShape member : shape.getAllMembers().values()) {
172173
String name = variantMap.get(member.getMemberName());
173174
writer.writeMemberDocs(model, member);
174-
writer.openBlock("export interface $L extends $$Base {", "}", name, () -> {
175+
writer.openBlock("export interface $L {", "}", name, () -> {
175176
for (MemberShape variantMember : shape.getAllMembers().values()) {
176177
if (variantMember.getMemberName().equals(member.getMemberName())) {
177178
writer.write("$L: $T;", symbolProvider.toMemberName(variantMember),
@@ -186,7 +187,7 @@ private void writeUnionMemberInterfaces() {
186187
}
187188

188189
// Write out the unknown variant.
189-
writer.openBlock("export interface $$UnknownMember extends $$Base {", "}", () -> {
190+
writer.openBlock("export interface $$UnknownMember {", "}", () -> {
190191
for (MemberShape member : shape.getAllMembers().values()) {
191192
writer.write("$L?: never;", symbolProvider.toMemberName(member));
192193
}

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,6 @@ protected Void getDefault(Shape shape) {
220220
*
221221
* <pre>{@code
222222
* let contents: any = {
223-
* __type: "Field",
224223
* fooValue: undefined,
225224
* barValue: undefined,
226225
* };
@@ -479,7 +478,6 @@ public final Void setShape(SetShape shape) {
479478
* context: SerdeContext
480479
* ): Field => {
481480
* let field: any = {
482-
* __type: "Field",
483481
* fooValue: undefined,
484482
* barValue: undefined,
485483
* };

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -845,7 +845,6 @@ private void generateOperationDeserializer(
845845

846846
// Only set a type and the members if we have output.
847847
operation.getOutput().ifPresent(outputId -> {
848-
writer.write("__type: $S,", outputId.getName());
849848
// Set all the members to undefined to meet type constraints.
850849
StructureShape target = model.expectShape(outputId).asStructureShape().get();
851850
new TreeMap<>(target.getAllMembers())
@@ -1141,11 +1140,7 @@ private void generateEventDeserializer(GenerationContext context, StructureShape
11411140
if (event.hasTrait(ErrorTrait.class)) {
11421141
generateErrorEventDeserializer(context, event);
11431142
} else {
1144-
writer.openBlock("let contents: $L = {", "} as any;", symbol.getName(), () -> {
1145-
if (!event.getAllMembers().values().isEmpty()) {
1146-
writer.write("__type: $S,", event.getId().getName());
1147-
}
1148-
});
1143+
writer.write("let contents: $L = {} as any;", symbol.getName());
11491144
readEventHeaders(context, event);
11501145
readEventBody(context, event);
11511146
writer.write("return contents;");

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,6 @@ private void generateOperationDeserializer(GenerationContext context, OperationS
332332
writer.openBlock("const response: $T = {", "};", outputType, () -> {
333333
writer.write("$$metadata: deserializeMetadata(output),");
334334
operation.getOutput().ifPresent(outputId -> {
335-
writer.write("__type: $S,", outputId.getName());
336335
writer.write("...contents,");
337336
});
338337
});

smithy-typescript-codegen/src/main/resources/software/amazon/smithy/typescript/codegen/protocol-test-stub.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ const compareParts = (expectedParts: comparableParts, generatedParts: comparable
9595

9696
/**
9797
* Compares all types for equivalent contents, doing nested
98-
* equality checks based on non-'__type', non-`$$metadata`
98+
* equality checks based on non-`$$metadata`
9999
* properties that have defined values.
100100
*/
101101
const equivalentContents = (expected: any, generated: any): boolean => {
@@ -109,8 +109,6 @@ const equivalentContents = (expected: any, generated: any): boolean => {
109109
// If a test fails with an issue in the below 6 lines, it's likely
110110
// due to an issue in the nestedness or existence of the property
111111
// being compared.
112-
delete localExpected['__type'];
113-
delete generated['__type'];
114112
delete localExpected['$$metadata'];
115113
delete generated['$$metadata'];
116114
Object.keys(localExpected).forEach(key => localExpected[key] === undefined && delete localExpected[key])

smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/CodegenVisitorTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,6 @@ public void generatesServiceClients() {
143143
Assertions.assertTrue(manifest.hasFile("models/index.ts"));
144144
assertThat(manifest.getFileString("models/index.ts").get(),
145145
containsString("export interface Bar {\n" +
146-
" __type?: \"Bar\";\n" +
147146
" baz: string | undefined;\n" +
148147
"}"));
149148
}

smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/StructureGeneratorTest.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -480,11 +480,8 @@ private String testStructureCodegen(String file, String expectedType) {
480480
private void testErrorStructureCodegen(String file, String expectedType) {
481481
String contents = testStructureCodegen(file, expectedType);
482482

483-
assertThat(contents, containsString("as __isa"));
484483
assertThat(contents, containsString("as __SmithyException"));
485484
assertThat(contents, containsString("namespace Err {"));
486-
assertThat(contents, containsString(" export const isa = (o: any): o is Err => "
487-
+ "__isa(o, \"Err\");\n"));
488485
}
489486

490487
@Test
@@ -498,13 +495,9 @@ public void generatesNonErrorStructures() {
498495
new StructureGenerator(model, TypeScriptCodegenPlugin.createSymbolProvider(model), writer, struct).run();
499496
String output = writer.toString();
500497

501-
assertThat(output, containsString("as __isa"));
502498
assertThat(output, containsString("export interface Bar {"));
503-
assertThat(output, containsString("__type?: \"Bar\";"));
504499
assertThat(output, containsString("foo?: string;"));
505500
assertThat(output, containsString("export namespace Bar {"));
506-
assertThat(output, containsString(
507-
"export const isa = (o: any): o is Bar => __isa(o, \"Bar\");"));
508501
}
509502

510503
private StructureShape createNonErrorStructure() {

smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/UnionGeneratorTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,29 +47,29 @@ public void generatesTaggedUnions() {
4747
assertThat(output, containsString("export namespace Example {"));
4848

4949
// It generates an unknown variant
50-
assertThat(output, containsString("export interface $UnknownMember extends $Base {\n"
50+
assertThat(output, containsString("export interface $UnknownMember {\n"
5151
+ " A?: never;\n"
5252
+ " B?: never;\n"
5353
+ " C?: never;\n"
5454
+ " $unknown: [string, any];\n"
5555
+ " }"));
5656

5757
// It generates a variant for each member.
58-
assertThat(output, containsString("export interface AMember extends $Base {\n"
58+
assertThat(output, containsString("export interface AMember {\n"
5959
+ " A: string;\n"
6060
+ " B?: never;\n"
6161
+ " C?: never;\n"
6262
+ " $unknown?: never;\n"
6363
+ " }"));
6464

65-
assertThat(output, containsString("export interface BMember extends $Base {\n"
65+
assertThat(output, containsString("export interface BMember {\n"
6666
+ " A?: never;\n"
6767
+ " B: number;\n"
6868
+ " C?: never;\n"
6969
+ " $unknown?: never;\n"
7070
+ " }"));
7171

72-
assertThat(output, containsString("export interface CMember extends $Base {\n"
72+
assertThat(output, containsString("export interface CMember {\n"
7373
+ " A?: never;\n"
7474
+ " B?: never;\n"
7575
+ " C: boolean;\n"

0 commit comments

Comments
 (0)