Hello,
I'm trying to customize the way unions are generated. More specifically, my unions are annotated with a specific trait that would need to change the whole structure of the generated typescript code.
Here is my contract:
@discriminated("_type")
union MyUnion {
package: PackageDTO
simulation: SimulationDTO
}
Currently the UnionGenerator generates this:
export namespace MyUnion {
export interface PackageMember {
package: PackageDTO;
simulation: never;
}
export interface SimulationMember {
package: never;
simulation: SimulationDTO
}
// UnknownMember and Visitor interfaces + function ommited
}
What I would like to generate:
export type MyUnion = (PackageDTO & { "_type": "package" }) | (SimulationDTO & { "_type": "simulation" });
I tried to look into interceptors to see if any CodeSection would help me intercept this part of the generation, but unfortunaly the UnionGenerator has no call to TypescriptWriter.injectSection.
What would be the best approach here? Is this doable without reimplementing the whole DirectedCodegen? (The TypescriptDirectedCodegen class is protected and final which makes it painful to customize behavior and I didn't want to rewrite the whole codegen, just override the generateUnions method).
I'm willing to open a PR if that's needed to add new CodeSections in UnionGenerator.
Thanks for your help.
Hello,
I'm trying to customize the way unions are generated. More specifically, my unions are annotated with a specific trait that would need to change the whole structure of the generated typescript code.
Here is my contract:
Currently the
UnionGeneratorgenerates this:What I would like to generate:
I tried to look into interceptors to see if any
CodeSectionwould help me intercept this part of the generation, but unfortunaly theUnionGeneratorhas no call toTypescriptWriter.injectSection.What would be the best approach here? Is this doable without reimplementing the whole
DirectedCodegen? (TheTypescriptDirectedCodegenclass is protected and final which makes it painful to customize behavior and I didn't want to rewrite the whole codegen, just override thegenerateUnionsmethod).I'm willing to open a PR if that's needed to add new
CodeSections inUnionGenerator.Thanks for your help.