(tsTypesMap map[reflect.Type]string)
| 18 | ) |
| 19 | |
| 20 | func generateTypesFile(tsTypesMap map[reflect.Type]string) error { |
| 21 | fileName := "frontend/types/gotypes.d.ts" |
| 22 | fmt.Fprintf(os.Stderr, "generating types file to %s\n", fileName) |
| 23 | tsgen.GenerateWaveObjTypes(tsTypesMap) |
| 24 | tsgen.GenerateWaveEventTypes(tsTypesMap) |
| 25 | err := tsgen.GenerateServiceTypes(tsTypesMap) |
| 26 | if err != nil { |
| 27 | fmt.Fprintf(os.Stderr, "Error generating service types: %v\n", err) |
| 28 | os.Exit(1) |
| 29 | } |
| 30 | err = tsgen.GenerateWshServerTypes(tsTypesMap) |
| 31 | if err != nil { |
| 32 | return fmt.Errorf("error generating wsh server types: %w", err) |
| 33 | } |
| 34 | var buf bytes.Buffer |
| 35 | fmt.Fprintf(&buf, "// Copyright 2026, Command Line Inc.\n") |
| 36 | fmt.Fprintf(&buf, "// SPDX-License-Identifier: Apache-2.0\n\n") |
| 37 | fmt.Fprintf(&buf, "// generated by cmd/generate/main-generatets.go\n\n") |
| 38 | fmt.Fprintf(&buf, "declare global {\n\n") |
| 39 | var keys []reflect.Type |
| 40 | for key := range tsTypesMap { |
| 41 | keys = append(keys, key) |
| 42 | } |
| 43 | sort.Slice(keys, func(i, j int) bool { |
| 44 | iname, _ := tsgen.TypeToTSType(keys[i], tsTypesMap) |
| 45 | jname, _ := tsgen.TypeToTSType(keys[j], tsTypesMap) |
| 46 | return iname < jname |
| 47 | }) |
| 48 | for _, key := range keys { |
| 49 | // don't output generic types |
| 50 | if strings.Contains(key.Name(), "[") { |
| 51 | continue |
| 52 | } |
| 53 | tsCode := tsTypesMap[key] |
| 54 | istr := utilfn.IndentString(" ", tsCode) |
| 55 | fmt.Fprint(&buf, istr) |
| 56 | } |
| 57 | fmt.Fprintf(&buf, "}\n\n") |
| 58 | fmt.Fprintf(&buf, "export {}\n") |
| 59 | written, err := utilfn.WriteFileIfDifferent(fileName, buf.Bytes()) |
| 60 | if !written { |
| 61 | fmt.Fprintf(os.Stderr, "no changes to %s\n", fileName) |
| 62 | } |
| 63 | return err |
| 64 | } |
| 65 | |
| 66 | func generateWaveEventFile(tsTypesMap map[reflect.Type]string) error { |
| 67 | fileName := "frontend/types/waveevent.d.ts" |
no test coverage detected