5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-10 22:01:12 +08:00

Support generating bindings by name

This commit is contained in:
Lea Anthony 2023-12-19 21:28:23 +11:00
parent 51afac4f22
commit 472288b2e3
No known key found for this signature in database
GPG Key ID: 33DAF7BB90A58405
16 changed files with 359 additions and 128 deletions

View File

@ -65,14 +65,6 @@ github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYU
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/atomicgo/cursor v0.0.1/go.mod h1:cBON2QmmrysudxNBFthvMtN32r3jxVRIvzkUiF/RuIk=
github.com/atterpac/refresh v0.1.0 h1:vFdy+4+Q4X7ENyemskVpGFCGAUt8zi0S05vX1O5tfq8=
github.com/atterpac/refresh v0.1.0/go.mod h1:KiBQUk5h76Z3Yvw/k3Ys2JGDrKmKmflwS9XB6B5N9qY=
github.com/atterpac/refresh v0.2.1 h1:xWI4PsP88wFJueMq8DscZg+IA3pxMoaS9g8/Gl+p85I=
github.com/atterpac/refresh v0.2.1/go.mod h1:KiBQUk5h76Z3Yvw/k3Ys2JGDrKmKmflwS9XB6B5N9qY=
github.com/atterpac/refresh v0.2.2 h1:PD+zKYz4LBViPzLUqLPm9p6aiRr6vNd1m1UTHsx8ln8=
github.com/atterpac/refresh v0.2.2/go.mod h1:KiBQUk5h76Z3Yvw/k3Ys2JGDrKmKmflwS9XB6B5N9qY=
github.com/atterpac/refresh v0.2.3 h1:bV6VGbeUTUFiTvYGKadPZIfIWKhXgUbadHSp8r86JIo=
github.com/atterpac/refresh v0.2.3/go.mod h1:KiBQUk5h76Z3Yvw/k3Ys2JGDrKmKmflwS9XB6B5N9qY=
github.com/atterpac/refresh v0.2.4 h1:rTD9qchbLa0qPIVr+qpyqkePe6+1Cs14ETXDguEvttI=
github.com/atterpac/refresh v0.2.4/go.mod h1:KiBQUk5h76Z3Yvw/k3Ys2JGDrKmKmflwS9XB6B5N9qY=
github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
@ -95,6 +87,7 @@ github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/ebitengine/purego v0.4.0-alpha.4 h1:Y7yIV06Yo5M2BAdD7EVPhfp6LZ0tEcQo5770OhYUVes=
github.com/ebitengine/purego v0.4.0-alpha.4/go.mod h1:ah1In8AOtksoNK6yk5z1HTJeUkC1Ez4Wk2idgGslMwQ=
github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg=
github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o=
@ -369,8 +362,6 @@ github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFA
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
github.com/tmclane/purego v0.0.0-20230818202843-0b72c8c9140f h1:/HXk9aFXP97CJRzOIphm4pzySmJLqIMhKu1kD5usz1E=
github.com/tmclane/purego v0.0.0-20230818202843-0b72c8c9140f/go.mod h1:ah1In8AOtksoNK6yk5z1HTJeUkC1Ez4Wk2idgGslMwQ=
github.com/wailsapp/go-webview2 v1.0.9 h1:lrU+q0cf1wgLdR69rN+ZnRtMJNaJRrcQ4ELxoO7/xjs=
github.com/wailsapp/go-webview2 v1.0.9/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo=
github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs=

View File

@ -8,5 +8,6 @@ type GenerateBindingsOptions struct {
TSSuffix string `description:"The postfix for the typescript names" default:""`
UseInterfaces bool `name:"i" description:"Use interfaces instead of classes"`
ProjectDirectory string `name:"p" description:"The project directory" default:"."`
UseIDs bool `name:"ids" description:"Use IDs instead of names in the binding calls"`
OutputDirectory string `name:"d" description:"The output directory" default:"frontend/bindings"`
}

View File

