30
30
/**
31
31
* Renders a TypeScript union.
32
32
*
33
- * <p>Smithy tagged unions are rendered as a set of TypeScript interfaces
33
+ * <p>
34
+ * Smithy tagged unions are rendered as a set of TypeScript interfaces
34
35
* and functionality used to visit each variant. Only a single member
35
36
* can be set at any given time. A member that contains unknown variants
36
37
* is automatically added to each tagged union. If set, it contains the
37
38
* name of the property that was set and its value stored as an
38
39
* {@code any}.
39
40
*
40
- * <p>A {@code Visitor} interface and a method used to dispatch to the
41
+ * <p>
42
+ * A {@code Visitor} interface and a method used to dispatch to the
41
43
* visitor is generated for each tagged union. This allows for working
42
44
* with tagged unions functionally and account for each variant in a
43
45
* typed way.
44
46
*
45
- * <p>For example, given the following Smithy model:
47
+ * <p>
48
+ * For example, given the following Smithy model:
46
49
*
47
50
* <pre>{@code
48
51
* union Attacker {
52
55
* }
53
56
* }</pre>
54
57
*
55
- * <p>The following code is generated:
58
+ * <p>
59
+ * The following code is generated:
56
60
*
57
61
* <pre>{@code
58
62
* export type Attacker =
122
126
*
123
127
* }</pre>
124
128
*
125
- * <p>Important: Tagged unions in TypeScript are intentionally designed
129
+ * <p>
130
+ * Important: Tagged unions in TypeScript are intentionally designed
126
131
* so that it is forward-compatible to change a structure with optional
127
132
* and mutually exclusive members to a tagged union.
128
133
*/
@@ -146,10 +151,10 @@ final class UnionGenerator implements Runnable {
146
151
}
147
152
148
153
UnionGenerator (Model model ,
149
- SymbolProvider symbolProvider ,
150
- TypeScriptWriter writer ,
151
- UnionShape shape ,
152
- boolean includeValidation ) {
154
+ SymbolProvider symbolProvider ,
155
+ TypeScriptWriter writer ,
156
+ UnionShape shape ,
157
+ boolean includeValidation ) {
153
158
this .shape = shape ;
154
159
this .symbol = symbolProvider .toSymbol (shape );
155
160
this .model = model ;
@@ -198,7 +203,7 @@ private void writeUnionMemberInterfaces() {
198
203
for (MemberShape variantMember : shape .getAllMembers ().values ()) {
199
204
if (variantMember .getMemberName ().equals (member .getMemberName ())) {
200
205
writer .write ("$L: $T;" , symbolProvider .toMemberName (variantMember ),
201
- symbolProvider .toSymbol (variantMember ));
206
+ symbolProvider .toSymbol (variantMember ));
202
207
} else {
203
208
writer .write ("$L?: never;" , symbolProvider .toMemberName (variantMember ));
204
209
}
@@ -222,7 +227,7 @@ private void writeVisitorType() {
222
227
writer .openBlock ("export interface Visitor<T> {" , "}" , () -> {
223
228
for (MemberShape member : shape .getAllMembers ().values ()) {
224
229
writer .write ("$L: (value: $T) => T;" ,
225
- symbolProvider .toMemberName (member ), symbolProvider .toSymbol (member ));
230
+ symbolProvider .toMemberName (member ), symbolProvider .toSymbol (member ));
226
231
}
227
232
writer .write ("_: (name: string, value: any) => T;" );
228
233
});
@@ -249,40 +254,37 @@ private void writeFilterSensitiveLog(String namespace) {
249
254
String objectParam = "obj" ;
250
255
writer .writeDocs ("@internal" );
251
256
writer .openBlock ("export const $LFilterSensitiveLog = ($L: $L): any => {" , "}" ,
252
- namespace ,
253
- objectParam , symbol .getName (),
254
- () -> {
255
- for (MemberShape member : shape .getAllMembers ().values ()) {
256
- String memberName = symbolProvider .toMemberName (member );
257
- StructuredMemberWriter structuredMemberWriter = new StructuredMemberWriter (
258
- model ,
259
- symbolProvider ,
260
- shape .getAllMembers ().values (),
261
- RequiredMemberMode .NULLABLE ,
262
- sensitiveDataFinder
263
- );
264
- writer .openBlock ("if (${1L}.${2L} !== undefined) return {${2L}: " , "};" ,
265
- objectParam , memberName , () -> {
266
- String memberParam = String .format ("%s.%s" , objectParam , memberName );
267
- structuredMemberWriter .writeMemberFilterSensitiveLog (writer , member , memberParam );
268
- }
269
- );
270
- }
271
- writer .write ("if (${1L}.$$unknown !== undefined) return {[${1L}.$$unknown[0]]: 'UNKNOWN'};" ,
272
- objectParam );
273
- }
274
- );
257
+ namespace ,
258
+ objectParam , symbol .getName (),
259
+ () -> {
260
+ for (MemberShape member : shape .getAllMembers ().values ()) {
261
+ String memberName = symbolProvider .toMemberName (member );
262
+ StructuredMemberWriter structuredMemberWriter = new StructuredMemberWriter (
263
+ model ,
264
+ symbolProvider ,
265
+ shape .getAllMembers ().values (),
266
+ RequiredMemberMode .NULLABLE ,
267
+ sensitiveDataFinder );
268
+ writer .openBlock ("if (${1L}.${2L} !== undefined) return {${2L}: " , "};" ,
269
+ objectParam , memberName , () -> {
270
+ String memberParam = String .format ("%s.%s" , objectParam , memberName );
271
+ structuredMemberWriter .writeMemberFilterSensitiveLog (writer , member ,
272
+ memberParam );
273
+ });
274
+ }
275
+ writer .write ("if (${1L}.$$unknown !== undefined) return {[${1L}.$$unknown[0]]: 'UNKNOWN'};" ,
276
+ objectParam );
277
+ });
275
278
}
276
279
}
277
280
278
281
private void writeValidate () {
279
282
StructuredMemberWriter structuredMemberWriter = new StructuredMemberWriter (
280
- model ,
281
- symbolProvider ,
282
- shape .getAllMembers ().values (),
283
- RequiredMemberMode .NULLABLE ,
284
- sensitiveDataFinder
285
- );
283
+ model ,
284
+ symbolProvider ,
285
+ shape .getAllMembers ().values (),
286
+ RequiredMemberMode .NULLABLE ,
287
+ sensitiveDataFinder );
286
288
287
289
structuredMemberWriter .writeMemberValidatorCache (writer , "memberValidators" );
288
290
@@ -293,7 +295,6 @@ private void writeValidate() {
293
295
() -> {
294
296
structuredMemberWriter .writeMemberValidatorFactory (writer , "memberValidators" );
295
297
structuredMemberWriter .writeValidateMethodContents (writer , "obj" );
296
- }
297
- );
298
+ });
298
299
}
299
300
}
0 commit comments