@@ -109,11 +109,6 @@ writer.options = Object.assign({},
109109
110110exports . _builtinLibs = internalModule . builtinLibs ;
111111
112- const sep = '\u0000\u0000\u0000' ;
113- const regExMatcher = new RegExp ( `^${ sep } (.*)${ sep } (.*)${ sep } (.*)${ sep } (.*)` +
114- `${ sep } (.*)${ sep } (.*)${ sep } (.*)${ sep } (.*)` +
115- `${ sep } (.*)$` ) ;
116-
117112function REPLServer ( prompt ,
118113 stream ,
119114 eval_ ,
@@ -154,7 +149,6 @@ function REPLServer(prompt,
154149 }
155150
156151 var self = this ;
157- replMap . set ( self , self ) ;
158152
159153 self . _domain = dom || domain . create ( ) ;
160154 self . useGlobal = ! ! useGlobal ;
@@ -171,6 +165,41 @@ function REPLServer(prompt,
171165 self . rli = this ;
172166
173167 const savedRegExMatches = [ '' , '' , '' , '' , '' , '' , '' , '' , '' , '' ] ;
168+ const sep = '\u0000\u0000\u0000' ;
169+ const regExMatcher = new RegExp ( `^${ sep } (.*)${ sep } (.*)${ sep } (.*)${ sep } (.*)` +
170+ `${ sep } (.*)${ sep } (.*)${ sep } (.*)${ sep } (.*)` +
171+ `${ sep } (.*)$` ) ;
172+
173+ eval_ = eval_ || defaultEval ;
174+
175+ // Pause taking in new input, and store the keys in a buffer.
176+ const pausedBuffer = [ ] ;
177+ let paused = false ;
178+ function pause ( ) {
179+ paused = true ;
180+ }
181+ function unpause ( ) {
182+ if ( ! paused ) return ;
183+ paused = false ;
184+ let entry ;
185+ while ( entry = pausedBuffer . shift ( ) ) {
186+ const [ type , payload ] = entry ;
187+ switch ( type ) {
188+ case 'key' : {
189+ const [ d , key ] = payload ;
190+ self . _ttyWrite ( d , key ) ;
191+ break ;
192+ }
193+ case 'close' :
194+ self . emit ( 'exit' ) ;
195+ break ;
196+ }
197+ if ( paused ) {
198+ break ;
199+ }
200+ }
201+ }
202+
174203 function defaultEval ( code , context , file , cb ) {
175204 var err , result , script , wrappedErr ;
176205 var wrappedCmd = false ;
@@ -302,6 +331,7 @@ function REPLServer(prompt,
302331
303332 if ( awaitPromise && ! err ) {
304333 let sigintListener ;
334+ pause ( ) ;
305335 let promise = result ;
306336 if ( self . breakEvalOnSigint ) {
307337 const interrupt = new Promise ( ( resolve , reject ) => {
@@ -320,6 +350,7 @@ function REPLServer(prompt,
320350 prioritizedSigintQueue . delete ( sigintListener ) ;
321351
322352 finishExecution ( undefined , result ) ;
353+ unpause ( ) ;
323354 } , ( err ) => {
324355 // Remove prioritized SIGINT listener if it was not called.
325356 prioritizedSigintQueue . delete ( sigintListener ) ;
@@ -329,6 +360,7 @@ function REPLServer(prompt,
329360 Object . defineProperty ( err , 'stack' , { value : '' } ) ;
330361 }
331362
363+ unpause ( ) ;
332364 if ( err && process . domain ) {
333365 debug ( 'not recoverable, send to domain' ) ;
334366 process . domain . emit ( 'error' , err ) ;
@@ -345,36 +377,6 @@ function REPLServer(prompt,
345377 }
346378 }
347379
348- eval_ = eval_ || defaultEval ;
349-
350- // Pause taking in new input, and store the keys in a buffer.
351- const pausedBuffer = [ ] ;
352- let paused = false ;
353- function pause ( ) {
354- paused = true ;
355- }
356- function unpause ( ) {
357- if ( ! paused ) return ;
358- paused = false ;
359- let entry ;
360- while ( entry = pausedBuffer . shift ( ) ) {
361- const [ type , payload ] = entry ;
362- switch ( type ) {
363- case 'key' : {
364- const [ d , key ] = payload ;
365- self . _ttyWrite ( d , key ) ;
366- break ;
367- }
368- case 'close' :
369- self . emit ( 'exit' ) ;
370- break ;
371- }
372- if ( paused ) {
373- break ;
374- }
375- }
376- }
377-
378380 self . eval = self . _domain . bind ( eval_ ) ;
379381
380382 self . _domain . on ( 'error' , function debugDomainError ( e ) {
@@ -403,7 +405,6 @@ function REPLServer(prompt,
403405 top . clearBufferedCommand ( ) ;
404406 top . lines . level = [ ] ;
405407 top . displayPrompt ( ) ;
406- unpause ( ) ;
407408 } ) ;
408409
409410 if ( ! input && ! output ) {
@@ -592,7 +593,6 @@ function REPLServer(prompt,
592593 const evalCmd = self [ kBufferedCommandSymbol ] + cmd + '\n' ;
593594
594595 debug ( 'eval %j' , evalCmd ) ;
595- pause ( ) ;
596596 self . eval ( evalCmd , self . context , 'repl' , finish ) ;
597597
598598 function finish ( e , ret ) {
@@ -605,7 +605,6 @@ function REPLServer(prompt,
605605 '(Press Control-D to exit.)\n' ) ;
606606 self . clearBufferedCommand ( ) ;
607607 self . displayPrompt ( ) ;
608- unpause ( ) ;
609608 return ;
610609 }
611610
@@ -643,7 +642,6 @@ function REPLServer(prompt,
643642
644643 // Display prompt again
645644 self . displayPrompt ( ) ;
646- unpause ( ) ;
647645 }
648646 } ) ;
649647
@@ -726,6 +724,7 @@ exports.start = function(prompt,
726724 ignoreUndefined ,
727725 replMode ) ;
728726 if ( ! exports . repl ) exports . repl = repl ;
727+ replMap . set ( repl , repl ) ;
729728 return repl ;
730729} ;
731730
0 commit comments