Basic getter & setter support
This commit is contained in:
		| @@ -5,37 +5,52 @@ import base64 from 'base64-js' | |||||||
| import test_pb from './test_pb' | import test_pb from './test_pb' | ||||||
|  |  | ||||||
|  |  | ||||||
| export type TestEnum = { | export type TestEnum = {| | ||||||
|     ELEMENT_A?: 0; |     ELEMENT_A: 0; | ||||||
|     ELEMENT_B?: 1; |     ELEMENT_B: 1; | ||||||
| }; | |}; | ||||||
|  |  | ||||||
|  |  | ||||||
| export type TestMessage$TestNestedEnum = { | export type TestMessage$TestNestedEnum = {| | ||||||
|     ELEMENT_C?: 0; |     ELEMENT_C: 0; | ||||||
|     ELEMENT_D?: 1; |     ELEMENT_D: 1; | ||||||
| }; | |}; | ||||||
|  |  | ||||||
|  |  | ||||||
| export type TestMessage$TestNestedMessage = { | export type TestMessage$TestNestedMessage = { | ||||||
|     s?: string; |     getS: () => string; | ||||||
|     t?: number; |     setS: (s: string) => void; | ||||||
|  |     getT: () => number; | ||||||
|  |     setT: (t: number) => void; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export type TestMessage = { | export type TestMessage = { | ||||||
|     a?: string; |     getA: () => string; | ||||||
|     b?: number; |     setA: (a: string) => void; | ||||||
|     c?: number; |     getB: () => number; | ||||||
|     d?: number; |     setB: (b: number) => void; | ||||||
|     e?: number; |     getC: () => number; | ||||||
|     n?: Array<string>; |     setC: (c: number) => void; | ||||||
|     o?: Array<number>; |     getD: () => number; | ||||||
|     p?: Array<number>; |     setD: (d: number) => void; | ||||||
|     q?: Array<number>; |     getE: () => number; | ||||||
|     r?: Array<number>; |     setE: (e: number) => void; | ||||||
|     u?: TestEnum; |     getN: () => Array<string>; | ||||||
|     v?: TestMessage$TestNestedEnum; |     setN: (n: Array<string>) => void; | ||||||
|     w?: Array<TestMessage$TestNestedMessage>; |     getO: () => Array<number>; | ||||||
|  |     setO: (o: Array<number>) => void; | ||||||
|  |     getP: () => Array<number>; | ||||||
|  |     setP: (p: Array<number>) => void; | ||||||
|  |     getQ: () => Array<number>; | ||||||
|  |     setQ: (q: Array<number>) => void; | ||||||
|  |     getR: () => Array<number>; | ||||||
|  |     setR: (r: Array<number>) => void; | ||||||
|  |     getU: () => TestEnum; | ||||||
|  |     setU: (u: TestEnum) => void; | ||||||
|  |     getV: () => TestMessage$TestNestedEnum; | ||||||
|  |     setV: (v: TestMessage$TestNestedEnum) => void; | ||||||
|  |     getW: () => Array<TestMessage$TestNestedMessage>; | ||||||
|  |     setW: (w: Array<TestMessage$TestNestedMessage>) => void; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -43,7 +58,8 @@ export type TestMessage = { | |||||||
|  |  | ||||||
|  |  | ||||||
| export type TestNoStreamRequest = { | export type TestNoStreamRequest = { | ||||||
|     message?: TestMessage; |     getMessage: () => TestMessage; | ||||||
|  |     setMessage: (message: TestMessage) => void; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -51,8 +67,10 @@ export type TestNoStreamRequest = { | |||||||
|  |  | ||||||
|  |  | ||||||
| export type TestNoStreamReply = { | export type TestNoStreamReply = { | ||||||
|     message?: TestMessage; |     getMessage: () => TestMessage; | ||||||
|     err_msg?: string; |     setMessage: (message: TestMessage) => void; | ||||||
|  |     getErrMsg: () => string; | ||||||
|  |     setErrMsg: (err_msg: string) => void; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -60,7 +78,8 @@ export type TestNoStreamReply = { | |||||||
|  |  | ||||||
|  |  | ||||||
| export type TestStreamRequestRequest = { | export type TestStreamRequestRequest = { | ||||||
|     message?: TestMessage; |     getMessage: () => TestMessage; | ||||||
|  |     setMessage: (message: TestMessage) => void; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -68,8 +87,10 @@ export type TestStreamRequestRequest = { | |||||||
|  |  | ||||||
|  |  | ||||||
| export type TestStreamRequestReply = { | export type TestStreamRequestReply = { | ||||||
|     message?: TestMessage; |     getMessage: () => TestMessage; | ||||||
|     err_msg?: string; |     setMessage: (message: TestMessage) => void; | ||||||
|  |     getErrMsg: () => string; | ||||||
|  |     setErrMsg: (err_msg: string) => void; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -77,7 +98,8 @@ export type TestStreamRequestReply = { | |||||||
|  |  | ||||||
|  |  | ||||||
| export type TestStreamReplyRequest = { | export type TestStreamReplyRequest = { | ||||||
|     message?: TestMessage; |     getMessage: () => TestMessage; | ||||||
|  |     setMessage: (message: TestMessage) => void; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -85,8 +107,10 @@ export type TestStreamReplyRequest = { | |||||||
|  |  | ||||||
|  |  | ||||||
| export type TestStreamReplyReply = { | export type TestStreamReplyReply = { | ||||||
|     message?: TestMessage; |     getMessage: () => TestMessage; | ||||||
|     err_msg?: string; |     setMessage: (message: TestMessage) => void; | ||||||
|  |     getErrMsg: () => string; | ||||||
|  |     setErrMsg: (err_msg: string) => void; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -94,7 +118,8 @@ export type TestStreamReplyReply = { | |||||||
|  |  | ||||||
|  |  | ||||||
| export type TestStreamBothRequest = { | export type TestStreamBothRequest = { | ||||||
|     message?: TestMessage; |     getMessage: () => TestMessage; | ||||||
|  |     setMessage: (message: TestMessage) => void; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -102,8 +127,10 @@ export type TestStreamBothRequest = { | |||||||
|  |  | ||||||
|  |  | ||||||
| export type TestStreamBothReply = { | export type TestStreamBothReply = { | ||||||
|     message?: TestMessage; |     getMessage: () => TestMessage; | ||||||
|     err_msg?: string; |     setMessage: (message: TestMessage) => void; | ||||||
|  |     getErrMsg: () => string; | ||||||
|  |     setErrMsg: (err_msg: string) => void; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| const serializeToBase64 = (byteArray: Uint8Array): string => base64.fromByteArray(byteArray) | const serializeToBase64 = (byteArray: Uint8Array): string => base64.fromByteArray(byteArray) | ||||||
|   | |||||||
| @@ -11,35 +11,37 @@ import {{. | replace "/" "_" | trimSuffix ".proto" }}_pb from '../{{. | trimSuff | |||||||
| {{- end}} | {{- end}} | ||||||
|  |  | ||||||
| {{range .File.EnumType}} | {{range .File.EnumType}} | ||||||
| export type {{.Name}} = { | export type {{.Name}} = {| | ||||||
|   {{- range .Value}} |   {{- range .Value}} | ||||||
|     {{.Name}}?: {{.Number}}; |     {{.Name}}: {{.Number}}; | ||||||
|   {{- end}} |   {{- end}} | ||||||
| }; | |}; | ||||||
| {{- end}} | {{- end}} | ||||||
|  |  | ||||||
| {{- range .File.MessageType}} | {{- range .File.MessageType}} | ||||||
| {{- $MessageType := .Name}} | {{- $MessageType := .Name}} | ||||||
|  |  | ||||||
| {{range .EnumType}} | {{range .EnumType}} | ||||||
| export type {{$MessageType}}${{.Name}} = { | export type {{$MessageType}}${{.Name}} = {| | ||||||
|   {{- range .Value}} |   {{- range .Value}} | ||||||
|     {{.Name}}?: {{.Number}}; |     {{.Name}}: {{.Number}}; | ||||||
|   {{- end}} |   {{- end}} | ||||||
| }; | |}; | ||||||
| {{- end}} | {{- end}} | ||||||
|  |  | ||||||
| {{range .NestedType}} | {{range .NestedType}} | ||||||
| export type {{$MessageType}}${{.Name}} = { | export type {{$MessageType}}${{.Name}} = { | ||||||
|   {{- range .Field}} |   {{- range .Field}} | ||||||
|     {{.Name}}?: {{. | jsType}}; |     {{.Name | getter}}: () => {{. | jsType}}; | ||||||
|  |     {{.Name | setter}}: ({{.Name}}: {{. | jsType}}) => void; | ||||||
|   {{- end}} |   {{- end}} | ||||||
| }; | }; | ||||||
| {{- end}} | {{- end}} | ||||||
|  |  | ||||||
| export type {{.Name}} = { | export type {{.Name}} = { | ||||||
|   {{- range .Field}} |   {{- range .Field}} | ||||||
|     {{.Name}}?: {{. | jsType}}; |     {{.Name | getter}}: () => {{. | jsType}}; | ||||||
|  |     {{.Name | setter}}: ({{.Name}}: {{. | jsType}}) => void; | ||||||
|   {{- end}} |   {{- end}} | ||||||
| }; | }; | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										25
									
								
								helpers.go
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								helpers.go
									
									
									
									
									
								
							| @@ -50,19 +50,18 @@ var ProtoHelpersFuncMap = template.FuncMap{ | |||||||
|  |  | ||||||
| 		return strings.ToUpper(s[:1]) | 		return strings.ToUpper(s[:1]) | ||||||
| 	}, | 	}, | ||||||
| 	"lowerCamelCase": func(s string) string { |  | ||||||
| 		if len(s) > 1 { |  | ||||||
| 			s = xstrings.ToCamelCase(s) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		return strings.ToLower(s[:1]) + s[1:] |  | ||||||
| 	}, |  | ||||||
| 	"snakeCase": func(s string) string { |  | ||||||
| 		return xstrings.ToSnakeCase(s) |  | ||||||
| 	}, |  | ||||||
| 	"kebabCase": func(s string) string { | 	"kebabCase": func(s string) string { | ||||||
| 		return strings.Replace(xstrings.ToSnakeCase(s), "_", "-", -1) | 		return strings.Replace(xstrings.ToSnakeCase(s), "_", "-", -1) | ||||||
| 	}, | 	}, | ||||||
|  | 	"getter": func(s string) string { | ||||||
|  | 		return toLowerCamelCase("get_" + s) | ||||||
|  | 	}, | ||||||
|  | 	"setter": func(s string) string { | ||||||
|  | 		return toLowerCamelCase("set_" + s) | ||||||
|  | 	}, | ||||||
|  | 	"lowerCamelCase":  toLowerCamelCase, | ||||||
|  | 	"snakeCase":       xstrings.ToSnakeCase, | ||||||
| 	"getMessageType":  getMessageType, | 	"getMessageType":  getMessageType, | ||||||
| 	"isFieldMessage":  isFieldMessage, | 	"isFieldMessage":  isFieldMessage, | ||||||
| 	"isFieldRepeated": isFieldRepeated, | 	"isFieldRepeated": isFieldRepeated, | ||||||
| @@ -79,6 +78,14 @@ func init() { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func toLowerCamelCase(s string) string { | ||||||
|  | 	if len(s) > 1 { | ||||||
|  | 		s = xstrings.ToCamelCase(s) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return strings.ToLower(s[:1]) + s[1:] | ||||||
|  | } | ||||||
|  |  | ||||||
| func getMessageType(f *descriptor.FileDescriptorProto, name string) *descriptor.DescriptorProto { | func getMessageType(f *descriptor.FileDescriptorProto, name string) *descriptor.DescriptorProto { | ||||||
| 	// name is in the form .packageName.MessageTypeName.InnerMessageTypeName... | 	// name is in the form .packageName.MessageTypeName.InnerMessageTypeName... | ||||||
| 	// e.g. .article.ProductTag | 	// e.g. .article.ProductTag | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user