(serviceName string, serviceObj any, tsTypesMap map[reflect.Type]string)
| 416 | } |
| 417 | |
| 418 | func 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 | |
| 453 | func GenerateWshClientApiMethod(methodDecl *wshrpc.WshRpcMethodDecl, tsTypesMap map[reflect.Type]string) string { |
| 454 | if methodDecl.CommandType == wshrpc.RpcType_ResponseStream { |
no test coverage detected