ttsc
Version:
General-purpose TypeScript-Go compiler, runtime, plugin host, and LSP host.
36 lines (35 loc) • 1.94 kB
TypeScript
import type { ITtscProjectInputSnapshot } from "../../structures/internal/ITtscProjectInputSnapshot";
type InitialLSPProjectInputSnapshot = ITtscProjectInputSnapshot & {
reloadDirectoryDigests: Readonly<Record<string, string>>;
reloadFileDigests: Readonly<Record<string, string>>;
};
/**
* Drive the ttscserver native binary from a node launcher. The launcher is
* deliberately thin: argument parsing, version banners, and help text are owned
* by the Go binary so future flags only need to change one layer. The JS side
* performs the Node-owned setup that depends on package resolution:
*
* - Resolve the platform binary,
* - Resolve the project TypeScript-Go binary for the native wrapper,
* - Resolve the project config and materialize the private LSP plugin manifest,
* - Inject the Node/ttsx helper paths used by disk-backed LSP sidecars,
* - Inject `--stdio` when the first arg is not a meta-command,
* - Delegate to the binary with inherited stdio so OS-level signals reach the
* child via the parent's process group.
*/
export declare function runTtscserver(argv?: readonly string[]): number;
export declare function materializeLSPPluginManifest(manifest: unknown): {
dispose(): void;
path: string;
};
export declare function fingerprintInitialLSPProjectInputSnapshot(snapshot: ITtscProjectInputSnapshot): InitialLSPProjectInputSnapshot;
export declare function initialLSPProjectInputSnapshotIsCurrent(snapshot: InitialLSPProjectInputSnapshot): boolean;
/**
* `--stdio` is the only transport the native host accepts today. The launcher
* injects it only when the first argv token looks like a forwarded option;
* meta-commands (`-v`, `--help`, `version`, etc.) pass through untouched so the
* Go binary owns the canonical banner. This mirrors
* `cmd/ttscserver/main.go::run`, which dispatches on `args[0]` only.
*/
export declare function needsStdio(argv: readonly string[]): boolean;
export {};