mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-08 13:02:24 +08:00

* Rename predicates source file * Overhaul and document type predicates * Fix model collection logic for named types * Fix map key type rendering * Fix map creation code * Fix rendering of structs that implement marshaler interfaces * Fix type cycle detection to take type args into account * Fix enum and typeparam field initialisation * Improve unsupported type warnings * Remove internal models file * Deduplicate template code * Accept generic aliases in static analyser * Support new `encoding/json` flag `omitzero` * Handle special cases when rendering generic aliases * Update npm test dependencies * Test class aliases and implicit private dependencies * Test marshaler combinations * Test map key types * Remove bad map keys from unrelated tests * Test service discovery through generic aliases * Test generic aliases * Test warning messages * Disable go1.24 tests * Update changelog * Restore rendering of injected lines in index file * Test directives * Add wails:ignore directive * Fix typo * Move injections to the bottom of service files * Handle errors from closing files * Do not emit messages when services define only lifecycle methods * Add internal directive for services and models * Update changelog * Fix error in service templates * Test internal directive on services/models * Fix error in index template * Base testdata updates * Testdata for class aliases and implicit private dependencies * Testdata for marshaler combinations * Testdata for map key types * Testdata for bad map key fixes * Add weakly typed enums aka alias constants * Testdata for enum and typeparam field fixes * Testdata for generic aliases * Testdata for warning messages * Testdata for directives * Testdata for weakly typed enums * Update binding example * Update services example * Remove go1.24 testdata * Update cli doc * Fix analyser tests * Fix windows tests... hopefully * go mod tidy on examples * Update bindings guide --------- Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
100 lines
3.2 KiB
Cheetah
100 lines
3.2 KiB
Cheetah
{{$module := .}}
|
|
{{- $runtime := $module.Runtime}}
|
|
{{- $models := (fixext $module.ModelsFile)}}
|
|
{{- $useNames := $module.UseNames}}
|
|
{{- $useInterfaces := $module.UseInterfaces}}
|
|
{{- $imports := $module.Imports}}
|
|
{{- with .Service -}}
|
|
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
|
// This file is automatically generated. DO NOT EDIT
|
|
{{if or (hasdoc .Decl.Doc) (hasdoc .Doc)}}
|
|
/**
|
|
{{- if hasdoc .Decl.Doc}}
|
|
{{- jsdoc .Decl.Doc.Text ""}}{{if hasdoc .Doc}}
|
|
*{{end}}
|
|
{{- end}}
|
|
{{- if hasdoc .Doc}}
|
|
{{- jsdoc .Doc.Text ""}}
|
|
{{- end}}
|
|
* @module
|
|
*/
|
|
{{end}}
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
// @ts-ignore: Unused imports
|
|
import {Call as $Call{{if not $useInterfaces}}, Create as $Create{{end -}} } from "{{js $runtime}}";
|
|
{{range $imports.External}}
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
// @ts-ignore: Unused imports
|
|
import * as {{jsimport .}} from "{{js .RelPath}}/{{js $models}}";
|
|
{{- end}}{{if $imports.External}}
|
|
{{end}}
|
|
{{- if $imports.ImportModels}}
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
// @ts-ignore: Unused imports
|
|
import * as $models from "./{{js $models}}";
|
|
{{end}}
|
|
{{- range .Methods}}
|
|
{{- if or (hasdoc .Decl.Doc) (hasdoc .Doc)}}
|
|
/**
|
|
{{- if hasdoc .Decl.Doc}}
|
|
{{- jsdoc .Decl.Doc.Text ""}}{{if hasdoc .Doc}}
|
|
*{{end}}
|
|
{{- end}}
|
|
{{- if .Doc}}
|
|
{{- jsdoc .Doc.Text ""}}
|
|
{{- end}}
|
|
*/
|
|
{{- end}}
|
|
{{if not .Internal}}export {{end}}function {{.Name}}({{range $i, $param := .Params -}}
|
|
{{- if gt $i 0}}, {{end}}
|
|
{{- if .Variadic}}...{{end}}
|
|
{{- jsparam $i .}}: {{$module.JSType .Type}}{{if .Variadic}}[]{{end}}
|
|
{{- end}}): Promise<
|
|
{{- if eq 0 (len .Results) -}}
|
|
void
|
|
{{- else if eq 1 (len .Results)}}
|
|
{{- $module.JSType (index .Results 0)}}
|
|
{{- else -}}
|
|
[{{range $i, $result := .Results}}
|
|
{{- if gt $i 0}}, {{end}}
|
|
{{- $module.JSType $result}}
|
|
{{- end}}]
|
|
{{- end}}> & { cancel(): void } {
|
|
{{- if $useNames}}
|
|
let $resultPromise = $Call.ByName("{{js .FQN}}"
|
|
{{- else}}
|
|
let $resultPromise = $Call.ByID({{.ID}}
|
|
{{- end}}{{range $i, $param := .Params}}, {{jsparam $i .}}{{end}}) as any;
|
|
{{- if or $useInterfaces (not .Results) ($module.SkipCreate .Results)}}
|
|
return $resultPromise;
|
|
{{- else}}
|
|
let $typingPromise = $resultPromise.then(($result: any) => {
|
|
{{- if eq 1 (len .Results)}}
|
|
return {{$module.JSCreate (index .Results 0)}}($result);
|
|
{{- else}}
|
|
{{- range $i, $type := .Results}}
|
|
{{- $create := ($module.JSCreate $type)}}
|
|
{{- if ne $create "$Create.Any"}}
|
|
$result[{{$i}}] = {{$create}}($result[{{$i}}]);
|
|
{{- end}}{{end}}
|
|
return $result;
|
|
{{- end}}
|
|
}) as any;
|
|
$typingPromise.cancel = $resultPromise.cancel.bind($resultPromise);
|
|
return $typingPromise;
|
|
{{- end}}
|
|
}
|
|
{{end}}
|
|
{{- $postponed := $module.PostponedCreates}}
|
|
{{- if $postponed}}
|
|
// Private type creation functions
|
|
{{- range $i, $create := $postponed}}
|
|
{{if and (ge (len $create) 16) (eq (slice $create 1 16) "function $$init")}}var {{else}}const {{end -}}
|
|
$$createType{{$i}} = {{$create}};
|
|
{{- end}}
|
|
{{end}}
|
|
{{- range .Injections}}
|
|
{{.}}
|
|
{{- end}}{{if .Injections}}
|
|
{{end}}{{end -}}
|