@ -22,7 +22,11 @@ const bindingTemplate = `
* @param names {string}
* @returns {Promise<string>}
**/
{{methodName}}: function({{inputs}}) { return wails.CallByID({{ID}}, ...Array.prototype.slice.call(arguments, 0)); },
`
const callByID = ` {{methodName}}: function({{inputs}}) { return wails.CallByID({{ID}}, ...Array.prototype.slice.call(arguments, 0)); },
`
const callByName = ` {{methodName}}: function({{inputs}}) { return wails.CallByName("{{Name}}", ...Array.prototype.slice.call(arguments, 0)); },
`
const enumTemplate = `
@ -108,12 +112,24 @@ func sanitiseJSVarName(name string) string {
return name
}
func GenerateBinding(structName string, method *BoundMethod) (string, []string, []string) {
func GenerateBinding(structName string, method *BoundMethod, useIDs bool) (string, []string, []string) {
var namespacedStructs []string
var models []string
result := strings.ReplaceAll(bindingTemplate, "{{structName}}", structName)
template := bindingTemplate
if useIDs {
template += callByID
} else {
template += callByName
}
result := strings.ReplaceAll(template, "{{structName}}", structName)
result = strings.ReplaceAll(result, "{{methodName}}", method.Name)
result = strings.ReplaceAll(result, "{{ID}}", fmt.Sprintf("%v", method.ID))
// get last part of method.Package path
parts := strings.Split(method.Package, "/")
packageName := parts[len(parts)-1]
result = strings.ReplaceAll(result, "{{Name}}", fmt.Sprintf("%v.%v.%v", packageName, structName, method.Name))
comments := strings.TrimSpace(method.DocComment)
if comments != "" {
comments = " " + comments
@ -224,7 +240,7 @@ func normalisePackageNames(packageNames []string) map[string]string {
return result
}
func GenerateBindings(bindings map[string]map[string][]*BoundMethod) map[string]string {
func GenerateBindings(bindings map[string]map[string][]*BoundMethod, useIDs bool) map[string]string {
var result = make(map[string]string)
@ -246,7 +262,7 @@ func GenerateBindings(bindings map[string]map[string][]*BoundMethod) map[string]
return methods[i].Name < methods[j].Name
})
for _, method := range methods {
thisBinding, models, namespacedStructs := GenerateBinding(structName, method)
thisBinding, models, namespacedStructs := GenerateBinding(structName, method, useIDs)
allNamespacedStructs = append(allNamespacedStructs, namespacedStructs...)
allModels = append(allModels, models...)
result[normalisedPackageNames[packageName]] += thisBinding

View File

@ -24,20 +24,39 @@ func getFile(filename string) string {
func TestGenerateBindings(t *testing.T) {
tests := []struct {
dir string
want map[string]string
dir string
want map[string]string
useIDs bool
}{
{
"testdata/enum",
map[string]string{
"main": getFile("testdata/enum/bindings_main.js"),
},
true,
},
{
"testdata/enum",
map[string]string{
"main": getFile("testdata/enum/bindings_main.name.js"),
},
false,
},
// TODO: Fix this test to pull in enum
{
"testdata/enum_from_imported_package",
map[string]string{
"main": getFile("testdata/enum_from_imported_package/bindings_main.js"),
"services": getFile("testdata/enum_from_imported_package/bindings_services.js"),
},
true,
},
{
"testdata/function_single",
map[string]string{
"main": getFile("testdata/function_single/bindings_main.js"),
},
true,
},
{
"testdata/function_from_imported_package",
@ -45,18 +64,21 @@ func TestGenerateBindings(t *testing.T) {
"main": getFile("testdata/function_from_imported_package/bindings_main.js"),
"services": getFile("testdata/function_from_imported_package/bindings_services.js"),
},
true,
},
{
"testdata/variable_single",
map[string]string{
"main": getFile("testdata/variable_single/bindings_main.js"),
},
true,
},
{
"testdata/variable_single_from_function",
map[string]string{
"main": getFile("testdata/variable_single_from_function/bindings_main.js"),
},
true,
},
{
"testdata/variable_single_from_other_function",
@ -64,18 +86,21 @@ func TestGenerateBindings(t *testing.T) {
"main": getFile("testdata/variable_single_from_other_function/bindings_main.js"),
"services": getFile("testdata/variable_single_from_other_function/bindings_services.js"),
},
true,
},
{
"testdata/struct_literal_single",
map[string]string{
"main": getFile("testdata/struct_literal_single/bindings_main.js"),
},
true,
},
{
"testdata/struct_literal_multiple",
map[string]string{
"main": getFile("testdata/struct_literal_multiple/bindings_main.js"),
},
true,
},
{
"testdata/struct_literal_multiple_other",
@ -83,12 +108,14 @@ func TestGenerateBindings(t *testing.T) {
"main": getFile("testdata/struct_literal_multiple_other/bindings_main.js"),
"services": getFile("testdata/struct_literal_multiple_other/bindings_services.js"),
},
true,
},
{
"testdata/struct_literal_multiple_files",
map[string]string{
"main": getFile("testdata/struct_literal_multiple_files/bindings_main.js"),
},
true,
},
}
for _, tt := range tests {
@ -101,7 +128,7 @@ func TestGenerateBindings(t *testing.T) {
}
// Generate Bindings
got := GenerateBindings(project.BoundMethods)
got := GenerateBindings(project.BoundMethods, tt.useIDs)
for name, binding := range got {
// check if the binding is in the expected bindings

View File

@ -117,6 +117,7 @@ func (p *Parameter) JSType() string {
}
type BoundMethod struct {
Package string
Name string
DocComment string
Inputs []*Parameter
@ -276,7 +277,12 @@ type Stats struct {
}
func ParseProject(projectPath string) (*Project, error) {
absPath, err := filepath.Abs(projectPath)
if err != nil {
return nil, err
}
result := &Project{
Path: absPath,
BoundMethods: make(map[packagePath]map[structName][]*BoundMethod),
packageCache: make(map[string]*ParsedPackage),
}
@ -314,7 +320,7 @@ func GenerateBindingsAndModels(options *flags.GenerateBindingsOptions) error {
return err
}
p.Stats.NumMethods = len(p.BoundMethods)
generatedMethods := GenerateBindings(p.BoundMethods)
generatedMethods := GenerateBindings(p.BoundMethods, options.UseIDs)
for pkg, text := range generatedMethods {
// Write the file
err = os.WriteFile(filepath.Join(options.OutputDirectory, pkg+".js"), []byte(text), 0644)
@ -590,8 +596,9 @@ func (p *Project) parseBoundStructMethods(name string, pkg *ParsedPackage) error
if err != nil {
return err
}
// Add the method to the list of methods
method := &BoundMethod{
Package: pkg.Path,
ID: id,
Name: funcDecl.Name.Name,
DocComment: strings.TrimSpace(funcDecl.Doc.Text()),
@ -1063,6 +1070,10 @@ func (p *Project) parseConstDeclaration(decl *ast.GenDecl, pkg *ParsedPackage) {
}
}
func (p *Project) RelativePackageDir(path string) string {
return strings.TrimPrefix(path, p.Path)
}
func getTypeString(expr ast.Expr) string {
switch t := expr.(type) {
case *ast.Ident:

View File

@ -25,6 +25,7 @@ func TestParseEnum(t *testing.T) {
"main": {
"GreetService": {
{
Package: "main",
Name: "Greet",
DocComment: "Greet does XYZ",
Inputs: []*Parameter{
@ -56,6 +57,7 @@ func TestParseEnum(t *testing.T) {
ID: 1411160069,
},
{
Package: "main",
Name: "NewPerson",
DocComment: "NewPerson creates a new person",
Inputs: []*Parameter{
@ -147,6 +149,7 @@ func TestParseEnum(t *testing.T) {
"main": {
"GreetService": {
{
Package: "main",
Name: "Greet",
DocComment: "Greet does XYZ",
Inputs: []*Parameter{
@ -178,6 +181,7 @@ func TestParseEnum(t *testing.T) {
ID: 1411160069,
},
{
Package: "main",
Name: "NewPerson",
DocComment: "NewPerson creates a new person",
Inputs: []*Parameter{

View File

@ -25,6 +25,7 @@ func TestParseFunction(t *testing.T) {
"main": {
"GreetService": {
{
Package: "main",
Name: "Greet",
DocComment: "Greet someone",
Inputs: []*Parameter{
@ -59,6 +60,7 @@ func TestParseFunction(t *testing.T) {
"main": {
"GreetService": {
{
Package: "main",
Name: "Greet",
DocComment: "Greet does XYZ",
Inputs: []*Parameter{
@ -82,6 +84,7 @@ func TestParseFunction(t *testing.T) {
ID: 1411160069,
},
{
Package: "main",
Name: "NewPerson",
DocComment: "NewPerson creates a new person",
Inputs: []*Parameter{
@ -111,7 +114,8 @@ func TestParseFunction(t *testing.T) {
"github.com/wailsapp/wails/v3/internal/parser/testdata/variable_single_from_other_function/services": {
"OtherService": {
{
Name: "Yay",
Package: "github.com/wailsapp/wails/v3/internal/parser/testdata/variable_single_from_other_function/services",
Name: "Yay",
Outputs: []*Parameter{
{
Type: &ParameterType{

View File

@ -24,6 +24,7 @@ func TestParseStructLiteralMultiple(t *testing.T) {
"main": {
"GreetService": {
{
Package: "main",
Name: "Greet",
DocComment: "",
Inputs: []*Parameter{
@ -49,8 +50,9 @@ func TestParseStructLiteralMultiple(t *testing.T) {
},
"OtherService": {
{
Name: "Hello",
ID: 4249972365,
Package: "main",
Name: "Hello",
ID: 4249972365,
},
},
},
@ -64,6 +66,7 @@ func TestParseStructLiteralMultiple(t *testing.T) {
"main": {
"GreetService": {
{
Package: "main",
Name: "Greet",
DocComment: "",
Inputs: []*Parameter{
@ -89,8 +92,9 @@ func TestParseStructLiteralMultiple(t *testing.T) {
},
"OtherService": {
{
Name: "Hello",
ID: 4249972365,
Package: "main",
Name: "Hello",
ID: 4249972365,
},
},
},
@ -105,6 +109,7 @@ func TestParseStructLiteralMultiple(t *testing.T) {
"main": {
"GreetService": {
{
Package: "main",
Name: "Greet",
DocComment: "Greet does XYZ",
Inputs: []*Parameter{
@ -128,6 +133,7 @@ func TestParseStructLiteralMultiple(t *testing.T) {
ID: 1411160069,
},
{
Package: "main",
Name: "NewPerson",
DocComment: "NewPerson creates a new person",
Inputs: []*Parameter{
@ -157,7 +163,8 @@ func TestParseStructLiteralMultiple(t *testing.T) {
"github.com/wailsapp/wails/v3/internal/parser/testdata/struct_literal_multiple_other/services": {
"OtherService": {
{
Name: "Yay",
Package: "github.com/wailsapp/wails/v3/internal/parser/testdata/struct_literal_multiple_other/services",
Name: "Yay",
Outputs: []*Parameter{
{
Type: &ParameterType{

View File

@ -24,6 +24,7 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
"main": {
"GreetService": {
{
Package: "main",
Name: "Greet",
DocComment: "Greet someone",
Inputs: []*Parameter{
@ -47,6 +48,7 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 1411160069,
},
{
Package: "main",
Name: "NoInputsStringOut",
DocComment: "",
Inputs: nil,
@ -62,7 +64,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 1075577233,
},
{
Name: "StringArrayInputStringOut",
Package: "main",
Name: "StringArrayInputStringOut",
Inputs: []*Parameter{
{
Name: "in",
@ -84,7 +87,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 1091960237,
},
{
Name: "StringArrayInputStringArrayOut",
Package: "main",
Name: "StringArrayInputStringArrayOut",
Inputs: []*Parameter{
{
Name: "in",
@ -107,7 +111,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 383995060,
},
{
Name: "StringArrayInputNamedOutput",
Package: "main",
Name: "StringArrayInputNamedOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -131,7 +136,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 3678582682,
},
{
Name: "StringArrayInputNamedOutputs",
Package: "main",
Name: "StringArrayInputNamedOutputs",
Inputs: []*Parameter{
{
Name: "in",
@ -162,7 +168,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 319259595,
},
{
Name: "IntPointerInputNamedOutputs",
Package: "main",
Name: "IntPointerInputNamedOutputs",
Inputs: []*Parameter{
{
Name: "in",
@ -192,7 +199,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 2718999663,
},
{
Name: "UIntPointerInAndOutput",
Package: "main",
Name: "UIntPointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -215,7 +223,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 1367187362,
},
{
Name: "UInt8PointerInAndOutput",
Package: "main",
Name: "UInt8PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -238,7 +247,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 518250834,
},
{
Name: "UInt16PointerInAndOutput",
Package: "main",
Name: "UInt16PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -261,7 +271,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 1236957573,
},
{
Name: "UInt32PointerInAndOutput",
Package: "main",
Name: "UInt32PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -284,7 +295,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 1739300671,
},
{
Name: "UInt64PointerInAndOutput",
Package: "main",
Name: "UInt64PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -307,7 +319,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 1403757716,
},
{
Name: "IntPointerInAndOutput",
Package: "main",
Name: "IntPointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -330,7 +343,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 1066151743,
},
{
Name: "Int8PointerInAndOutput",
Package: "main",
Name: "Int8PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -353,7 +367,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 2189402897,
},
{
Name: "Int16PointerInAndOutput",
Package: "main",
Name: "Int16PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -376,7 +391,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 1754277916,
},
{
Name: "Int32PointerInAndOutput",
Package: "main",
Name: "Int32PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -399,7 +415,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 4251088558,
},
{
Name: "Int64PointerInAndOutput",
Package: "main",
Name: "Int64PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -422,7 +439,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 2205561041,
},
{
Name: "IntInIntOut",
Package: "main",
Name: "IntInIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -443,7 +461,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 642881729,
},
{
Name: "Int8InIntOut",
Package: "main",
Name: "Int8InIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -464,7 +483,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 572240879,
},
{
Name: "Int16InIntOut",
Package: "main",
Name: "Int16InIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -485,7 +505,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 3306292566,
},
{
Name: "Int32InIntOut",
Package: "main",
Name: "Int32InIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -506,7 +527,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 1909469092,
},
{
Name: "Int64InIntOut",
Package: "main",
Name: "Int64InIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -527,7 +549,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 1343888303,
},
{
Name: "UIntInUIntOut",
Package: "main",
Name: "UIntInUIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -548,7 +571,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 2836661285,
},
{
Name: "UInt8InUIntOut",
Package: "main",
Name: "UInt8InUIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -569,7 +593,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 2988345717,
},
{
Name: "UInt16InUIntOut",
Package: "main",
Name: "UInt16InUIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -590,7 +615,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 3401034892,
},
{
Name: "UInt32InUIntOut",
Package: "main",
Name: "UInt32InUIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -611,7 +637,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 1160383782,
},
{
Name: "UInt64InUIntOut",
Package: "main",
Name: "UInt64InUIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -632,7 +659,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 793803239,
},
{
Name: "Float32InFloat32Out",
Package: "main",
Name: "Float32InFloat32Out",
Inputs: []*Parameter{
{
Name: "in",
@ -653,7 +681,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 3132595881,
},
{
Name: "Float64InFloat64Out",
Package: "main",
Name: "Float64InFloat64Out",
Inputs: []*Parameter{
{
Name: "in",
@ -674,7 +703,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 2182412247,
},
{
Name: "PointerFloat32InFloat32Out",
Package: "main",
Name: "PointerFloat32InFloat32Out",
Inputs: []*Parameter{
{
Name: "in",
@ -697,7 +727,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 224675106,
},
{
Name: "PointerFloat64InFloat64Out",
Package: "main",
Name: "PointerFloat64InFloat64Out",
Inputs: []*Parameter{
{
Name: "in",
@ -720,7 +751,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 2124953624,
},
{
Name: "BoolInBoolOut",
Package: "main",
Name: "BoolInBoolOut",
Inputs: []*Parameter{
{
Name: "in",
@ -741,7 +773,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 2424639793,
},
{
Name: "PointerBoolInBoolOut",
Package: "main",
Name: "PointerBoolInBoolOut",
Inputs: []*Parameter{
{
Name: "in",
@ -764,7 +797,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 3589606958,
},
{
Name: "PointerStringInStringOut",
Package: "main",
Name: "PointerStringInStringOut",
Inputs: []*Parameter{
{
Name: "in",
@ -787,7 +821,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 229603958,
},
{
Name: "StructPointerInputErrorOutput",
Package: "main",
Name: "StructPointerInputErrorOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -810,7 +845,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 2447692557,
},
{
Name: "StructInputStructOutput",
Package: "main",
Name: "StructInputStructOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -833,7 +869,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 3835643147,
},
{
Name: "StructPointerInputStructPointerOutput",
Package: "main",
Name: "StructPointerInputStructPointerOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -858,7 +895,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 2943477349,
},
{
Name: "MapIntInt",
Package: "main",
Name: "MapIntInt",
Inputs: []*Parameter{
{
Name: "in",
@ -879,7 +917,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 2386486356,
},
{
Name: "PointerMapIntInt",
Package: "main",
Name: "PointerMapIntInt",
Inputs: []*Parameter{
{
Name: "in",
@ -901,7 +940,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 3516977899,
},
{
Name: "MapIntPointerInt",
Package: "main",
Name: "MapIntPointerInt",
Inputs: []*Parameter{
{
Name: "in",
@ -923,7 +963,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 550413585,
},
{
Name: "MapIntSliceInt",
Package: "main",
Name: "MapIntSliceInt",
Inputs: []*Parameter{
{
Name: "in",
@ -945,7 +986,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 2900172572,
},
{
Name: "MapIntSliceIntInMapIntSliceIntOut",
Package: "main",
Name: "MapIntSliceIntInMapIntSliceIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -985,7 +1027,8 @@ func TestParseStructLiteralNonPointerSingle(t *testing.T) {
ID: 881980169,
},
{
Name: "ArrayInt",
Package: "main",
Name: "ArrayInt",
Inputs: []*Parameter{
{
Name: "in",

View File

@ -25,6 +25,7 @@ func TestParseStructLiteralSingle(t *testing.T) {
"main": {
"GreetService": {
{
Package: "main",
Name: "Greet",
DocComment: "Greet someone",
Inputs: []*Parameter{
@ -48,6 +49,7 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 1411160069,
},
{
Package: "main",
Name: "NoInputsStringOut",
DocComment: "",
Inputs: nil,
@ -63,7 +65,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 1075577233,
},
{
Name: "StringArrayInputStringOut",
Package: "main",
Name: "StringArrayInputStringOut",
Inputs: []*Parameter{
{
Name: "in",
@ -85,7 +88,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 1091960237,
},
{
Name: "StringArrayInputStringArrayOut",
Package: "main",
Name: "StringArrayInputStringArrayOut",
Inputs: []*Parameter{
{
Name: "in",
@ -108,7 +112,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 383995060,
},
{
Name: "StringArrayInputNamedOutput",
Package: "main",
Name: "StringArrayInputNamedOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -132,7 +137,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 3678582682,
},
{
Name: "StringArrayInputNamedOutputs",
Package: "main",
Name: "StringArrayInputNamedOutputs",
Inputs: []*Parameter{
{
Name: "in",
@ -163,7 +169,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 319259595,
},
{
Name: "IntPointerInputNamedOutputs",
Package: "main",
Name: "IntPointerInputNamedOutputs",
Inputs: []*Parameter{
{
Name: "in",
@ -193,7 +200,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 2718999663,
},
{
Name: "UIntPointerInAndOutput",
Package: "main",
Name: "UIntPointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -216,7 +224,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 1367187362,
},
{
Name: "UInt8PointerInAndOutput",
Package: "main",
Name: "UInt8PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -239,7 +248,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 518250834,
},
{
Name: "UInt16PointerInAndOutput",
Package: "main",
Name: "UInt16PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -262,7 +272,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 1236957573,
},
{
Name: "UInt32PointerInAndOutput",
Package: "main",
Name: "UInt32PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -285,7 +296,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 1739300671,
},
{
Name: "UInt64PointerInAndOutput",
Package: "main",
Name: "UInt64PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -308,7 +320,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 1403757716,
},
{
Name: "IntPointerInAndOutput",
Package: "main",
Name: "IntPointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -331,7 +344,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 1066151743,
},
{
Name: "Int8PointerInAndOutput",
Package: "main",
Name: "Int8PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -354,7 +368,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 2189402897,
},
{
Name: "Int16PointerInAndOutput",
Package: "main",
Name: "Int16PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -377,7 +392,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 1754277916,
},
{
Name: "Int32PointerInAndOutput",
Package: "main",
Name: "Int32PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -400,7 +416,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 4251088558,
},
{
Name: "Int64PointerInAndOutput",
Package: "main",
Name: "Int64PointerInAndOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -423,7 +440,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 2205561041,
},
{
Name: "IntInIntOut",
Package: "main",
Name: "IntInIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -444,7 +462,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 642881729,
},
{
Name: "Int8InIntOut",
Package: "main",
Name: "Int8InIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -465,7 +484,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 572240879,
},
{
Name: "Int16InIntOut",
Package: "main",
Name: "Int16InIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -486,7 +506,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 3306292566,
},
{
Name: "Int32InIntOut",
Package: "main",
Name: "Int32InIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -507,7 +528,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 1909469092,
},
{
Name: "Int64InIntOut",
Package: "main",
Name: "Int64InIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -528,7 +550,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 1343888303,
},
{
Name: "UIntInUIntOut",
Package: "main",
Name: "UIntInUIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -549,7 +572,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 2836661285,
},
{
Name: "UInt8InUIntOut",
Package: "main",
Name: "UInt8InUIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -570,7 +594,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 2988345717,
},
{
Name: "UInt16InUIntOut",
Package: "main",
Name: "UInt16InUIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -591,7 +616,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 3401034892,
},
{
Name: "UInt32InUIntOut",
Package: "main",
Name: "UInt32InUIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -612,7 +638,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 1160383782,
},
{
Name: "UInt64InUIntOut",
Package: "main",
Name: "UInt64InUIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -633,7 +660,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 793803239,
},
{
Name: "Float32InFloat32Out",
Package: "main",
Name: "Float32InFloat32Out",
Inputs: []*Parameter{
{
Name: "in",
@ -654,7 +682,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 3132595881,
},
{
Name: "Float64InFloat64Out",
Package: "main",
Name: "Float64InFloat64Out",
Inputs: []*Parameter{
{
Name: "in",
@ -675,7 +704,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 2182412247,
},
{
Name: "PointerFloat32InFloat32Out",
Package: "main",
Name: "PointerFloat32InFloat32Out",
Inputs: []*Parameter{
{
Name: "in",
@ -698,7 +728,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 224675106,
},
{
Name: "PointerFloat64InFloat64Out",
Package: "main",
Name: "PointerFloat64InFloat64Out",
Inputs: []*Parameter{
{
Name: "in",
@ -721,7 +752,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 2124953624,
},
{
Name: "BoolInBoolOut",
Package: "main",
Name: "BoolInBoolOut",
Inputs: []*Parameter{
{
Name: "in",
@ -742,7 +774,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 2424639793,
},
{
Name: "PointerBoolInBoolOut",
Package: "main",
Name: "PointerBoolInBoolOut",
Inputs: []*Parameter{
{
Name: "in",
@ -765,7 +798,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 3589606958,
},
{
Name: "PointerStringInStringOut",
Package: "main",
Name: "PointerStringInStringOut",
Inputs: []*Parameter{
{
Name: "in",
@ -788,7 +822,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 229603958,
},
{
Name: "StructPointerInputErrorOutput",
Package: "main",
Name: "StructPointerInputErrorOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -811,7 +846,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 2447692557,
},
{
Name: "StructInputStructOutput",
Package: "main",
Name: "StructInputStructOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -834,7 +870,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 3835643147,
},
{
Name: "StructPointerInputStructPointerOutput",
Package: "main",
Name: "StructPointerInputStructPointerOutput",
Inputs: []*Parameter{
{
Name: "in",
@ -859,7 +896,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 2943477349,
},
{
Name: "MapIntInt",
Package: "main",
Name: "MapIntInt",
Inputs: []*Parameter{
{
Name: "in",
@ -880,7 +918,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 2386486356,
},
{
Name: "PointerMapIntInt",
Package: "main",
Name: "PointerMapIntInt",
Inputs: []*Parameter{
{
Name: "in",
@ -902,7 +941,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 3516977899,
},
{
Name: "MapIntPointerInt",
Package: "main",
Name: "MapIntPointerInt",
Inputs: []*Parameter{
{
Name: "in",
@ -924,7 +964,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 550413585,
},
{
Name: "MapIntSliceInt",
Package: "main",
Name: "MapIntSliceInt",
Inputs: []*Parameter{
{
Name: "in",
@ -946,7 +987,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 2900172572,
},
{
Name: "MapIntSliceIntInMapIntSliceIntOut",
Package: "main",
Name: "MapIntSliceIntInMapIntSliceIntOut",
Inputs: []*Parameter{
{
Name: "in",
@ -986,7 +1028,8 @@ func TestParseStructLiteralSingle(t *testing.T) {
ID: 881980169,
},
{
Name: "ArrayInt",
Package: "main",
Name: "ArrayInt",
Inputs: []*Parameter{
{
Name: "in",

View File

@ -25,6 +25,7 @@ func TestParseVariableSingle(t *testing.T) {
"main": {
"GreetService": {
{
Package: "main",
Name: "Greet",
DocComment: "Greet someone",
Inputs: []*Parameter{
@ -59,6 +60,7 @@ func TestParseVariableSingle(t *testing.T) {
"main": {
"GreetService": {
{
Package: "main",
Name: "Greet",
DocComment: "Greet someone",
Inputs: []*Parameter{
@ -93,6 +95,7 @@ func TestParseVariableSingle(t *testing.T) {
"main": {
"GreetService": {
{
Package: "main",
Name: "Greet",
DocComment: "Greet does XYZ",
Inputs: []*Parameter{
@ -116,6 +119,7 @@ func TestParseVariableSingle(t *testing.T) {
ID: 1411160069,
},
{
Package: "main",
Name: "NewPerson",
DocComment: "NewPerson creates a new person",
Inputs: []*Parameter{
@ -145,7 +149,8 @@ func TestParseVariableSingle(t *testing.T) {
"github.com/wailsapp/wails/v3/internal/parser/testdata/variable_single_from_other_function/services": {
"OtherService": {
{
Name: "Yay",
Package: "github.com/wailsapp/wails/v3/internal/parser/testdata/variable_single_from_other_function/services",
Name: "Yay",
Outputs: []*Parameter{
{
Type: &ParameterType{

View File

@ -0,0 +1,29 @@
// @ts-check
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
/**
* @typedef {import('./models').main.Title} mainTitle
* @typedef {import('./models').main.Person} mainPerson
*/
export const GreetService = {
/**
* GreetService.Greet
* Greet does XYZ
* @param name {string}
* @param title {mainTitle}
* @returns {Promise<string>}
**/
Greet: function(name, title) { return wails.CallByName("main.GreetService.Greet", ...Array.prototype.slice.call(arguments, 0)); },
/**
* GreetService.NewPerson
* NewPerson creates a new person
* @param name {string}
* @returns {Promise<mainPerson>}
**/
NewPerson: function(name) { return wails.CallByName("main.GreetService.NewPerson", ...Array.prototype.slice.call(arguments, 0)); },
};

View File

@ -0,0 +1,29 @@
// @ts-check
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
/**
* @typedef {import('./models').main.Title} mainTitle
* @typedef {import('./models').main.Person} mainPerson
*/
export const GreetService = {
/**
* GreetService.Greet
* Greet does XYZ
* @param name {string}
* @param title {mainTitle}
* @returns {Promise<string>}
**/
Greet: function(name, title) { return wails.CallByName("main.GreetService.Greet", ...Array.prototype.slice.call(arguments, 0)); },
/**
* GreetService.NewPerson
* NewPerson creates a new person
* @param name {string}
* @returns {Promise<mainPerson>}
**/
NewPerson: function(name) { return wails.CallByName("main.GreetService.NewPerson", ...Array.prototype.slice.call(arguments, 0)); },
};

View File

@ -2,29 +2,15 @@
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
/**
* @typedef {import('./models').main.Person} mainPerson
*/
window.go = window.go || {};
window.go.main = {
GreetService: {
export const GreetService = {
/**
* GreetService.Greet
* Greet does XYZ
* @param name {string}
* @param name {string}
* @param title {Title}
* @returns {Promise<string>}
**/
Greet: function(name) { return wails.CallByID(1411160069, ...Array.prototype.slice.call(arguments, 0)); },
/**
* GreetService.NewPerson
* NewPerson creates a new person
* @param name {string}
* @returns {Promise<mainPerson>}
**/
NewPerson: function(name) { return wails.CallByID(1661412647, ...Array.prototype.slice.call(arguments, 0)); },
},
Greet: function(name, title) { return wails.CallByID(1411160069, ...Array.prototype.slice.call(arguments, 0)); },
};

View File

@ -0,0 +1,16 @@
// @ts-check
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
export const GreetService = {
/**
* GreetService.Greet
* Greet does XYZ
* @param name {string}
* @param title {Title}
* @returns {Promise<string>}
**/
Greet: function(name, title) { return wails.CallByName("main.GreetService.Greet", ...Array.prototype.slice.call(arguments, 0)); },
};

View File

@ -0,0 +1,19 @@
// @ts-check
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
/**
* @typedef {import('./models').services.Address} servicesAddress
*/
export const OtherService = {
/**
* OtherService.Yay
*
*
* @returns {Promise<servicesAddress>}
**/
Yay: function() { return wails.CallByID(302702907, ...Array.prototype.slice.call(arguments, 0)); },};