25 lines
692 B
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()
|
|
}
|