diff --git a/v2/internal/binding/generate.go b/v2/internal/binding/generate.go index 43be5d40c..e5482cf91 100644 --- a/v2/internal/binding/generate.go +++ b/v2/internal/binding/generate.go @@ -110,7 +110,7 @@ func (b *Bindings) GenerateGoBindings(baseDir string) error { func goTypeToJSDocType(input string, importNamespaces *slicer.StringSlicer) string { switch true { - case input == "interface {}": + case input == "interface {}" || input == "interface{}": return "any" case input == "string": return "string" @@ -125,6 +125,10 @@ func goTypeToJSDocType(input string, importNamespaces *slicer.StringSlicer) stri return "boolean" case input == "[]byte": return "string" + case strings.HasPrefix(input, "map"): + temp := strings.TrimPrefix(input, "map[") + keyType, valueType, _ := strings.Cut(temp, "]") + return fmt.Sprintf("{[key: %s]: %s}", goTypeToJSDocType(keyType, importNamespaces), goTypeToJSDocType(valueType, importNamespaces)) case strings.HasPrefix(input, "[]"): arrayType := goTypeToJSDocType(input[2:], importNamespaces) return "Array<" + arrayType + ">" diff --git a/v2/internal/binding/generate_test.go b/v2/internal/binding/generate_test.go index d4401a674..23119f868 100644 --- a/v2/internal/binding/generate_test.go +++ b/v2/internal/binding/generate_test.go @@ -1,6 +1,7 @@ package binding import ( + "github.com/leaanthony/slicer" "testing" ) @@ -81,15 +82,26 @@ func Test_goTypeToJSDocType(t *testing.T) { input: "foo", want: "any", }, + { + name: "map", + input: "map[string]float64", + want: "{[key: string]: number}", + }, + { + name: "map", + input: "map[string]map[string]float64", + want: "{[key: string]: {[key: string]: number}}", + }, { name: "types", input: "main.SomeType", - want: "models.SomeType", + want: "main.SomeType", }, } + var importNamespaces slicer.StringSlicer for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := goTypeToJSDocType(tt.input); got != tt.want { + if got := goTypeToJSDocType(tt.input, &importNamespaces); got != tt.want { t.Errorf("goTypeToJSDocType() = %v, want %v", got, tt.want) } })