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 ;
@@ -199,7 +204,7 @@ private void writeUnionMemberInterfaces() {
199
204
for (MemberShape variantMember : shape .getAllMembers ().values ()) {
200
205
if (variantMember .getMemberName ().equals (member .getMemberName ())) {
201
206
writer .write ("$L: $T;" , symbolProvider .toMemberName (variantMember ),
202
- symbolProvider .toSymbol (variantMember ));
207
+ symbolProvider .toSymbol (variantMember ));
203
208
} else {
204
209
writer .write ("$L?: never;" , symbolProvider .toMemberName (variantMember ));
205
210
}
@@ -223,7 +228,7 @@ private void writeVisitorType() {
223
228
writer .openBlock ("export interface Visitor<T> {" , "}" , () -> {
224
229
for (MemberShape member : shape .getAllMembers ().values ()) {
225
230
writer .write ("$L: (value: $T) => T;" ,
226
- symbolProvider .toMemberName (member ), symbolProvider .toSymbol (member ));
231
+ symbolProvider .toMemberName (member ), symbolProvider .toSymbol (member ));
227
232
}
228
233
writer .write ("_: (name: string, value: any) => T;" );
229
234
});
@@ -250,40 +255,37 @@ private void writeFilterSensitiveLog(String namespace) {
250
255
String objectParam = "obj" ;
251
256
writer .writeDocs ("@internal" );
252
257
writer .openBlock ("export const $LFilterSensitiveLog = ($L: $L): any => {" , "}" ,
253
- namespace ,
254
- objectParam , symbol .getName (),
255
- () -> {
256
- for (MemberShape member : shape .getAllMembers ().values ()) {
257
- String memberName = symbolProvider .toMemberName (member );
258
- StructuredMemberWriter structuredMemberWriter = new StructuredMemberWriter (
259
- model ,
260
- symbolProvider ,
261
- shape .getAllMembers ().values (),
262
- RequiredMemberMode .NULLABLE ,
263
- sensitiveDataFinder
264
- );
265
- writer .openBlock ("if (${1L}.${2L} !== undefined) return {${2L}: " , "};" ,
266
- objectParam , memberName , () -> {
267
- String memberParam = String .format ("%s.%s" , objectParam , memberName );
268
- structuredMemberWriter .writeMemberFilterSensitiveLog (writer , member , memberParam );
269
- }
270
- );
271
- }
272
- writer .write ("if (${1L}.$$unknown !== undefined) return {[${1L}.$$unknown[0]]: 'UNKNOWN'};" ,
273
- objectParam );
274
- }
275
- );
258
+ namespace ,
259
+ objectParam , symbol .getName (),
260
+ () -> {
261
+ for (MemberShape member : shape .getAllMembers ().values ()) {
262
+ String memberName = symbolProvider .toMemberName (member );
263
+ StructuredMemberWriter structuredMemberWriter = new StructuredMemberWriter (
264
+ model ,
265
+ symbolProvider ,
266
+ shape .getAllMembers ().values (),
267
+ RequiredMemberMode .NULLABLE ,
268
+ sensitiveDataFinder );
269
+ writer .openBlock ("if (${1L}.${2L} !== undefined) return {${2L}: " , "};" ,
270
+ objectParam , memberName , () -> {
271
+ String memberParam = String .format ("%s.%s" , objectParam , memberName );
272
+ structuredMemberWriter .writeMemberFilterSensitiveLog (writer , member ,
273
+ memberParam );
274
+ });
275
+ }
276
+ writer .write ("if (${1L}.$$unknown !== undefined) return {[${1L}.$$unknown[0]]: 'UNKNOWN'};" ,
277
+ objectParam );
278
+ });
276
279
}
277
280
}
278
281
279
282
private void writeValidate () {
280
283
StructuredMemberWriter structuredMemberWriter = new StructuredMemberWriter (
281
- model ,
282
- symbolProvider ,
283
- shape .getAllMembers ().values (),
284
- RequiredMemberMode .NULLABLE ,
285
- sensitiveDataFinder
286
- );
284
+ model ,
285
+ symbolProvider ,
286
+ shape .getAllMembers ().values (),
287
+ RequiredMemberMode .NULLABLE ,
288
+ sensitiveDataFinder );
287
289
288
290
structuredMemberWriter .writeMemberValidatorCache (writer , "memberValidators" );
289
291
@@ -294,7 +296,6 @@ private void writeValidate() {
294
296
() -> {
295
297
structuredMemberWriter .writeMemberValidatorFactory (writer , "memberValidators" );
296
298
structuredMemberWriter .writeValidateMethodContents (writer , "obj" );
297
- }
298
- );
299
+ });
299
300
}
300
301
}
0 commit comments