5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-08 09:31:44 +08:00
wails/v3/internal/generator/render/templates/index.tmpl
Fabio Massaioli 37673eb24d
[v3] Fix binding generator bugs and prepare for Go 1.24 (#4045)
* 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>
2025-02-09 09:44:34 +11:00

103 lines
2.2 KiB
Cheetah

{{$renderer := .}}
{{- $useInterfaces := .UseInterfaces}}
{{- $models := (fixext .ModelsFile)}}
{{- if not .TS -}}
// @ts-check
{{end -}}
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
{{$hasDocs := false}}
{{- range .Package.Docs}}
{{- if hasdoc .}}{{$hasDocs := true}}{{break}}{{end}}
{{- end}}
{{- if $hasDocs}}
/**
{{- range .Package.Docs}}
{{- jsdoc .Text ""}}
{{- end}}
* @module
*/
{{end}}
{{- if .Services}}
{{- range .Services}}{{if .Internal}}{{break}}{{end}}
import * as {{jsid .Name}} from "./{{js (fixext ($renderer.ServiceFile .Name))}}";
{{- end}}
export {
{{- range $i, $service := .Services}}
{{- if .Internal}}{{break}}{{end}}
{{- if gt $i 0}},{{end}}
{{jsid .Name}}
{{- end}}
};
{{end}}
{{- $hasObjects := false}}
{{- $hasTypes := false}}
{{- range $model := .Models}}
{{- if $model.Internal}}{{break}}{{end}}
{{- $info := modelinfo $model $useInterfaces }}
{{- if or $info.HasValues $info.IsClassAlias $info.IsClass}}
{{- if not $hasObjects}}
{{- $hasObjects = true}}
export {
{{- else}},{{end}}
{{jsid $model.Name}}
{{- else}}
{{- $hasTypes = true}}
{{- end}}
{{- end}}
{{- if $hasObjects}}
} from "./{{js $models}}";
{{end}}
{{- if $hasTypes}}
{{- $hasTypes = false}}
{{- if .TS}}
export type {
{{- else}}
import * as $models from "./{{js $models}}";
{{end}}
{{- range $model := .Models}}
{{- if $model.Internal}}{{break}}{{end}}
{{- $info := modelinfo $model $useInterfaces }}
{{- $template := $info.Template }}
{{- if or $info.HasValues $info.IsClassAlias $info.IsClass}}{{continue}}{{end}}
{{- if $renderer.TS}}
{{- if $hasTypes}},{{end}}
{{jsid $model.Name}}
{{- else}}
/**
{{- if hasdoc $model.Decl.Doc}}
{{- jsdoc $model.Decl.Doc.Text ""}}{{if hasdoc $model.Doc}}
*{{end}}
{{- end}}
{{- if hasdoc $model.Doc}}
{{- jsdoc $model.Doc.Text ""}}
{{- end}}
{{- if $template.ParamList}}
* @template {{$template.Params}}
{{- end}}
* @typedef {$models.{{jsid $model.Name}}{{$template.ParamList -}} } {{jsid $model.Name}}
*/
{{end}}
{{- $hasTypes = true}}
{{- end}}
{{- if .TS}}
} from "./{{js $models}}";
{{end}}
{{- end}}
{{- range .Package.Injections}}
{{.}}
{{- end}}{{if .Package.Injections}}
{{end -}}