mirror of
https://github.com/foomo/gotsrpc.git
synced 2025-10-16 12:35:35 +00:00
feat: support interface scalar type
This commit is contained in:
parent
e6d91c034e
commit
5ae8698afd
7
Makefile
7
Makefile
@ -2,8 +2,10 @@
|
||||
generate:
|
||||
rm -vf demo/output/*
|
||||
rm -vf demo/output-commonjs/*
|
||||
rm -vf demo/output-commonjs-async/*
|
||||
go run cmd/gotsrpc/gotsrpc.go demo/config.yml
|
||||
go run cmd/gotsrpc/gotsrpc.go -skipgotsrpc demo/config-commonjs.yml
|
||||
go run cmd/gotsrpc/gotsrpc.go -skipgotsrpc demo/config-commonjs-async.yml
|
||||
tsc --outFile cmd/demo/demo.js demo/demo.ts
|
||||
|
||||
.PHONY: demo
|
||||
@ -14,7 +16,10 @@ demo: generate
|
||||
install:
|
||||
go install cmd/gotsrpc/gotsrpc.go
|
||||
|
||||
install.debug:
|
||||
go install -gcflags "all=-N -l" cmd/gotsrpc/gotsrpc.go
|
||||
|
||||
.PHONY: test
|
||||
test:
|
||||
go test -v ./...
|
||||
|
||||
|
||||
|
||||
6
build.go
6
build.go
@ -114,7 +114,7 @@ func Build(conf *config.Config, goPath string) {
|
||||
goPaths = append(goPaths, vendorDirectory)
|
||||
}
|
||||
|
||||
services, structs, scalarTypes, constants, err := Read(goPaths, conf.Module, longPackageName, target.Services)
|
||||
pkgName, services, structs, scalars, constants, err := Read(goPaths, conf.Module, packageName, target.Services)
|
||||
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, "\t an error occured while trying to understand your code: ", err)
|
||||
@ -123,7 +123,7 @@ func Build(conf *config.Config, goPath string) {
|
||||
|
||||
if target.Out != "" {
|
||||
|
||||
ts, err := RenderTypeScriptServices(conf.ModuleKind, conf.TSClientFlavor, services, conf.Mappings, scalarTypes, structs, target)
|
||||
ts, err := RenderTypeScriptServices(conf.ModuleKind, conf.TSClientFlavor, services, conf.Mappings, scalars, structs, target)
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, " could not generate ts code", err)
|
||||
os.Exit(3)
|
||||
@ -142,7 +142,7 @@ func Build(conf *config.Config, goPath string) {
|
||||
os.Exit(3)
|
||||
}
|
||||
|
||||
err = renderTypescriptStructsToPackages(conf.ModuleKind, structs, conf.Mappings, constants, scalarTypes, mappedTypeScript)
|
||||
err = renderTypescriptStructsToPackages(conf.ModuleKind, structs, conf.Mappings, constants, scalars, mappedTypeScript)
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, "struct gen err for target", name, err)
|
||||
os.Exit(4)
|
||||
|
||||
@ -51,6 +51,9 @@ var GoTSRPC;
|
||||
this.endPoint = endPoint;
|
||||
this.transport = transport;
|
||||
}
|
||||
DemoClient.prototype.any = function (any, anyList, anyMap, success, err) {
|
||||
this.transport(this.endPoint, "Any", [any, anyList, anyMap], success, err);
|
||||
};
|
||||
DemoClient.prototype.extractAddress = function (person, success, err) {
|
||||
this.transport(this.endPoint, "ExtractAddress", [person], success, err);
|
||||
};
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package demo
|
||||
|
||||
import nstd "github.com/foomo/gotsrpc/demo/nested"
|
||||
|
||||
//go:generate codecgen -o values.generated.go demo_complex.go
|
||||
|
||||
type Address struct {
|
||||
@ -32,7 +33,6 @@ type Person struct {
|
||||
DNA []byte
|
||||
}
|
||||
|
||||
|
||||
func (d *Demo) ExtractAddress(person *Person) (addr *Address, e *Err) {
|
||||
if person == nil {
|
||||
return nil, nil
|
||||
@ -55,6 +55,10 @@ func (d *Demo) Nest() []*nstd.Nested {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Demo) Any(any nstd.Any, anyList []nstd.Any, anyMap map[string]nstd.Any) (nstd.Any, []nstd.Any, map[string]nstd.Any) {
|
||||
return nil, nil, nil
|
||||
}
|
||||
|
||||
func (d *Demo) GiveMeAScalar() (amount nstd.Amount, wahr nstd.True, hier ScalarInPlace) {
|
||||
//func (s *Service) giveMeAScalar() (amount nstd.Amount, wahr nstd.True, hier ScalarInPlace) {
|
||||
return nstd.Amount(10), nstd.ItIsTrue, ScalarInPlace("hier")
|
||||
|
||||
@ -100,6 +100,17 @@ type (
|
||||
callStatsHandler gotsrpc.GoRPCCallStatsHandlerFun
|
||||
}
|
||||
|
||||
DemoAnyRequest struct {
|
||||
Any github_com_foomo_gotsrpc_demo_nested.Any
|
||||
AnyList []github_com_foomo_gotsrpc_demo_nested.Any
|
||||
AnyMap map[string]github_com_foomo_gotsrpc_demo_nested.Any
|
||||
}
|
||||
DemoAnyResponse struct {
|
||||
RetAny_0 github_com_foomo_gotsrpc_demo_nested.Any
|
||||
RetAny_1 []github_com_foomo_gotsrpc_demo_nested.Any
|
||||
RetAny_2 map[string]github_com_foomo_gotsrpc_demo_nested.Any
|
||||
}
|
||||
|
||||
DemoExtractAddressRequest struct {
|
||||
Person *Person
|
||||
}
|
||||
@ -165,6 +176,8 @@ type (
|
||||
)
|
||||
|
||||
func init() {
|
||||
gob.Register(DemoAnyRequest{})
|
||||
gob.Register(DemoAnyResponse{})
|
||||
gob.Register(DemoExtractAddressRequest{})
|
||||
gob.Register(DemoExtractAddressResponse{})
|
||||
gob.Register(DemoGiveMeAScalarRequest{})
|
||||
@ -223,6 +236,10 @@ func (p *DemoGoRPCProxy) handler(clientAddr string, request interface{}) (respon
|
||||
funcName := funcNameParts[len(funcNameParts)-1]
|
||||
|
||||
switch funcName {
|
||||
case "DemoAnyRequest":
|
||||
req := request.(DemoAnyRequest)
|
||||
retAny_0, retAny_1, retAny_2 := p.service.Any(req.Any, req.AnyList, req.AnyMap)
|
||||
response = DemoAnyResponse{RetAny_0: retAny_0, RetAny_1: retAny_1, RetAny_2: retAny_2}
|
||||
case "DemoExtractAddressRequest":
|
||||
req := request.(DemoExtractAddressRequest)
|
||||
addr, e := p.service.ExtractAddress(req.Person)
|
||||
|
||||
@ -64,6 +64,17 @@ func (tsc *DemoGoRPCClient) Stop() {
|
||||
tsc.Client.Stop()
|
||||
}
|
||||
|
||||
func (tsc *DemoGoRPCClient) Any(any github_com_foomo_gotsrpc_demo_nested.Any, anyList []github_com_foomo_gotsrpc_demo_nested.Any, anyMap map[string]github_com_foomo_gotsrpc_demo_nested.Any) (retAny_0 github_com_foomo_gotsrpc_demo_nested.Any, retAny_1 []github_com_foomo_gotsrpc_demo_nested.Any, retAny_2 map[string]github_com_foomo_gotsrpc_demo_nested.Any, clientErr error) {
|
||||
req := DemoAnyRequest{Any: any, AnyList: anyList, AnyMap: anyMap}
|
||||
rpcCallRes, rpcCallErr := tsc.Client.Call(req)
|
||||
if rpcCallErr != nil {
|
||||
clientErr = rpcCallErr
|
||||
return
|
||||
}
|
||||
response := rpcCallRes.(DemoAnyResponse)
|
||||
return response.RetAny_0, response.RetAny_1, response.RetAny_2, nil
|
||||
}
|
||||
|
||||
func (tsc *DemoGoRPCClient) ExtractAddress(person *Person) (addr *Address, e *Err, clientErr error) {
|
||||
req := DemoExtractAddressRequest{Person: person}
|
||||
rpcCallRes, rpcCallErr := tsc.Client.Call(req)
|
||||
|
||||
@ -9,6 +9,7 @@ import (
|
||||
time "time"
|
||||
|
||||
gotsrpc "github.com/foomo/gotsrpc"
|
||||
github_com_foomo_gotsrpc_demo_nested "github.com/foomo/gotsrpc/demo/nested"
|
||||
)
|
||||
|
||||
type FooGoTSRPCProxy struct {
|
||||
@ -130,6 +131,25 @@ func (p *DemoGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
callStats.Service = "Demo"
|
||||
}
|
||||
switch funcName {
|
||||
case "Any":
|
||||
var (
|
||||
arg_any github_com_foomo_gotsrpc_demo_nested.Any
|
||||
arg_anyList []github_com_foomo_gotsrpc_demo_nested.Any
|
||||
arg_anyMap map[string]github_com_foomo_gotsrpc_demo_nested.Any
|
||||
)
|
||||
args = []interface{}{&arg_any, &arg_anyList, &arg_anyMap}
|
||||
err := gotsrpc.LoadArgs(&args, callStats, r)
|
||||
if err != nil {
|
||||
gotsrpc.ErrorCouldNotLoadArgs(w)
|
||||
return
|
||||
}
|
||||
executionStart := time.Now()
|
||||
anyRet, anyRet_1, anyRet_2 := p.service.Any(arg_any, arg_anyList, arg_anyMap)
|
||||
if callStats != nil {
|
||||
callStats.Execution = time.Now().Sub(executionStart)
|
||||
}
|
||||
gotsrpc.Reply([]interface{}{anyRet, anyRet_1, anyRet_2}, callStats, r, w)
|
||||
return
|
||||
case "ExtractAddress":
|
||||
var (
|
||||
arg_person *Person
|
||||
|
||||
@ -42,6 +42,7 @@ func (tsc *HTTPFooGoTSRPCClient) Hello(number int64) (retHello_0 int, clientErr
|
||||
}
|
||||
|
||||
type DemoGoTSRPCClient interface {
|
||||
Any(any github_com_foomo_gotsrpc_demo_nested.Any, anyList []github_com_foomo_gotsrpc_demo_nested.Any, anyMap map[string]github_com_foomo_gotsrpc_demo_nested.Any) (retAny_0 github_com_foomo_gotsrpc_demo_nested.Any, retAny_1 []github_com_foomo_gotsrpc_demo_nested.Any, retAny_2 map[string]github_com_foomo_gotsrpc_demo_nested.Any, clientErr error)
|
||||
ExtractAddress(person *Person) (addr *Address, e *Err, clientErr error)
|
||||
GiveMeAScalar() (amount github_com_foomo_gotsrpc_demo_nested.Amount, wahr github_com_foomo_gotsrpc_demo_nested.True, hier ScalarInPlace, clientErr error)
|
||||
Hello(name string) (retHello_0 string, retHello_1 *Err, clientErr error)
|
||||
@ -74,6 +75,13 @@ func NewDemoGoTSRPCClientWithClient(url string, endpoint string, client *net_htt
|
||||
Client: gotsrpc.NewClientWithHttpClient(client),
|
||||
}
|
||||
}
|
||||
func (tsc *HTTPDemoGoTSRPCClient) Any(any github_com_foomo_gotsrpc_demo_nested.Any, anyList []github_com_foomo_gotsrpc_demo_nested.Any, anyMap map[string]github_com_foomo_gotsrpc_demo_nested.Any) (retAny_0 github_com_foomo_gotsrpc_demo_nested.Any, retAny_1 []github_com_foomo_gotsrpc_demo_nested.Any, retAny_2 map[string]github_com_foomo_gotsrpc_demo_nested.Any, clientErr error) {
|
||||
args := []interface{}{any, anyList, anyMap}
|
||||
reply := []interface{}{&retAny_0, &retAny_1, &retAny_2}
|
||||
clientErr = tsc.Client.Call(tsc.URL, tsc.EndPoint, "Any", args, reply)
|
||||
return
|
||||
}
|
||||
|
||||
func (tsc *HTTPDemoGoTSRPCClient) ExtractAddress(person *Person) (addr *Address, e *Err, clientErr error) {
|
||||
args := []interface{}{person}
|
||||
reply := []interface{}{&addr, &e}
|
||||
|
||||
@ -2,6 +2,9 @@ package nested
|
||||
|
||||
type Nested struct {
|
||||
Name string
|
||||
Any Any
|
||||
AnyMap map[string]Any
|
||||
AnyList []Any
|
||||
SuperNestedString struct {
|
||||
Ha int64
|
||||
}
|
||||
@ -10,6 +13,7 @@ type Nested struct {
|
||||
}
|
||||
}
|
||||
|
||||
type Any interface{}
|
||||
type Amount int
|
||||
type True bool
|
||||
|
||||
|
||||
@ -17,6 +17,11 @@ export class DemoClient {
|
||||
constructor(
|
||||
public transport:<T>(method: string, data?: any[]) => Promise<T>
|
||||
) {}
|
||||
async any(any:any, anyList:any[], anyMap:{[index:string]:any}):Promise<{ret:any; ret_1:any[]; ret_2:{[index:string]:any}}> {
|
||||
let response = await this.transport<{0:any; 1:any[]; 2:{[index:string]:any}}>("Any", [any, anyList, anyMap])
|
||||
let responseObject = {ret : response[0], ret_1 : response[1], ret_2 : response[2]};
|
||||
return responseObject;
|
||||
}
|
||||
async extractAddress(person:github_com_foomo_gotsrpc_demo.Person):Promise<github_com_foomo_gotsrpc_demo.Address> {
|
||||
let response = await this.transport<{0:github_com_foomo_gotsrpc_demo.Address; 1:github_com_foomo_gotsrpc_demo.Err}>("ExtractAddress", [person])
|
||||
let err = response[1];
|
||||
|
||||
@ -5,6 +5,9 @@ import * as github_com_foomo_gotsrpc_demo_nested from './demo-nested'; // demo/o
|
||||
// github.com/foomo/gotsrpc/demo/nested.Nested
|
||||
export interface Nested {
|
||||
Name:string;
|
||||
Any:any;
|
||||
AnyMap:{[index:string]:any};
|
||||
AnyList:any[];
|
||||
SuperNestedString:{
|
||||
Ha:number;
|
||||
};
|
||||
|
||||
@ -11,6 +11,9 @@ export class FooClient {
|
||||
}
|
||||
export class DemoClient {
|
||||
constructor(public endPoint:string = "/service/demo", public transport:(endPoint:string, method:string, args:any[], success:any, err:any) => void) { }
|
||||
any(any:any, anyList:any[], anyMap:{[index:string]:any}, success:(ret:any, ret_1:any[], ret_2:{[index:string]:any}) => void, err:(request:XMLHttpRequest, e?:Error) => void) {
|
||||
this.transport(this.endPoint, "Any", [any, anyList, anyMap], success, err);
|
||||
}
|
||||
extractAddress(person:github_com_foomo_gotsrpc_demo.Person, success:(addr:github_com_foomo_gotsrpc_demo.Address, e:github_com_foomo_gotsrpc_demo.Err) => void, err:(request:XMLHttpRequest, e?:Error) => void) {
|
||||
this.transport(this.endPoint, "ExtractAddress", [person], success, err);
|
||||
}
|
||||
|
||||
@ -5,6 +5,9 @@ import * as github_com_foomo_gotsrpc_demo_nested from './demo-nested'; // demo/o
|
||||
// github.com/foomo/gotsrpc/demo/nested.Nested
|
||||
export interface Nested {
|
||||
Name:string;
|
||||
Any:any;
|
||||
AnyMap:{[index:string]:any};
|
||||
AnyList:any[];
|
||||
SuperNestedString:{
|
||||
Ha:number;
|
||||
};
|
||||
|
||||
@ -36,6 +36,9 @@ module GoTSRPC.Demo {
|
||||
export class DemoClient {
|
||||
static defaultInst = new DemoClient;
|
||||
constructor(public endPoint:string = "/service/demo", public transport = GoTSRPC.call) { }
|
||||
any(any:any, anyList:any[], anyMap:{[index:string]:any}, success:(ret:any, ret_1:any[], ret_2:{[index:string]:any}) => void, err:(request:XMLHttpRequest, e?:Error) => void) {
|
||||
this.transport(this.endPoint, "Any", [any, anyList, anyMap], success, err);
|
||||
}
|
||||
extractAddress(person:GoTSRPC.Demo.Person, success:(addr:GoTSRPC.Demo.Address, e:GoTSRPC.Demo.Err) => void, err:(request:XMLHttpRequest, e?:Error) => void) {
|
||||
this.transport(this.endPoint, "ExtractAddress", [person], success, err);
|
||||
}
|
||||
|
||||
@ -3,6 +3,9 @@ module GoTSRPC.Demo.Nested {
|
||||
// github.com/foomo/gotsrpc/demo/nested.Nested
|
||||
export interface Nested {
|
||||
Name:string;
|
||||
Any:any;
|
||||
AnyMap:{[index:string]:any};
|
||||
AnyList:any[];
|
||||
SuperNestedString:{
|
||||
Ha:number;
|
||||
};
|
||||
|
||||
16
go.sum
16
go.sum
@ -1,8 +1,6 @@
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
@ -13,7 +11,6 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/cespare/xxhash/v2 v2.1.0 h1:yTUvW7Vhb89inJ+8irsUqiWjh8iT6sQPZiQzI6ReGkA=
|
||||
github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM=
|
||||
github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
@ -31,7 +28,6 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
@ -43,7 +39,6 @@ github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM
|
||||
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
@ -56,7 +51,6 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
@ -70,7 +64,6 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
@ -95,9 +88,7 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
@ -110,7 +101,6 @@ github.com/valyala/gorpc v0.0.0-20160519171614-908281bef774/go.mod h1:8uNqM1i7pr
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
@ -133,9 +123,7 @@ golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAG
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
@ -143,7 +131,6 @@ golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5h
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191010194322-b09406accb47 h1:/XfQ9z7ib8eEJX2hdgFTZJ/ntt0swNk5oYBziWeTCvY=
|
||||
golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d h1:MiWWjyhUzZ+jvhZvloX6ZrUsdEghn8a64Upd8EMHglE=
|
||||
@ -159,7 +146,6 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
|
||||
golang.org/x/tools v0.0.0-20210105210202-9ed45478a130 h1:8qSBr5nyKsEgkP918Pu5FFDZpTtLIjXSo6mrtdVOFfk=
|
||||
golang.org/x/tools v0.0.0-20210105210202-9ed45478a130/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
||||
@ -182,13 +168,11 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
|
||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
|
||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
|
||||
11
model.go
11
model.go
@ -3,11 +3,12 @@ package gotsrpc
|
||||
type ScalarType string
|
||||
|
||||
const (
|
||||
ScalarTypeString ScalarType = "string"
|
||||
ScalarTypeByte ScalarType = "byte"
|
||||
ScalarTypeNumber ScalarType = "number"
|
||||
ScalarTypeBool ScalarType = "bool"
|
||||
ScalarTypeNone ScalarType = ""
|
||||
ScalarTypeString ScalarType = "string"
|
||||
ScalarTypeInterface ScalarType = "any"
|
||||
ScalarTypeByte ScalarType = "byte"
|
||||
ScalarTypeNumber ScalarType = "number"
|
||||
ScalarTypeBool ScalarType = "bool"
|
||||
ScalarTypeNone ScalarType = ""
|
||||
)
|
||||
|
||||
type JSONInfo struct {
|
||||
|
||||
@ -292,7 +292,6 @@ func Read(
|
||||
return
|
||||
}
|
||||
constants[structPackage] = loadConstants(pkg)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -443,10 +442,10 @@ func typesPending(structs map[string]*Struct, scalars map[string]*Scalar, missin
|
||||
return false
|
||||
}
|
||||
|
||||
func (s *Struct) DepsSatisfied(missingTypes map[string]bool, structs map[string]*Struct, scalarTypes map[string]*Scalar) bool {
|
||||
func (s *Struct) DepsSatisfied(missingTypes map[string]bool, structs map[string]*Struct, scalars map[string]*Scalar) bool {
|
||||
needsWork := func(fullName string) bool {
|
||||
strct, strctOK := structs[fullName]
|
||||
scalar, scalarOK := scalarTypes[fullName]
|
||||
scalar, scalarOK := scalars[fullName]
|
||||
if !strctOK && !scalarOK {
|
||||
// hey there is more todo
|
||||
missingTypes[fullName] = true
|
||||
|
||||
@ -7,18 +7,18 @@ import (
|
||||
"reflect"
|
||||
"strings"
|
||||
|
||||
yaml "gopkg.in/yaml.v2"
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
var ReaderTrace = false
|
||||
|
||||
func readStructs(pkg *ast.Package, packageName string) (structs map[string]*Struct, scalarTypes map[string]*Scalar, err error) {
|
||||
func readStructs(pkg *ast.Package, packageName string) (structs map[string]*Struct, scalars map[string]*Scalar, err error) {
|
||||
structs = map[string]*Struct{}
|
||||
trace("reading files in package", packageName)
|
||||
scalarTypes = map[string]*Scalar{}
|
||||
scalars = map[string]*Scalar{}
|
||||
errorTypes := map[string]bool{}
|
||||
for _, file := range pkg.Files {
|
||||
err = extractTypes(file, packageName, structs, scalarTypes)
|
||||
err = extractTypes(file, packageName, structs, scalars)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -103,6 +103,8 @@ func extractJSONInfo(tag string) *JSONInfo {
|
||||
|
||||
func getScalarFromAstIdent(ident *ast.Ident) ScalarType {
|
||||
switch ident.Name {
|
||||
case "interface":
|
||||
return ScalarTypeInterface
|
||||
case "string":
|
||||
return ScalarTypeString
|
||||
case "bool":
|
||||
@ -355,7 +357,7 @@ func extractErrorTypes(file *ast.File, packageName string, errorTypes map[string
|
||||
return
|
||||
}
|
||||
|
||||
func extractTypes(file *ast.File, packageName string, structs map[string]*Struct, scalarTypes map[string]*Scalar) error {
|
||||
func extractTypes(file *ast.File, packageName string, structs map[string]*Struct, scalars map[string]*Scalar) error {
|
||||
fileImports := getFileImports(file, packageName)
|
||||
for name, obj := range file.Scope.Objects {
|
||||
if obj.Kind == ast.Typ && obj.Decl != nil {
|
||||
@ -375,10 +377,17 @@ func extractTypes(file *ast.File, packageName string, structs map[string]*Struct
|
||||
structType := typeSpec.Type.(*ast.StructType)
|
||||
trace("StructType", obj.Name)
|
||||
structs[structName].Fields = readFieldList(structType.Fields.List, fileImports)
|
||||
case "*ast.InterfaceType":
|
||||
trace("Interface", obj.Name)
|
||||
scalars[structName] = &Scalar{
|
||||
Name: structName,
|
||||
Package: packageName,
|
||||
Type: ScalarTypeInterface,
|
||||
}
|
||||
case "*ast.Ident":
|
||||
trace("Scalar", obj.Name)
|
||||
scalarIdent := typeSpec.Type.(*ast.Ident)
|
||||
scalarTypes[structName] = &Scalar{
|
||||
scalars[structName] = &Scalar{
|
||||
Name: structName,
|
||||
Package: packageName,
|
||||
Type: getScalarFromAstIdent(scalarIdent),
|
||||
|
||||
@ -23,14 +23,14 @@ func (f *Field) tsName() string {
|
||||
return n
|
||||
}
|
||||
|
||||
func (v *Value) tsType(mappings config.TypeScriptMappings, scalarTypes map[string]*Scalar, structs map[string]*Struct, ts *code) {
|
||||
func (v *Value) tsType(mappings config.TypeScriptMappings, scalars map[string]*Scalar, structs map[string]*Struct, ts *code) {
|
||||
switch true {
|
||||
case v.Map != nil:
|
||||
ts.app("{[index:" + v.Map.KeyType + "]:")
|
||||
v.Map.Value.tsType(mappings, scalarTypes, structs, ts)
|
||||
v.Map.Value.tsType(mappings, scalars, structs, ts)
|
||||
ts.app("}")
|
||||
case v.Array != nil:
|
||||
v.Array.Value.tsType(mappings, scalarTypes, structs, ts)
|
||||
v.Array.Value.tsType(mappings, scalars, structs, ts)
|
||||
if v.Array.Value.ScalarType != ScalarTypeByte {
|
||||
ts.app("[]")
|
||||
}
|
||||
@ -45,7 +45,7 @@ func (v *Value) tsType(mappings config.TypeScriptMappings, scalarTypes map[strin
|
||||
}
|
||||
scalarName := v.StructType.FullName()
|
||||
// is it a hidden scalar ?!
|
||||
hiddenScalar, ok := scalarTypes[scalarName]
|
||||
hiddenScalar, ok := scalars[scalarName]
|
||||
if ok {
|
||||
ts.app(tsTypeFromScalarType(hiddenScalar.Type))
|
||||
return
|
||||
@ -77,7 +77,7 @@ func (v *Value) tsType(mappings config.TypeScriptMappings, scalarTypes map[strin
|
||||
case v.Struct != nil:
|
||||
// v.Struct.Value.tsType(mappings, ts)
|
||||
ts.l("{").ind(1)
|
||||
renderStructFields(v.Struct.Fields, mappings, scalarTypes, structs, ts)
|
||||
renderStructFields(v.Struct.Fields, mappings, scalars, structs, ts)
|
||||
ts.ind(-1).app("}")
|
||||
case len(v.ScalarType) > 0:
|
||||
ts.app(tsTypeFromScalarType(v.ScalarType))
|
||||
@ -97,7 +97,7 @@ func tsTypeFromScalarType(scalarType ScalarType) string {
|
||||
return string(scalarType)
|
||||
}
|
||||
|
||||
func renderStructFields(fields []*Field, mappings config.TypeScriptMappings, scalarTypes map[string]*Scalar, structs map[string]*Struct, ts *code) {
|
||||
func renderStructFields(fields []*Field, mappings config.TypeScriptMappings, scalars map[string]*Scalar, structs map[string]*Struct, ts *code) {
|
||||
for _, f := range fields {
|
||||
if f.JSONInfo != nil && f.JSONInfo.Ignore {
|
||||
continue
|
||||
@ -107,13 +107,13 @@ func renderStructFields(fields []*Field, mappings config.TypeScriptMappings, sca
|
||||
ts.app("?")
|
||||
}
|
||||
ts.app(":")
|
||||
f.Value.tsType(mappings, scalarTypes, structs, ts)
|
||||
f.Value.tsType(mappings, scalars, structs, ts)
|
||||
ts.app(";")
|
||||
ts.nl()
|
||||
}
|
||||
}
|
||||
|
||||
func renderTypescriptStruct(str *Struct, mappings config.TypeScriptMappings, scalarTypes map[string]*Scalar, structs map[string]*Struct, ts *code) error {
|
||||
func renderTypescriptStruct(str *Struct, mappings config.TypeScriptMappings, scalars map[string]*Scalar, structs map[string]*Struct, ts *code) error {
|
||||
if str.Array != nil {
|
||||
// skipping array type
|
||||
return nil
|
||||
@ -123,11 +123,11 @@ func renderTypescriptStruct(str *Struct, mappings config.TypeScriptMappings, sca
|
||||
switch {
|
||||
case str.Map != nil:
|
||||
ts.app("[index:" + str.Map.KeyType + "]:")
|
||||
str.Map.Value.tsType(mappings, scalarTypes, structs, ts)
|
||||
str.Map.Value.tsType(mappings, scalars, structs, ts)
|
||||
ts.app(";")
|
||||
ts.nl()
|
||||
default:
|
||||
renderStructFields(str.Fields, mappings, scalarTypes, structs, ts)
|
||||
renderStructFields(str.Fields, mappings, scalars, structs, ts)
|
||||
}
|
||||
ts.ind(-1).l("}")
|
||||
return nil
|
||||
@ -247,7 +247,7 @@ func ucFirst(str string) string {
|
||||
return constPrefix
|
||||
}
|
||||
|
||||
func RenderTypeScriptServices(moduleKind config.ModuleKind, tsClientFlavor config.TSClientFlavor, services ServiceList, mappings config.TypeScriptMappings, scalarTypes map[string]*Scalar, structs map[string]*Struct, target *config.Target) (typeScript string, err error) {
|
||||
func RenderTypeScriptServices(moduleKind config.ModuleKind, tsClientFlavor config.TSClientFlavor, services ServiceList, mappings config.TypeScriptMappings, scalars map[string]*Scalar, structs map[string]*Struct, target *config.Target) (typeScript string, err error) {
|
||||
ts := newCode(" ")
|
||||
if !SkipGoTSRPC && tsClientFlavor == "" {
|
||||
|
||||
@ -297,9 +297,9 @@ func RenderTypeScriptServices(moduleKind config.ModuleKind, tsClientFlavor confi
|
||||
}
|
||||
switch tsClientFlavor {
|
||||
case config.TSClientFlavorAsync:
|
||||
err = renderTypescriptClientAsync(service, mappings, scalarTypes, structs, ts)
|
||||
err = renderTypescriptClientAsync(service, mappings, scalars, structs, ts)
|
||||
default:
|
||||
err = renderTypescriptClient(SkipGoTSRPC, moduleKind, service, mappings, scalarTypes, structs, ts)
|
||||
err = renderTypescriptClient(SkipGoTSRPC, moduleKind, service, mappings, scalars, structs, ts)
|
||||
}
|
||||
if err != nil {
|
||||
return
|
||||
|
||||
@ -7,7 +7,7 @@ import (
|
||||
"github.com/foomo/gotsrpc/config"
|
||||
)
|
||||
|
||||
func renderTypescriptClient(skipGoTSRPC bool, moduleKind config.ModuleKind, service *Service, mappings config.TypeScriptMappings, scalarTypes map[string]*Scalar, structs map[string]*Struct, ts *code) error {
|
||||
func renderTypescriptClient(skipGoTSRPC bool, moduleKind config.ModuleKind, service *Service, mappings config.TypeScriptMappings, scalars map[string]*Scalar, structs map[string]*Struct, ts *code) error {
|
||||
clientName := service.Name + "Client"
|
||||
|
||||
ts.l("export class " + clientName + " {").ind(1)
|
||||
@ -54,7 +54,7 @@ func renderTypescriptClient(skipGoTSRPC bool, moduleKind config.ModuleKind, serv
|
||||
ts.app(", ")
|
||||
}
|
||||
ts.app(arg.tsName() + ":")
|
||||
arg.Value.tsType(mappings, scalarTypes, structs, ts)
|
||||
arg.Value.tsType(mappings, scalars, structs, ts)
|
||||
callArgs = append(callArgs, arg.Name)
|
||||
argCount++
|
||||
}
|
||||
@ -76,7 +76,7 @@ func renderTypescriptClient(skipGoTSRPC bool, moduleKind config.ModuleKind, serv
|
||||
ts.app(", ")
|
||||
}
|
||||
ts.app(retArgName + ":")
|
||||
retField.Value.tsType(mappings, scalarTypes, structs, ts)
|
||||
retField.Value.tsType(mappings, scalars, structs, ts)
|
||||
}
|
||||
|
||||
ts.app(") => void")
|
||||
|
||||
@ -8,7 +8,7 @@ import (
|
||||
"github.com/foomo/gotsrpc/config"
|
||||
)
|
||||
|
||||
func renderTypescriptClientAsync(service *Service, mappings config.TypeScriptMappings, scalarTypes map[string]*Scalar, structs map[string]*Struct, ts *code) error {
|
||||
func renderTypescriptClientAsync(service *Service, mappings config.TypeScriptMappings, scalars map[string]*Scalar, structs map[string]*Struct, ts *code) error {
|
||||
clientName := service.Name + "Client"
|
||||
|
||||
ts.l("export class " + clientName + " {")
|
||||
@ -48,7 +48,7 @@ func renderTypescriptClientAsync(service *Service, mappings config.TypeScriptMap
|
||||
ts.app(", ")
|
||||
}
|
||||
ts.app(arg.tsName() + ":")
|
||||
arg.Value.tsType(mappings, scalarTypes, structs, ts)
|
||||
arg.Value.tsType(mappings, scalars, structs, ts)
|
||||
callArgs = append(callArgs, arg.Name)
|
||||
argCount++
|
||||
}
|
||||
@ -85,7 +85,7 @@ func renderTypescriptClientAsync(service *Service, mappings config.TypeScriptMap
|
||||
}
|
||||
|
||||
innerReturnTypeTS.app(strconv.Itoa(index) + ":")
|
||||
retField.Value.tsType(mappings, scalarTypes, structs, innerReturnTypeTS)
|
||||
retField.Value.tsType(mappings, scalars, structs, innerReturnTypeTS)
|
||||
|
||||
if index == len(method.Return)-1 && retField.Value.IsError {
|
||||
throwLastError = true
|
||||
@ -94,14 +94,14 @@ func renderTypescriptClientAsync(service *Service, mappings config.TypeScriptMap
|
||||
} else {
|
||||
if index == 0 {
|
||||
firstReturnTypeTS := newCode(" ")
|
||||
retField.Value.tsType(mappings, scalarTypes, structs, firstReturnTypeTS)
|
||||
retField.Value.tsType(mappings, scalars, structs, firstReturnTypeTS)
|
||||
firstReturnType = firstReturnTypeTS.string()
|
||||
//firstReturnFieldName = retArgName
|
||||
}
|
||||
countReturns++
|
||||
returnTypeTS.app(retArgName + ":")
|
||||
responseObject += responseObjectPrefix + retArgName + " : response[" + strconv.Itoa(index) + "]"
|
||||
retField.Value.tsType(mappings, scalarTypes, structs, returnTypeTS)
|
||||
retField.Value.tsType(mappings, scalars, structs, returnTypeTS)
|
||||
}
|
||||
responseObjectPrefix = ", "
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user