protoc-gen-ts/internal/plugin/messagegen.go

25 lines
692 B
Go

package plugin
import (
"git.apinb.com/bsm-tools/protoc-gen-ts/internal/codegen"
"google.golang.org/protobuf/reflect/protoreflect"
)
type messageGenerator struct {
pkg protoreflect.FullName
message protoreflect.MessageDescriptor
}
func (m messageGenerator) Generate(f *codegen.File) {
commentGenerator{descriptor: m.message}.generateLeading(f, 0)
f.P("export type ", scopedDescriptorTypeName(m.pkg, m.message), " = {")
rangeFields(m.message, func(field protoreflect.FieldDescriptor) {
commentGenerator{descriptor: field}.generateLeading(f, 1)
fieldType := typeFromField(m.pkg, field)
f.P(t(1), field.JSONName(), "?: ", fieldType.Reference(), ";")
})
f.P("};")
f.P()
}