1
0
Fork 0
golang-github-pocketbase-ty.../config.go
Daniel Baumann b6e042e2af
Adding upstream version 0.0~git20250307.c2e6a77.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-05-22 11:21:48 +02:00

82 lines
2.6 KiB
Go

package tygoja
const (
defaultIndent = " "
// custom base types that every package has access to
BaseTypeDict = "_TygojaDict" // Record type alternative as a more generic map-like type
BaseTypeAny = "_TygojaAny" // any type alias to allow easier extends generation
)
// FieldNameFormatterFunc defines a function for formatting a field name.
type FieldNameFormatterFunc func(string) string
// MethodNameFormatterFunc defines a function for formatting a method name.
type MethodNameFormatterFunc func(string) string
type Config struct {
// Packages is a list of package paths just like you would import them in Go.
// Use "*" to generate all package types.
//
// Example:
//
// Packages: map[string][]string{
// "time": {"Time"},
// "github.com/pocketbase/pocketbase/core": {"*"},
// }
Packages map[string][]string
// Heading specifies a content that will be put at the top of the output declaration file.
//
// You would generally use this to import custom types or some custom TS declarations.
Heading string
// TypeMappings specifies custom type translations.
//
// Useful for for mapping 3rd party package types, eg "unsafe.Pointer" => "CustomType".
//
// Be default unrecognized types will be recursively generated by
// traversing their import package (when possible).
TypeMappings map[string]string
// WithConstants indicates whether to generate types for constants
// ("false" by default).
WithConstants bool
// WithPackageFunctions indicates whether to generate types
// for package level functions ("false" by default).
WithPackageFunctions bool
// FieldNameFormatter allows specifying a custom struct field name formatter.
FieldNameFormatter FieldNameFormatterFunc
// MethodNameFormatter allows specifying a custom method name formatter.
MethodNameFormatter MethodNameFormatterFunc
// StartModifier usually should be "export" or declare but as of now prevents
// the LSP autocompletion so we keep it empty.
//
// See also:
// https://github.com/microsoft/TypeScript/issues/54330
// https://github.com/microsoft/TypeScript/pull/49644
StartModifier string
// Indent allow customizing the default indentation (use \t if you want tabs).
Indent string
}
// Initializes the defaults (if not already) of the current config.
func (c *Config) InitDefaults() {
if c.Indent == "" {
c.Indent = defaultIndent
}
if c.TypeMappings == nil {
c.TypeMappings = make(map[string]string)
}
// special case for the unsafe package because it doesn't return its types in pkg.Syntax
if _, ok := c.TypeMappings["unsafe.Pointer"]; !ok {
c.TypeMappings["unsafe.Pointer"] = "number"
}
}