MCPcopy Index your code
hub / github.com/wavetermdev/waveterm / GenerateServiceClass

Function GenerateServiceClass

pkg/tsgen/tsgen.go:418–451  ·  view source on GitHub ↗
(serviceName string, serviceObj any, tsTypesMap map[reflect.Type]string)

Source from the content-addressed store, hash-verified

416}
417
418func GenerateServiceClass(serviceName string, serviceObj any, tsTypesMap map[reflect.Type]string) string {
419 serviceType := reflect.TypeOf(serviceObj)
420 var sb strings.Builder
421 tsServiceName := serviceType.Elem().Name()
422 sb.WriteString(fmt.Sprintf("// %s (%s)\n", serviceType.Elem().String(), serviceName))
423 sb.WriteString("export class ")
424 sb.WriteString(tsServiceName + "Type")
425 sb.WriteString(" {\n")
426 sb.WriteString(" waveEnv: WaveEnv;\n\n")
427 sb.WriteString(" constructor(waveEnv?: WaveEnv) {\n")
428 sb.WriteString(" this.waveEnv = waveEnv;\n")
429 sb.WriteString(" }\n\n")
430 isFirst := true
431 for midx := 0; midx < serviceType.NumMethod(); midx++ {
432 method := serviceType.Method(midx)
433 if strings.HasSuffix(method.Name, "_Meta") {
434 continue
435 }
436 var meta tsgenmeta.MethodMeta
437 metaMethod, found := serviceType.MethodByName(method.Name + "_Meta")
438 if found {
439 serviceObjVal := reflect.ValueOf(serviceObj)
440 metaVal := metaMethod.Func.Call([]reflect.Value{serviceObjVal})
441 meta = metaVal[0].Interface().(tsgenmeta.MethodMeta)
442 }
443 sb.WriteString(GenerateMethodSignature(serviceName, method, meta, isFirst, tsTypesMap))
444 sb.WriteString(GenerateMethodBody(serviceName, method, meta))
445 sb.WriteString(" }\n")
446 isFirst = false
447 }
448 sb.WriteString("}\n\n")
449 sb.WriteString(fmt.Sprintf("export const %s = new %sType();\n", tsServiceName, tsServiceName))
450 return sb.String()
451}
452
453func GenerateWshClientApiMethod(methodDecl *wshrpc.WshRpcMethodDecl, tsTypesMap map[reflect.Type]string) string {
454 if methodDecl.CommandType == wshrpc.RpcType_ResponseStream {

Callers 1

generateServicesFileFunction · 0.92

Calls 5

GenerateMethodSignatureFunction · 0.85
GenerateMethodBodyFunction · 0.85
WriteStringMethod · 0.80
NameMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected