@@ -109,11 +109,6 @@ writer.options = Object.assign({},
109
109
110
110
exports . _builtinLibs = internalModule . builtinLibs ;
111
111
112
- const sep = '\u0000\u0000\u0000' ;
113
- const regExMatcher = new RegExp ( `^${ sep } (.*)${ sep } (.*)${ sep } (.*)${ sep } (.*)` +
114
- `${ sep } (.*)${ sep } (.*)${ sep } (.*)${ sep } (.*)` +
115
- `${ sep } (.*)$` ) ;
116
-
117
112
function REPLServer ( prompt ,
118
113
stream ,
119
114
eval_ ,
@@ -154,7 +149,6 @@ function REPLServer(prompt,
154
149
}
155
150
156
151
var self = this ;
157
- replMap . set ( self , self ) ;
158
152
159
153
self . _domain = dom || domain . create ( ) ;
160
154
self . useGlobal = ! ! useGlobal ;
@@ -171,6 +165,41 @@ function REPLServer(prompt,
171
165
self . rli = this ;
172
166
173
167
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
+
174
203
function defaultEval ( code , context , file , cb ) {
175
204
var err , result , script , wrappedErr ;
176
205
var wrappedCmd = false ;
@@ -302,6 +331,7 @@ function REPLServer(prompt,
302
331
303
332
if ( awaitPromise && ! err ) {
304
333
let sigintListener ;
334
+ pause ( ) ;
305
335
let promise = result ;
306
336
if ( self . breakEvalOnSigint ) {
307
337
const interrupt = new Promise ( ( resolve , reject ) => {
@@ -320,6 +350,7 @@ function REPLServer(prompt,
320
350
prioritizedSigintQueue . delete ( sigintListener ) ;
321
351
322
352
finishExecution ( undefined , result ) ;
353
+ unpause ( ) ;
323
354
} , ( err ) => {
324
355
// Remove prioritized SIGINT listener if it was not called.
325
356
prioritizedSigintQueue . delete ( sigintListener ) ;
@@ -329,6 +360,7 @@ function REPLServer(prompt,
329
360
Object . defineProperty ( err , 'stack' , { value : '' } ) ;
330
361
}
331
362
363
+ unpause ( ) ;
332
364
if ( err && process . domain ) {
333
365
debug ( 'not recoverable, send to domain' ) ;
334
366
process . domain . emit ( 'error' , err ) ;
@@ -345,36 +377,6 @@ function REPLServer(prompt,
345
377
}
346
378
}
347
379
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
-
378
380
self . eval = self . _domain . bind ( eval_ ) ;
379
381
380
382
self . _domain . on ( 'error' , function debugDomainError ( e ) {
@@ -403,7 +405,6 @@ function REPLServer(prompt,
403
405
top . clearBufferedCommand ( ) ;
404
406
top . lines . level = [ ] ;
405
407
top . displayPrompt ( ) ;
406
- unpause ( ) ;
407
408
} ) ;
408
409
409
410
if ( ! input && ! output ) {
@@ -592,7 +593,6 @@ function REPLServer(prompt,
592
593
const evalCmd = self [ kBufferedCommandSymbol ] + cmd + '\n' ;
593
594
594
595
debug ( 'eval %j' , evalCmd ) ;
595
- pause ( ) ;
596
596
self . eval ( evalCmd , self . context , 'repl' , finish ) ;
597
597
598
598
function finish ( e , ret ) {
@@ -605,7 +605,6 @@ function REPLServer(prompt,
605
605
'(Press Control-D to exit.)\n' ) ;
606
606
self . clearBufferedCommand ( ) ;
607
607
self . displayPrompt ( ) ;
608
- unpause ( ) ;
609
608
return ;
610
609
}
611
610
@@ -643,7 +642,6 @@ function REPLServer(prompt,
643
642
644
643
// Display prompt again
645
644
self . displayPrompt ( ) ;
646
- unpause ( ) ;
647
645
}
648
646
} ) ;
649
647
@@ -726,6 +724,7 @@ exports.start = function(prompt,
726
724
ignoreUndefined ,
727
725
replMode ) ;
728
726
if ( ! exports . repl ) exports . repl = repl ;
727
+ replMap . set ( repl , repl ) ;
729
728
return repl ;
730
729
} ;
731
730
0 commit comments