@@ -14,17 +14,18 @@ module.exports = {
1414 '--watch'
1515 ] ) ;
1616 proc . stdout . pipe ( process . stdout ) ;
17- waitForLine ( proc . stdout , / c h u n k / ) . then ( function ( ) {
18- callback ( ) ;
19- } ) ;
17+ waitForLine ( proc . stdout , / c h u n k / , function ( ) { callback ( ) } ) ;
2018 } ,
2119
2220 startAngularCliServer : function startAngularCliServer ( callback , options ) {
23- getOSAssignedPortNumber ( ) . then ( function ( portNumber ) {
21+ getOSAssignedPortNumber ( function ( err , portNumber ) {
22+ if ( err ) {
23+ callback ( err ) ;
24+ return ;
25+ }
26+
2427 // Start @angular /cli dev server on private port, and pipe its output
25- // back to the ASP.NET host process.
26- // TODO: Support streaming arbitrary chunks to host process's stdout
27- // rather than just full lines, so we can see progress being logged
28+ // back to the ASP.NET host process
2829 var devServerProc = executeAngularCli ( [
2930 'serve' ,
3031 '--port' , portNumber . toString ( ) ,
@@ -35,7 +36,7 @@ module.exports = {
3536
3637 // Wait until the CLI dev server is listening before letting ASP.NET start the app
3738 console . log ( 'Waiting for @angular/cli service to start...' ) ;
38- waitForLine ( devServerProc . stdout , / o p e n y o u r b r o w s e r o n ( h t t p \S + ) / ) . then ( function ( matches ) {
39+ waitForLine ( devServerProc . stdout , / o p e n y o u r b r o w s e r o n ( h t t p \S + ) / , function ( matches ) {
3940 var devServerUrl = url . parse ( matches [ 1 ] ) ;
4041 console . log ( '@angular/cli service has started on internal port ' + devServerUrl . port ) ;
4142 callback ( null , {
@@ -46,18 +47,16 @@ module.exports = {
4647 }
4748} ;
4849
49- function waitForLine ( stream , regex ) {
50- return new Promise ( function ( resolve , reject ) {
51- var lineReader = readline . createInterface ( { input : stream } ) ;
52- var listener = function ( line ) {
53- var matches = regex . exec ( line ) ;
54- if ( matches ) {
55- lineReader . removeListener ( 'line' , listener ) ;
56- resolve ( matches ) ;
57- }
58- } ;
59- lineReader . addListener ( 'line' , listener ) ;
60- } ) ;
50+ function waitForLine ( stream , regex , callback ) {
51+ var lineReader = readline . createInterface ( { input : stream } ) ;
52+ var listener = function ( line ) {
53+ var matches = regex . exec ( line ) ;
54+ if ( matches ) {
55+ lineReader . removeListener ( 'line' , listener ) ;
56+ callback ( matches ) ;
57+ }
58+ } ;
59+ lineReader . addListener ( 'line' , listener ) ;
6160}
6261
6362function executeAngularCli ( args ) {
@@ -67,12 +66,14 @@ function executeAngularCli(args) {
6766 } ) ;
6867}
6968
70- function getOSAssignedPortNumber ( ) {
71- return new Promise ( function ( resolve , reject ) {
72- var server = net . createServer ( ) ;
73- server . listen ( 0 , 'localhost' , function ( ) {
69+ function getOSAssignedPortNumber ( callback ) {
70+ var server = net . createServer ( ) ;
71+ server . listen ( 0 , 'localhost' , function ( err ) {
72+ if ( err ) {
73+ callback ( err ) ;
74+ } else {
7475 var portNumber = server . address ( ) . port ;
75- server . close ( function ( ) { resolve ( portNumber ) ; } ) ;
76- } ) ;
76+ server . close ( function ( ) { callback ( null , portNumber ) ; } ) ;
77+ }
7778 } ) ;
7879}
0 commit comments