@@ -93,15 +93,15 @@ class Plugins {
9393 }
9494}
9595
96- // JavaScript Expression Parser (JSEP) 1.3.9
96+ // JavaScript Expression Parser (JSEP) 1.4.0
9797
9898class Jsep {
9999 /**
100100 * @returns {string }
101101 */
102102 static get version ( ) {
103103 // To be filled in by the template
104- return '1.3.9 ' ;
104+ return '1.4.0 ' ;
105105 }
106106
107107 /**
@@ -977,6 +977,7 @@ Object.assign(Jsep, {
977977 // see [Order of operations](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence)
978978 binary_ops : {
979979 '||' : 1 ,
980+ '??' : 1 ,
980981 '&&' : 2 ,
981982 '|' : 3 ,
982983 '^' : 4 ,
@@ -996,10 +997,11 @@ Object.assign(Jsep, {
996997 '-' : 9 ,
997998 '*' : 10 ,
998999 '/' : 10 ,
999- '%' : 10
1000+ '%' : 10 ,
1001+ '**' : 11
10001002 } ,
10011003 // sets specific binary_ops as right-associative
1002- right_associative : new Set ( ) ,
1004+ right_associative : new Set ( [ '**' ] ) ,
10031005 // Additional valid identifier chars, apart from a-z, A-Z and 0-9 (except on the starting char)
10041006 additional_identifier_chars : new Set ( [ '$' , '_' ] ) ,
10051007 // Literals
@@ -1134,7 +1136,7 @@ const MINUS_CODE = 45; // -
11341136
11351137const plugin = {
11361138 name : 'assignment' ,
1137- assignmentOperators : new Set ( [ '=' , '*=' , '**=' , '/=' , '%=' , '+=' , '-=' , '<<=' , '>>=' , '>>>=' , '&=' , '^=' , '|=' ] ) ,
1139+ assignmentOperators : new Set ( [ '=' , '*=' , '**=' , '/=' , '%=' , '+=' , '-=' , '<<=' , '>>=' , '>>>=' , '&=' , '^=' , '|=' , '||=' , '&&=' , '??=' ] ) ,
11381140 updateOperators : [ PLUS_CODE , MINUS_CODE ] ,
11391141 assignmentPrecedence : 0.9 ,
11401142 init ( jsep ) {
@@ -2138,7 +2140,7 @@ class Script {
21382140
21392141 // Insert `return`
21402142 const lastStatementEnd = expr . lastIndexOf ( ';' ) ;
2141- const code = lastStatementEnd > - 1 ? expr . slice ( 0 , lastStatementEnd + 1 ) + ' return ' + expr . slice ( lastStatementEnd + 1 ) : ' return ' + expr ;
2143+ const code = lastStatementEnd !== - 1 ? expr . slice ( 0 , lastStatementEnd + 1 ) + ' return ' + expr . slice ( lastStatementEnd + 1 ) : ' return ' + expr ;
21422144
21432145 // eslint-disable-next-line no-new-func -- User's choice
21442146 return new Function ( ...keys , code ) ( ...values ) ;
0 commit comments