feat: add protoc-gen-ts-client TypeScript HTTP client generator #104
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
protoc-gen-ts-client, a new protoc plugin that generates TypeScript HTTP clients from protobuf service definitionsValidationError/ApiError)undefinedfields were sent as the string"undefined"(added null guard before zero-value checks)ts-client-demoexample with a NoteService CRUD API (Go server + TypeScript client)Commits
feat(ts-client): add protoc-gen-ts-client TypeScript HTTP client generator— core plugin: generator, type mapping, annotations, helperstest(ts-client): add golden file tests for TypeScript client generation— golden tests for query params, HTTP verbs, backward compatfix(ts-client): guard query params against undefined/null values— null-safe zero-value checks in generated query param codefeat(ts-client): add TypeScript client demo example— NoteService CRUD demo with Go server and TS clientdocs: add protoc-gen-ts-client to all project docs— 8 documentation files updatedTest plan
go test ./internal/tsclientgen/— all golden file tests passcd examples/ts-client-demo && make demo— full end-to-end demo works (create, list, get, update, delete, query params, error handling)🤖 Generated with Claude Code