tstosc
Version:
A transpiler that convert TypeScript to SuperCollider's SCLang.
68 lines (65 loc) • 2.52 kB
TypeScript
import ts from 'typescript';
import { Result } from '../../util/Result.js';
import { UserTranspileIntention } from '../../cli/args.js';
/**
* For read the TypeScript code, and turn it into AST.
*/
declare class Analyser {
static readonly default_compiler_option: ts.CompilerOptions;
private static readonly default_compiler_host;
static readonly virtual_file_name = "virtual_file__do_not_really_exist.ts";
static readonly default_constructor_args: Analyser_Args;
private program;
constructor(args?: Analyser_Args);
/**
* The most important feature of `Analyser`.
*
* This function returns the configured `ts.Program` which handles all inputed files.
*/
getCompilerProgram(): ts.Program;
/**
* Get the Abstract Syntax Tree (AST, with type `ts.SourceFile`) of a TypeScript file.
*
* @param path If relative, the `.` stands for the working directory when `tstosc` starts.
* Be careful that the file you want to get AST from, must be **in** the `root_files_path`,
* or **being referenced** by the files in the `root_files_path`.
*/
getASTOfFile(file_path: string): ts.SourceFile | undefined;
static buildASTFromCode(source_code: string): Result<ts.SourceFile, BuildASTFailError>;
static preCheckErrorsBeforeBuildAST({ ts_source_file }: preCheckBeforeBuildAST_Params): TypeScriptError[];
checkIfExistsUnsupportSyntax(): void;
traverseTSNode(ts_node: ts.SourceFile | ts.Node, action: (n: ts.Node) => any): void;
}
type Analyser_Args = {
root_files_path: string[];
} | {
global: UserTranspileIntention["global"];
files: UserTranspileIntention["files"];
};
type preCheckBeforeBuildAST_Params = {
ts_source_file: ts.SourceFile;
};
declare enum BuildASTFailErrorType {
input_is_not_valid_ts = "input_is_not_valid_ts",
input_contains_unsupported_syntax = "input_contains_unsupported_syntax"
}
type BuildASTFailError = {
error_type: BuildASTFailErrorType.input_is_not_valid_ts;
details: TypeScriptError[];
} | {
error_type: BuildASTFailErrorType.input_contains_unsupported_syntax;
};
type TypeScriptError = ({
is_compiler_error: true;
} | {
is_compiler_error: false;
position_line: number;
position_column: number;
}) & {
message: string;
};
/**
* Use default option to get an AST from source code.
*/
declare function getASTFromCode(source_code: string): Result<ts.SourceFile, BuildASTFailError>;
export { Analyser, BuildASTFailErrorType, getASTFromCode };