roblox-ts
Version:
A TypeScript-to-Luau Compiler for Roblox
72 lines (71 loc) • 4.2 kB
TypeScript
import luau from "@roblox-ts/luau-ast";
import { PathTranslator } from "@roblox-ts/path-translator";
import { RbxPath, RojoResolver } from "@roblox-ts/rojo-resolver";
import { ProjectType } from "../../Shared/constants";
import { ProjectData } from "../../Shared/types";
import { MultiTransformState } from "..";
import { TransformServices, TryUses } from "../types";
import ts from "typescript";
export declare class TransformState {
readonly program: ts.Program;
readonly data: ProjectData;
readonly services: TransformServices;
readonly pathTranslator: PathTranslator;
readonly multiTransformState: MultiTransformState;
readonly compilerOptions: ts.CompilerOptions;
readonly rojoResolver: RojoResolver;
readonly pkgRojoResolvers: Array<RojoResolver>;
readonly nodeModulesPathMapping: Map<string, string>;
readonly runtimeLibRbxPath: RbxPath | undefined;
readonly typeChecker: ts.TypeChecker;
readonly projectType: ProjectType;
private readonly sourceFileText;
hasExportEquals: boolean;
hasExportFrom: boolean;
classIdentifierMap: Map<ts.ClassLikeDeclaration, luau.AnyIdentifier>;
debugRender(node: luau.Node): string;
debugRenderList(list: luau.List<luau.Statement>): string;
readonly resolver: ts.EmitResolver;
private isInReplicatedFirst;
constructor(program: ts.Program, data: ProjectData, services: TransformServices, pathTranslator: PathTranslator, multiTransformState: MultiTransformState, compilerOptions: ts.CompilerOptions, rojoResolver: RojoResolver, pkgRojoResolvers: Array<RojoResolver>, nodeModulesPathMapping: Map<string, string>, runtimeLibRbxPath: RbxPath | undefined, typeChecker: ts.TypeChecker, projectType: ProjectType, sourceFile: ts.SourceFile);
readonly tryUsesStack: TryUses[];
pushTryUsesStack(): {
usesReturn: boolean;
usesBreak: boolean;
usesContinue: boolean;
};
markTryUses(property: keyof TryUses): void;
popTryUsesStack(): void;
readonly prereqStatementsStack: luau.List<luau.Statement<luau.SyntaxKind>>[];
prereq(statement: luau.Statement): void;
prereqList(statements: luau.List<luau.Statement>): void;
pushPrereqStatementsStack(): luau.List<luau.Statement<luau.SyntaxKind>>;
popPrereqStatementsStack(): luau.List<luau.Statement<luau.SyntaxKind>>;
getLeadingComments(node: ts.Node): luau.List<luau.Comment>;
capturePrereqs(callback: () => void): luau.List<luau.Statement<luau.SyntaxKind>>;
capture<T>(callback: () => T): [value: T, prereqs: luau.List<luau.Statement>];
noPrereqs(callback: () => luau.Expression): luau.Expression<luau.SyntaxKind>;
readonly hoistsByStatement: Map<ts.Statement | ts.CaseClause, ts.Identifier[]>;
readonly isHoisted: Map<ts.Symbol, boolean>;
private getTypeCache;
getType(node: ts.Node): ts.Type;
usesRuntimeLib: boolean;
TS(node: ts.Node, name: string): luau.PropertyAccessExpression;
createRuntimeLibImport(sourceFile: ts.SourceFile): luau.VariableDeclaration;
pushToVar(expression: luau.Expression | undefined, name?: string): luau.TemporaryIdentifier;
pushToVarIfComplex<T extends luau.Expression>(expression: T, name?: string): Extract<T, luau.SimpleTypes> | luau.TemporaryIdentifier;
pushToVarIfNonId<T extends luau.Expression>(expression: T, name?: string): luau.AnyIdentifier;
getModuleExports(moduleSymbol: ts.Symbol): ts.Symbol[];
getModuleExportsAliasMap(moduleSymbol: ts.Symbol): Map<ts.Symbol, string>;
private getModuleSymbolFromNode;
private readonly moduleIdBySymbol;
private getModuleIdFromSymbol;
setModuleIdBySymbol(moduleSymbol: ts.Symbol, moduleId: luau.AnyIdentifier): void;
getModuleIdFromNode(node: ts.Node): luau.AnyIdentifier;
getModuleIdPropertyAccess(idSymbol: ts.Symbol): luau.PropertyAccessExpression | undefined;
guessVirtualPath(fsPath: string): string | undefined;
symbolToIdMap: Map<ts.Symbol, luau.TemporaryIdentifier>;
private classElementToObjectKeyMap;
setClassElementObjectKey(classElement: ts.ClassElement, identifier: luau.SimpleTypes): void;
getClassElementObjectKey(classElement: ts.ClassElement): luau.SimpleTypes | undefined;
}