Skip to content

Commit 1636277

Browse files
committed
Export enums as const
1 parent 02ceef1 commit 1636277

File tree

4 files changed

+6
-6
lines changed

4 files changed

+6
-6
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ private void generateUnnamedEnum() {
8888
// Named enums generate an actual enum type.
8989
private void generateNamedEnum() {
9090
writer.writeDocs("@public")
91-
.openBlock("export enum $L {", "}", symbol.getName(), () -> {
91+
.openBlock("export const $L = {", "}", symbol.getName(), () -> {
9292
// Sort the named values to ensure a stable order and sane diffs.
9393
// TODO: Should we just sort these in the trait itself?
9494
enumTrait.getValues()
@@ -103,6 +103,6 @@ private void writeNamedEnumConstant(EnumDefinition body) {
103103

104104
String name = body.getName().get();
105105
body.getDocumentation().ifPresent(writer::writeDocs);
106-
writer.write("$L = $S,", TypeScriptUtils.sanitizePropertyName(name), body.getValue());
106+
writer.write("$L: $S,", TypeScriptUtils.sanitizePropertyName(name), body.getValue());
107107
}
108108
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ public Symbol memberShape(MemberShape shape) {
370370
private Symbol createMemberSymbolWithEnumTarget(Symbol targetSymbol) {
371371
return targetSymbol.toBuilder()
372372
.namespace(null, "/")
373-
.name(targetSymbol.getName() + " | string")
373+
.name("keyof typeof " + targetSymbol.getName() + " | string")
374374
.addReference(targetSymbol)
375375
.build();
376376
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ public void generatesNamedEnums() {
3333
Symbol symbol = new SymbolVisitor(model, settings).toSymbol(shape);
3434
new EnumGenerator(shape, symbol, writer).run();
3535

36-
assertThat(writer.toString(), containsString("export enum Baz {"));
37-
assertThat(writer.toString(), stringContainsInOrder("BAR = \"BAR\",", "FOO = \"FOO\""));
36+
assertThat(writer.toString(), containsString("export const Baz = {"));
37+
assertThat(writer.toString(), stringContainsInOrder("BAR: \"BAR\",", "FOO: \"FOO\""));
3838
}
3939

4040
@Test

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public void addsUnknownStringEnumVariant() {
218218
SymbolProvider provider = new SymbolVisitor(model, settings);
219219
Symbol memberSymbol = provider.toSymbol(member);
220220

221-
assertThat(memberSymbol.getName(), equalTo("EnumString | string"));
221+
assertThat(memberSymbol.getName(), equalTo("keyof typeof EnumString | string"));
222222
}
223223

224224
@Test

0 commit comments

Comments
 (0)