mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-07 17:02:07 +08:00
Initial generation of typescript declarations
This commit is contained in:
parent
cc50f9f062
commit
662b14fffb
15
v2/pkg/commands/build/internal/backendjs/package.d.template
Normal file
15
v2/pkg/commands/build/internal/backendjs/package.d.template
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
||||||
|
// This file is automatically generated. DO NOT EDIT
|
||||||
|
|
||||||
|
{{range .Comments}}// {{.}}{{end}}
|
||||||
|
{{range .Methods}}
|
||||||
|
/**{{if .Comments }}
|
||||||
|
{{range .Comments}} * {{ . }}{{end}}
|
||||||
|
*{{end}}
|
||||||
|
* @function {{.Name}}
|
||||||
|
{{range .Inputs}} * @param {{"{"}}{{.JSType}}{{"}"}} {{.Name}}
|
||||||
|
{{end}} *
|
||||||
|
* @returns {Promise}
|
||||||
|
*/
|
||||||
|
export function {{.Name}}({{.InputsAsTSText}}): Promise<{{.OutputsAsTSText}}>;
|
||||||
|
{{end}}
|
@ -102,8 +102,8 @@ func generateIndexJS(packages []*Package) error {
|
|||||||
templateFile := fs.RelativePath("./index.template")
|
templateFile := fs.RelativePath("./index.template")
|
||||||
|
|
||||||
// Load template
|
// Load template
|
||||||
templateData := fs.MustLoadString(templateFile)
|
javascriptTemplateData := fs.MustLoadString(templateFile)
|
||||||
packagesTemplate, err := template.New("index").Parse(templateData)
|
packagesTemplate, err := template.New("index").Parse(javascriptTemplateData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "Error creating template")
|
return errors.Wrap(err, "Error creating template")
|
||||||
}
|
}
|
||||||
@ -132,11 +132,21 @@ func generateIndexJS(packages []*Package) error {
|
|||||||
func generatePackageFiles(packages []*Package) error {
|
func generatePackageFiles(packages []*Package) error {
|
||||||
|
|
||||||
// Get path to local file
|
// Get path to local file
|
||||||
templateFile := fs.RelativePath("./package.template")
|
javascriptTemplateFile := fs.RelativePath("./package.template")
|
||||||
|
|
||||||
// Load template
|
// Load javascript template
|
||||||
templateData := fs.MustLoadString(templateFile)
|
javascriptTemplateData := fs.MustLoadString(javascriptTemplateFile)
|
||||||
packagesTemplate, err := template.New("package").Parse(templateData)
|
javascriptTemplate, err := template.New("javascript").Parse(javascriptTemplateData)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "Error creating template")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get path to local file
|
||||||
|
typescriptTemplateFile := fs.RelativePath("./package.d.template")
|
||||||
|
|
||||||
|
// Load typescript template
|
||||||
|
typescriptTemplateData := fs.MustLoadString(typescriptTemplateFile)
|
||||||
|
typescriptTemplate, err := template.New("typescript").Parse(typescriptTemplateData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "Error creating template")
|
return errors.Wrap(err, "Error creating template")
|
||||||
}
|
}
|
||||||
@ -153,17 +163,33 @@ func generatePackageFiles(packages []*Package) error {
|
|||||||
// Make the dir but ignore if it already exists
|
// Make the dir but ignore if it already exists
|
||||||
fs.Mkdir(packageDir)
|
fs.Mkdir(packageDir)
|
||||||
|
|
||||||
// Execute template
|
// Execute javascript template
|
||||||
var buffer bytes.Buffer
|
var buffer bytes.Buffer
|
||||||
err = packagesTemplate.Execute(&buffer, thisPackage)
|
err = javascriptTemplate.Execute(&buffer, thisPackage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "Error generating code")
|
return errors.Wrap(err, "Error generating code")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Save javascript file
|
||||||
err = ioutil.WriteFile(filepath.Join(packageDir, "index.js"), buffer.Bytes(), 0755)
|
err = ioutil.WriteFile(filepath.Join(packageDir, "index.js"), buffer.Bytes(), 0755)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "Error writing backend package file")
|
return errors.Wrap(err, "Error writing backend package file")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clear buffer
|
||||||
|
buffer.Reset()
|
||||||
|
|
||||||
|
// Execute typescript template
|
||||||
|
err = typescriptTemplate.Execute(&buffer, thisPackage)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "Error generating code")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save typescript file
|
||||||
|
err = ioutil.WriteFile(filepath.Join(packageDir, "index.d.ts"), buffer.Bytes(), 0755)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "Error writing backend package file")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package backendjs
|
package backendjs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
@ -37,6 +38,38 @@ func (m *Method) InputsAsJSText() string {
|
|||||||
return strings.Join(inputs, ", ")
|
return strings.Join(inputs, ", ")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// InputsAsTSText generates a string with the method inputs
|
||||||
|
// formatted in a way acceptable to Typescript
|
||||||
|
func (m *Method) InputsAsTSText() string {
|
||||||
|
var inputs []string
|
||||||
|
|
||||||
|
for _, input := range m.Inputs {
|
||||||
|
inputText := fmt.Sprintf("%s: %s", input.Name, goTypeToJS(input.Type))
|
||||||
|
inputs = append(inputs, inputText)
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.Join(inputs, ", ")
|
||||||
|
}
|
||||||
|
|
||||||
|
// OutputsAsTSText generates a string with the method inputs
|
||||||
|
// formatted in a way acceptable to Javascript
|
||||||
|
func (m *Method) OutputsAsTSText() string {
|
||||||
|
|
||||||
|
if len(m.Outputs) != 2 {
|
||||||
|
return "any"
|
||||||
|
}
|
||||||
|
|
||||||
|
jsType := goTypeToJS(m.Outputs[1].Type)
|
||||||
|
switch jsType {
|
||||||
|
case JsArray:
|
||||||
|
return "Array<any>"
|
||||||
|
case JsObject:
|
||||||
|
return "any"
|
||||||
|
default:
|
||||||
|
return string(jsType)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// func generateStructFile() {
|
// func generateStructFile() {
|
||||||
// // Create string buffer
|
// // Create string buffer
|
||||||
// var result bytes.Buffer
|
// var result bytes.Buffer
|
||||||
|
Loading…
Reference in New Issue
Block a user