Skip to content

Commit

Permalink
Extract multi-file transpileString input to transpileVirtualProgram
Browse files Browse the repository at this point in the history
  • Loading branch information
ark120202 committed Apr 6, 2019
1 parent e87c8ee commit 1c3bd4b
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 12 deletions.
29 changes: 20 additions & 9 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,19 +97,30 @@ export interface TranspileStringResult {
}

export function transpileString(
input: string | Record<string, string>,
input: string,
options: CompilerOptions = {}
): TranspileStringResult {
const programFiles = typeof input === "object" ? input : { "main.ts": input };
const mainFileName =
typeof input === "string"
? "main.ts"
: Object.keys(input).find(x => /\bmain\.[a-z]+$/.test(x));
if (mainFileName === undefined) throw new Error('Input should have a file named "main"');

const program = createVirtualProgram(programFiles, options);
const program = createVirtualProgram({ "main.ts": input }, options);
const { diagnostics, transpiledFiles } = getTranspileOutput({ program, options });
const allDiagnostics = ts.sortAndDeduplicateDiagnostics([
...ts.getPreEmitDiagnostics(program),
...diagnostics,
]);

return { file: transpiledFiles.get("main.ts"), diagnostics: [...allDiagnostics] };
}

export function transpileVirtualProgram(
input: Record<string, string>,
options: CompilerOptions = {}
): TranspileStringResult {
const mainFileName = Object.keys(input).find(x => /\bmain\.[a-z]+$/.test(x));
if (mainFileName === undefined) {
throw new Error('Virtual program should have a file named "main"');
}

const program = createVirtualProgram(input, options);
const { diagnostics, transpiledFiles } = getTranspileOutput({ program, options });
const allDiagnostics = ts.sortAndDeduplicateDiagnostics([
...ts.getPreEmitDiagnostics(program),
...diagnostics,
Expand Down
10 changes: 7 additions & 3 deletions test/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ export function transpileString(
export function transpileStringResult(
input: string | { [filename: string]: string },
options: tstl.CompilerOptions = {},
): tstl.TranspileStringResult {
return tstl.transpileString(input, {
): tstl.VirtualProgramResult {
const optionsWithDefaults = {
luaLibImport: tstl.LuaLibImportKind.Inline,
luaTarget: tstl.LuaTarget.Lua53,
noHeader: true,
Expand All @@ -77,7 +77,11 @@ export function transpileStringResult(
"lib.esnext.d.ts",
],
...options,
});
};

return typeof input === "string"
? tstl.transpileString(input, optionsWithDefaults)
: tstl.transpileVirtualProgram(input, optionsWithDefaults);
}

const lualibContent = fs.readFileSync(
Expand Down

0 comments on commit 1c3bd4b

Please sign in to comment.