Skip to content

Commit 250ddf3

Browse files
authored
Merge pull request #169 from NativeScript/iiivanov/terminate-session-on-ts-error
Stop debugger on TypeScript compile error
2 parents 0652ad7 + 47c71c6 commit 250ddf3

File tree

4 files changed

+17
-2
lines changed

4 files changed

+17
-2
lines changed

src/debug-adapter/webKitDebugAdapter.ts

+3
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,9 @@ export class WebKitDebugAdapter implements DebugProtocol.IDebugAdapter {
170170

171171
if (cliCommand.tnsProcess) {
172172
this._tnsProcess = cliCommand.tnsProcess;
173+
cliCommand.tnsOutputEventEmitter.on("tsCompilationError", () => {
174+
this.fireEvent(new TerminatedEvent());
175+
});
173176
cliCommand.tnsProcess.stdout.on('data', data => { Services.logger().log(data.toString(), Tags.FrontendMessage); });
174177
cliCommand.tnsProcess.stderr.on('data', data => { Services.logger().error(data.toString(), Tags.FrontendMessage); });
175178
cliCommand.tnsProcess.on('close', (code, signal) => {

src/project/androidProject.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ export class AndroidProject extends Project {
4040
return { tnsProcess: debugProcess, tnsOutputEventEmitter: tnsOutputEventEmitter };
4141
}
4242

43-
private configureReadyEvent(readableStream: stream.Readable, eventEmitter: EventEmitter, attach: boolean): void {
43+
protected configureReadyEvent(readableStream: stream.Readable, eventEmitter: EventEmitter, attach?: boolean): void {
44+
super.configureReadyEvent(readableStream, eventEmitter);
45+
4446
let debugPort = null;
4547
new scanner.StringMatchingScanner(readableStream).onEveryMatch(new RegExp("device: .* debug port: [0-9]+"), (match: scanner.MatchFound) => {
4648
//device: {device-name} debug port: {debug-port}

src/project/iosProject.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ export class IosProject extends Project {
4444
return { tnsProcess: debugProcess, tnsOutputEventEmitter: tnsOutputEventEmitter };
4545
}
4646

47-
private configureReadyEvent(readableStream: stream.Readable, eventEmitter: EventEmitter): void {
47+
protected configureReadyEvent(readableStream: stream.Readable, eventEmitter: EventEmitter): void {
48+
super.configureReadyEvent(readableStream, eventEmitter);
49+
4850
let socketPathPrefix = 'socket-file-location: ';
4951
let streamScanner = new scanner.StringMatchingScanner(readableStream);
5052
streamScanner.onEveryMatch(new RegExp(socketPathPrefix + '.*\.sock'), (match: scanner.MatchFound) => {

src/project/project.ts

+8
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import {ChildProcess} from 'child_process';
22
import {EventEmitter} from 'events';
33
import {Version} from '../common/version';
44
import {NativeScriptCli} from './nativeScriptCli';
5+
import * as stream from 'stream';
6+
import * as scanner from './streamScanner';
57

68
export type DebugResult = { tnsProcess: ChildProcess, tnsOutputEventEmitter: EventEmitter };
79

@@ -28,6 +30,12 @@ export abstract class Project {
2830

2931
public abstract debug(options: { stopOnEntry: boolean, watch: boolean }, tnsArgs?: string[]): DebugResult;
3032

33+
protected configureReadyEvent(readableStream: stream.Readable, eventEmitter: EventEmitter): void {
34+
new scanner.StringMatchingScanner(readableStream).onEveryMatch("TypeScript compiler failed", () => {
35+
eventEmitter.emit('tsCompilationError');
36+
});
37+
}
38+
3139
protected executeRunCommand(args: string[]): ChildProcess {
3240
return this.cli.execute(["run", this.platformName()].concat(args), this._appRoot);
3341
}

0 commit comments

Comments
 (0)