@@ -40,28 +40,8 @@ export default function expandProperties(pattern, callback) {
4040 'Brace expanded properties cannot contain spaces, e.g. "user.{firstName, lastName}" should be "user.{firstName,lastName}"' ,
4141 pattern . indexOf ( ' ' ) === - 1
4242 ) ;
43- assert (
44- `Brace expanded properties have to be balanced and cannot be nested, pattern: ${ pattern } ` ,
45- ( ( str ) => {
46- let inBrace = 0 ;
47- let char ;
48- for ( let i = 0 ; i < str . length ; i ++ ) {
49- char = str . charAt ( i ) ;
50-
51- if ( char === '{' ) {
52- inBrace ++ ;
53- } else if ( char === '}' ) {
54- inBrace -- ;
55- }
56-
57- if ( inBrace > 1 || inBrace < 0 ) {
58- return false ;
59- }
60- }
61-
62- return true ;
63- } ) ( pattern ) ) ;
6443
44+ let unbalancedNestedError = `Brace expanded properties have to be balanced and cannot be nested, pattern: ${ pattern } ` ;
6545 let properties = [ pattern ] ;
6646
6747 // Iterating backward over the pattern makes dealing with indices easier.
@@ -77,6 +57,8 @@ export default function expandProperties(pattern, callback) {
7757 if ( ! inside ) {
7858 bookmark = i - 1 ;
7959 inside = true ;
60+ } else {
61+ assert ( unbalancedNestedError , false ) ;
8062 }
8163 break ;
8264 // Opening curly brace will be the last character of the brace expansion we encounter.
@@ -96,10 +78,15 @@ export default function expandProperties(pattern, callback) {
9678 }
9779 }
9880 inside = false ;
81+ } else {
82+ assert ( unbalancedNestedError , false ) ;
9983 }
10084 break ;
10185 }
10286 }
87+ if ( inside ) {
88+ assert ( unbalancedNestedError , false ) ;
89+ }
10390
10491 for ( let i = 0 ; i < properties . length ; i ++ ) {
10592 callback ( properties [ i ] . replace ( END_WITH_EACH_REGEX , '.[]' ) ) ;
0 commit comments