Skip to content

Commit

Permalink
Hide TSFile properly
Browse files Browse the repository at this point in the history
- Parse signalEmittedFiles and listEmittedFiles individually
- Transmit to print those 2 params
- Move the hide logic inside the print function
  • Loading branch information
pp0rtal committed May 9, 2022
1 parent c8a34c0 commit ab461f7
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 14 deletions.
4 changes: 3 additions & 1 deletion src/lib/args-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ export function extractArgs(inputArgs: string[]) {
const noColors = extractCommand(args, '--noColors');
const noClear = extractCommand(args, '--noClear');
const silent = extractCommand(args, '--silent');
const signalEmittedFiles = extractCommand(args, '--signalEmittedFiles') && !args.includes('--listEmittedFiles');
const signalEmittedFiles = extractCommand(args, '--signalEmittedFiles');
const requestedToListEmittedFiles = extractCommand(args, '--listEmittedFiles');
let compiler = extractCommandWithValue(args, '--compiler');
if (!compiler) {
compiler = 'typescript/bin/tsc';
Expand All @@ -71,6 +72,7 @@ export function extractArgs(inputArgs: string[]) {
maxNodeMem,
noColors,
noClear,
requestedToListEmittedFiles,
signalEmittedFiles,
silent,
compiler,
Expand Down
6 changes: 4 additions & 2 deletions src/lib/stdout-manipulator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ function color(line: string, noClear: boolean = false): string {
type TPrintParams = {
noColors?: boolean;
noClear?: boolean;
requestedToListEmittedFiles?: boolean;
signalEmittedFiles?: boolean;
};

Expand All @@ -65,9 +66,10 @@ export function print(
{
noColors = false,
noClear = false,
signalEmittedFiles = false
requestedToListEmittedFiles = false,
signalEmittedFiles = false,
}: TPrintParams = {}): void {
if (signalEmittedFiles && line.startsWith('TSFILE:')) {
if (signalEmittedFiles && !requestedToListEmittedFiles && line.startsWith('TSFILE:')) {
return;
}

Expand Down
10 changes: 6 additions & 4 deletions src/lib/tsc-watch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ const {
maxNodeMem,
noColors,
noClear,
requestedToListEmittedFiles,
signalEmittedFiles,
silent,
compiler,
Expand Down Expand Up @@ -85,15 +86,16 @@ function getTscPath(): string {

interface INodeSettings {
maxNodeMem: string | null;
requestedToListEmittedFiles: boolean;
signalEmittedFiles: boolean;
}

function spawnTsc({ maxNodeMem, signalEmittedFiles }: INodeSettings, args: string[]): ChildProcess {
function spawnTsc({ maxNodeMem, requestedToListEmittedFiles, signalEmittedFiles }: INodeSettings, args: string[]): ChildProcess {
const nodeArgs = [];
if (maxNodeMem) {
nodeArgs.push(`--max_old_space_size=${maxNodeMem}`);
}
if (signalEmittedFiles) {
if (signalEmittedFiles && !requestedToListEmittedFiles) {
nodeArgs.push(`--listEmittedFiles`);
}

Expand All @@ -105,7 +107,7 @@ function spawnTsc({ maxNodeMem, signalEmittedFiles }: INodeSettings, args: strin
}

let compilationErrorSinceStart = false;
const tscProcess = spawnTsc({ maxNodeMem, signalEmittedFiles }, args);
const tscProcess = spawnTsc({ maxNodeMem, requestedToListEmittedFiles, signalEmittedFiles }, args);
if (!tscProcess.stdout) {
throw new Error('Unable to read Typescript stdout');
}
Expand All @@ -119,7 +121,7 @@ rl.on('line', function (input) {

const line = manipulate(input);
if (!silent) {
print(line, { noColors, noClear, signalEmittedFiles });
print(line, { noColors, noClear, signalEmittedFiles, requestedToListEmittedFiles });
}
const state = detectState(line);
const compilationStarted = state.compilationStarted;
Expand Down
5 changes: 3 additions & 2 deletions src/test/args-manager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,9 @@ describe('Args Manager', () => {
expect(extractArgs(['node', 'tsc-watch.js', '--signalEmittedFiles', '1.ts']).signalEmittedFiles).toBe(true);
});

it('Should not return conflicting signalEmittedFiles if --listEmittedFiles is specifically flagged', () => {
expect(extractArgs(['node', 'tsc-watch.js', '--signalEmittedFiles', '--listEmittedFiles', '1.ts']).signalEmittedFiles).toBe(false);
it('Should return requestedToListEmittedFiles when tsc native listEmittedFiles is set', () => {
expect(extractArgs(['node', 'tsc-watch.js', '1.ts']).requestedToListEmittedFiles).toBe(false);
expect(extractArgs(['node', 'tsc-watch.js', '--listEmittedFiles', '1.ts']).requestedToListEmittedFiles).toBe(true);
});

it('Should return the compiler', () => {
Expand Down
17 changes: 12 additions & 5 deletions src/test/stdout-manipulator.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,21 @@ describe('stdout-manipulator', () => {
expect(forkSpy.mock.calls).toEqual([['raw tsc line']])
});

it('Should hide a TSFILE line when signalEmittedFiles is true', async () => {
print('TSFILE: /home/emitted/file.js', { signalEmittedFiles: true });
expect(forkSpy.mock.calls).toEqual([])
});

it('Should not hide a normal line when signalEmittedFiles is true', async () => {
print('any other line', { signalEmittedFiles: true });
expect(forkSpy.mock.calls).toEqual([['any other line']])
});

describe("TSFILE support", () => {
it('Should hide a TSFILE line when signalEmittedFiles is true', async () => {
print('TSFILE: /home/emitted/file.js', { signalEmittedFiles: true });
expect(forkSpy.mock.calls).toEqual([])
});

it('Should not hide a TSFILE line when signalEmittedFiles is true and native --listEmittedFiles (requestedToListEmittedFiles) is true', async () => {
print('TSFILE: /home/emitted/file.js', { noColors: true, signalEmittedFiles: true, requestedToListEmittedFiles: true });
expect(forkSpy.mock.calls).toEqual([['TSFILE: /home/emitted/file.js']])
});
});
});
});

0 comments on commit ab461f7

Please sign in to comment.