@@ -72,7 +72,7 @@ function isRecoverableError(e, code) {
7272 // here as the point is to test for potentially valid but incomplete
7373 // expressions.
7474 if ( RegExpPrototypeExec ( / ^ \s * \{ / , code ) !== null &&
75- isRecoverableError ( e , `(${ code } ` ) )
75+ isRecoverableError ( e , `(${ code } ` ) )
7676 return true ;
7777
7878 let recoverable = false ;
@@ -115,10 +115,10 @@ function isRecoverableError(e, code) {
115115
116116 case 'Unterminated string constant' : {
117117 const token = StringPrototypeSlice ( this . input ,
118- this . lastTokStart , this . pos ) ;
118+ this . lastTokStart , this . pos ) ;
119119 // See https://www.ecma-international.org/ecma-262/#sec-line-terminators
120120 if ( RegExpPrototypeExec ( / \\ (?: \r \n ? | \n | \u2028 | \u2029 ) $ / ,
121- token ) !== null ) {
121+ token ) !== null ) {
122122 recoverable = true ;
123123 }
124124 }
@@ -146,7 +146,7 @@ function isRecoverableError(e, code) {
146146function setupPreview ( repl , contextSymbol , bufferSymbol , active ) {
147147 // Simple terminals can't handle previews.
148148 if ( process . env . TERM === 'dumb' || ! active ) {
149- return { showPreview ( ) { } , clearPreview ( ) { } } ;
149+ return { showPreview ( ) { } , clearPreview ( ) { } } ;
150150 }
151151
152152 let inputPreview = null ;
@@ -171,7 +171,7 @@ function setupPreview(repl, contextSymbol, bufferSymbol, active) {
171171 function isCursorAtInputEnd ( ) {
172172 const { cursorPos, displayPos } = getPreviewPos ( ) ;
173173 return cursorPos . rows === displayPos . rows &&
174- cursorPos . cols === displayPos . cols ;
174+ cursorPos . cols === displayPos . cols ;
175175 }
176176
177177 const clearPreview = ( key ) => {
@@ -212,9 +212,9 @@ function setupPreview(repl, contextSymbol, bufferSymbol, active) {
212212 escaped = repl . line ;
213213 }
214214 } else if ( ( key . name === 'return' || key . name === 'enter' ) &&
215- ! key . meta &&
216- escaped !== repl . line &&
217- isCursorAtInputEnd ( ) ) {
215+ ! key . meta &&
216+ escaped !== repl . line &&
217+ isCursorAtInputEnd ( ) ) {
218218 repl . _insertString ( completionPreview ) ;
219219 }
220220 }
@@ -289,22 +289,19 @@ function setupPreview(repl, contextSymbol, bufferSymbol, active) {
289289 function isInStrictMode ( repl ) {
290290 return repl . replMode === REPL_MODE_STRICT || ArrayPrototypeIncludes (
291291 ArrayPrototypeMap ( process . execArgv ,
292- ( e ) => StringPrototypeReplaceAll (
293- StringPrototypeToLowerCase ( e ) ,
294- '_' ,
295- '-' ,
296- ) ) ,
292+ ( e ) => StringPrototypeReplaceAll (
293+ StringPrototypeToLowerCase ( e ) ,
294+ '_' ,
295+ '-' ,
296+ ) ) ,
297297 '--use-strict' ) ;
298298 }
299299
300300 // This returns a code preview for arbitrary input code.
301301 function getInputPreview ( input , callback ) {
302302 // For similar reasons as `defaultEval`, wrap expressions starting with a
303303 // curly brace with parenthesis.
304- if ( StringPrototypeStartsWith ( input , '{' ) &&
305- ! StringPrototypeEndsWith ( input , ';' ) &&
306- isValidSyntax ( input ) &&
307- ! wrapped ) {
304+ if ( ! wrapped && input [ 0 ] === '{' && input [ input . length - 1 ] !== ';' && isValidSyntax ( input ) ) {
308305 input = `(${ input } )` ;
309306 wrapped = true ;
310307 }
@@ -322,16 +319,16 @@ function setupPreview(repl, contextSymbol, bufferSymbol, active) {
322319 const { result } = preview ;
323320 if ( result . value !== undefined ) {
324321 callback ( null , inspect ( result . value , previewOptions ) ) ;
325- // Ignore EvalErrors, SyntaxErrors and ReferenceErrors. It is not clear
326- // where they came from and if they are recoverable or not. Other errors
327- // may be inspected.
322+ // Ignore EvalErrors, SyntaxErrors and ReferenceErrors. It is not clear
323+ // where they came from and if they are recoverable or not. Other errors
324+ // may be inspected.
328325 } else if ( preview . exceptionDetails &&
329- ( result . className === 'EvalError' ||
330- result . className === 'SyntaxError' ||
331- // Report ReferenceError in case the strict mode is active
332- // for input that has no completions.
333- ( result . className === 'ReferenceError' &&
334- ( hasCompletions || ! isInStrictMode ( repl ) ) ) ) ) {
326+ ( result . className === 'EvalError' ||
327+ result . className === 'SyntaxError' ||
328+ // Report ReferenceError in case the strict mode is active
329+ // for input that has no completions.
330+ ( result . className === 'ReferenceError' &&
331+ ( hasCompletions || ! isInStrictMode ( repl ) ) ) ) ) {
335332 callback ( null , null ) ;
336333 } else if ( result . objectId ) {
337334 // The writer options might change and have influence on the inspect
@@ -371,9 +368,9 @@ function setupPreview(repl, contextSymbol, bufferSymbol, active) {
371368 const showPreview = ( showCompletion = true ) => {
372369 // Prevent duplicated previews after a refresh or in a multiline command.
373370 if ( inputPreview !== null ||
374- repl [ kIsMultiline ] ||
375- ! repl . isCompletionEnabled ||
376- ! process . features . inspector ) {
371+ repl [ kIsMultiline ] ||
372+ ! repl . isCompletionEnabled ||
373+ ! process . features . inspector ) {
377374 return ;
378375 }
379376
@@ -416,7 +413,7 @@ function setupPreview(repl, contextSymbol, bufferSymbol, active) {
416413 // Do not preview `undefined` if colors are deactivated or explicitly
417414 // requested.
418415 if ( inspected === 'undefined' &&
419- ( ! repl . useColors || repl . ignoreUndefined ) ) {
416+ ( ! repl . useColors || repl . ignoreUndefined ) ) {
420417 return ;
421418 }
422419
@@ -430,7 +427,7 @@ function setupPreview(repl, contextSymbol, bufferSymbol, active) {
430427 // Support unicode characters of width other than one by checking the
431428 // actual width.
432429 if ( inspected . length * 2 >= maxColumns &&
433- getStringWidth ( inspected ) > maxColumns ) {
430+ getStringWidth ( inspected ) > maxColumns ) {
434431 maxColumns -= 4 + ( repl . useColors ? 0 : 3 ) ;
435432 let res = '' ;
436433 for ( const char of new SafeStringIterator ( inspected ) ) {
@@ -469,8 +466,8 @@ function setupPreview(repl, contextSymbol, bufferSymbol, active) {
469466 let previewLine = line ;
470467
471468 if ( completionPreview !== null &&
472- isCursorAtInputEnd ( ) &&
473- escaped !== repl . line ) {
469+ isCursorAtInputEnd ( ) &&
470+ escaped !== repl . line ) {
474471 previewLine += completionPreview ;
475472 }
476473
@@ -504,8 +501,8 @@ function setupPreview(repl, contextSymbol, bufferSymbol, active) {
504501 const currentCursor = repl . cursor ;
505502 originalMoveCursor ( dx ) ;
506503 if ( currentCursor + dx > repl . line . length &&
507- typeof repl . completer === 'function' &&
508- insertCompletionPreview ) {
504+ typeof repl . completer === 'function' &&
505+ insertCompletionPreview ) {
509506 const insertPreview = true ;
510507 showCompletionPreview ( repl . line , insertPreview ) ;
511508 }
@@ -600,7 +597,7 @@ function setupReverseSearch(repl) {
600597 // Match not found.
601598 if ( cursor === - 1 ) {
602599 goToNextHistoryIndex ( ) ;
603- // Match found.
600+ // Match found.
604601 } else {
605602 if ( repl . useColors ) {
606603 const start = StringPrototypeSlice ( entry , 0 , cursor ) ;
@@ -613,7 +610,7 @@ function setupReverseSearch(repl) {
613610 // Explicitly go to the next history item in case no further matches are
614611 // possible with the current entry.
615612 if ( ( dir === 'r' && cursor === 0 ) ||
616- ( dir === 's' && entry . length === cursor + input . length ) ) {
613+ ( dir === 's' && entry . length === cursor + input . length ) ) {
617614 goToNextHistoryIndex ( ) ;
618615 }
619616 return ;
@@ -726,7 +723,7 @@ function setupReverseSearch(repl) {
726723 } else if ( key . ctrl && checkAndSetDirectionKey ( key . name ) ) {
727724 search ( ) ;
728725 } else if ( key . name === 'backspace' ||
729- ( key . ctrl && ( key . name === 'h' || key . name === 'w' ) ) ) {
726+ ( key . ctrl && ( key . name === 'h' || key . name === 'w' ) ) ) {
730727 reset ( StringPrototypeSlice ( input , 0 , input . length - 1 ) ) ;
731728 search ( ) ;
732729 // Special handle <ctrl> + c and escape. Those should only cancel the
@@ -738,11 +735,11 @@ function setupReverseSearch(repl) {
738735 // End search in case either enter is pressed or if any non-reverse-search
739736 // key (combination) is pressed.
740737 } else if ( key . ctrl ||
741- key . meta ||
742- key . name === 'return' ||
743- key . name === 'enter' ||
744- typeof string !== 'string' ||
745- string === '' ) {
738+ key . meta ||
739+ key . name === 'return' ||
740+ key . name === 'enter' ||
741+ typeof string !== 'string' ||
742+ string === '' ) {
746743 reset ( ) ;
747744 repl [ kSubstringSearch ] = '' ;
748745 } else {
@@ -789,52 +786,15 @@ function isValidSyntax(input) {
789786function isObjectLiteral ( code ) {
790787 return RegExpPrototypeExec ( startsWithBraceRegExp , code ) !== null &&
791788 RegExpPrototypeExec ( endsWithSemicolonRegExp , code ) === null ;
792- function isValidSyntax ( input ) {
793- const Parser = require ( 'internal/deps/acorn/acorn/dist/acorn' ) . Parser ;
794- try {
795- Parser . parse ( input , { ecmaVersion : 'latest' } ) ;
796- return true ;
797- } catch {
798- return false ;
799- }
800- }
801-
802- function isValidParentheses ( input ) {
803- const stack = [ ] ;
804- const pairs = {
805- '(' : ')' ,
806- '[' : ']' ,
807- '{' : '}' ,
808- } ;
809-
810- for ( let i = 0 ; i < input . length ; i ++ ) {
811- const char = input [ i ] ;
812-
813- if ( pairs [ char ] ) {
814- stack . push ( char ) ;
815- } else if ( char === ')' || char === ']' || char === '}' ) {
816- if ( pairs [ stack . pop ( ) ] !== char ) {
817- return false ;
818- }
819- }
820- function isValidSyntax ( input ) {
821- const Parser = require ( 'internal/deps/acorn/acorn/dist/acorn' ) . Parser ;
822- try {
823- let result = Parser . parse ( input , { ecmaVersion : 'latest' } ) ;
824- return true ;
825- } catch ( e ) {
826- return false ;
827- }
828- }
789+ }
829790
830- module . exports = {
831- REPL_MODE_SLOPPY : Symbol ( 'repl-sloppy' ) ,
832- REPL_MODE_STRICT ,
833- isRecoverableError,
834- kStandaloneREPL : Symbol ( 'kStandaloneREPL' ) ,
835- setupPreview,
836- setupReverseSearch,
837- isObjectLiteral,
838- isValidParentheses,
839- isValidSyntax,
840- } ;
791+ module . exports = {
792+ REPL_MODE_SLOPPY : Symbol ( 'repl-sloppy' ) ,
793+ REPL_MODE_STRICT ,
794+ isRecoverableError,
795+ kStandaloneREPL : Symbol ( 'kStandaloneREPL' ) ,
796+ setupPreview,
797+ setupReverseSearch,
798+ isObjectLiteral,
799+ isValidSyntax,
800+ } ;
0 commit comments