Fix TypeScript generator to handle inline/embedded structs correctly

- Add hasActualTagMembers helper to recursively check for actual tag members
- Add hasActualBodyMembers helper to recursively check for actual body members
- Add hasActualNonBodyMembers helper to recursively check for actual non-body members
- Update genParamsTypesIfNeed to use hasActualNonBodyMembers and hasActualTagMembers
- Update hasRequestBody, hasRequestHeader, hasRequestPath, and pathHasParams to use new helpers
- Add comprehensive test coverage for new helper functions

Co-authored-by: kevwan <1918356+kevwan@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-10-07 03:27:46 +00:00
committed by Kevin Wan
parent 4e52d77ad8
commit 87dd9671be
3 changed files with 357 additions and 8 deletions

View File

@@ -212,7 +212,7 @@ func pathHasParams(route spec.Route) bool {
return false
}
return len(ds.Members) != len(ds.GetBodyMembers())
return hasActualNonBodyMembers(ds)
}
func hasRequestBody(route spec.Route) bool {
@@ -221,7 +221,7 @@ func hasRequestBody(route spec.Route) bool {
return false
}
return len(route.RequestTypeName()) > 0 && len(ds.GetBodyMembers()) > 0
return len(route.RequestTypeName()) > 0 && hasActualBodyMembers(ds)
}
func hasRequestPath(route spec.Route) bool {
@@ -230,7 +230,7 @@ func hasRequestPath(route spec.Route) bool {
return false
}
return len(route.RequestTypeName()) > 0 && len(ds.GetTagMembers(pathTagKey)) > 0
return len(route.RequestTypeName()) > 0 && hasActualTagMembers(ds, pathTagKey)
}
func hasRequestHeader(route spec.Route) bool {
@@ -239,5 +239,5 @@ func hasRequestHeader(route spec.Route) bool {
return false
}
return len(route.RequestTypeName()) > 0 && len(ds.GetTagMembers(headerTagKey)) > 0
return len(route.RequestTypeName()) > 0 && hasActualTagMembers(ds, headerTagKey)
}