(tsTypesMap map[reflect.Type]string)
| 82 | } |
| 83 | |
| 84 | func generateServicesFile(tsTypesMap map[reflect.Type]string) error { |
| 85 | fileName := "frontend/app/store/services.ts" |
| 86 | var buf bytes.Buffer |
| 87 | fmt.Fprintf(os.Stderr, "generating services file to %s\n", fileName) |
| 88 | fmt.Fprintf(&buf, "// Copyright 2026, Command Line Inc.\n") |
| 89 | fmt.Fprintf(&buf, "// SPDX-License-Identifier: Apache-2.0\n\n") |
| 90 | fmt.Fprintf(&buf, "// generated by cmd/generate/main-generatets.go\n\n") |
| 91 | fmt.Fprintf(&buf, "import * as WOS from \"./wos\";\n") |
| 92 | fmt.Fprintf(&buf, "import type { WaveEnv } from \"@/app/waveenv/waveenv\";\n\n") |
| 93 | fmt.Fprintf(&buf, "function callBackendService(waveEnv: WaveEnv, service: string, method: string, args: any[], noUIContext?: boolean): Promise<any> {\n") |
| 94 | fmt.Fprintf(&buf, " if (waveEnv != null) {\n") |
| 95 | fmt.Fprintf(&buf, " return waveEnv.callBackendService(service, method, args, noUIContext)\n") |
| 96 | fmt.Fprintf(&buf, " }\n") |
| 97 | fmt.Fprintf(&buf, " return WOS.callBackendService(service, method, args, noUIContext);\n") |
| 98 | fmt.Fprintf(&buf, "}\n\n") |
| 99 | orderedKeys := utilfn.GetOrderedMapKeys(service.ServiceMap) |
| 100 | for _, serviceName := range orderedKeys { |
| 101 | serviceObj := service.ServiceMap[serviceName] |
| 102 | svcStr := tsgen.GenerateServiceClass(serviceName, serviceObj, tsTypesMap) |
| 103 | fmt.Fprint(&buf, svcStr) |
| 104 | fmt.Fprint(&buf, "\n") |
| 105 | } |
| 106 | fmt.Fprintf(&buf, "export const AllServiceTypes = {\n") |
| 107 | for _, serviceName := range orderedKeys { |
| 108 | serviceObj := service.ServiceMap[serviceName] |
| 109 | serviceType := reflect.TypeOf(serviceObj) |
| 110 | tsServiceName := serviceType.Elem().Name() |
| 111 | fmt.Fprintf(&buf, " %q: %sType,\n", serviceName, tsServiceName) |
| 112 | } |
| 113 | fmt.Fprintf(&buf, "};\n\n") |
| 114 | fmt.Fprintf(&buf, "export const AllServiceImpls = {\n") |
| 115 | for _, serviceName := range orderedKeys { |
| 116 | serviceObj := service.ServiceMap[serviceName] |
| 117 | serviceType := reflect.TypeOf(serviceObj) |
| 118 | tsServiceName := serviceType.Elem().Name() |
| 119 | fmt.Fprintf(&buf, " %q: %s,\n", serviceName, tsServiceName) |
| 120 | } |
| 121 | fmt.Fprintf(&buf, "};\n") |
| 122 | written, err := utilfn.WriteFileIfDifferent(fileName, buf.Bytes()) |
| 123 | if !written { |
| 124 | fmt.Fprintf(os.Stderr, "no changes to %s\n", fileName) |
| 125 | } |
| 126 | return err |
| 127 | } |
| 128 | |
| 129 | func generateWshClientApiFile(tsTypeMap map[reflect.Type]string) error { |
| 130 | fileName := "frontend/app/store/wshclientapi.ts" |
no test coverage detected