5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-10 22:19:46 +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

@ -26,18 +26,37 @@ func TestGenerateBindings(t *testing.T) {
tests := []struct {
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,6 +114,7 @@ func TestParseFunction(t *testing.T) {
"github.com/wailsapp/wails/v3/internal/parser/testdata/variable_single_from_other_function/services": {
"OtherService": {
{
Package: "github.com/wailsapp/wails/v3/internal/parser/testdata/variable_single_from_other_function/services",
Name: "Yay",
Outputs: []*Parameter{
{

View File

@ -24,6 +24,7 @@ func TestParseStructLiteralMultiple(t *testing.T) {
"main": {
"GreetService": {
{
Package: "main",
Name: "Greet",
DocComment: "",
Inputs: []*Parameter{
@ -49,6 +50,7 @@ func TestParseStructLiteralMultiple(t *testing.T) {
},
"OtherService": {
{
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,6 +92,7 @@ func TestParseStructLiteralMultiple(t *testing.T) {
},
"OtherService": {
{
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,6 +163,7 @@ func TestParseStructLiteralMultiple(t *testing.T) {
"github.com/wailsapp/wails/v3/internal/parser/testdata/struct_literal_multiple_other/services": {
"OtherService": {
{
Package: "github.com/wailsapp/wails/v3/internal/parser/testdata/struct_literal_multiple_other/services",
Name: "Yay",
Outputs: []*Parameter{
{

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

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

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,6 +149,7 @@ func TestParseVariableSingle(t *testing.T) {
"github.com/wailsapp/wails/v3/internal/parser/testdata/variable_single_from_other_function/services": {
"OtherService": {
{
Package: "github.com/wailsapp/wails/v3/internal/parser/testdata/variable_single_from_other_function/services",
Name: "Yay",
Outputs: []*Parameter{
{

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 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)); },};