mirror of
https://github.com/github/codeql.git
synced 2026-05-15 03:39:32 +02:00
Add initial scaffolding for a Go process that will replace the Node.js TypeScript parser wrapper, preparing for TypeScript 7's Go-based compiler. The Go wrapper implements the same stdin/stdout line-delimited JSON protocol as the existing Node.js wrapper (lib/typescript/src/main.ts), making it a drop-in replacement from the Java extractor's perspective. Key components: - Protocol handler matching the Node.js wrapper's command set (get-metadata, prepare-files, parse, reset, quit) - Parser backend interface with tsgo subprocess implementation using the tsgo --api --async JSON-RPC mode (LSP Content-Length framing) - AST property whitelist matching the ~90 properties from the Node.js wrapper - Static TS7 SyntaxKind and NodeFlags metadata mappings - Validation framework for comparing JSON output between wrappers - Integration tests demonstrating successful tsgo API communication: initialize, updateSnapshot (project opening), getSourceFile Key finding: the tsgo API returns binary-encoded ASTs (not JSON), requiring a decoder for the custom flat-node-array format. See microsoft/typescript-go/internal/api/encoder/ for the format spec. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>