This includes a Proof of Concept in form of a Swift Package. Only one file had to be replaced, because I couldnt make sense of how else to do it. But it compiles.
Enums where no case has associated values are transformed into actual TypeScript
enums.
Enums where at least one case has associated values are kept as union types, but
cases without associated values receive a nested property in snake case as well.
Such an enum case without associated values must have an empty object as the
value of the nested property.