@@ -403,7 +403,7 @@ var require_ast = __commonJS({
403403var unescape_js_12 = require_unescape ( ) ;
404404var types = /* @__PURE__ */ new Set ( [ "!" , "?" , "+" , "*" , "@" ] ) ;
405405var isExtglobType = ( c ) => types . has ( c ) ;
406- var startNoTraversal = "(?!\\.\\.?(?:$|/))" ;
406+ var startNoTraversal = "(?!(?:^|/) \\.\\.?(?:$|/))" ;
407407var startNoDot = "(?!\\.)" ;
408408var addPatternStart = /* @__PURE__ */ new Set ( [ "[" , "." ] ) ;
409409var justDots = /* @__PURE__ */ new Set ( [ ".." , "." ] ) ;
@@ -412,10 +412,11 @@ var require_ast = __commonJS({
412412var qmark2 = "[^/]" ;
413413var star2 = qmark2 + "*?" ;
414414var starNoEmpty = qmark2 + "+?" ;
415- var _root , _hasMagic , _uflag , _parts , _parent , _parentIndex , _negs , _filledNegs , _options , _toString , _emptyExt , _fillNegs , fillNegs_fn , _parseAST , parseAST_fn , _parseGlob , parseGlob_fn ;
415+ var _root , _hasMagic , _uflag , _parts , _parent , _parentIndex , _negs , _filledNegs , _options , _toString , _emptyExt , _fillNegs , fillNegs_fn , _parseAST , parseAST_fn , _partsToRegExp , partsToRegExp_fn , _parseGlob , parseGlob_fn ;
416416var _AST = class {
417417constructor ( type , parent , options = { } ) {
418418__privateAdd ( this , _fillNegs ) ;
419+ __privateAdd ( this , _partsToRegExp ) ;
419420__publicField ( this , "type" ) ;
420421__privateAdd ( this , _root , void 0 ) ;
421422__privateAdd ( this , _hasMagic , void 0 ) ;
@@ -614,14 +615,15 @@ var require_ast = __commonJS({
614615// - Since the start for a join is eg /(?!\.) and the start for a part
615616// is ^(?!\.), we can just prepend (?!\.) to the pattern (either root
616617// or start or whatever) and prepend ^ or / at the Regexp construction.
617- toRegExpSource ( ) {
618+ toRegExpSource ( allowDot ) {
619+ const dot = allowDot ?? ! ! __privateGet ( this , _options ) . dot ;
618620if ( __privateGet ( this , _root ) === this )
619621__privateMethod ( this , _fillNegs , fillNegs_fn ) . call ( this ) ;
620622if ( ! this . type ) {
621623const noEmpty = this . isStart ( ) && this . isEnd ( ) ;
622624const src = __privateGet ( this , _parts ) . map ( ( p ) => {
623625var _a ;
624- const [ re , _ , hasMagic , uflag ] = typeof p === "string" ? __privateMethod ( _a = _AST , _parseGlob , parseGlob_fn ) . call ( _a , p , __privateGet ( this , _hasMagic ) , noEmpty ) : p . toRegExpSource ( ) ;
626+ const [ re , _ , hasMagic , uflag ] = typeof p === "string" ? __privateMethod ( _a = _AST , _parseGlob , parseGlob_fn ) . call ( _a , p , __privateGet ( this , _hasMagic ) , noEmpty ) : p . toRegExpSource ( allowDot ) ;
625627__privateSet ( this , _hasMagic , __privateGet ( this , _hasMagic ) || hasMagic ) ;
626628__privateSet ( this , _uflag , __privateGet ( this , _uflag ) || uflag ) ;
627629return re ;
@@ -634,11 +636,11 @@ var require_ast = __commonJS({
634636const aps = addPatternStart ;
635637const needNoTrav = (
636638// dots are allowed, and the pattern starts with [ or .
637- __privateGet ( this , _options ) . dot && aps . has ( src . charAt ( 0 ) ) || // the pattern starts with \., and then [ or .
639+ dot && aps . has ( src . charAt ( 0 ) ) || // the pattern starts with \., and then [ or .
638640src . startsWith ( "\\." ) && aps . has ( src . charAt ( 2 ) ) || // the pattern starts with \.\., and then [ or .
639641src . startsWith ( "\\.\\." ) && aps . has ( src . charAt ( 4 ) )
640642) ;
641- const needNoDot = ! __privateGet ( this , _options ) . dot && aps . has ( src . charAt ( 0 ) ) ;
643+ const needNoDot = ! dot && ! allowDot && aps . has ( src . charAt ( 0 ) ) ;
642644start2 = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : "" ;
643645}
644646}
@@ -655,30 +657,31 @@ var require_ast = __commonJS({
655657__privateGet ( this , _uflag )
656658] ;
657659}
660+ const repeated = this . type === "*" || this . type === "+" ;
658661const start = this . type === "!" ? "(?:(?!(?:" : "(?:" ;
659- const body = __privateGet ( this , _parts ) . map ( ( p ) => {
660- if ( typeof p === "string" ) {
661- throw new Error ( "string type in extglob ast??" ) ;
662- }
663- const [ re , _ , _hasMagic2 , uflag ] = p . toRegExpSource ( ) ;
664- __privateSet ( this , _uflag , __privateGet ( this , _uflag ) || uflag ) ;
665- return re ;
666- } ) . filter ( ( p ) => ! ( this . isStart ( ) && this . isEnd ( ) ) || ! ! p ) . join ( "|" ) ;
662+ let body = __privateMethod ( this , _partsToRegExp , partsToRegExp_fn ) . call ( this , dot ) ;
667663if ( this . isStart ( ) && this . isEnd ( ) && ! body && this . type !== "!" ) {
668664const s = this . toString ( ) ;
669665__privateSet ( this , _parts , [ s ] ) ;
670666this . type = null ;
671667__privateSet ( this , _hasMagic , void 0 ) ;
672668return [ s , ( 0 , unescape_js_12 . unescape ) ( this . toString ( ) ) , false , false ] ;
673669}
670+ let bodyDotAllowed = ! repeated || allowDot || dot || ! startNoDot ? "" : __privateMethod ( this , _partsToRegExp , partsToRegExp_fn ) . call ( this , true ) ;
671+ if ( bodyDotAllowed === body ) {
672+ bodyDotAllowed = "" ;
673+ }
674+ if ( bodyDotAllowed ) {
675+ body = `(?:${ body } )(?:${ bodyDotAllowed } )*?` ;
676+ }
674677let final = "" ;
675678if ( this . type === "!" && __privateGet ( this , _emptyExt ) ) {
676- final = ( this . isStart ( ) && ! __privateGet ( this , _options ) . dot ? startNoDot : "" ) + starNoEmpty ;
679+ final = ( this . isStart ( ) && ! dot ? startNoDot : "" ) + starNoEmpty ;
677680} else {
678681const close = this . type === "!" ? (
679682// !() must match something,but !(x) can match ''
680- "))" + ( this . isStart ( ) && ! __privateGet ( this , _options ) . dot ? startNoDot : "" ) + star2 + ")"
681- ) : this . type === "@" ? ")" : `)${ this . type } ` ;
683+ "))" + ( this . isStart ( ) && ! dot && ! allowDot ? startNoDot : "" ) + star2 + ")"
684+ ) : this . type === "@" ? ")" : this . type === "?" ? ")?" : this . type === "+" && bodyDotAllowed ? ")" : this . type === "*" && bodyDotAllowed ? `)?` : `)${ this . type } ` ;
682685final = start + body + close ;
683686}
684687return [
@@ -836,6 +839,17 @@ var require_ast = __commonJS({
836839__privateSet ( ast , _parts , [ str . substring ( pos - 1 ) ] ) ;
837840return i ;
838841} ;
842+ _partsToRegExp = new WeakSet ( ) ;
843+ partsToRegExp_fn = function ( dot ) {
844+ return __privateGet ( this , _parts ) . map ( ( p ) => {
845+ if ( typeof p === "string" ) {
846+ throw new Error ( "string type in extglob ast??" ) ;
847+ }
848+ const [ re , _ , _hasMagic2 , uflag ] = p . toRegExpSource ( dot ) ;
849+ __privateSet ( this , _uflag , __privateGet ( this , _uflag ) || uflag ) ;
850+ return re ;
851+ } ) . filter ( ( p ) => ! ( this . isStart ( ) && this . isEnd ( ) ) || ! ! p ) . join ( "|" ) ;
852+ } ;
839853_parseGlob = new WeakSet ( ) ;
840854parseGlob_fn = function ( glob , hasMagic , noEmpty = false ) {
841855let escaping = false ;
0 commit comments