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>
JavaScript extractor
This directory contains the source code of the JavaScript extractor. The extractor depends on various libraries that are not currently bundled with the source code, so at present it cannot be built in isolation.
The extractor consists of a parser for the latest version of ECMAScript, including a few proposed and historic extensions (see src/com/semmle/jcorn), classes for representing JavaScript and TypeScript ASTs (src/com/semmle/js/ast and src/com/semmle/ts/ast), and various other bits of functionality. Historically, the main entry point of the JavaScript extractor has been com.semmle.js.extractor.Main. However, this class is slowly being phased out in favour of com.semmle.js.extractor.AutoBuild, which is the entry point used by CodeQL.
License
Like the CodeQL queries, the JavaScript extractor is licensed under the MIT License by GitHub. Some code is derived from other projects, whose licenses are noted in other LICENSE-*.md files in this folder.