diff --git a/CHANGELOG.md b/CHANGELOG.md index 6349c33..f1a68b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [2.15.2](https://github.com/atom-community/autocomplete-paths/compare/v2.15.1...v2.15.2) (2021-05-02) + + +### Bug Fixes + +* skip tracking the changes if maxFileCount is hit ([27341f8](https://github.com/atom-community/autocomplete-paths/commit/27341f8f03573a9bf43230601747b562582b8a31)) + ## [2.15.1](https://github.com/atom-community/autocomplete-paths/compare/v2.15.0...v2.15.1) (2021-04-28) diff --git a/dist/autocomplete-paths.js b/dist/autocomplete-paths.js index 4c80193..cf966d9 100644 --- a/dist/autocomplete-paths.js +++ b/dist/autocomplete-paths.js @@ -1,15 +1,20 @@ -var t=require("zadeh"),e=require("stream"),r=require("os"),n=require("fs"),i=require("buffer"),s=require("util"),o=require("child_process"),a=require("atom"),c=require("path"),u=require("events");function l(t,e,r){Object.defineProperty(t,e,{get:r,enumerable:!0})}function h(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}var f="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{};Object.defineProperty(exports,"__esModule",{value:!0});var p=function(){Zf.add(atom.commands.add("atom-workspace",{"autocomplete-paths:rebuild-cache":()=>{tp()}}));["core.ignoredNames","core.excludeVcsIgnoredPaths","autocomplete-paths.ignoreSubmodules","autocomplete-paths.ignoredNames","autocomplete-paths.ignoredPatterns","autocomplete-paths.maxFileCount"].forEach((t=>{Zf.add(atom.config.observe(t,(()=>{Jf&&(Jf._pathsCache.updateConfig(),tp())})))}));const t=["autocomplete-paths.scopes"];for(const e in v.OptionScopes)t.push(`autocomplete-paths.${e}`);t.forEach((t=>{Zf.add(atom.config.observe(t,(()=>{Jf&&Jf.reloadScopes()})))}))};exports.activate=p;var d=function(){rp&&clearInterval(rp);Zf.dispose(),Jf&&(Jf.dispose(!0),Jf=null);np&&(np.destroy(),np=null)};exports.deactivate=d;var g=function(t){ep=t,sp&&op()};exports.consumeStatusBar=g;var _=ap;exports.getProvider=_,Object.defineProperty(exports,"config",{enumerable:!0,get:function(){return y.config}});var y={};Object.defineProperty(y,"__esModule",{value:!0});var m=void 0;y.config=m;var v={};Object.defineProperty(v,"__esModule",{value:!0});var b=void 0;v.OptionScopes=b;b={enableHtmlSupport:[{scopes:["text.html.basic"],prefixes:["src=['\"]","href=['\"]","name=['\"]"],extensions:["js","png","gif","jpeg","jpg","tiff","html","json","svg"],relative:!0}]},v.OptionScopes=b;const w={normalizeSlashes:{type:"boolean",description:"Replaces backward slashes with forward slashes on windows (if possible)",default:!0},maxFileCount:{type:"number",description:"The maximum amount of files to be handled",default:2e3},suggestionPriority:{type:"number",description:"Suggestion priority of this provider. If set to a number larger than or equal to 1, suggestions will be displayed on top of default suggestions.",default:2},ignoredNames:{type:"boolean",default:!0,description:"Ignore items matched by the `Ignore Names` core option."},ignoreSubmodules:{type:"boolean",default:!1,description:"Ignore submodule directories."},ignoredPatterns:{type:"array",default:[],items:{type:"string"},description:"Ignore additional **glob** or file path patterns."},ignoreBuiltinScopes:{type:"boolean",default:!1,description:"Ignore built-in scopes and use only scopes from user configuration."},scopes:{type:"array",default:[],items:{type:"object",properties:{scopes:{type:["array"],items:{type:"string"}},prefixes:{type:["array"],items:{type:"string"}},extensions:{type:["array"],items:{type:"string"}},relative:{type:"boolean",default:!0},replaceOnInsert:{type:"array",items:{type:"array",items:{type:["string","string"]}}}}}}};m=w,y.config=m;const E=Object.keys(v.OptionScopes);for(let t=0,e=E.length;t=0&&r<=K}}function Rt(t){return function(e){return null==e?void 0:e[t]}}var Pt=Rt("byteLength"),xt=At(Pt),Ot=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var Ct=H?function(t){return G?G(t)&&!_t(t):xt(t)&&Ot.test(I.call(t))}:St(!1),kt=Rt("length");function Dt(t,e){e=function(t){for(var e={},r=t.length,n=0;n":">",'"':""","'":"'","`":"`"},ke=Oe(Ce),De=Oe(te(Ce)),Te=Mt.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},je=/(.)^/,Fe={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Me=/\\|'|\r|\n|\u2028|\u2029/g;function Ie(t){return"\\"+Fe[t]}var Le=/^\s*(\w|\$)+\s*$/;function He(t,e,r){!e&&r&&(e=r),e=se({},e,Mt.templateSettings);var n=RegExp([(e.escape||je).source,(e.interpolate||je).source,(e.evaluate||je).source].join("|")+"|$","g"),i=0,s="__p+='";t.replace(n,(function(e,r,n,o,a){return s+=t.slice(i,a).replace(Me,Ie),i=a+e.length,r?s+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":n?s+="'+\n((__t=("+n+"))==null?'':__t)+\n'":o&&(s+="';\n"+o+"\n__p+='"),e})),s+="';\n";var o,a=e.variable;if(a){if(!Le.test(a))throw new Error("variable is not a bare identifier: "+a)}else s="with(obj||{}){\n"+s+"}\n",a="obj";s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{o=new Function(a,"_",s)}catch(t){throw t.source=s,t}var c=function(t){return o.call(this,t,Mt)};return c.source="function("+a+"){\n"+s+"}",c}function $e(t,e,r){var n=(e=he(e)).length;if(!n)return ht(r)?r.call(t):r;for(var i=0;i1)ze(a,e-1,r,n),i=n.length;else for(var c=0,u=a.length;ce?(n&&(clearTimeout(n),n=null),a=u,o=t.apply(i,s),n||(i=s=null)):n||!1===r.trailing||(n=setTimeout(c,l)),o};return u.cancel=function(){clearTimeout(n),a=0,n=i=s=null},u}function Je(t,e,r){var n,i,s,o,a,c=function(){var u=xe()-i;e>u?n=setTimeout(c,e-u):(n=null,r||(o=t.apply(a,s)),n||(s=a=null))},u=Q((function(u){return a=this,s=u,i=xe(),n||(n=setTimeout(c,e),r&&(o=t.apply(a,s))),o}));return u.cancel=function(){clearTimeout(n),n=s=a=null},u}function tr(t,e){return Ue(e,t)}function er(t){return function(){return!t.apply(this,arguments)}}function rr(){var t=arguments,e=t.length-1;return function(){for(var r=e,n=t[e].apply(this,arguments);r--;)n=t[r].call(this,n);return n}}function nr(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function ir(t,e){var r;return function(){return--t>0&&(r=e.apply(this,arguments)),t<=1&&(e=null),r}}var sr=Ue(ir,2);function or(t,e,r){e=we(e,r);for(var n,i=Tt(t),s=0,o=i.length;s0?0:i-1;s>=0&&s0?o=s>=0?s:Math.max(s+a,o):a=s>=0?Math.min(s+1,a):s+a+1;else if(r&&s&&a)return n[s=r(n,i)]===i?s:-1;if(i!=i)return(s=e(M.call(n,o,a),Et))>=0?s+o:-1;for(s=t>0?o:a-1;s>=0&&s0?0:o-1;for(i||(n=e[s?s[a]:a],a+=t);a>=0&&a=3;return e(t,me(r,i,4),n,s)}}var vr=mr(1),br=mr(-1);function wr(t,e,r){var n=[];return e=we(e,r),_r(t,(function(t,r,i){e(t,r,i)&&n.push(t)})),n}function Er(t,e,r){return wr(t,er(we(e)),r)}function Sr(t,e,r){e=we(e,r);for(var n=!qe(t)&&Tt(t),i=(n||t).length,s=0;s=0}var Pr=Q((function(t,e,r){var n,i;return ht(e)?i=e:(e=he(e),n=e.slice(0,-1),e=e[e.length-1]),yr(t,(function(t){var s=i;if(!s){if(n&&n.length&&(t=fe(t,n)),null==t)return;s=t[e]}return null==s?s:s.apply(t,r)}))}));function xr(t,e){return yr(t,ye(e))}function Or(t,e){return wr(t,_e(e))}function Cr(t,e,r){var n,i,s=-1/0,o=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=qe(t)?t:Zt(t)).length;as&&(s=n);else e=we(e,r),_r(t,(function(t,r,n){((i=e(t,r,n))>o||i===-1/0&&s===-1/0)&&(s=t,o=i)}));return s}function kr(t,e,r){var n,i,s=1/0,o=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=qe(t)?t:Zt(t)).length;an||void 0===r)return 1;if(r1&&(n=me(n,e[1])),e=Nt(t)):(n=Wr,e=ze(e,!1,!1),t=Object(t));for(var i=0,s=e.length;i1&&(r=e[1])):(e=yr(ze(e,!1,!1),String),n=function(t,r){return!Rr(e,r)}),Gr(t,n,r)}));function Vr(t,e,r){return M.call(t,0,Math.max(0,t.length-(null==e||r?1:e)))}function qr(t,e,r){return null==t||t.length<1?null==e||r?void 0:[]:null==e||r?t[0]:Vr(t,t.length-e)}function zr(t,e,r){return M.call(t,null==e||r?1:e)}function Kr(t,e,r){return null==t||t.length<1?null==e||r?void 0:[]:null==e||r?t[t.length-1]:zr(t,Math.max(0,t.length-e))}function Qr(t){return wr(t,Boolean)}function Yr(t,e){return ze(t,e,!1)}var Xr=Q((function(t,e){return e=ze(e,!0,!0),wr(t,(function(t){return!Rr(e,t)}))})),Zr=Q((function(t,e){return Xr(t,e)}));function Jr(t,e,r,n){J(e)||(n=r,r=e,e=!1),null!=r&&(r=we(r,n));for(var i=[],s=[],o=0,a=kt(t);o{const e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")})),dn={};Object.defineProperty(dn,"__esModule",{value:!0});var gn=void 0;dn.default=gn;var _n,yn=u;_n=Un,Un.Minimatch=Vn;var mn={sep:"/"};try{mn=h("path")}catch(t){}var vn,bn=Un.GLOBSTAR=Vn.GLOBSTAR={},wn={};vn=function(t,e){for(var r=[],n=0;n=0&&u>0){if(t===e)return[c,u];for(n=[],s=r.length;l>=0&&!a;)l==c?(n.push(l),c=r.indexOf(t,l+1)):1==n.length?a=[n.pop(),u]:((i=n.pop())=0?c:u;n.length&&(a=[s,o])}return a}Sn=An,An.range=Pn,wn=function(t){if(!t)return[];"{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2));return $n(function(t){return t.split("\\\\").join(xn).split("\\{").join(On).split("\\}").join(Cn).split("\\,").join(kn).split("\\.").join(Dn)}(t),!0).map(jn)};var xn="\0SLASH"+Math.random()+"\0",On="\0OPEN"+Math.random()+"\0",Cn="\0CLOSE"+Math.random()+"\0",kn="\0COMMA"+Math.random()+"\0",Dn="\0PERIOD"+Math.random()+"\0";function Tn(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function jn(t){return t.split(xn).join("\\").split(On).join("{").split(Cn).join("}").split(kn).join(",").split(Dn).join(".")}function Fn(t){if(!t)return[""];var e=[],r=Sn("{","}",t);if(!r)return t.split(",");var n=r.pre,i=r.body,s=r.post,o=n.split(",");o[o.length-1]+="{"+i+"}";var a=Fn(s);return s.length&&(o[o.length-1]+=a.shift(),o.push.apply(o,a)),e.push.apply(e,o),e}function Mn(t){return"{"+t+"}"}function In(t){return/^-?0\d/.test(t)}function Ln(t,e){return t<=e}function Hn(t,e){return t>=e}function $n(t,e){var r=[],n=Sn("{","}",t);if(!n||/\$$/.test(n.pre))return[t];var i,s=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(n.body),o=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(n.body),a=s||o,c=n.body.indexOf(",")>=0;if(!a&&!c)return n.post.match(/,.*\}/)?$n(t=n.pre+"{"+n.body+Cn+n.post):[t];if(a)i=n.body.split(/\.\./);else if(1===(i=Fn(n.body)).length&&1===(i=$n(i[0],!1).map(Mn)).length)return(h=n.post.length?$n(n.post,!1):[""]).map((function(t){return n.pre+i[0]+t}));var u,l=n.pre,h=n.post.length?$n(n.post,!1):[""];if(a){var f=Tn(i[0]),p=Tn(i[1]),d=Math.max(i[0].length,i[1].length),g=3==i.length?Math.abs(Tn(i[2])):1,_=Ln;p0){var w=new Array(b+1).join("0");v=m<0?"-"+w+v.slice(1):w+v}}u.push(v)}}else u=vn(i,(function(t){return $n(t,!1)}));for(var E=0;E65536)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&"**"===t)return bn;if(""===t)return"";var n,i="",s=!!r.nocase,o=!1,a=[],c=[],u=!1,l=-1,h=-1,f="."===t.charAt(0)?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",p=this;function d(){if(n){switch(n){case"*":i+="[^/]*?",s=!0;break;case"?":i+="[^/]",s=!0;break;default:i+="\\"+n}p.debug("clearStateChar %j %j",n,i),n=!1}}for(var g,_=0,y=t.length;_-1;A--){var R=c[A],P=i.slice(0,R.reStart),x=i.slice(R.reStart,R.reEnd-8),O=i.slice(R.reEnd-8,R.reEnd),C=i.slice(R.reEnd);O+=C;var k=P.split("(").length-1,D=C;for(_=0;_=0&&!(n=t[i]);i--);for(i=0;i>> no match, partial?",t,h,e,f),h!==o))}if("string"==typeof u?(c=n.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,c)):(c=l.match(u),this.debug("pattern match",u,l,c)),!c)return!1}if(i===o&&s===a)return!0;if(i===o)return r;if(s===a)return i===o-1&&""===t[i];throw new Error("wtf?")};var Kn=Lf(_n),Qn=a,Yn=c,Xn={};Object.defineProperty(Xn,"__esModule",{value:!0});var Zn=si;Xn.merge=Zn;var Jn=oi;Xn.unique=Jn;var ti=function(t,e){return si(t,e),oi(t)};Xn.union=ti;var ei=(ii=void 0,Xn.exec=ii);Xn.MAX_STRING_LENGTH=ei;var ri=o,ni=i;var ii=(0,s.promisify)(ri.exec);Xn.exec=ii;function si(t,e){e.length&&Array.prototype.push.apply(t,e)}function oi(t){return[...new Set(t)]}ei=ni.constants.MAX_STRING_LENGTH,Xn.MAX_STRING_LENGTH=ei;var ai,ci,ui,li,hi,fi,pi={};Object.defineProperty(pi,"__esModule",{value:!0});var di,gi=c,_i=n,yi={"{":"}","(":")","[":"]"},mi=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,vi=/[‘“!#$%&+^<=>`]/,bi=function(t){return!1===function(t){return"string"!=typeof t||function(t,e){if("string"!=typeof t||""===t)return!1;if(function(t){if("string"!=typeof t||""===t)return!1;for(var e;e=/(\\).|([@?!+*]\(.*\))/g.exec(t);){if(e[2])return!0;t=t.slice(e.index+e[0].length)}return!1}(t))return!0;for(var r,n=mi;r=n.exec(t);){if(r[2])return!0;var i=r.index+r[0].length,s=r[1],o=s?yi[s]:null;if(s&&o){var a=t.indexOf(o,i);-1!==a&&(i=a+1)}t=t.slice(i)}return!1}(t)||vi.test(t)}(t)},wi=((di={exports:{}}).exports=function(t){var e=void 0;e="string"==typeof t?[t]:t.raw;for(var r="",n=0;n{return!(/^\s*$/.test(t)||(e=t,"#"===e[0]));var e})).map((t=>function(t){return t.replace(/^\s+/,"")}(function(t){return/\\\s+$/.test(t)?t.replace(/\\(\s+)$/,"$1"):t.replace(/\s+$/,"")}(t)))),n=r.length,i=new Array(n);for(let t=0;t[].concat(t,e)),[])};Fi.flatten=Ii,Mi=function(t,e){const r=[[]];let n=0;for(const i of t)e(i)?(n++,r[n]=[]):r[n].push(i);return r},Fi.splitWhen=Mi;var Li=Fi;Ti.array=Fi;var Hi={};Object.defineProperty(Hi,"__esModule",{value:!0});var $i=void 0;Hi.isEnoentCodeError=$i,$i=function(t){return"ENOENT"===t.code},Hi.isEnoentCodeError=$i;var Ni=Hi;Ti.errno=Hi;var Bi={};Object.defineProperty(Bi,"__esModule",{value:!0});var Wi=void 0;Bi.createDirentFromStats=Wi;class Gi{constructor(t,e){this.name=t,this.isBlockDevice=e.isBlockDevice.bind(e),this.isCharacterDevice=e.isCharacterDevice.bind(e),this.isDirectory=e.isDirectory.bind(e),this.isFIFO=e.isFIFO.bind(e),this.isFile=e.isFile.bind(e),this.isSocket=e.isSocket.bind(e),this.isSymbolicLink=e.isSymbolicLink.bind(e)}}Wi=function(t,e){return new Gi(t,e)},Bi.createDirentFromStats=Wi;var Ui=Bi;Ti.fs=Bi;var Vi={};Object.defineProperty(Vi,"__esModule",{value:!0});var qi=(Qi=void 0,Yi=Vi.unixify=Qi,Xi=Vi.makeAbsolute=Yi,Vi.escape=Xi);Vi.removeLeadingDotSegment=qi;const zi=c,Ki=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;var Qi=function(t){return t.replace(/\\/g,"/")};Vi.unixify=Qi;var Yi=function(t,e){return zi.resolve(t,e)};Vi.makeAbsolute=Yi;var Xi=function(t){return t.replace(Ki,"\\$2")};Vi.escape=Xi,qi=function(t){if("."===t.charAt(0)){const e=t.charAt(1);if("/"===e||"\\"===e)return t.slice(2)}return t},Vi.removeLeadingDotSegment=qi;var Zi=Vi;Ti.path=Vi;var Ji={};Object.defineProperty(Ji,"__esModule",{value:!0});var ts=(va=void 0,wa=Ji.isStaticPattern=va,Ea=Ji.isDynamicPattern=wa,Sa=Ji.convertToPositivePattern=Ea,Ra=Ji.convertToNegativePattern=Sa,xa=Ji.isNegativePattern=Ra,Oa=Ji.isPositivePattern=xa,Ca=Ji.getNegativePatterns=Oa,ka=Ji.getPositivePatterns=Ca,Da=Ji.getBaseDirectory=ka,ja=Ji.hasGlobStar=Da,Fa=Ji.endsWithSlashGlobStar=ja,Ma=Ji.isAffectDepthOfReadingPattern=Fa,La=Ji.expandPatternsWithBraceExpansion=Ma,Ha=Ji.expandBraceExpansion=La,Na=Ji.getPatternParts=Ha,Ba=Ji.makeRe=Na,Ji.convertPatternsToRe=Ba);Ji.matchAny=ts;const es=c;var rs,ns,is; +var t=require("zadeh"),e=require("stream"),r=require("os"),n=require("fs"),i=require("buffer"),s=require("util"),o=require("child_process"),a=require("atom"),c=require("path"),u=require("events");function l(t,e,r){Object.defineProperty(t,e,{get:r,enumerable:!0})}function h(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}var f="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{};Object.defineProperty(exports,"__esModule",{value:!0});var p=function(){Jf.add(atom.commands.add("atom-workspace",{"autocomplete-paths:rebuild-cache":()=>{ep()}}));["core.ignoredNames","core.excludeVcsIgnoredPaths","autocomplete-paths.ignoreSubmodules","autocomplete-paths.ignoredNames","autocomplete-paths.ignoredPatterns","autocomplete-paths.maxFileCount"].forEach((t=>{Jf.add(atom.config.observe(t,(()=>{tp&&(tp._pathsCache.updateConfig(),ep())})))}));const t=["autocomplete-paths.scopes"];for(const e in v.OptionScopes)t.push(`autocomplete-paths.${e}`);t.forEach((t=>{Jf.add(atom.config.observe(t,(()=>{tp&&tp.reloadScopes()})))}))};exports.activate=p;var d=function(){np&&clearInterval(np);Jf.dispose(),tp&&(tp.dispose(!0),tp=null);ip&&(ip.destroy(),ip=null)};exports.deactivate=d;var g=function(t){rp=t,op&&ap()};exports.consumeStatusBar=g;var _=cp;exports.getProvider=_,Object.defineProperty(exports,"config",{enumerable:!0,get:function(){return y.config}});var y={};Object.defineProperty(y,"__esModule",{value:!0});var m=void 0;y.config=m;var v={};Object.defineProperty(v,"__esModule",{value:!0});var b=void 0;v.OptionScopes=b;b={enableHtmlSupport:[{scopes:["text.html.basic"],prefixes:["src=['\"]","href=['\"]","name=['\"]"],extensions:["js","png","gif","jpeg","jpg","tiff","html","json","svg"],relative:!0}]},v.OptionScopes=b;const w={normalizeSlashes:{type:"boolean",description:"Replaces backward slashes with forward slashes on windows (if possible)",default:!0},maxFileCount:{type:"number",description:"The maximum amount of files to be handled",default:2e3},suggestionPriority:{type:"number",description:"Suggestion priority of this provider. If set to a number larger than or equal to 1, suggestions will be displayed on top of default suggestions.",default:2},ignoredNames:{type:"boolean",default:!0,description:"Ignore items matched by the `Ignore Names` core option."},ignoreSubmodules:{type:"boolean",default:!1,description:"Ignore submodule directories."},ignoredPatterns:{type:"array",default:[],items:{type:"string"},description:"Ignore additional **glob** or file path patterns."},ignoreBuiltinScopes:{type:"boolean",default:!1,description:"Ignore built-in scopes and use only scopes from user configuration."},scopes:{type:"array",default:[],items:{type:"object",properties:{scopes:{type:["array"],items:{type:"string"}},prefixes:{type:["array"],items:{type:"string"}},extensions:{type:["array"],items:{type:"string"}},relative:{type:"boolean",default:!0},replaceOnInsert:{type:"array",items:{type:"array",items:{type:["string","string"]}}}}}}};m=w,y.config=m;const E=Object.keys(v.OptionScopes);for(let t=0,e=E.length;t=0&&r<=K}}function Rt(t){return function(e){return null==e?void 0:e[t]}}var Pt=Rt("byteLength"),xt=At(Pt),Ct=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var Ot=H?function(t){return G?G(t)&&!_t(t):xt(t)&&Ct.test(I.call(t))}:St(!1),kt=Rt("length");function Dt(t,e){e=function(t){for(var e={},r=t.length,n=0;n":">",'"':""","'":"'","`":"`"},ke=Ce(Oe),De=Ce(te(Oe)),Te=Mt.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},je=/(.)^/,Fe={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Me=/\\|'|\r|\n|\u2028|\u2029/g;function Ie(t){return"\\"+Fe[t]}var Le=/^\s*(\w|\$)+\s*$/;function He(t,e,r){!e&&r&&(e=r),e=se({},e,Mt.templateSettings);var n=RegExp([(e.escape||je).source,(e.interpolate||je).source,(e.evaluate||je).source].join("|")+"|$","g"),i=0,s="__p+='";t.replace(n,(function(e,r,n,o,a){return s+=t.slice(i,a).replace(Me,Ie),i=a+e.length,r?s+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":n?s+="'+\n((__t=("+n+"))==null?'':__t)+\n'":o&&(s+="';\n"+o+"\n__p+='"),e})),s+="';\n";var o,a=e.variable;if(a){if(!Le.test(a))throw new Error("variable is not a bare identifier: "+a)}else s="with(obj||{}){\n"+s+"}\n",a="obj";s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{o=new Function(a,"_",s)}catch(t){throw t.source=s,t}var c=function(t){return o.call(this,t,Mt)};return c.source="function("+a+"){\n"+s+"}",c}function $e(t,e,r){var n=(e=he(e)).length;if(!n)return ht(r)?r.call(t):r;for(var i=0;i1)ze(a,e-1,r,n),i=n.length;else for(var c=0,u=a.length;ce?(n&&(clearTimeout(n),n=null),a=u,o=t.apply(i,s),n||(i=s=null)):n||!1===r.trailing||(n=setTimeout(c,l)),o};return u.cancel=function(){clearTimeout(n),a=0,n=i=s=null},u}function Je(t,e,r){var n,i,s,o,a,c=function(){var u=xe()-i;e>u?n=setTimeout(c,e-u):(n=null,r||(o=t.apply(a,s)),n||(s=a=null))},u=Q((function(u){return a=this,s=u,i=xe(),n||(n=setTimeout(c,e),r&&(o=t.apply(a,s))),o}));return u.cancel=function(){clearTimeout(n),n=s=a=null},u}function tr(t,e){return Ue(e,t)}function er(t){return function(){return!t.apply(this,arguments)}}function rr(){var t=arguments,e=t.length-1;return function(){for(var r=e,n=t[e].apply(this,arguments);r--;)n=t[r].call(this,n);return n}}function nr(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function ir(t,e){var r;return function(){return--t>0&&(r=e.apply(this,arguments)),t<=1&&(e=null),r}}var sr=Ue(ir,2);function or(t,e,r){e=we(e,r);for(var n,i=Tt(t),s=0,o=i.length;s0?0:i-1;s>=0&&s0?o=s>=0?s:Math.max(s+a,o):a=s>=0?Math.min(s+1,a):s+a+1;else if(r&&s&&a)return n[s=r(n,i)]===i?s:-1;if(i!=i)return(s=e(M.call(n,o,a),Et))>=0?s+o:-1;for(s=t>0?o:a-1;s>=0&&s0?0:o-1;for(i||(n=e[s?s[a]:a],a+=t);a>=0&&a=3;return e(t,me(r,i,4),n,s)}}var vr=mr(1),br=mr(-1);function wr(t,e,r){var n=[];return e=we(e,r),_r(t,(function(t,r,i){e(t,r,i)&&n.push(t)})),n}function Er(t,e,r){return wr(t,er(we(e)),r)}function Sr(t,e,r){e=we(e,r);for(var n=!qe(t)&&Tt(t),i=(n||t).length,s=0;s=0}var Pr=Q((function(t,e,r){var n,i;return ht(e)?i=e:(e=he(e),n=e.slice(0,-1),e=e[e.length-1]),yr(t,(function(t){var s=i;if(!s){if(n&&n.length&&(t=fe(t,n)),null==t)return;s=t[e]}return null==s?s:s.apply(t,r)}))}));function xr(t,e){return yr(t,ye(e))}function Cr(t,e){return wr(t,_e(e))}function Or(t,e,r){var n,i,s=-1/0,o=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=qe(t)?t:Zt(t)).length;as&&(s=n);else e=we(e,r),_r(t,(function(t,r,n){((i=e(t,r,n))>o||i===-1/0&&s===-1/0)&&(s=t,o=i)}));return s}function kr(t,e,r){var n,i,s=1/0,o=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=qe(t)?t:Zt(t)).length;an||void 0===r)return 1;if(r1&&(n=me(n,e[1])),e=Nt(t)):(n=Wr,e=ze(e,!1,!1),t=Object(t));for(var i=0,s=e.length;i1&&(r=e[1])):(e=yr(ze(e,!1,!1),String),n=function(t,r){return!Rr(e,r)}),Gr(t,n,r)}));function Vr(t,e,r){return M.call(t,0,Math.max(0,t.length-(null==e||r?1:e)))}function qr(t,e,r){return null==t||t.length<1?null==e||r?void 0:[]:null==e||r?t[0]:Vr(t,t.length-e)}function zr(t,e,r){return M.call(t,null==e||r?1:e)}function Kr(t,e,r){return null==t||t.length<1?null==e||r?void 0:[]:null==e||r?t[t.length-1]:zr(t,Math.max(0,t.length-e))}function Qr(t){return wr(t,Boolean)}function Yr(t,e){return ze(t,e,!1)}var Xr=Q((function(t,e){return e=ze(e,!0,!0),wr(t,(function(t){return!Rr(e,t)}))})),Zr=Q((function(t,e){return Xr(t,e)}));function Jr(t,e,r,n){J(e)||(n=r,r=e,e=!1),null!=r&&(r=we(r,n));for(var i=[],s=[],o=0,a=kt(t);o{const e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")})),dn={};Object.defineProperty(dn,"__esModule",{value:!0});var gn=void 0;dn.default=gn;var _n,yn=u;_n=Un,Un.Minimatch=Vn;var mn={sep:"/"};try{mn=h("path")}catch(t){}var vn,bn=Un.GLOBSTAR=Vn.GLOBSTAR={},wn={};vn=function(t,e){for(var r=[],n=0;n=0&&u>0){if(t===e)return[c,u];for(n=[],s=r.length;l>=0&&!a;)l==c?(n.push(l),c=r.indexOf(t,l+1)):1==n.length?a=[n.pop(),u]:((i=n.pop())=0?c:u;n.length&&(a=[s,o])}return a}Sn=An,An.range=Pn,wn=function(t){if(!t)return[];"{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2));return $n(function(t){return t.split("\\\\").join(xn).split("\\{").join(Cn).split("\\}").join(On).split("\\,").join(kn).split("\\.").join(Dn)}(t),!0).map(jn)};var xn="\0SLASH"+Math.random()+"\0",Cn="\0OPEN"+Math.random()+"\0",On="\0CLOSE"+Math.random()+"\0",kn="\0COMMA"+Math.random()+"\0",Dn="\0PERIOD"+Math.random()+"\0";function Tn(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function jn(t){return t.split(xn).join("\\").split(Cn).join("{").split(On).join("}").split(kn).join(",").split(Dn).join(".")}function Fn(t){if(!t)return[""];var e=[],r=Sn("{","}",t);if(!r)return t.split(",");var n=r.pre,i=r.body,s=r.post,o=n.split(",");o[o.length-1]+="{"+i+"}";var a=Fn(s);return s.length&&(o[o.length-1]+=a.shift(),o.push.apply(o,a)),e.push.apply(e,o),e}function Mn(t){return"{"+t+"}"}function In(t){return/^-?0\d/.test(t)}function Ln(t,e){return t<=e}function Hn(t,e){return t>=e}function $n(t,e){var r=[],n=Sn("{","}",t);if(!n||/\$$/.test(n.pre))return[t];var i,s=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(n.body),o=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(n.body),a=s||o,c=n.body.indexOf(",")>=0;if(!a&&!c)return n.post.match(/,.*\}/)?$n(t=n.pre+"{"+n.body+On+n.post):[t];if(a)i=n.body.split(/\.\./);else if(1===(i=Fn(n.body)).length&&1===(i=$n(i[0],!1).map(Mn)).length)return(h=n.post.length?$n(n.post,!1):[""]).map((function(t){return n.pre+i[0]+t}));var u,l=n.pre,h=n.post.length?$n(n.post,!1):[""];if(a){var f=Tn(i[0]),p=Tn(i[1]),d=Math.max(i[0].length,i[1].length),g=3==i.length?Math.abs(Tn(i[2])):1,_=Ln;p0){var w=new Array(b+1).join("0");v=m<0?"-"+w+v.slice(1):w+v}}u.push(v)}}else u=vn(i,(function(t){return $n(t,!1)}));for(var E=0;E65536)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&"**"===t)return bn;if(""===t)return"";var n,i="",s=!!r.nocase,o=!1,a=[],c=[],u=!1,l=-1,h=-1,f="."===t.charAt(0)?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",p=this;function d(){if(n){switch(n){case"*":i+="[^/]*?",s=!0;break;case"?":i+="[^/]",s=!0;break;default:i+="\\"+n}p.debug("clearStateChar %j %j",n,i),n=!1}}for(var g,_=0,y=t.length;_-1;A--){var R=c[A],P=i.slice(0,R.reStart),x=i.slice(R.reStart,R.reEnd-8),C=i.slice(R.reEnd-8,R.reEnd),O=i.slice(R.reEnd);C+=O;var k=P.split("(").length-1,D=O;for(_=0;_=0&&!(n=t[i]);i--);for(i=0;i>> no match, partial?",t,h,e,f),h!==o))}if("string"==typeof u?(c=n.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,c)):(c=l.match(u),this.debug("pattern match",u,l,c)),!c)return!1}if(i===o&&s===a)return!0;if(i===o)return r;if(s===a)return i===o-1&&""===t[i];throw new Error("wtf?")};var Kn=Hf(_n),Qn=a,Yn=c,Xn={};Object.defineProperty(Xn,"__esModule",{value:!0});var Zn=oi;Xn.merge=Zn;var Jn=ai;Xn.unique=Jn;var ti=function(t,e){return oi(t,e),ai(t)};Xn.union=ti;var ei=function(t){return String(t).replace(/(\n)\s+/g,"$1")};Xn.dedent=ei;var ri=(si=void 0,Xn.exec=si);Xn.MAX_STRING_LENGTH=ri;var ni=o,ii=i;var si=(0,s.promisify)(ni.exec);Xn.exec=si;function oi(t,e){e.length&&Array.prototype.push.apply(t,e)}function ai(t){return[...new Set(t)]}ri=ii.constants.MAX_STRING_LENGTH,Xn.MAX_STRING_LENGTH=ri;var ci,ui,li,hi,fi,pi,di={};Object.defineProperty(di,"__esModule",{value:!0});var gi,_i=c,yi=n,mi={"{":"}","(":")","[":"]"},vi=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,bi=/[‘“!#$%&+^<=>`]/,wi=function(t){return!1===function(t){return"string"!=typeof t||function(t,e){if("string"!=typeof t||""===t)return!1;if(function(t){if("string"!=typeof t||""===t)return!1;for(var e;e=/(\\).|([@?!+*]\(.*\))/g.exec(t);){if(e[2])return!0;t=t.slice(e.index+e[0].length)}return!1}(t))return!0;for(var r,n=vi;r=n.exec(t);){if(r[2])return!0;var i=r.index+r[0].length,s=r[1],o=s?mi[s]:null;if(s&&o){var a=t.indexOf(o,i);-1!==a&&(i=a+1)}t=t.slice(i)}return!1}(t)||bi.test(t)}(t)},Ei=((gi={exports:{}}).exports=function(t){var e=void 0;e="string"==typeof t?[t]:t.raw;for(var r="",n=0;n{return!(/^\s*$/.test(t)||(e=t,"#"===e[0]));var e})).map((t=>function(t){return t.replace(/^\s+/,"")}(function(t){return/\\\s+$/.test(t)?t.replace(/\\(\s+)$/,"$1"):t.replace(/\s+$/,"")}(t)))),n=r.length,i=new Array(n);for(let t=0;t[].concat(t,e)),[])};Mi.flatten=Li,Ii=function(t,e){const r=[[]];let n=0;for(const i of t)e(i)?(n++,r[n]=[]):r[n].push(i);return r},Mi.splitWhen=Ii;var Hi=Mi;ji.array=Mi;var $i={};Object.defineProperty($i,"__esModule",{value:!0});var Ni=void 0;$i.isEnoentCodeError=Ni,Ni=function(t){return"ENOENT"===t.code},$i.isEnoentCodeError=Ni;var Bi=$i;ji.errno=$i;var Wi={};Object.defineProperty(Wi,"__esModule",{value:!0});var Gi=void 0;Wi.createDirentFromStats=Gi;class Ui{constructor(t,e){this.name=t,this.isBlockDevice=e.isBlockDevice.bind(e),this.isCharacterDevice=e.isCharacterDevice.bind(e),this.isDirectory=e.isDirectory.bind(e),this.isFIFO=e.isFIFO.bind(e),this.isFile=e.isFile.bind(e),this.isSocket=e.isSocket.bind(e),this.isSymbolicLink=e.isSymbolicLink.bind(e)}}Gi=function(t,e){return new Ui(t,e)},Wi.createDirentFromStats=Gi;var Vi=Wi;ji.fs=Wi;var qi={};Object.defineProperty(qi,"__esModule",{value:!0});var zi=(Yi=void 0,Xi=qi.unixify=Yi,Zi=qi.makeAbsolute=Xi,qi.escape=Zi);qi.removeLeadingDotSegment=zi;const Ki=c,Qi=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;var Yi=function(t){return t.replace(/\\/g,"/")};qi.unixify=Yi;var Xi=function(t,e){return Ki.resolve(t,e)};qi.makeAbsolute=Xi;var Zi=function(t){return t.replace(Qi,"\\$2")};qi.escape=Zi,zi=function(t){if("."===t.charAt(0)){const e=t.charAt(1);if("/"===e||"\\"===e)return t.slice(2)}return t},qi.removeLeadingDotSegment=zi;var Ji=qi;ji.path=qi;var ts={};Object.defineProperty(ts,"__esModule",{value:!0});var es=(ba=void 0,Ea=ts.isStaticPattern=ba,Sa=ts.isDynamicPattern=Ea,Aa=ts.convertToPositivePattern=Sa,Pa=ts.convertToNegativePattern=Aa,Ca=ts.isNegativePattern=Pa,Oa=ts.isPositivePattern=Ca,ka=ts.getNegativePatterns=Oa,Da=ts.getPositivePatterns=ka,Ta=ts.getBaseDirectory=Da,Fa=ts.hasGlobStar=Ta,Ma=ts.endsWithSlashGlobStar=Fa,Ia=ts.isAffectDepthOfReadingPattern=Ma,Ha=ts.expandPatternsWithBraceExpansion=Ia,$a=ts.expandBraceExpansion=Ha,Ba=ts.getPatternParts=$a,Wa=ts.makeRe=Ba,ts.convertPatternsToRe=Wa);ts.matchAny=es;const rs=c;var ns,is,ss; /*! * is-extglob * * Copyright (c) 2014-2016, Jon Schlinkert. * Licensed under the MIT License. */ -is=function(t){if("string"!=typeof t||""===t)return!1;for(var e;e=/(\\).|([@?!+*]\(.*\))/g.exec(t);){if(e[2])return!0;t=t.slice(e.index+e[0].length)}return!1};var ss={"{":"}","(":")","[":"]"},os=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,as=/\\(.)|(^!|[*?{}()[\]]|\(\?)/;ns=function(t,e){if("string"!=typeof t||""===t)return!1;if(is(t))return!0;var r,n=os;for(e&&!1===e.strict&&(n=as);r=n.exec(t);){if(r[2])return!0;var i=r.index+r[0].length,s=r[1],o=s?ss[s]:null;if(s&&o){var a=t.indexOf(o,i);-1!==a&&(i=a+1)}t=t.slice(i)}return!1};var cs=c.posix.dirname,us="win32"===r.platform(),ls=/\\/g,hs=/[\{\[].*[\}\]]$/,fs=/(^|[^\\])([\{\[]|\([^\)]+$)/,ps=/\\([\!\*\?\|\[\]\(\)\{\}])/g;rs=function(t,e){Object.assign({flipBackslashes:!0},e).flipBackslashes&&us&&t.indexOf("/")<0&&(t=t.replace(ls,"/")),hs.test(t)&&(t+="/"),t+="a";do{t=cs(t)}while(ns(t)||fs.test(t));return t.replace(ps,"$1")};var ds={};const gs=s;var _s,ys={},ms=t=>"number"==typeof t?Number.isInteger(t):"string"==typeof t&&""!==t.trim()&&Number.isInteger(Number(t)),vs=t=>"brace"===t.type&&(!(!0!==t.invalid&&!t.dollar)||(t.commas>>0+t.ranges>>0==0||!0!==t.open||!0!==t.close)&&(t.invalid=!0,!0)),bs=t=>t.reduce(((t,e)=>("text"===e.type&&t.push(e.value),"range"===e.type&&(e.type="text"),t)),[]),ws=(...t)=>{const e=[],r=t=>{for(let n=0;n{let r=(t,n={})=>{let i=e.escapeInvalid&&vs(n),s=!0===t.invalid&&!0===e.escapeInvalid,o="";if(t.value)return(i||s)&&(t=>"open"===t.type||"close"===t.type||!0===t.open||!0===t.close)(t)?"\\"+t.value:t.value;if(t.value)return t.value;if(t.nodes)for(let e of t.nodes)o+=r(e);return o};return r(t)};var Es={},Ss={};const As=s;var Rs,Ps={};Rs=function(t){return"number"==typeof t?t-t==0:"string"==typeof t&&""!==t.trim()&&(Number.isFinite?Number.isFinite(+t):isFinite(+t))};const xs=(t,e,r)=>{if(!1===Rs(t))throw new TypeError("toRegexRange: expected the first argument to be a number");if(void 0===e||t===e)return String(t);if(!1===Rs(e))throw new TypeError("toRegexRange: expected the second argument to be a number.");let n={relaxZeros:!0,...r};"boolean"==typeof n.strictZeros&&(n.relaxZeros=!1===n.strictZeros);let i=t+":"+e+"="+String(n.relaxZeros)+String(n.shorthand)+String(n.capture)+String(n.wrap);if(xs.cache.hasOwnProperty(i))return xs.cache[i].result;let s=Math.min(t,e),o=Math.max(t,e);if(1===Math.abs(s-o)){let r=t+"|"+e;return n.capture?`(${r})`:!1===n.wrap?r:`(?:${r})`}let a=Ls(t)||Ls(e),c={min:t,max:e,a:s,b:o},u=[],l=[];if(a&&(c.isPadded=a,c.maxLen=String(c.max).length),s<0){l=Cs(o<0?Math.abs(o):1,Math.abs(s),c,n),s=c.a=0}return o>=0&&(u=Cs(s,o,c,n)),c.negatives=l,c.positives=u,c.result=function(t,e,r){let n=ks(t,e,"-",!1,r)||[],i=ks(e,t,"",!1,r)||[],s=ks(t,e,"-?",!0,r)||[];return n.concat(s).concat(i).join("|")}(l,u,n),!0===n.capture?c.result=`(${c.result})`:!1!==n.wrap&&u.length+l.length>1&&(c.result=`(?:${c.result})`),xs.cache[i]=c,c.result};function Os(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let n=function(t,e){let r=[];for(let n=0;n1&&i.count.pop(),i.count.push(c.count[0]),i.string=i.pattern+Ms(i.count),a=e+1)}return o}function ks(t,e,r,n,i){let s=[];for(let i of t){let{string:t}=i;n||Ts(e,"string",t)||s.push(r+t),n&&Ts(e,"string",t)&&s.push(r+t)}return s}function Ds(t,e){return t>e?1:e>t?-1:0}function Ts(t,e,r){return t.some((t=>t[e]===r))}function js(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function Fs(t,e){return t-t%Math.pow(10,e)}function Ms(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function Is(t,e,r){return`[${t}${e-t==1?"":"-"}${e}]`}function Ls(t){return/^-?(0+)\d/.test(t)}function Hs(t,e,r){if(!e.isPadded)return t;let n=Math.abs(e.maxLen-String(t).length),i=!1!==r.relaxZeros;switch(n){case 0:return"";case 1:return i?"0?":"0";case 2:return i?"0{0,2}":"00";default:return i?`0{0,${n}}`:`0{${n}}`}}xs.cache={},xs.clearCache=()=>xs.cache={},Ps=xs;const $s=t=>null!==t&&"object"==typeof t&&!Array.isArray(t),Ns=t=>"number"==typeof t||"string"==typeof t&&""!==t,Bs=t=>Number.isInteger(+t),Ws=t=>{let e=`${t}`,r=-1;if("-"===e[0]&&(e=e.slice(1)),"0"===e)return!1;for(;"0"===e[++r];);return r>0},Gs=(t,e,r)=>{if(e>0){let r="-"===t[0]?"-":"";r&&(t=t.slice(1)),t=r+t.padStart(r?e-1:e,"0")}return!1===r?String(t):t},Us=(t,e)=>{let r="-"===t[0]?"-":"";for(r&&(t=t.slice(1),e--);t.length{if(r)return Ps(t,e,{wrap:!1,...n});let i=String.fromCharCode(t);return t===e?i:`[${i}-${String.fromCharCode(e)}]`},qs=(t,e,r)=>{if(Array.isArray(t)){let e=!0===r.wrap,n=r.capture?"":"?:";return e?`(${n}${t.join("|")})`:t.join("|")}return Ps(t,e,r)},zs=(...t)=>new RangeError("Invalid range arguments: "+As.inspect(...t)),Ks=(t,e,r)=>{if(!0===r.strictRanges)throw zs([t,e]);return[]},Qs=(t,e,r=1,n={})=>{let i=Number(t),s=Number(e);if(!Number.isInteger(i)||!Number.isInteger(s)){if(!0===n.strictRanges)throw zs([t,e]);return[]}0===i&&(i=0),0===s&&(s=0);let o=i>s,a=String(t),c=String(e),u=String(r);r=Math.max(Math.abs(r),1);let l=Ws(a)||Ws(c)||Ws(u),h=l?Math.max(a.length,c.length,u.length):0,f=!1===l&&!1===((t,e,r)=>"string"==typeof t||"string"==typeof e||!0===r.stringify)(t,e,n),p=n.transform||(t=>e=>!0===t?Number(e):String(e))(f);if(n.toRegex&&1===r)return Vs(Us(t,h),Us(e,h),!0,n);let d={negatives:[],positives:[]},g=[],_=0;for(;o?i>=s:i<=s;)!0===n.toRegex&&r>1?d[(y=i)<0?"negatives":"positives"].push(Math.abs(y)):g.push(Gs(p(i,_),h,f)),i=o?i-r:i+r,_++;var y;return!0===n.toRegex?r>1?((t,e)=>{t.negatives.sort(((t,e)=>te?1:0)),t.positives.sort(((t,e)=>te?1:0));let r,n=e.capture?"":"?:",i="",s="";return t.positives.length&&(i=t.positives.join("|")),t.negatives.length&&(s=`-(${n}${t.negatives.join("|")})`),r=i&&s?`${i}|${s}`:i||s,e.wrap?`(${n}${r})`:r})(d,n):qs(g,null,{wrap:!1,...n}):g},Ys=(t,e,r,n={})=>{if(null==e&&Ns(t))return[t];if(!Ns(t)||!Ns(e))return Ks(t,e,n);if("function"==typeof r)return Ys(t,e,1,{transform:r});if($s(r))return Ys(t,e,0,r);let i={...n};return!0===i.capture&&(i.wrap=!0),r=r||i.step||1,Bs(r)?Bs(t)&&Bs(e)?Qs(t,e,r,i):((t,e,r=1,n={})=>{if(!Bs(t)&&t.length>1||!Bs(e)&&e.length>1)return Ks(t,e,n);let i=n.transform||(t=>String.fromCharCode(t)),s=`${t}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,c=Math.min(s,o),u=Math.max(s,o);if(n.toRegex&&1===r)return Vs(c,u,!1,n);let l=[],h=0;for(;a?s>=o:s<=o;)l.push(i(s,h)),s=a?s-r:s+r,h++;return!0===n.toRegex?qs(l,null,{wrap:!1,options:n}):l})(t,e,Math.max(Math.abs(r),1),i):null==r||$s(r)?Ys(t,e,1,r):((t,e)=>{if(!0===e.strictRanges)throw new TypeError(`Expected step "${t}" to be a number`);return[]})(r,i)};Ss=Ys;Es=(t,e={})=>{let r=(t,n={})=>{let i=vs(n),s=!0===t.invalid&&!0===e.escapeInvalid,o=!0===i||!0===s,a=!0===e.escapeInvalid?"\\":"",c="";if(!0===t.isOpen)return a+t.value;if(!0===t.isClose)return a+t.value;if("open"===t.type)return o?a+t.value:"(";if("close"===t.type)return o?a+t.value:")";if("comma"===t.type)return"comma"===t.prev.type?"":o?t.value:"|";if(t.value)return t.value;if(t.nodes&&t.ranges>0){let r=bs(t.nodes),n=Ss(...r,{...e,wrap:!1,toRegex:!0});if(0!==n.length)return r.length>1&&n.length>1?`(${n})`:n}if(t.nodes)for(let e of t.nodes)c+=r(e,t);return c};return r(t)};var Xs={};const Zs=(t="",e="",r=!1)=>{let n=[];if(t=[].concat(t),!(e=[].concat(e)).length)return t;if(!t.length)return r?ws(e).map((t=>`{${t}}`)):e;for(let i of t)if(Array.isArray(i))for(let t of i)n.push(Zs(t,e,r));else for(let t of e)!0===r&&"string"==typeof t&&(t=`{${t}}`),n.push(Array.isArray(t)?Zs(i,t,r):i+t);return ws(n)};Xs=(t,e={})=>{let r=void 0===e.rangeLimit?1e3:e.rangeLimit,n=(t,i={})=>{t.queue=[];let s=i,o=i.queue;for(;"brace"!==s.type&&"root"!==s.type&&s.parent;)s=s.parent,o=s.queue;if(t.invalid||t.dollar)return void o.push(Zs(o.pop(),_s(t,e)));if("brace"===t.type&&!0!==t.invalid&&2===t.nodes.length)return void o.push(Zs(o.pop(),["{}"]));if(t.nodes&&t.ranges>0){let n=bs(t.nodes);if(((t,e,r=1,n)=>!1!==n&&!(!ms(t)||!ms(e))&&(Number(e)-Number(t))/Number(r)>=n)(...n,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let i=Ss(...n,e);return 0===i.length&&(i=_s(t,e)),o.push(Zs(o.pop(),i)),void(t.nodes=[])}let a=(t=>"brace"===t.type&&t.commas>>0+t.ranges>>0==0&&(t.invalid=!0,!0))(t),c=t.queue,u=t;for(;"brace"!==u.type&&"root"!==u.type&&u.parent;)u=u.parent,c=u.queue;for(let e=0;e",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:"\t",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\ufeff"};const{MAX_LENGTH:eo,CHAR_BACKSLASH:ro,CHAR_BACKTICK:no,CHAR_COMMA:io,CHAR_DOT:so,CHAR_LEFT_PARENTHESES:oo,CHAR_RIGHT_PARENTHESES:ao,CHAR_LEFT_CURLY_BRACE:co,CHAR_RIGHT_CURLY_BRACE:uo,CHAR_LEFT_SQUARE_BRACKET:lo,CHAR_RIGHT_SQUARE_BRACKET:ho,CHAR_DOUBLE_QUOTE:fo,CHAR_SINGLE_QUOTE:po,CHAR_NO_BREAK_SPACE:go,CHAR_ZERO_WIDTH_NOBREAK_SPACE:_o}=Js;to=(t,e={})=>{if("string"!=typeof t)throw new TypeError("Expected a string");let r=e||{},n="number"==typeof r.maxLength?Math.min(eo,r.maxLength):eo;if(t.length>n)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${n})`);let i,s={type:"root",input:t,nodes:[]},o=[s],a=s,c=s,u=0,l=t.length,h=0,f=0;const p=()=>t[h++],d=t=>{if("text"===t.type&&"dot"===c.type&&(c.type="text"),!c||"text"!==c.type||"text"!==t.type)return a.nodes.push(t),t.parent=a,t.prev=c,c=t,t;c.value+=t.value};for(d({type:"bos"});h0){if(a.ranges>0){a.ranges=0;let t=a.nodes.shift();a.nodes=[t,{type:"text",value:_s(a)}]}d({type:"comma",value:i}),a.commas++}else if(i===so&&f>0&&0===a.commas){let t=a.nodes;if(0===f||0===t.length){d({type:"text",value:i});continue}if("dot"===c.type){if(a.range=[],c.value+=i,c.type="range",3!==a.nodes.length&&5!==a.nodes.length){a.invalid=!0,a.ranges=0,c.type="text";continue}a.ranges++,a.args=[];continue}if("range"===c.type){t.pop();let e=t[t.length-1];e.value+=c.value+i,c=e,a.ranges--;continue}d({type:"dot",value:i})}else d({type:"text",value:i});else{if("brace"!==a.type){d({type:"text",value:i});continue}let t="close";a=o.pop(),a.close=!0,d({type:t,value:i}),f--,a=o[o.length-1]}else{f++;let t=c.value&&"$"===c.value.slice(-1)||!0===a.dollar;a=d({type:"brace",open:!0,close:!1,dollar:t,depth:f,commas:0,ranges:0,nodes:[]}),o.push(a),d({type:"open",value:i})}else{let t,r=i;for(!0!==e.keepQuotes&&(i="");h{t.nodes||("open"===t.type&&(t.isOpen=!0),"close"===t.type&&(t.isClose=!0),t.nodes||(t.type="text"),t.invalid=!0)}));let t=o[o.length-1],e=t.nodes.indexOf(a);t.nodes.splice(e,1,...a.nodes)}}while(o.length>0);return d({type:"eos"}),s};const yo=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let t=yo.create(n,e);Array.isArray(t)?r.push(...t):r.push(t)}else r=[].concat(yo.create(t,e));return e&&!0===e.expand&&!0===e.nodupes&&(r=[...new Set(r)]),r};yo.parse=(t,e={})=>to(t,e),yo.stringify=(t,e={})=>_s("string"==typeof t?yo.parse(t,e):t,e),yo.compile=(t,e={})=>("string"==typeof t&&(t=yo.parse(t,e)),Es(t,e)),yo.expand=(t,e={})=>{"string"==typeof t&&(t=yo.parse(t,e));let r=Xs(t,e);return!0===e.noempty&&(r=r.filter(Boolean)),!0===e.nodupes&&(r=[...new Set(r)]),r},yo.create=(t,e={})=>""===t||t.length<3?[t]:!0!==e.expand?yo.compile(t,e):yo.expand(t,e),ys=yo;var mo={};const vo=c;var bo={};const wo=c,Eo="win32"===process.platform;var So={};const Ao=c,Ro={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:"(?=.)",QMARK:"[^/]",END_ANCHOR:"(?:\\/|$)",DOTS_SLASH:"\\.{1,2}(?:\\/|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|\\/)\\.{1,2}(?:\\/|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:\\/|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:\\/|$))",QMARK_NO_DOT:"[^.\\/]",STAR:"[^/]*?",START_ANCHOR:"(?:^|\\/)"},Po={...Ro,SLASH_LITERAL:"[\\\\/]",QMARK:"[^\\\\/]",STAR:"[^\\\\/]*?",DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)"};So={MAX_LENGTH:65536,POSIX_REGEX_SOURCE:{alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"},REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:Ao.sep,extglobChars:t=>({"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}),globChars:t=>!0===t?Po:Ro};const{REGEX_BACKSLASH:xo,REGEX_REMOVE_BACKSLASH:Oo,REGEX_SPECIAL_CHARS:Co,REGEX_SPECIAL_CHARS_GLOBAL:ko}=So;var Do=t=>t.replace(ko,"\\$1"),To=t=>t.replace(xo,"/"),jo=t=>t.replace(Oo,(t=>"\\"===t?"":t)),Fo=()=>{const t=process.version.slice(1).split(".").map(Number);return 3===t.length&&t[0]>=9||8===t[0]&&t[1]>=10},Mo=t=>t&&"boolean"==typeof t.windows?t.windows:!0===Eo||"\\"===wo.sep,Io=(t,e,r)=>{const n=t.lastIndexOf(e,r);return-1===n?t:"\\"===t[n-1]?Io(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`},Lo=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};const{CHAR_ASTERISK:Ho,CHAR_AT:$o,CHAR_BACKWARD_SLASH:No,CHAR_COMMA:Bo,CHAR_DOT:Wo,CHAR_EXCLAMATION_MARK:Go,CHAR_FORWARD_SLASH:Uo,CHAR_LEFT_CURLY_BRACE:Vo,CHAR_LEFT_PARENTHESES:qo,CHAR_LEFT_SQUARE_BRACKET:zo,CHAR_PLUS:Ko,CHAR_QUESTION_MARK:Qo,CHAR_RIGHT_CURLY_BRACE:Yo,CHAR_RIGHT_PARENTHESES:Xo,CHAR_RIGHT_SQUARE_BRACKET:Zo}=So,Jo=t=>t===Uo||t===No,ta=t=>{!0!==t.isPrefix&&(t.depth=t.isGlobstar?1/0:1)};bo=(t,e)=>{const r=e||{},n=t.length-1,i=!0===r.parts||!0===r.scanToEnd,s=[],o=[],a=[];let c,u,l=t,h=-1,f=0,p=0,d=!1,g=!1,_=!1,y=!1,m=!1,v=!1,b=!1,w=!1,E=!1,S=0,A={value:"",depth:0,isGlob:!1};const R=()=>h>=n,P=()=>(c=u,l.charCodeAt(++h));for(;h0&&(O=l.slice(0,f),l=l.slice(f),p-=f),x&&!0===_&&p>0?(x=l.slice(0,p),C=l.slice(p)):!0===_?(x="",C=l):x=l,x&&""!==x&&"/"!==x&&x!==l&&Jo(x.charCodeAt(x.length-1))&&(x=x.slice(0,-1)),!0===r.unescape&&(C&&(C=jo(C)),x&&!0===b&&(x=jo(x)));const k={prefix:O,input:t,start:f,base:x,glob:C,isBrace:d,isBracket:g,isGlob:_,isExtglob:y,isGlobstar:m,negated:w};if(!0===r.tokens&&(k.maxDepth=0,Jo(u)||o.push(A),k.tokens=o),!0===r.parts||!0===r.tokens){let e;for(let n=0;n{if("function"==typeof e.expandRange)return e.expandRange(...t,e);t.sort();const r=`[${t.join("-")}]`;try{new RegExp(r)}catch(e){return t.map((t=>Do(t))).join("..")}return r},ca=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,ua=(t,e)=>{if("string"!=typeof t)throw new TypeError("Expected a string");t=oa[t]||t;const r={...e},n="number"==typeof r.maxLength?Math.min(ra,r.maxLength):ra;let i=t.length;if(i>n)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${n}`);const s={type:"bos",value:"",output:r.prepend||""},o=[s],a=r.capture?"":"?:",c=Mo(e),u=So.globChars(c),l=So.extglobChars(u),{DOT_LITERAL:h,PLUS_LITERAL:f,SLASH_LITERAL:p,ONE_CHAR:d,DOTS_SLASH:g,NO_DOT:_,NO_DOT_SLASH:y,NO_DOTS_SLASH:m,QMARK:v,QMARK_NO_DOT:b,STAR:w,START_ANCHOR:E}=u,S=t=>`(${a}(?:(?!${E}${t.dot?g:h}).)*?)`,A=r.dot?"":_,R=r.dot?v:b;let P=!0===r.bash?S(r):w;r.capture&&(P=`(${P})`),"boolean"==typeof r.noext&&(r.noextglob=r.noext);const x={input:t,index:-1,start:0,dot:!0===r.dot,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};t=Lo(t,x),i=t.length;const O=[],C=[],k=[];let D,T=s;const j=()=>x.index===i-1,F=x.peek=(e=1)=>t[x.index+e],M=x.advance=()=>t[++x.index],I=()=>t.slice(x.index+1),L=(t="",e=0)=>{x.consumed+=t,x.index+=e},H=t=>{x.output+=null!=t.output?t.output:t.value,L(t.value)},$=()=>{let t=1;for(;"!"===F()&&("("!==F(2)||"?"===F(3));)M(),x.start++,t++;return t%2!=0&&(x.negated=!0,x.start++,!0)},N=t=>{x[t]++,k.push(t)},B=t=>{x[t]--,k.pop()},W=t=>{if("globstar"===T.type){const e=x.braces>0&&("comma"===t.type||"brace"===t.type),r=!0===t.extglob||O.length&&("pipe"===t.type||"paren"===t.type);"slash"===t.type||"paren"===t.type||e||r||(x.output=x.output.slice(0,-T.output.length),T.type="star",T.value="*",T.output=P,x.output+=T.output)}if(O.length&&"paren"!==t.type&&!l[t.value]&&(O[O.length-1].inner+=t.value),(t.value||t.output)&&H(t),T&&"text"===T.type&&"text"===t.type)return T.value+=t.value,void(T.output=(T.output||"")+t.value);t.prev=T,o.push(t),T=t},G=(t,e)=>{const n={...l[e],conditions:1,inner:""};n.prev=T,n.parens=x.parens,n.output=x.output;const i=(r.capture?"(":"")+n.open;N("parens"),W({type:t,value:e,output:x.output?"":d}),W({type:"paren",extglob:!0,value:M(),output:i}),O.push(n)},U=t=>{let e=t.close+(r.capture?")":"");if("negate"===t.type){let n=P;t.inner&&t.inner.length>1&&t.inner.includes("/")&&(n=S(r)),(n!==P||j()||/^\)+$/.test(I()))&&(e=t.close=`)$))${n}`),"bos"===t.prev.type&&(x.negatedExtglob=!0)}W({type:"paren",extglob:!0,value:D,output:e}),B("parens")};if(!1!==r.fastpaths&&!/(^[*!]|[/()[\]{}"])/.test(t)){let n=!1,i=t.replace(sa,((t,e,r,i,s,o)=>"\\"===i?(n=!0,t):"?"===i?e?e+i+(s?v.repeat(s.length):""):0===o?R+(s?v.repeat(s.length):""):v.repeat(r.length):"."===i?h.repeat(r.length):"*"===i?e?e+i+(s?P:""):P:e?t:`\\${t}`));return!0===n&&(i=!0===r.unescape?i.replace(/\\/g,""):i.replace(/\\+/g,(t=>t.length%2==0?"\\\\":t?"\\":""))),i===t&&!0===r.contains?(x.output=t,x):(x.output=((t,e={},r={})=>{let n=`${r.contains?"":"^"}(?:${t})${r.contains?"":"$"}`;return!0===e.negated&&(n=`(?:^(?!${n}).*$)`),n})(i,x,e),x)}for(;!j();){if(D=M(),"\0"===D)continue;if("\\"===D){const t=F();if("/"===t&&!0!==r.bash)continue;if("."===t||";"===t)continue;if(!t){D+="\\",W({type:"text",value:D});continue}const e=/^\\+/.exec(I());let n=0;if(e&&e[0].length>2&&(n=e[0].length,x.index+=n,n%2!=0&&(D+="\\")),!0===r.unescape?D=M()||"":D+=M()||"",0===x.brackets){W({type:"text",value:D});continue}}if(x.brackets>0&&("]"!==D||"["===T.value||"[^"===T.value)){if(!1!==r.posix&&":"===D){const t=T.value.slice(1);if(t.includes("[")&&(T.posix=!0,t.includes(":"))){const t=T.value.lastIndexOf("["),e=T.value.slice(0,t),r=T.value.slice(t+2),n=na[r];if(n){T.value=e+n,x.backtrack=!0,M(),s.output||1!==o.indexOf(T)||(s.output=d);continue}}}("["===D&&":"!==F()||"-"===D&&"]"===F())&&(D=`\\${D}`),"]"!==D||"["!==T.value&&"[^"!==T.value||(D=`\\${D}`),!0===r.posix&&"!"===D&&"["===T.value&&(D="^"),T.value+=D,H({value:D});continue}if(1===x.quotes&&'"'!==D){D=Do(D),T.value+=D,H({value:D});continue}if('"'===D){x.quotes=1===x.quotes?0:1,!0===r.keepQuotes&&W({type:"text",value:D});continue}if("("===D){N("parens"),W({type:"paren",value:D});continue}if(")"===D){if(0===x.parens&&!0===r.strictBrackets)throw new SyntaxError(ca("opening","("));const t=O[O.length-1];if(t&&x.parens===t.parens+1){U(O.pop());continue}W({type:"paren",value:D,output:x.parens?")":"\\)"}),B("parens");continue}if("["===D){if(!0!==r.nobracket&&I().includes("]"))N("brackets");else{if(!0!==r.nobracket&&!0===r.strictBrackets)throw new SyntaxError(ca("closing","]"));D=`\\${D}`}W({type:"bracket",value:D});continue}if("]"===D){if(!0===r.nobracket||T&&"bracket"===T.type&&1===T.value.length){W({type:"text",value:D,output:`\\${D}`});continue}if(0===x.brackets){if(!0===r.strictBrackets)throw new SyntaxError(ca("opening","["));W({type:"text",value:D,output:`\\${D}`});continue}B("brackets");const t=T.value.slice(1);if(!0===T.posix||"^"!==t[0]||t.includes("/")||(D=`/${D}`),T.value+=D,H({value:D}),!1===r.literalBrackets||(V=t,Co.test(V)))continue;const e=Do(T.value);if(x.output=x.output.slice(0,-T.value.length),!0===r.literalBrackets){x.output+=e,T.value=e;continue}T.value=`(${a}${e}|${T.value})`,x.output+=T.value;continue}if("{"===D&&!0!==r.nobrace){N("braces");const t={type:"brace",value:D,output:"(",outputIndex:x.output.length,tokensIndex:x.tokens.length};C.push(t),W(t);continue}if("}"===D){const t=C[C.length-1];if(!0===r.nobrace||!t){W({type:"text",value:D,output:D});continue}let e=")";if(!0===t.dots){const t=o.slice(),n=[];for(let e=t.length-1;e>=0&&(o.pop(),"brace"!==t[e].type);e--)"dots"!==t[e].type&&n.unshift(t[e].value);e=aa(n,r),x.backtrack=!0}if(!0!==t.comma&&!0!==t.dots){const r=x.output.slice(0,t.outputIndex),n=x.tokens.slice(t.tokensIndex);t.value=t.output="\\{",D=e="\\}",x.output=r;for(const t of n)x.output+=t.output||t.value}W({type:"brace",value:D,output:e}),B("braces"),C.pop();continue}if("|"===D){O.length>0&&O[O.length-1].conditions++,W({type:"text",value:D});continue}if(","===D){let t=D;const e=C[C.length-1];e&&"braces"===k[k.length-1]&&(e.comma=!0,t="|"),W({type:"comma",value:D,output:t});continue}if("/"===D){if("dot"===T.type&&x.index===x.start+1){x.start=x.index+1,x.consumed="",x.output="",o.pop(),T=s;continue}W({type:"slash",value:D,output:p});continue}if("."===D){if(x.braces>0&&"dot"===T.type){"."===T.value&&(T.output=h);const t=C[C.length-1];T.type="dots",T.output+=D,T.value+=D,t.dots=!0;continue}if(x.braces+x.parens===0&&"bos"!==T.type&&"slash"!==T.type){W({type:"text",value:D,output:h});continue}W({type:"dot",value:D,output:h});continue}if("?"===D){if(!(T&&"("===T.value)&&!0!==r.noextglob&&"("===F()&&"?"!==F(2)){G("qmark",D);continue}if(T&&"paren"===T.type){const t=F();let e=D;if("<"===t&&!Fo())throw new Error("Node.js v10 or higher is required for regex lookbehinds");("("===T.value&&!/[!=<:]/.test(t)||"<"===t&&!/<([!=]|\w+>)/.test(I()))&&(e=`\\${D}`),W({type:"text",value:D,output:e});continue}if(!0!==r.dot&&("slash"===T.type||"bos"===T.type)){W({type:"qmark",value:D,output:b});continue}W({type:"qmark",value:D,output:v});continue}if("!"===D){if(!0!==r.noextglob&&"("===F()&&("?"!==F(2)||!/[!=<:]/.test(F(3)))){G("negate",D);continue}if(!0!==r.nonegate&&0===x.index){$();continue}}if("+"===D){if(!0!==r.noextglob&&"("===F()&&"?"!==F(2)){G("plus",D);continue}if(T&&"("===T.value||!1===r.regex){W({type:"plus",value:D,output:f});continue}if(T&&("bracket"===T.type||"paren"===T.type||"brace"===T.type)||x.parens>0){W({type:"plus",value:D});continue}W({type:"plus",value:f});continue}if("@"===D){if(!0!==r.noextglob&&"("===F()&&"?"!==F(2)){W({type:"at",extglob:!0,value:D,output:""});continue}W({type:"text",value:D});continue}if("*"!==D){"$"!==D&&"^"!==D||(D=`\\${D}`);const t=ia.exec(I());t&&(D+=t[0],x.index+=t[0].length),W({type:"text",value:D});continue}if(T&&("globstar"===T.type||!0===T.star)){T.type="star",T.star=!0,T.value+=D,T.output=P,x.backtrack=!0,x.globstar=!0,L(D);continue}let e=I();if(!0!==r.noextglob&&/^\([^?]/.test(e)){G("star",D);continue}if("star"===T.type){if(!0===r.noglobstar){L(D);continue}const n=T.prev,i=n.prev,s="slash"===n.type||"bos"===n.type,o=i&&("star"===i.type||"globstar"===i.type);if(!0===r.bash&&(!s||e[0]&&"/"!==e[0])){W({type:"star",value:D,output:""});continue}const a=x.braces>0&&("comma"===n.type||"brace"===n.type),c=O.length&&("pipe"===n.type||"paren"===n.type);if(!s&&"paren"!==n.type&&!a&&!c){W({type:"star",value:D,output:""});continue}for(;"/**"===e.slice(0,3);){const r=t[x.index+4];if(r&&"/"!==r)break;e=e.slice(3),L("/**",3)}if("bos"===n.type&&j()){T.type="globstar",T.value+=D,T.output=S(r),x.output=T.output,x.globstar=!0,L(D);continue}if("slash"===n.type&&"bos"!==n.prev.type&&!o&&j()){x.output=x.output.slice(0,-(n.output+T.output).length),n.output=`(?:${n.output}`,T.type="globstar",T.output=S(r)+(r.strictSlashes?")":"|$)"),T.value+=D,x.globstar=!0,x.output+=n.output+T.output,L(D);continue}if("slash"===n.type&&"bos"!==n.prev.type&&"/"===e[0]){const t=void 0!==e[1]?"|$":"";x.output=x.output.slice(0,-(n.output+T.output).length),n.output=`(?:${n.output}`,T.type="globstar",T.output=`${S(r)}${p}|${p}${t})`,T.value+=D,x.output+=n.output+T.output,x.globstar=!0,L(D+M()),W({type:"slash",value:"/",output:""});continue}if("bos"===n.type&&"/"===e[0]){T.type="globstar",T.value+=D,T.output=`(?:^|${p}|${S(r)}${p})`,x.output=T.output,x.globstar=!0,L(D+M()),W({type:"slash",value:"/",output:""});continue}x.output=x.output.slice(0,-T.output.length),T.type="globstar",T.output=S(r),T.value+=D,x.output+=T.output,x.globstar=!0,L(D);continue}const n={type:"star",value:D,output:P};!0!==r.bash?!T||"bracket"!==T.type&&"paren"!==T.type||!0!==r.regex?(x.index!==x.start&&"slash"!==T.type&&"dot"!==T.type||("dot"===T.type?(x.output+=y,T.output+=y):!0===r.dot?(x.output+=m,T.output+=m):(x.output+=A,T.output+=A),"*"!==F()&&(x.output+=d,T.output+=d)),W(n)):(n.output=D,W(n)):(n.output=".*?","bos"!==T.type&&"slash"!==T.type||(n.output=A+n.output),W(n))}for(var V;x.brackets>0;){if(!0===r.strictBrackets)throw new SyntaxError(ca("closing","]"));x.output=Io(x.output,"["),B("brackets")}for(;x.parens>0;){if(!0===r.strictBrackets)throw new SyntaxError(ca("closing",")"));x.output=Io(x.output,"("),B("parens")}for(;x.braces>0;){if(!0===r.strictBrackets)throw new SyntaxError(ca("closing","}"));x.output=Io(x.output,"{"),B("braces")}if(!0===r.strictSlashes||"star"!==T.type&&"bracket"!==T.type||W({type:"maybe_slash",value:"",output:`${p}?`}),!0===x.backtrack){x.output="";for(const t of x.tokens)x.output+=null!=t.output?t.output:t.value,t.suffix&&(x.output+=t.suffix)}return x};ua.fastpaths=(t,e)=>{const r={...e},n="number"==typeof r.maxLength?Math.min(ra,r.maxLength):ra,i=t.length;if(i>n)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${n}`);t=oa[t]||t;const s=Mo(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:c,DOTS_SLASH:u,NO_DOT:l,NO_DOTS:h,NO_DOTS_SLASH:f,STAR:p,START_ANCHOR:d}=So.globChars(s),g=r.dot?h:l,_=r.dot?f:l,y=r.capture?"":"?:";let m=!0===r.bash?".*?":p;r.capture&&(m=`(${m})`);const v=t=>!0===t.noglobstar?m:`(${y}(?:(?!${d}${t.dot?u:o}).)*?)`,b=t=>{switch(t){case"*":return`${g}${c}${m}`;case".*":return`${o}${c}${m}`;case"*.*":return`${g}${m}${o}${c}${m}`;case"*/*":return`${g}${m}${a}${c}${_}${m}`;case"**":return g+v(r);case"**/*":return`(?:${g}${v(r)}${a})?${_}${c}${m}`;case"**/*.*":return`(?:${g}${v(r)}${a})?${_}${m}${o}${c}${m}`;case"**/.*":return`(?:${g}${v(r)}${a})?${o}${c}${m}`;default:{const e=/^(.*?)\.(\w+)$/.exec(t);if(!e)return;const r=b(e[1]);if(!r)return;return r+o+e[2]}}},w=Lo(t,{negated:!1,prefix:""});let E=b(w);return E&&!0!==r.strictSlashes&&(E+=`${a}?`),E},ea=ua;const la=(t,e,r=!1)=>{if(Array.isArray(t)){const n=t.map((t=>la(t,e,r)));return t=>{for(const e of n){const r=e(t);if(r)return r}return!1}}const n=(i=t)&&"object"==typeof i&&!Array.isArray(i)&&t.tokens&&t.input;var i;if(""===t||"string"!=typeof t&&!n)throw new TypeError("Expected pattern to be a non-empty string");const s=e||{},o=Mo(e),a=n?la.compileRe(t,e):la.makeRe(t,e,!1,!0),c=a.state;delete a.state;let u=()=>!1;if(s.ignore){const t={...e,ignore:null,onMatch:null,onResult:null};u=la(s.ignore,t,r)}const l=(r,n=!1)=>{const{isMatch:i,match:l,output:h}=la.test(r,a,e,{glob:t,posix:o}),f={glob:t,state:c,regex:a,posix:o,input:r,output:h,match:l,isMatch:i};return"function"==typeof s.onResult&&s.onResult(f),!1===i?(f.isMatch=!1,!!n&&f):u(r)?("function"==typeof s.onIgnore&&s.onIgnore(f),f.isMatch=!1,!!n&&f):("function"==typeof s.onMatch&&s.onMatch(f),!n||f)};return r&&(l.state=c),l};la.test=(t,e,r,{glob:n,posix:i}={})=>{if("string"!=typeof t)throw new TypeError("Expected input to be a string");if(""===t)return{isMatch:!1,output:""};const s=r||{},o=s.format||(i?To:null);let a=t===n,c=a&&o?o(t):t;return!1===a&&(c=o?o(t):t,a=c===n),!1!==a&&!0!==s.capture||(a=!0===s.matchBase||!0===s.basename?la.matchBase(t,e,r,i):e.exec(c)),{isMatch:Boolean(a),match:a,output:c}},la.matchBase=(t,e,r,n=Mo(r))=>(e instanceof RegExp?e:la.makeRe(e,r)).test(vo.basename(t)),la.isMatch=(t,e,r)=>la(e,r)(t),la.parse=(t,e)=>Array.isArray(t)?t.map((t=>la.parse(t,e))):ea(t,{...e,fastpaths:!1}),la.scan=(t,e)=>bo(t,e),la.compileRe=(t,e,r=!1,n=!1)=>{if(!0===r)return t.output;const i=e||{},s=i.contains?"":"^",o=i.contains?"":"$";let a=`${s}(?:${t.output})${o}`;t&&!0===t.negated&&(a=`^(?!${a}).*$`);const c=la.toRegex(a,e);return!0===n&&(c.state=t),c},la.makeRe=(t,e,r=!1,n=!1)=>{if(!t||"string"!=typeof t)throw new TypeError("Expected a non-empty string");const i=e||{};let s,o={negated:!1,fastpaths:!0},a="";return t.startsWith("./")&&(t=t.slice(2),a=o.prefix="./"),!1===i.fastpaths||"."!==t[0]&&"*"!==t[0]||(s=ea.fastpaths(t,e)),void 0===s?(o=ea(t,e),o.prefix=a+(o.prefix||"")):o.output=s,la.compileRe(o,e,r,n)},la.toRegex=(t,e)=>{try{const r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(t){if(e&&!0===e.debug)throw t;return/$^/}},la.constants=So,mo=la;const ha=t=>""===t||"./"===t,fa=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let n=new Set,i=new Set,s=new Set,o=0,a=t=>{s.add(t.output),r&&r.onResult&&r.onResult(t)};for(let s=0;s!n.has(t)));if(r&&0===c.length){if(!0===r.failglob)throw new Error(`No matches found for "${e.join(", ")}"`);if(!0===r.nonull||!0===r.nullglob)return r.unescape?e.map((t=>t.replace(/\\/g,""))):e}return c};fa.match=fa,fa.matcher=(t,e)=>mo(t,e),fa.any=fa.isMatch=(t,e,r)=>mo(e,r)(t),fa.not=(t,e,r={})=>{e=[].concat(e).map(String);let n=new Set,i=[],s=fa(t,e,{...r,onResult:t=>{r.onResult&&r.onResult(t),i.push(t.output)}});for(let t of i)s.includes(t)||n.add(t);return[...n]},fa.contains=(t,e,r)=>{if("string"!=typeof t)throw new TypeError(`Expected a string: "${gs.inspect(t)}"`);if(Array.isArray(e))return e.some((e=>fa.contains(t,e,r)));if("string"==typeof e){if(ha(t)||ha(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return fa.isMatch(t,e,{...r,contains:!0})},fa.matchKeys=(t,e,r)=>{if(null===(n=t)||"object"!=typeof n||Array.isArray(n))throw new TypeError("Expected the first argument to be an object");var n;let i=fa(Object.keys(t),e,r),s={};for(let e of i)s[e]=t[e];return s},fa.some=(t,e,r)=>{let n=[].concat(t);for(let t of[].concat(e)){let e=mo(String(t),r);if(n.some((t=>e(t))))return!0}return!1},fa.every=(t,e,r)=>{let n=[].concat(t);for(let t of[].concat(e)){let e=mo(String(t),r);if(!n.every((t=>e(t))))return!1}return!0},fa.all=(t,e,r)=>{if("string"!=typeof t)throw new TypeError(`Expected a string: "${gs.inspect(t)}"`);return[].concat(e).every((e=>mo(e,r)(t)))},fa.capture=(t,e,r)=>{let n=Mo(r),i=mo.makeRe(String(t),{...r,capture:!0}).exec(n?To(e):e);if(i)return i.slice(1).map((t=>void 0===t?"":t))},fa.makeRe=(...t)=>mo.makeRe(...t),fa.scan=(...t)=>mo.scan(...t),fa.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let t of ys(String(n),e))r.push(mo.parse(t,e));return r},fa.braces=(t,e)=>{if("string"!=typeof t)throw new TypeError("Expected a string");return e&&!0===e.nobrace||!/\{.*\}/.test(t)?[t]:ys(t,e)},fa.braceExpand=(t,e)=>{if("string"!=typeof t)throw new TypeError("Expected a string");return fa.braces(t,{...e,expand:!0})},ds=fa;const pa=/[*?]|^!/,da=/\[.*]/,ga=/(?:^|[^!*+?@])\(.*\|.*\)/,_a=/[!*+?@]\(.*\)/,ya=/{.*(?:,|\.\.).*}/;function ma(t,e={}){return!ba(t,e)}var va=ma;function ba(t,e={}){return""!==t&&(!(!1!==e.caseSensitiveMatch&&!t.includes("\\"))||(!!(pa.test(t)||da.test(t)||ga.test(t))||(!(!1===e.extglob||!_a.test(t))||!(!1===e.braceExpansion||!ya.test(t)))))}Ji.isStaticPattern=va;var wa=ba;Ji.isDynamicPattern=wa;var Ea=function(t){return Aa(t)?t.slice(1):t};Ji.convertToPositivePattern=Ea;var Sa=function(t){return"!"+t};function Aa(t){return t.startsWith("!")&&"("!==t[1]}Ji.convertToNegativePattern=Sa;var Ra=Aa;function Pa(t){return!Aa(t)}Ji.isNegativePattern=Ra;var xa=Pa;Ji.isPositivePattern=xa;var Oa=function(t){return t.filter(Aa)};Ji.getNegativePatterns=Oa;var Ca=function(t){return t.filter(Pa)};Ji.getPositivePatterns=Ca;var ka=function(t){return rs(t,{flipBackslashes:!1})};Ji.getBaseDirectory=ka;var Da=function(t){return t.includes("**")};function Ta(t){return t.endsWith("/**")}Ji.hasGlobStar=Da;var ja=Ta;Ji.endsWithSlashGlobStar=ja;var Fa=function(t){const e=es.basename(t);return Ta(t)||ma(e)};Ji.isAffectDepthOfReadingPattern=Fa;var Ma=function(t){return t.reduce(((t,e)=>t.concat(Ia(e))),[])};function Ia(t){return ds.braces(t,{expand:!0,nodupes:!0})}Ji.expandPatternsWithBraceExpansion=Ma;var La=Ia;Ji.expandBraceExpansion=La;var Ha=function(t,e){let{parts:r}=mo.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return 0===r.length&&(r=[t]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r};function $a(t,e){return ds.makeRe(t,e)}Ji.getPatternParts=Ha;var Na=$a;Ji.makeRe=Na;var Ba=function(t,e){return t.map((t=>$a(t,e)))};Ji.convertPatternsToRe=Ba,ts=function(t,e){return e.some((e=>e.test(t)))},Ji.matchAny=ts;var Wa=Ji;Ti.pattern=Ji;var Ga={};Object.defineProperty(Ga,"__esModule",{value:!0});var Ua=void 0;Ga.merge=Ua;var Va={};const qa=e.PassThrough,za=Array.prototype.slice;function Ka(t,e){if(Array.isArray(t))for(let r=0,n=t.length;rt.emit("close")))}Va=function(){const t=[],e=za.call(arguments);let r=!1,n=e[e.length-1];n&&!Array.isArray(n)&&null==n.pipe?e.pop():n={};const i=!1!==n.end,s=!0===n.pipeError;null==n.objectMode&&(n.objectMode=!0);null==n.highWaterMark&&(n.highWaterMark=65536);const o=qa(n);function a(){for(let e=0,r=arguments.length;e0||(r=!1,c())}function a(t){function e(){t.removeListener("merge2UnpipeEnd",e),t.removeListener("end",e),s&&t.removeListener("error",r),i()}function r(t){o.emit("error",t)}if(t._readableState.endEmitted)return i();t.on("merge2UnpipeEnd",e),t.on("end",e),s&&t.on("error",r),t.pipe(o,{end:!1}),t.resume()}for(let t=0;t{t.once("error",(t=>e.emit("error",t)))})),e.once("close",(()=>Qa(t))),e.once("end",(()=>Qa(t))),e},Ga.merge=Ua;var Ya=Ga;Ti.stream=Ga;var Xa={};Object.defineProperty(Xa,"__esModule",{value:!0});var Za=(Ja=void 0,Xa.isString=Ja);Xa.isEmpty=Za;var Ja=function(t){return"string"==typeof t};Xa.isString=Ja,Za=function(t){return""===t},Xa.isEmpty=Za,ji=Xa,Ti.string=ji;var tc=function(t,e){const r=nc(t),n=sc(t,e.ignore),i=r.filter((t=>Ti.pattern.isStaticPattern(t,e))),s=r.filter((t=>Ti.pattern.isDynamicPattern(t,e))),o=ec(i,n,!1),a=ec(s,n,!0);return o.concat(a)};function ec(t,e,r){const n=ac(t);if("."in n){return[hc(".",t,e,r)]}return uc(n,e,r)}ki.generate=tc;var rc=ec;function nc(t){return Ti.pattern.getPositivePatterns(t)}ki.convertPatternsToTasks=rc;var ic=nc;function sc(t,e){return Ti.pattern.getNegativePatterns(t).concat(e).map(Ti.pattern.convertToPositivePattern)}ki.getPositivePatterns=ic;var oc=sc;function ac(t){return t.reduce(((t,e)=>{const r=Ti.pattern.getBaseDirectory(e);return r in t?t[r].push(e):t[r]=[e],t}),{})}ki.getNegativePatternsAsPositive=oc;var cc=ac;function uc(t,e,r){return Object.keys(t).map((n=>hc(n,t[n],e,r)))}ki.groupPatternsByBaseDirectory=cc;var lc=uc;function hc(t,e,r,n){return{dynamic:n,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Ti.pattern.convertToNegativePattern))}}ki.convertPatternGroupsToTasks=lc,Di=hc,ki.convertPatternGroupToTask=Di;var fc={};Object.defineProperty(fc,"__esModule",{value:!0});var pc={};Object.defineProperty(pc,"__esModule",{value:!0});const dc=e;var gc={};Object.defineProperty(gc,"__esModule",{value:!0});var _c=(Cc=void 0,kc=gc.Settings=Cc,gc.stat=kc);gc.statSync=_c;var yc={};Object.defineProperty(yc,"__esModule",{value:!0});var mc=void 0;function vc(t,e){t(e)}function bc(t,e){t(null,e)}yc.read=mc,mc=function(t,e,r){e.fs.lstat(t,((n,i)=>null!==n?vc(r,n):i.isSymbolicLink()&&e.followSymbolicLink?void e.fs.stat(t,((t,n)=>{if(null!==t)return e.throwErrorOnBrokenSymbolicLink?vc(r,t):bc(r,i);e.markSymbolicLink&&(n.isSymbolicLink=()=>!0),bc(r,n)})):bc(r,i)))},yc.read=mc;var wc={};Object.defineProperty(wc,"__esModule",{value:!0});var Ec=void 0;wc.read=Ec,Ec=function(t,e){const r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{const r=e.fs.statSync(t);return e.markSymbolicLink&&(r.isSymbolicLink=()=>!0),r}catch(t){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw t}},wc.read=Ec;var Sc={};Object.defineProperty(Sc,"__esModule",{value:!0});var Ac={};Object.defineProperty(Ac,"__esModule",{value:!0});var Rc=(xc=void 0,Ac.FILE_SYSTEM_ADAPTER=xc);Ac.createFileSystemAdapter=Rc;const Pc=n;var xc={lstat:Pc.lstat,stat:Pc.stat,lstatSync:Pc.lstatSync,statSync:Pc.statSync};Ac.FILE_SYSTEM_ADAPTER=xc,Rc=function(t){return void 0===t?Ac.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Ac.FILE_SYSTEM_ADAPTER),t)},Ac.createFileSystemAdapter=Rc;var Oc=class{constructor(t={}){this._options=t,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=Ac.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(t,e){return null!=t?t:e}};Sc.default=Oc;var Cc=Sc.default;gc.Settings=Cc;var kc=function(t,e,r){if("function"==typeof e)return yc.read(t,Dc(),e);yc.read(t,Dc(e),r)};function Dc(t={}){return t instanceof Sc.default?t:new Sc.default(t)}gc.stat=kc,_c=function(t,e){const r=Dc(e);return wc.read(t,r)},gc.statSync=_c;var Tc={};Object.defineProperty(Tc,"__esModule",{value:!0});var jc=(Xu=void 0,Zu=Tc.walk=Xu,Ju=Tc.walkSync=Zu,Tc.walkStream=Ju);Tc.Settings=jc;var Fc={};Object.defineProperty(Fc,"__esModule",{value:!0});var Mc={};Object.defineProperty(Mc,"__esModule",{value:!0});const Ic=u;var Lc={};Object.defineProperty(Lc,"__esModule",{value:!0});var Hc=(wu=void 0,Eu=Lc.scandir=wu,Lc.scandirSync=Eu);Lc.Settings=Hc;var $c={};Object.defineProperty($c,"__esModule",{value:!0});var Nc=(ru=void 0,iu=$c.read=ru,$c.readdirWithFileTypes=iu);$c.readdir=Nc;var Bc={};/*! run-parallel. MIT License. Feross Aboukhadijeh */Bc=function(t,e){let r,n,i,s=!0;Array.isArray(t)?(r=[],n=t.length):(i=Object.keys(t),r={},n=i.length);function o(t){function n(){e&&e(t,r),e=null}s?Wc(n):n()}function a(t,e,i){r[t]=i,(0==--n||e)&&o(e)}n?i?i.forEach((function(e){t[e]((function(t,r){a(e,t,r)}))})):t.forEach((function(t,e){t((function(t,r){a(e,t,r)}))})):o(null);s=!1};var Wc={};/*! queue-microtask. MIT License. Feross Aboukhadijeh */let Gc;Wc="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:f):t=>(Gc||(Gc=Promise.resolve())).then(t).catch((t=>setTimeout((()=>{throw t}),0)));var Uc={};Object.defineProperty(Uc,"__esModule",{value:!0});var Vc=void 0;Uc.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Vc;const qc=process.versions.node.split("."),zc=parseInt(qc[0],10),Kc=parseInt(qc[1],10);Vc=zc>10||10===zc&&Kc>=10,Uc.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Vc;var Qc={};Object.defineProperty(Qc,"__esModule",{value:!0});var Yc=void 0;Qc.fs=Yc;var Xc={};Object.defineProperty(Xc,"__esModule",{value:!0});var Zc=void 0;Xc.createDirentFromStats=Zc;class Jc{constructor(t,e){this.name=t,this.isBlockDevice=e.isBlockDevice.bind(e),this.isCharacterDevice=e.isCharacterDevice.bind(e),this.isDirectory=e.isDirectory.bind(e),this.isFIFO=e.isFIFO.bind(e),this.isFile=e.isFile.bind(e),this.isSocket=e.isSocket.bind(e),this.isSymbolicLink=e.isSymbolicLink.bind(e)}}Zc=function(t,e){return new Jc(t,e)},Xc.createDirentFromStats=Zc,Yc=Xc,Qc.fs=Yc;var tu={};Object.defineProperty(tu,"__esModule",{value:!0});var eu=void 0;tu.joinPathSegments=eu,eu=function(t,e,r){return t.endsWith(r)?t+e:t+r+e},tu.joinPathSegments=eu;var ru=function(t,e,r){return!e.stats&&Uc.IS_SUPPORT_READDIR_WITH_FILE_TYPES?nu(t,e,r):su(t,e,r)};function nu(t,e,r){e.fs.readdir(t,{withFileTypes:!0},((n,i)=>{if(null!==n)return ou(r,n);const s=i.map((r=>({dirent:r,name:r.name,path:tu.joinPathSegments(t,r.name,e.pathSegmentSeparator)})));if(!e.followSymbolicLinks)return au(r,s);const o=s.map((t=>function(t,e){return r=>{if(!t.dirent.isSymbolicLink())return r(null,t);e.fs.stat(t.path,((n,i)=>null!==n?e.throwErrorOnBrokenSymbolicLink?r(n):r(null,t):(t.dirent=Qc.fs.createDirentFromStats(t.name,i),r(null,t))))}}(t,e)));Bc(o,((t,e)=>{if(null!==t)return ou(r,t);au(r,e)}))}))}$c.read=ru;var iu=nu;function su(t,e,r){e.fs.readdir(t,((n,i)=>{if(null!==n)return ou(r,n);const s=i.map((r=>tu.joinPathSegments(t,r,e.pathSegmentSeparator))),o=s.map((t=>r=>gc.stat(t,e.fsStatSettings,r)));Bc(o,((t,n)=>{if(null!==t)return ou(r,t);const o=[];i.forEach(((t,r)=>{const i=n[r],a={name:t,path:s[r],dirent:Qc.fs.createDirentFromStats(t,i)};e.stats&&(a.stats=i),o.push(a)})),au(r,o)}))}))}function ou(t,e){t(e)}function au(t,e){t(null,e)}$c.readdirWithFileTypes=iu,Nc=su,$c.readdir=Nc;var cu={};Object.defineProperty(cu,"__esModule",{value:!0});var uu=(lu=void 0,fu=cu.read=lu,cu.readdirWithFileTypes=fu);cu.readdir=uu;var lu=function(t,e){return!e.stats&&Uc.IS_SUPPORT_READDIR_WITH_FILE_TYPES?hu(t,e):pu(t,e)};function hu(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map((r=>{const n={dirent:r,name:r.name,path:tu.joinPathSegments(t,r.name,e.pathSegmentSeparator)};if(n.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{const t=e.fs.statSync(n.path);n.dirent=Qc.fs.createDirentFromStats(n.name,t)}catch(t){if(e.throwErrorOnBrokenSymbolicLink)throw t}return n}))}cu.read=lu;var fu=hu;function pu(t,e){return e.fs.readdirSync(t).map((r=>{const n=tu.joinPathSegments(t,r,e.pathSegmentSeparator),i=gc.statSync(n,e.fsStatSettings),s={name:r,path:n,dirent:Qc.fs.createDirentFromStats(r,i)};return e.stats&&(s.stats=i),s}))}cu.readdirWithFileTypes=fu,uu=pu,cu.readdir=uu;var du={};Object.defineProperty(du,"__esModule",{value:!0});const gu=c;var _u={};Object.defineProperty(_u,"__esModule",{value:!0});var yu=(vu=void 0,_u.FILE_SYSTEM_ADAPTER=vu);_u.createFileSystemAdapter=yu;const mu=n;var vu={lstat:mu.lstat,stat:mu.stat,lstatSync:mu.lstatSync,statSync:mu.statSync,readdir:mu.readdir,readdirSync:mu.readdirSync};_u.FILE_SYSTEM_ADAPTER=vu,yu=function(t){return void 0===t?_u.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},_u.FILE_SYSTEM_ADAPTER),t)},_u.createFileSystemAdapter=yu;var bu=class{constructor(t={}){this._options=t,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=_u.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,gu.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new gc.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(t,e){return null!=t?t:e}};du.default=bu,Hc=du.default,Lc.Settings=Hc;var wu=function(t,e,r){if("function"==typeof e)return $c.read(t,Su(),e);$c.read(t,Su(e),r)};Lc.scandir=wu;var Eu=function(t,e){const r=Su(e);return cu.read(t,r)};function Su(t={}){return t instanceof du.default?t:new du.default(t)}Lc.scandirSync=Eu;var Au={},Ru={};function Pu(t,e,r){if("function"==typeof t&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var n=Ru(Ou),i=null,s=null,o=0,a=null,c={push:function(r,l){var h=n.get();h.context=t,h.release=u,h.value=r,h.callback=l||xu,h.errorHandler=a,o===c.concurrency||c.paused?s?(s.next=h,s=h):(i=h,s=h,c.saturated()):(o++,e.call(t,h.value,h.worked))},drain:xu,saturated:xu,pause:function(){c.paused=!0},paused:!1,concurrency:r,running:function(){return o},resume:function(){if(!c.paused)return;c.paused=!1;for(var t=0;t{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate((()=>{this._pushToQueue(this._root,this._settings.basePath)})),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(t){this._emitter.on("entry",t)}onError(t){this._emitter.once("error",t)}onEnd(t){this._emitter.once("end",t)}_pushToQueue(t,e){const r={directory:t,base:e};this._queue.push(r,(t=>{null!==t&&this._handleError(t)}))}_worker(t,e){this._scandir(t.directory,this._settings.fsScandirSettings,((r,n)=>{if(null!==r)return e(r,void 0);for(const e of n)this._handleEntry(e,t.base);e(null,void 0)}))}_handleError(t){!this._isDestroyed&&ku.isFatalError(this._settings,t)&&(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",t))}_handleEntry(t,e){if(this._isDestroyed||this._isFatalError)return;const r=t.path;void 0!==e&&(t.path=ku.joinPathSegments(e,t.name,this._settings.pathSegmentSeparator)),ku.isAppliedFilter(this._settings.entryFilter,t)&&this._emitEntry(t),t.dirent.isDirectory()&&ku.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(r,t.path)}_emitEntry(t){this._emitter.emit("entry",t)}}var Hu=Lu;Mc.default=Hu;var $u=class{constructor(t,e){this._root=t,this._settings=e,this._reader=new Mc.default(this._root,this._settings),this._storage=new Set}read(t){this._reader.onError((e=>{!function(t,e){t(e)}(t,e)})),this._reader.onEntry((t=>{this._storage.add(t)})),this._reader.onEnd((()=>{!function(t,e){t(null,e)}(t,[...this._storage])})),this._reader.read()}};Fc.default=$u;var Nu={};Object.defineProperty(Nu,"__esModule",{value:!0});const Bu=e;var Wu=class{constructor(t,e){this._root=t,this._settings=e,this._reader=new Mc.default(this._root,this._settings),this._stream=new Bu.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError((t=>{this._stream.emit("error",t)})),this._reader.onEntry((t=>{this._stream.push(t)})),this._reader.onEnd((()=>{this._stream.push(null)})),this._reader.read(),this._stream}};Nu.default=Wu;var Gu={};Object.defineProperty(Gu,"__esModule",{value:!0});var Uu={};Object.defineProperty(Uu,"__esModule",{value:!0});class Vu extends Mu.default{constructor(){super(...arguments),this._scandir=Lc.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(t,e){this._queue.add({directory:t,base:e})}_handleQueue(){for(const t of this._queue.values())this._handleDirectory(t.directory,t.base)}_handleDirectory(t,e){try{const r=this._scandir(t,this._settings.fsScandirSettings);for(const t of r)this._handleEntry(t,e)}catch(t){this._handleError(t)}}_handleError(t){if(ku.isFatalError(this._settings,t))throw t}_handleEntry(t,e){const r=t.path;void 0!==e&&(t.path=ku.joinPathSegments(e,t.name,this._settings.pathSegmentSeparator)),ku.isAppliedFilter(this._settings.entryFilter,t)&&this._pushToStorage(t),t.dirent.isDirectory()&&ku.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(r,t.path)}_pushToStorage(t){this._storage.add(t)}}var qu=Vu;Uu.default=qu;var zu=class{constructor(t,e){this._root=t,this._settings=e,this._reader=new Uu.default(this._root,this._settings)}read(){return this._reader.read()}};Gu.default=zu;var Ku={};Object.defineProperty(Ku,"__esModule",{value:!0});const Qu=c;var Yu=class{constructor(t={}){this._options=t,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,1/0),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Qu.sep),this.fsScandirSettings=new Lc.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(t,e){return null!=t?t:e}};Ku.default=Yu,jc=Ku.default,Tc.Settings=jc;var Xu=function(t,e,r){if("function"==typeof e)return new Fc.default(t,tl()).read(e);new Fc.default(t,tl(e)).read(r)};Tc.walk=Xu;var Zu=function(t,e){const r=tl(e);return new Gu.default(t,r).read()};Tc.walkSync=Zu;var Ju=function(t,e){const r=tl(e);return new Nu.default(t,r).read()};function tl(t={}){return t instanceof Ku.default?t:new Ku.default(t)}Tc.walkStream=Ju;var el={};Object.defineProperty(el,"__esModule",{value:!0});const rl=c;var nl=class{constructor(t){this._settings=t,this._fsStatSettings=new gc.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(t){return rl.resolve(this._settings.cwd,t)}_makeEntry(t,e){const r={name:e,path:e,dirent:Ti.fs.createDirentFromStats(e,t)};return this._settings.stats&&(r.stats=t),r}_isFatalError(t){return!Ti.errno.isEnoentCodeError(t)&&!this._settings.suppressErrors}};el.default=nl;class il extends el.default{constructor(){super(...arguments),this._walkStream=Tc.walkStream,this._stat=gc.stat}dynamic(t,e){return this._walkStream(t,e)}static(t,e){const r=t.map(this._getFullEntryPath,this),n=new dc.PassThrough({objectMode:!0});n._write=(i,s,o)=>this._getEntry(r[i],t[i],e).then((t=>{null!==t&&e.entryFilter(t)&&n.push(t),i===r.length-1&&n.end(),o()})).catch(o);for(let t=0;tthis._makeEntry(t,e))).catch((t=>{if(r.errorFilter(t))return null;throw t}))}_getStat(t){return new Promise(((e,r)=>{this._stat(t,this._fsStatSettings,((t,n)=>null===t?e(n):r(t)))}))}}var sl=il;pc.default=sl;var ol={};Object.defineProperty(ol,"__esModule",{value:!0});const al=c;var cl={};Object.defineProperty(cl,"__esModule",{value:!0});var ul={};Object.defineProperty(ul,"__esModule",{value:!0});var ll={};Object.defineProperty(ll,"__esModule",{value:!0});var hl=class{constructor(t,e,r){this._patterns=t,this._settings=e,this._micromatchOptions=r,this._storage=[],this._fillStorage()}_fillStorage(){const t=Ti.pattern.expandPatternsWithBraceExpansion(this._patterns);for(const e of t){const t=this._getPatternSegments(e),r=this._splitSegmentsIntoSections(t);this._storage.push({complete:r.length<=1,pattern:e,segments:t,sections:r})}}_getPatternSegments(t){return Ti.pattern.getPatternParts(t,this._micromatchOptions).map((t=>Ti.pattern.isDynamicPattern(t,this._settings)?{dynamic:!0,pattern:t,patternRe:Ti.pattern.makeRe(t,this._micromatchOptions)}:{dynamic:!1,pattern:t}))}_splitSegmentsIntoSections(t){return Ti.array.splitWhen(t,(t=>t.dynamic&&Ti.pattern.hasGlobStar(t.pattern)))}};ll.default=hl;class fl extends ll.default{match(t){const e=t.split("/"),r=e.length,n=this._storage.filter((t=>!t.complete||t.segments.length>r));for(const t of n){const n=t.sections[0];if(!t.complete&&r>n.length)return!0;if(e.every(((e,r)=>{const n=t.segments[r];return!(!n.dynamic||!n.patternRe.test(e))||!n.dynamic&&n.pattern===e})))return!0}return!1}}var pl=fl;ul.default=pl;var dl=class{constructor(t,e){this._settings=t,this._micromatchOptions=e}getFilter(t,e,r){const n=this._getMatcher(e),i=this._getNegativePatternsRe(r);return e=>this._filter(t,e,n,i)}_getMatcher(t){return new ul.default(t,this._settings,this._micromatchOptions)}_getNegativePatternsRe(t){const e=t.filter(Ti.pattern.isAffectDepthOfReadingPattern);return Ti.pattern.convertPatternsToRe(e,this._micromatchOptions)}_filter(t,e,r,n){if(this._isSkippedByDeep(t,e.path))return!1;if(this._isSkippedSymbolicLink(e))return!1;const i=Ti.path.removeLeadingDotSegment(e.path);return!this._isSkippedByPositivePatterns(i,r)&&this._isSkippedByNegativePatterns(i,n)}_isSkippedByDeep(t,e){return this._settings.deep!==1/0&&this._getEntryLevel(t,e)>=this._settings.deep}_getEntryLevel(t,e){const r=e.split("/").length;if(""===t)return r;return r-t.split("/").length}_isSkippedSymbolicLink(t){return!this._settings.followSymbolicLinks&&t.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(t,e){return!this._settings.baseNameMatch&&!e.match(t)}_isSkippedByNegativePatterns(t,e){return!Ti.pattern.matchAny(t,e)}};cl.default=dl;var gl={};Object.defineProperty(gl,"__esModule",{value:!0});var _l=class{constructor(t,e){this._settings=t,this._micromatchOptions=e,this.index=new Map}getFilter(t,e){const r=Ti.pattern.convertPatternsToRe(t,this._micromatchOptions),n=Ti.pattern.convertPatternsToRe(e,this._micromatchOptions);return t=>this._filter(t,r,n)}_filter(t,e,r){if(this._settings.unique&&this._isDuplicateEntry(t))return!1;if(this._onlyFileFilter(t)||this._onlyDirectoryFilter(t))return!1;if(this._isSkippedByAbsoluteNegativePatterns(t.path,r))return!1;const n=this._settings.baseNameMatch?t.name:t.path,i=this._isMatchToPatterns(n,e)&&!this._isMatchToPatterns(t.path,r);return this._settings.unique&&i&&this._createIndexRecord(t),i}_isDuplicateEntry(t){return this.index.has(t.path)}_createIndexRecord(t){this.index.set(t.path,void 0)}_onlyFileFilter(t){return this._settings.onlyFiles&&!t.dirent.isFile()}_onlyDirectoryFilter(t){return this._settings.onlyDirectories&&!t.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(t,e){if(!this._settings.absolute)return!1;const r=Ti.path.makeAbsolute(this._settings.cwd,t);return Ti.pattern.matchAny(r,e)}_isMatchToPatterns(t,e){const r=Ti.path.removeLeadingDotSegment(t);return Ti.pattern.matchAny(r,e)}};gl.default=_l;var yl={};Object.defineProperty(yl,"__esModule",{value:!0});var ml=class{constructor(t){this._settings=t}getFilter(){return t=>this._isNonFatalError(t)}_isNonFatalError(t){return Ti.errno.isEnoentCodeError(t)||this._settings.suppressErrors}};yl.default=ml;var vl={};Object.defineProperty(vl,"__esModule",{value:!0});var bl=class{constructor(t){this._settings=t}getTransformer(){return t=>this._transform(t)}_transform(t){let e=t.path;return this._settings.absolute&&(e=Ti.path.makeAbsolute(this._settings.cwd,e),e=Ti.path.unixify(e)),this._settings.markDirectories&&t.dirent.isDirectory()&&(e+="/"),this._settings.objectMode?Object.assign(Object.assign({},t),{path:e}):e}};vl.default=bl;var wl=class{constructor(t){this._settings=t,this.errorFilter=new yl.default(this._settings),this.entryFilter=new gl.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new cl.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new vl.default(this._settings)}_getRootDirectory(t){return al.resolve(this._settings.cwd,t.base)}_getReaderOptions(t){const e="."===t.base?"":t.base;return{basePath:e,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(e,t.positive,t.negative),entryFilter:this.entryFilter.getFilter(t.positive,t.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};ol.default=wl;class El extends ol.default{constructor(){super(...arguments),this._reader=new pc.default(this._settings)}read(t){const e=this._getRootDirectory(t),r=this._getReaderOptions(t),n=[];return new Promise(((i,s)=>{const o=this.api(e,t,r);o.once("error",s),o.on("data",(t=>n.push(r.transform(t)))),o.once("end",(()=>i(n)))}))}api(t,e,r){return e.dynamic?this._reader.dynamic(t,r):this._reader.static(e.patterns,r)}}var Sl=El;fc.default=Sl;var Al={};Object.defineProperty(Al,"__esModule",{value:!0});const Rl=e;class Pl extends ol.default{constructor(){super(...arguments),this._reader=new pc.default(this._settings)}read(t){const e=this._getRootDirectory(t),r=this._getReaderOptions(t),n=this.api(e,t,r),i=new Rl.Readable({objectMode:!0,read:()=>{}});return n.once("error",(t=>i.emit("error",t))).on("data",(t=>i.emit("data",r.transform(t)))).once("end",(()=>i.emit("end"))),i.once("close",(()=>n.destroy())),i}api(t,e,r){return e.dynamic?this._reader.dynamic(t,r):this._reader.static(e.patterns,r)}}var xl=Pl;Al.default=xl;var Ol={};Object.defineProperty(Ol,"__esModule",{value:!0});var Cl={};Object.defineProperty(Cl,"__esModule",{value:!0});class kl extends el.default{constructor(){super(...arguments),this._walkSync=Tc.walkSync,this._statSync=gc.statSync}dynamic(t,e){return this._walkSync(t,e)}static(t,e){const r=[];for(const n of t){const t=this._getFullEntryPath(n),i=this._getEntry(t,n,e);null!==i&&e.entryFilter(i)&&r.push(i)}return r}_getEntry(t,e,r){try{const r=this._getStat(t);return this._makeEntry(r,e)}catch(t){if(r.errorFilter(t))return null;throw t}}_getStat(t){return this._statSync(t,this._fsStatSettings)}}var Dl=kl;Cl.default=Dl;class Tl extends ol.default{constructor(){super(...arguments),this._reader=new Cl.default(this._settings)}read(t){const e=this._getRootDirectory(t),r=this._getReaderOptions(t);return this.api(e,t,r).map(r.transform)}api(t,e,r){return e.dynamic?this._reader.dynamic(t,r):this._reader.static(e.patterns,r)}}var jl=Tl;Ol.default=jl;var Fl={};Object.defineProperty(Fl,"__esModule",{value:!0});var Ml=void 0;Fl.DEFAULT_FILE_SYSTEM_ADAPTER=Ml;const Il=n,Ll=r,Hl=Math.max(Ll.cpus().length,1);Ml={lstat:Il.lstat,lstatSync:Il.lstatSync,stat:Il.stat,statSync:Il.statSync,readdir:Il.readdir,readdirSync:Il.readdirSync},Fl.DEFAULT_FILE_SYSTEM_ADAPTER=Ml;var $l,Nl=class{constructor(t={}){this._options=t,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,Hl),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(t,e){return void 0===t?e:t}_getFileSystemMethods(t={}){return Object.assign(Object.assign({},Fl.DEFAULT_FILE_SYSTEM_ADAPTER),t)}};async function Bl(t,e){Gl(t);const r=Wl(t,fc.default,e),n=await Promise.all(r);return Ti.array.flatten(n)}function Wl(t,e,r){const n=[].concat(t),i=new Fl.default(r),s=ki.generate(n,i),o=new e(i);return s.map(o.read,o)}function Gl(t){if(![].concat(t).every((t=>Ti.string.isString(t)&&!Ti.string.isEmpty(t))))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}Fl.default=Nl,($l=Bl||(Bl={})).sync=function(t,e){Gl(t);const r=Wl(t,Ol.default,e);return Ti.array.flatten(r)},$l.stream=function(t,e){Gl(t);const r=Wl(t,Al.default,e);return Ti.stream.merge(r)},$l.generateTasks=function(t,e){Gl(t);const r=[].concat(t),n=new Fl.default(e);return ki.generate(r,n)},$l.isDynamicPattern=function(t,e){Gl(t);const r=new Fl.default(e);return Ti.pattern.isDynamicPattern(t,r)},$l.escapePath=function(t){return Gl(t),Ti.path.escape(t)};var Ul=Lf(Bl),Vl={};const{EventEmitter:ql}=u,zl=n,Kl=c,{promisify:Ql}=s;var Yl={};const Xl=n,{Readable:Zl}=e,Jl=c,{promisify:th}=s,eh=th(Xl.readdir),rh=th(Xl.stat),nh=th(Xl.lstat),ih=th(Xl.realpath),sh=new Set(["ENOENT","EPERM","EACCES","ELOOP"]),oh="files",ah="directories",ch="files_directories",uh="all",lh=[oh,ah,ch,uh],hh=t=>{if(void 0!==t){if("function"==typeof t)return t;if("string"==typeof t){const e=mo(t.trim());return t=>e(t.basename)}if(Array.isArray(t)){const e=[],r=[];for(const n of t){const t=n.trim();"!"===t.charAt(0)?r.push(mo(t.slice(1))):e.push(mo(t))}return r.length>0?e.length>0?t=>e.some((e=>e(t.basename)))&&!r.some((e=>e(t.basename))):t=>!r.some((e=>e(t.basename))):t=>e.some((e=>e(t.basename)))}}};class fh extends Zl{static get defaultOptions(){return{root:".",fileFilter:t=>!0,directoryFilter:t=>!0,type:oh,lstat:!1,depth:2147483648,alwaysStat:!1}}constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark||4096});const e={...fh.defaultOptions,...t},{root:r,type:n}=e;this._fileFilter=hh(e.fileFilter),this._directoryFilter=hh(e.directoryFilter);const i=e.lstat?nh:rh;"win32"===process.platform&&3===rh.length?this._stat=t=>i(t,{bigint:!0}):this._stat=i,this._maxDepth=e.depth,this._wantsDir=[ah,ch,uh].includes(n),this._wantsFile=[oh,ch,uh].includes(n),this._wantsEverything=n===uh,this._root=Jl.resolve(r),this._isDirent="Dirent"in Xl&&!e.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(r,1)],this.reading=!1,this.parent=void 0}async _read(t){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&t>0;){const{path:e,depth:r,files:n=[]}=this.parent||{};if(n.length>0){const i=n.splice(0,t).map((t=>this._formatEntry(t,e)));for(const e of await Promise.all(i)){if(this.destroyed)return;const n=await this._getEntryType(e);"directory"===n&&this._directoryFilter(e)?(r<=this._maxDepth&&this.parents.push(this._exploreDir(e.fullPath,r+1)),this._wantsDir&&(this.push(e),t--)):("file"===n||this._includeAsFile(e))&&this._fileFilter(e)&&this._wantsFile&&(this.push(e),t--)}}else{const t=this.parents.pop();if(!t){this.push(null);break}if(this.parent=await t,this.destroyed)return}}}catch(t){this.destroy(t)}finally{this.reading=!1}}}async _exploreDir(t,e){let r;try{r=await eh(t,this._rdOptions)}catch(t){this._onError(t)}return{files:r,depth:e,path:t}}async _formatEntry(t,e){let r;try{const n=this._isDirent?t.name:t,i=Jl.resolve(Jl.join(e,n));r={path:Jl.relative(this._root,i),fullPath:i,basename:n},r[this._statsProp]=this._isDirent?t:await this._stat(i)}catch(t){this._onError(t)}return r}_onError(t){var e;e=t,sh.has(e.code)&&!this.destroyed?this.emit("warn",t):this.destroy(t)}async _getEntryType(t){const e=t&&t[this._statsProp];if(e){if(e.isFile())return"file";if(e.isDirectory())return"directory";if(e&&e.isSymbolicLink()){const e=t.fullPath;try{const t=await ih(e),r=await nh(t);if(r.isFile())return"file";if(r.isDirectory()){const r=t.length;return e.startsWith(t)&&e.substr(r,1)===Jl.sep?this._onError(new Error(`Circular symlink detected: "${e}" points to "${t}"`)):"directory"}}catch(t){this._onError(t)}}}}_includeAsFile(t){const e=t&&t[this._statsProp];return e&&this._wantsEverything&&!e.isDirectory()}}const ph=(t,e={})=>{let r=e.entryType||e.type;if("both"===r&&(r=ch),r&&(e.type=r),!t)throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");if("string"!=typeof t)throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(r&&!lh.includes(r))throw new Error(`readdirp: Invalid type passed. Use one of ${lh.join(", ")}`);return e.root=t,new fh(e)};ph.promise=(t,e={})=>new Promise(((r,n)=>{const i=[];ph(t,e).on("data",(t=>i.push(t))).on("end",(()=>r(i))).on("error",(t=>n(t)))})),ph.ReaddirpStream=fh,ph.default=ph,Yl=ph;var dh={};Object.defineProperty(dh,"__esModule",{value:!0});var gh; +ss=function(t){if("string"!=typeof t||""===t)return!1;for(var e;e=/(\\).|([@?!+*]\(.*\))/g.exec(t);){if(e[2])return!0;t=t.slice(e.index+e[0].length)}return!1};var os={"{":"}","(":")","[":"]"},as=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,cs=/\\(.)|(^!|[*?{}()[\]]|\(\?)/;is=function(t,e){if("string"!=typeof t||""===t)return!1;if(ss(t))return!0;var r,n=as;for(e&&!1===e.strict&&(n=cs);r=n.exec(t);){if(r[2])return!0;var i=r.index+r[0].length,s=r[1],o=s?os[s]:null;if(s&&o){var a=t.indexOf(o,i);-1!==a&&(i=a+1)}t=t.slice(i)}return!1};var us=c.posix.dirname,ls="win32"===r.platform(),hs=/\\/g,fs=/[\{\[].*[\}\]]$/,ps=/(^|[^\\])([\{\[]|\([^\)]+$)/,ds=/\\([\!\*\?\|\[\]\(\)\{\}])/g;ns=function(t,e){Object.assign({flipBackslashes:!0},e).flipBackslashes&&ls&&t.indexOf("/")<0&&(t=t.replace(hs,"/")),fs.test(t)&&(t+="/"),t+="a";do{t=us(t)}while(is(t)||ps.test(t));return t.replace(ds,"$1")};var gs={};const _s=s;var ys,ms={},vs=t=>"number"==typeof t?Number.isInteger(t):"string"==typeof t&&""!==t.trim()&&Number.isInteger(Number(t)),bs=t=>"brace"===t.type&&(!(!0!==t.invalid&&!t.dollar)||(t.commas>>0+t.ranges>>0==0||!0!==t.open||!0!==t.close)&&(t.invalid=!0,!0)),ws=t=>t.reduce(((t,e)=>("text"===e.type&&t.push(e.value),"range"===e.type&&(e.type="text"),t)),[]),Es=(...t)=>{const e=[],r=t=>{for(let n=0;n{let r=(t,n={})=>{let i=e.escapeInvalid&&bs(n),s=!0===t.invalid&&!0===e.escapeInvalid,o="";if(t.value)return(i||s)&&(t=>"open"===t.type||"close"===t.type||!0===t.open||!0===t.close)(t)?"\\"+t.value:t.value;if(t.value)return t.value;if(t.nodes)for(let e of t.nodes)o+=r(e);return o};return r(t)};var Ss={},As={};const Rs=s;var Ps,xs={};Ps=function(t){return"number"==typeof t?t-t==0:"string"==typeof t&&""!==t.trim()&&(Number.isFinite?Number.isFinite(+t):isFinite(+t))};const Cs=(t,e,r)=>{if(!1===Ps(t))throw new TypeError("toRegexRange: expected the first argument to be a number");if(void 0===e||t===e)return String(t);if(!1===Ps(e))throw new TypeError("toRegexRange: expected the second argument to be a number.");let n={relaxZeros:!0,...r};"boolean"==typeof n.strictZeros&&(n.relaxZeros=!1===n.strictZeros);let i=t+":"+e+"="+String(n.relaxZeros)+String(n.shorthand)+String(n.capture)+String(n.wrap);if(Cs.cache.hasOwnProperty(i))return Cs.cache[i].result;let s=Math.min(t,e),o=Math.max(t,e);if(1===Math.abs(s-o)){let r=t+"|"+e;return n.capture?`(${r})`:!1===n.wrap?r:`(?:${r})`}let a=Hs(t)||Hs(e),c={min:t,max:e,a:s,b:o},u=[],l=[];if(a&&(c.isPadded=a,c.maxLen=String(c.max).length),s<0){l=ks(o<0?Math.abs(o):1,Math.abs(s),c,n),s=c.a=0}return o>=0&&(u=ks(s,o,c,n)),c.negatives=l,c.positives=u,c.result=function(t,e,r){let n=Ds(t,e,"-",!1,r)||[],i=Ds(e,t,"",!1,r)||[],s=Ds(t,e,"-?",!0,r)||[];return n.concat(s).concat(i).join("|")}(l,u,n),!0===n.capture?c.result=`(${c.result})`:!1!==n.wrap&&u.length+l.length>1&&(c.result=`(?:${c.result})`),Cs.cache[i]=c,c.result};function Os(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let n=function(t,e){let r=[];for(let n=0;n1&&i.count.pop(),i.count.push(c.count[0]),i.string=i.pattern+Is(i.count),a=e+1)}return o}function Ds(t,e,r,n,i){let s=[];for(let i of t){let{string:t}=i;n||js(e,"string",t)||s.push(r+t),n&&js(e,"string",t)&&s.push(r+t)}return s}function Ts(t,e){return t>e?1:e>t?-1:0}function js(t,e,r){return t.some((t=>t[e]===r))}function Fs(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function Ms(t,e){return t-t%Math.pow(10,e)}function Is(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function Ls(t,e,r){return`[${t}${e-t==1?"":"-"}${e}]`}function Hs(t){return/^-?(0+)\d/.test(t)}function $s(t,e,r){if(!e.isPadded)return t;let n=Math.abs(e.maxLen-String(t).length),i=!1!==r.relaxZeros;switch(n){case 0:return"";case 1:return i?"0?":"0";case 2:return i?"0{0,2}":"00";default:return i?`0{0,${n}}`:`0{${n}}`}}Cs.cache={},Cs.clearCache=()=>Cs.cache={},xs=Cs;const Ns=t=>null!==t&&"object"==typeof t&&!Array.isArray(t),Bs=t=>"number"==typeof t||"string"==typeof t&&""!==t,Ws=t=>Number.isInteger(+t),Gs=t=>{let e=`${t}`,r=-1;if("-"===e[0]&&(e=e.slice(1)),"0"===e)return!1;for(;"0"===e[++r];);return r>0},Us=(t,e,r)=>{if(e>0){let r="-"===t[0]?"-":"";r&&(t=t.slice(1)),t=r+t.padStart(r?e-1:e,"0")}return!1===r?String(t):t},Vs=(t,e)=>{let r="-"===t[0]?"-":"";for(r&&(t=t.slice(1),e--);t.length{if(r)return xs(t,e,{wrap:!1,...n});let i=String.fromCharCode(t);return t===e?i:`[${i}-${String.fromCharCode(e)}]`},zs=(t,e,r)=>{if(Array.isArray(t)){let e=!0===r.wrap,n=r.capture?"":"?:";return e?`(${n}${t.join("|")})`:t.join("|")}return xs(t,e,r)},Ks=(...t)=>new RangeError("Invalid range arguments: "+Rs.inspect(...t)),Qs=(t,e,r)=>{if(!0===r.strictRanges)throw Ks([t,e]);return[]},Ys=(t,e,r=1,n={})=>{let i=Number(t),s=Number(e);if(!Number.isInteger(i)||!Number.isInteger(s)){if(!0===n.strictRanges)throw Ks([t,e]);return[]}0===i&&(i=0),0===s&&(s=0);let o=i>s,a=String(t),c=String(e),u=String(r);r=Math.max(Math.abs(r),1);let l=Gs(a)||Gs(c)||Gs(u),h=l?Math.max(a.length,c.length,u.length):0,f=!1===l&&!1===((t,e,r)=>"string"==typeof t||"string"==typeof e||!0===r.stringify)(t,e,n),p=n.transform||(t=>e=>!0===t?Number(e):String(e))(f);if(n.toRegex&&1===r)return qs(Vs(t,h),Vs(e,h),!0,n);let d={negatives:[],positives:[]},g=[],_=0;for(;o?i>=s:i<=s;)!0===n.toRegex&&r>1?d[(y=i)<0?"negatives":"positives"].push(Math.abs(y)):g.push(Us(p(i,_),h,f)),i=o?i-r:i+r,_++;var y;return!0===n.toRegex?r>1?((t,e)=>{t.negatives.sort(((t,e)=>te?1:0)),t.positives.sort(((t,e)=>te?1:0));let r,n=e.capture?"":"?:",i="",s="";return t.positives.length&&(i=t.positives.join("|")),t.negatives.length&&(s=`-(${n}${t.negatives.join("|")})`),r=i&&s?`${i}|${s}`:i||s,e.wrap?`(${n}${r})`:r})(d,n):zs(g,null,{wrap:!1,...n}):g},Xs=(t,e,r,n={})=>{if(null==e&&Bs(t))return[t];if(!Bs(t)||!Bs(e))return Qs(t,e,n);if("function"==typeof r)return Xs(t,e,1,{transform:r});if(Ns(r))return Xs(t,e,0,r);let i={...n};return!0===i.capture&&(i.wrap=!0),r=r||i.step||1,Ws(r)?Ws(t)&&Ws(e)?Ys(t,e,r,i):((t,e,r=1,n={})=>{if(!Ws(t)&&t.length>1||!Ws(e)&&e.length>1)return Qs(t,e,n);let i=n.transform||(t=>String.fromCharCode(t)),s=`${t}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,c=Math.min(s,o),u=Math.max(s,o);if(n.toRegex&&1===r)return qs(c,u,!1,n);let l=[],h=0;for(;a?s>=o:s<=o;)l.push(i(s,h)),s=a?s-r:s+r,h++;return!0===n.toRegex?zs(l,null,{wrap:!1,options:n}):l})(t,e,Math.max(Math.abs(r),1),i):null==r||Ns(r)?Xs(t,e,1,r):((t,e)=>{if(!0===e.strictRanges)throw new TypeError(`Expected step "${t}" to be a number`);return[]})(r,i)};As=Xs;Ss=(t,e={})=>{let r=(t,n={})=>{let i=bs(n),s=!0===t.invalid&&!0===e.escapeInvalid,o=!0===i||!0===s,a=!0===e.escapeInvalid?"\\":"",c="";if(!0===t.isOpen)return a+t.value;if(!0===t.isClose)return a+t.value;if("open"===t.type)return o?a+t.value:"(";if("close"===t.type)return o?a+t.value:")";if("comma"===t.type)return"comma"===t.prev.type?"":o?t.value:"|";if(t.value)return t.value;if(t.nodes&&t.ranges>0){let r=ws(t.nodes),n=As(...r,{...e,wrap:!1,toRegex:!0});if(0!==n.length)return r.length>1&&n.length>1?`(${n})`:n}if(t.nodes)for(let e of t.nodes)c+=r(e,t);return c};return r(t)};var Zs={};const Js=(t="",e="",r=!1)=>{let n=[];if(t=[].concat(t),!(e=[].concat(e)).length)return t;if(!t.length)return r?Es(e).map((t=>`{${t}}`)):e;for(let i of t)if(Array.isArray(i))for(let t of i)n.push(Js(t,e,r));else for(let t of e)!0===r&&"string"==typeof t&&(t=`{${t}}`),n.push(Array.isArray(t)?Js(i,t,r):i+t);return Es(n)};Zs=(t,e={})=>{let r=void 0===e.rangeLimit?1e3:e.rangeLimit,n=(t,i={})=>{t.queue=[];let s=i,o=i.queue;for(;"brace"!==s.type&&"root"!==s.type&&s.parent;)s=s.parent,o=s.queue;if(t.invalid||t.dollar)return void o.push(Js(o.pop(),ys(t,e)));if("brace"===t.type&&!0!==t.invalid&&2===t.nodes.length)return void o.push(Js(o.pop(),["{}"]));if(t.nodes&&t.ranges>0){let n=ws(t.nodes);if(((t,e,r=1,n)=>!1!==n&&!(!vs(t)||!vs(e))&&(Number(e)-Number(t))/Number(r)>=n)(...n,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let i=As(...n,e);return 0===i.length&&(i=ys(t,e)),o.push(Js(o.pop(),i)),void(t.nodes=[])}let a=(t=>"brace"===t.type&&t.commas>>0+t.ranges>>0==0&&(t.invalid=!0,!0))(t),c=t.queue,u=t;for(;"brace"!==u.type&&"root"!==u.type&&u.parent;)u=u.parent,c=u.queue;for(let e=0;e",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:"\t",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\ufeff"};const{MAX_LENGTH:ro,CHAR_BACKSLASH:no,CHAR_BACKTICK:io,CHAR_COMMA:so,CHAR_DOT:oo,CHAR_LEFT_PARENTHESES:ao,CHAR_RIGHT_PARENTHESES:co,CHAR_LEFT_CURLY_BRACE:uo,CHAR_RIGHT_CURLY_BRACE:lo,CHAR_LEFT_SQUARE_BRACKET:ho,CHAR_RIGHT_SQUARE_BRACKET:fo,CHAR_DOUBLE_QUOTE:po,CHAR_SINGLE_QUOTE:go,CHAR_NO_BREAK_SPACE:_o,CHAR_ZERO_WIDTH_NOBREAK_SPACE:yo}=to;eo=(t,e={})=>{if("string"!=typeof t)throw new TypeError("Expected a string");let r=e||{},n="number"==typeof r.maxLength?Math.min(ro,r.maxLength):ro;if(t.length>n)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${n})`);let i,s={type:"root",input:t,nodes:[]},o=[s],a=s,c=s,u=0,l=t.length,h=0,f=0;const p=()=>t[h++],d=t=>{if("text"===t.type&&"dot"===c.type&&(c.type="text"),!c||"text"!==c.type||"text"!==t.type)return a.nodes.push(t),t.parent=a,t.prev=c,c=t,t;c.value+=t.value};for(d({type:"bos"});h0){if(a.ranges>0){a.ranges=0;let t=a.nodes.shift();a.nodes=[t,{type:"text",value:ys(a)}]}d({type:"comma",value:i}),a.commas++}else if(i===oo&&f>0&&0===a.commas){let t=a.nodes;if(0===f||0===t.length){d({type:"text",value:i});continue}if("dot"===c.type){if(a.range=[],c.value+=i,c.type="range",3!==a.nodes.length&&5!==a.nodes.length){a.invalid=!0,a.ranges=0,c.type="text";continue}a.ranges++,a.args=[];continue}if("range"===c.type){t.pop();let e=t[t.length-1];e.value+=c.value+i,c=e,a.ranges--;continue}d({type:"dot",value:i})}else d({type:"text",value:i});else{if("brace"!==a.type){d({type:"text",value:i});continue}let t="close";a=o.pop(),a.close=!0,d({type:t,value:i}),f--,a=o[o.length-1]}else{f++;let t=c.value&&"$"===c.value.slice(-1)||!0===a.dollar;a=d({type:"brace",open:!0,close:!1,dollar:t,depth:f,commas:0,ranges:0,nodes:[]}),o.push(a),d({type:"open",value:i})}else{let t,r=i;for(!0!==e.keepQuotes&&(i="");h{t.nodes||("open"===t.type&&(t.isOpen=!0),"close"===t.type&&(t.isClose=!0),t.nodes||(t.type="text"),t.invalid=!0)}));let t=o[o.length-1],e=t.nodes.indexOf(a);t.nodes.splice(e,1,...a.nodes)}}while(o.length>0);return d({type:"eos"}),s};const mo=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let t=mo.create(n,e);Array.isArray(t)?r.push(...t):r.push(t)}else r=[].concat(mo.create(t,e));return e&&!0===e.expand&&!0===e.nodupes&&(r=[...new Set(r)]),r};mo.parse=(t,e={})=>eo(t,e),mo.stringify=(t,e={})=>ys("string"==typeof t?mo.parse(t,e):t,e),mo.compile=(t,e={})=>("string"==typeof t&&(t=mo.parse(t,e)),Ss(t,e)),mo.expand=(t,e={})=>{"string"==typeof t&&(t=mo.parse(t,e));let r=Zs(t,e);return!0===e.noempty&&(r=r.filter(Boolean)),!0===e.nodupes&&(r=[...new Set(r)]),r},mo.create=(t,e={})=>""===t||t.length<3?[t]:!0!==e.expand?mo.compile(t,e):mo.expand(t,e),ms=mo;var vo={};const bo=c;var wo={};const Eo=c,So="win32"===process.platform;var Ao={};const Ro=c,Po={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:"(?=.)",QMARK:"[^/]",END_ANCHOR:"(?:\\/|$)",DOTS_SLASH:"\\.{1,2}(?:\\/|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|\\/)\\.{1,2}(?:\\/|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:\\/|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:\\/|$))",QMARK_NO_DOT:"[^.\\/]",STAR:"[^/]*?",START_ANCHOR:"(?:^|\\/)"},xo={...Po,SLASH_LITERAL:"[\\\\/]",QMARK:"[^\\\\/]",STAR:"[^\\\\/]*?",DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)"};Ao={MAX_LENGTH:65536,POSIX_REGEX_SOURCE:{alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"},REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:Ro.sep,extglobChars:t=>({"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}),globChars:t=>!0===t?xo:Po};const{REGEX_BACKSLASH:Co,REGEX_REMOVE_BACKSLASH:Oo,REGEX_SPECIAL_CHARS:ko,REGEX_SPECIAL_CHARS_GLOBAL:Do}=Ao;var To=t=>t.replace(Do,"\\$1"),jo=t=>t.replace(Co,"/"),Fo=t=>t.replace(Oo,(t=>"\\"===t?"":t)),Mo=()=>{const t=process.version.slice(1).split(".").map(Number);return 3===t.length&&t[0]>=9||8===t[0]&&t[1]>=10},Io=t=>t&&"boolean"==typeof t.windows?t.windows:!0===So||"\\"===Eo.sep,Lo=(t,e,r)=>{const n=t.lastIndexOf(e,r);return-1===n?t:"\\"===t[n-1]?Lo(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`},Ho=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};const{CHAR_ASTERISK:$o,CHAR_AT:No,CHAR_BACKWARD_SLASH:Bo,CHAR_COMMA:Wo,CHAR_DOT:Go,CHAR_EXCLAMATION_MARK:Uo,CHAR_FORWARD_SLASH:Vo,CHAR_LEFT_CURLY_BRACE:qo,CHAR_LEFT_PARENTHESES:zo,CHAR_LEFT_SQUARE_BRACKET:Ko,CHAR_PLUS:Qo,CHAR_QUESTION_MARK:Yo,CHAR_RIGHT_CURLY_BRACE:Xo,CHAR_RIGHT_PARENTHESES:Zo,CHAR_RIGHT_SQUARE_BRACKET:Jo}=Ao,ta=t=>t===Vo||t===Bo,ea=t=>{!0!==t.isPrefix&&(t.depth=t.isGlobstar?1/0:1)};wo=(t,e)=>{const r=e||{},n=t.length-1,i=!0===r.parts||!0===r.scanToEnd,s=[],o=[],a=[];let c,u,l=t,h=-1,f=0,p=0,d=!1,g=!1,_=!1,y=!1,m=!1,v=!1,b=!1,w=!1,E=!1,S=0,A={value:"",depth:0,isGlob:!1};const R=()=>h>=n,P=()=>(c=u,l.charCodeAt(++h));for(;h0&&(C=l.slice(0,f),l=l.slice(f),p-=f),x&&!0===_&&p>0?(x=l.slice(0,p),O=l.slice(p)):!0===_?(x="",O=l):x=l,x&&""!==x&&"/"!==x&&x!==l&&ta(x.charCodeAt(x.length-1))&&(x=x.slice(0,-1)),!0===r.unescape&&(O&&(O=Fo(O)),x&&!0===b&&(x=Fo(x)));const k={prefix:C,input:t,start:f,base:x,glob:O,isBrace:d,isBracket:g,isGlob:_,isExtglob:y,isGlobstar:m,negated:w};if(!0===r.tokens&&(k.maxDepth=0,ta(u)||o.push(A),k.tokens=o),!0===r.parts||!0===r.tokens){let e;for(let n=0;n{if("function"==typeof e.expandRange)return e.expandRange(...t,e);t.sort();const r=`[${t.join("-")}]`;try{new RegExp(r)}catch(e){return t.map((t=>To(t))).join("..")}return r},ua=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,la=(t,e)=>{if("string"!=typeof t)throw new TypeError("Expected a string");t=aa[t]||t;const r={...e},n="number"==typeof r.maxLength?Math.min(na,r.maxLength):na;let i=t.length;if(i>n)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${n}`);const s={type:"bos",value:"",output:r.prepend||""},o=[s],a=r.capture?"":"?:",c=Io(e),u=Ao.globChars(c),l=Ao.extglobChars(u),{DOT_LITERAL:h,PLUS_LITERAL:f,SLASH_LITERAL:p,ONE_CHAR:d,DOTS_SLASH:g,NO_DOT:_,NO_DOT_SLASH:y,NO_DOTS_SLASH:m,QMARK:v,QMARK_NO_DOT:b,STAR:w,START_ANCHOR:E}=u,S=t=>`(${a}(?:(?!${E}${t.dot?g:h}).)*?)`,A=r.dot?"":_,R=r.dot?v:b;let P=!0===r.bash?S(r):w;r.capture&&(P=`(${P})`),"boolean"==typeof r.noext&&(r.noextglob=r.noext);const x={input:t,index:-1,start:0,dot:!0===r.dot,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};t=Ho(t,x),i=t.length;const C=[],O=[],k=[];let D,T=s;const j=()=>x.index===i-1,F=x.peek=(e=1)=>t[x.index+e],M=x.advance=()=>t[++x.index],I=()=>t.slice(x.index+1),L=(t="",e=0)=>{x.consumed+=t,x.index+=e},H=t=>{x.output+=null!=t.output?t.output:t.value,L(t.value)},$=()=>{let t=1;for(;"!"===F()&&("("!==F(2)||"?"===F(3));)M(),x.start++,t++;return t%2!=0&&(x.negated=!0,x.start++,!0)},N=t=>{x[t]++,k.push(t)},B=t=>{x[t]--,k.pop()},W=t=>{if("globstar"===T.type){const e=x.braces>0&&("comma"===t.type||"brace"===t.type),r=!0===t.extglob||C.length&&("pipe"===t.type||"paren"===t.type);"slash"===t.type||"paren"===t.type||e||r||(x.output=x.output.slice(0,-T.output.length),T.type="star",T.value="*",T.output=P,x.output+=T.output)}if(C.length&&"paren"!==t.type&&!l[t.value]&&(C[C.length-1].inner+=t.value),(t.value||t.output)&&H(t),T&&"text"===T.type&&"text"===t.type)return T.value+=t.value,void(T.output=(T.output||"")+t.value);t.prev=T,o.push(t),T=t},G=(t,e)=>{const n={...l[e],conditions:1,inner:""};n.prev=T,n.parens=x.parens,n.output=x.output;const i=(r.capture?"(":"")+n.open;N("parens"),W({type:t,value:e,output:x.output?"":d}),W({type:"paren",extglob:!0,value:M(),output:i}),C.push(n)},U=t=>{let e=t.close+(r.capture?")":"");if("negate"===t.type){let n=P;t.inner&&t.inner.length>1&&t.inner.includes("/")&&(n=S(r)),(n!==P||j()||/^\)+$/.test(I()))&&(e=t.close=`)$))${n}`),"bos"===t.prev.type&&(x.negatedExtglob=!0)}W({type:"paren",extglob:!0,value:D,output:e}),B("parens")};if(!1!==r.fastpaths&&!/(^[*!]|[/()[\]{}"])/.test(t)){let n=!1,i=t.replace(oa,((t,e,r,i,s,o)=>"\\"===i?(n=!0,t):"?"===i?e?e+i+(s?v.repeat(s.length):""):0===o?R+(s?v.repeat(s.length):""):v.repeat(r.length):"."===i?h.repeat(r.length):"*"===i?e?e+i+(s?P:""):P:e?t:`\\${t}`));return!0===n&&(i=!0===r.unescape?i.replace(/\\/g,""):i.replace(/\\+/g,(t=>t.length%2==0?"\\\\":t?"\\":""))),i===t&&!0===r.contains?(x.output=t,x):(x.output=((t,e={},r={})=>{let n=`${r.contains?"":"^"}(?:${t})${r.contains?"":"$"}`;return!0===e.negated&&(n=`(?:^(?!${n}).*$)`),n})(i,x,e),x)}for(;!j();){if(D=M(),"\0"===D)continue;if("\\"===D){const t=F();if("/"===t&&!0!==r.bash)continue;if("."===t||";"===t)continue;if(!t){D+="\\",W({type:"text",value:D});continue}const e=/^\\+/.exec(I());let n=0;if(e&&e[0].length>2&&(n=e[0].length,x.index+=n,n%2!=0&&(D+="\\")),!0===r.unescape?D=M()||"":D+=M()||"",0===x.brackets){W({type:"text",value:D});continue}}if(x.brackets>0&&("]"!==D||"["===T.value||"[^"===T.value)){if(!1!==r.posix&&":"===D){const t=T.value.slice(1);if(t.includes("[")&&(T.posix=!0,t.includes(":"))){const t=T.value.lastIndexOf("["),e=T.value.slice(0,t),r=T.value.slice(t+2),n=ia[r];if(n){T.value=e+n,x.backtrack=!0,M(),s.output||1!==o.indexOf(T)||(s.output=d);continue}}}("["===D&&":"!==F()||"-"===D&&"]"===F())&&(D=`\\${D}`),"]"!==D||"["!==T.value&&"[^"!==T.value||(D=`\\${D}`),!0===r.posix&&"!"===D&&"["===T.value&&(D="^"),T.value+=D,H({value:D});continue}if(1===x.quotes&&'"'!==D){D=To(D),T.value+=D,H({value:D});continue}if('"'===D){x.quotes=1===x.quotes?0:1,!0===r.keepQuotes&&W({type:"text",value:D});continue}if("("===D){N("parens"),W({type:"paren",value:D});continue}if(")"===D){if(0===x.parens&&!0===r.strictBrackets)throw new SyntaxError(ua("opening","("));const t=C[C.length-1];if(t&&x.parens===t.parens+1){U(C.pop());continue}W({type:"paren",value:D,output:x.parens?")":"\\)"}),B("parens");continue}if("["===D){if(!0!==r.nobracket&&I().includes("]"))N("brackets");else{if(!0!==r.nobracket&&!0===r.strictBrackets)throw new SyntaxError(ua("closing","]"));D=`\\${D}`}W({type:"bracket",value:D});continue}if("]"===D){if(!0===r.nobracket||T&&"bracket"===T.type&&1===T.value.length){W({type:"text",value:D,output:`\\${D}`});continue}if(0===x.brackets){if(!0===r.strictBrackets)throw new SyntaxError(ua("opening","["));W({type:"text",value:D,output:`\\${D}`});continue}B("brackets");const t=T.value.slice(1);if(!0===T.posix||"^"!==t[0]||t.includes("/")||(D=`/${D}`),T.value+=D,H({value:D}),!1===r.literalBrackets||(V=t,ko.test(V)))continue;const e=To(T.value);if(x.output=x.output.slice(0,-T.value.length),!0===r.literalBrackets){x.output+=e,T.value=e;continue}T.value=`(${a}${e}|${T.value})`,x.output+=T.value;continue}if("{"===D&&!0!==r.nobrace){N("braces");const t={type:"brace",value:D,output:"(",outputIndex:x.output.length,tokensIndex:x.tokens.length};O.push(t),W(t);continue}if("}"===D){const t=O[O.length-1];if(!0===r.nobrace||!t){W({type:"text",value:D,output:D});continue}let e=")";if(!0===t.dots){const t=o.slice(),n=[];for(let e=t.length-1;e>=0&&(o.pop(),"brace"!==t[e].type);e--)"dots"!==t[e].type&&n.unshift(t[e].value);e=ca(n,r),x.backtrack=!0}if(!0!==t.comma&&!0!==t.dots){const r=x.output.slice(0,t.outputIndex),n=x.tokens.slice(t.tokensIndex);t.value=t.output="\\{",D=e="\\}",x.output=r;for(const t of n)x.output+=t.output||t.value}W({type:"brace",value:D,output:e}),B("braces"),O.pop();continue}if("|"===D){C.length>0&&C[C.length-1].conditions++,W({type:"text",value:D});continue}if(","===D){let t=D;const e=O[O.length-1];e&&"braces"===k[k.length-1]&&(e.comma=!0,t="|"),W({type:"comma",value:D,output:t});continue}if("/"===D){if("dot"===T.type&&x.index===x.start+1){x.start=x.index+1,x.consumed="",x.output="",o.pop(),T=s;continue}W({type:"slash",value:D,output:p});continue}if("."===D){if(x.braces>0&&"dot"===T.type){"."===T.value&&(T.output=h);const t=O[O.length-1];T.type="dots",T.output+=D,T.value+=D,t.dots=!0;continue}if(x.braces+x.parens===0&&"bos"!==T.type&&"slash"!==T.type){W({type:"text",value:D,output:h});continue}W({type:"dot",value:D,output:h});continue}if("?"===D){if(!(T&&"("===T.value)&&!0!==r.noextglob&&"("===F()&&"?"!==F(2)){G("qmark",D);continue}if(T&&"paren"===T.type){const t=F();let e=D;if("<"===t&&!Mo())throw new Error("Node.js v10 or higher is required for regex lookbehinds");("("===T.value&&!/[!=<:]/.test(t)||"<"===t&&!/<([!=]|\w+>)/.test(I()))&&(e=`\\${D}`),W({type:"text",value:D,output:e});continue}if(!0!==r.dot&&("slash"===T.type||"bos"===T.type)){W({type:"qmark",value:D,output:b});continue}W({type:"qmark",value:D,output:v});continue}if("!"===D){if(!0!==r.noextglob&&"("===F()&&("?"!==F(2)||!/[!=<:]/.test(F(3)))){G("negate",D);continue}if(!0!==r.nonegate&&0===x.index){$();continue}}if("+"===D){if(!0!==r.noextglob&&"("===F()&&"?"!==F(2)){G("plus",D);continue}if(T&&"("===T.value||!1===r.regex){W({type:"plus",value:D,output:f});continue}if(T&&("bracket"===T.type||"paren"===T.type||"brace"===T.type)||x.parens>0){W({type:"plus",value:D});continue}W({type:"plus",value:f});continue}if("@"===D){if(!0!==r.noextglob&&"("===F()&&"?"!==F(2)){W({type:"at",extglob:!0,value:D,output:""});continue}W({type:"text",value:D});continue}if("*"!==D){"$"!==D&&"^"!==D||(D=`\\${D}`);const t=sa.exec(I());t&&(D+=t[0],x.index+=t[0].length),W({type:"text",value:D});continue}if(T&&("globstar"===T.type||!0===T.star)){T.type="star",T.star=!0,T.value+=D,T.output=P,x.backtrack=!0,x.globstar=!0,L(D);continue}let e=I();if(!0!==r.noextglob&&/^\([^?]/.test(e)){G("star",D);continue}if("star"===T.type){if(!0===r.noglobstar){L(D);continue}const n=T.prev,i=n.prev,s="slash"===n.type||"bos"===n.type,o=i&&("star"===i.type||"globstar"===i.type);if(!0===r.bash&&(!s||e[0]&&"/"!==e[0])){W({type:"star",value:D,output:""});continue}const a=x.braces>0&&("comma"===n.type||"brace"===n.type),c=C.length&&("pipe"===n.type||"paren"===n.type);if(!s&&"paren"!==n.type&&!a&&!c){W({type:"star",value:D,output:""});continue}for(;"/**"===e.slice(0,3);){const r=t[x.index+4];if(r&&"/"!==r)break;e=e.slice(3),L("/**",3)}if("bos"===n.type&&j()){T.type="globstar",T.value+=D,T.output=S(r),x.output=T.output,x.globstar=!0,L(D);continue}if("slash"===n.type&&"bos"!==n.prev.type&&!o&&j()){x.output=x.output.slice(0,-(n.output+T.output).length),n.output=`(?:${n.output}`,T.type="globstar",T.output=S(r)+(r.strictSlashes?")":"|$)"),T.value+=D,x.globstar=!0,x.output+=n.output+T.output,L(D);continue}if("slash"===n.type&&"bos"!==n.prev.type&&"/"===e[0]){const t=void 0!==e[1]?"|$":"";x.output=x.output.slice(0,-(n.output+T.output).length),n.output=`(?:${n.output}`,T.type="globstar",T.output=`${S(r)}${p}|${p}${t})`,T.value+=D,x.output+=n.output+T.output,x.globstar=!0,L(D+M()),W({type:"slash",value:"/",output:""});continue}if("bos"===n.type&&"/"===e[0]){T.type="globstar",T.value+=D,T.output=`(?:^|${p}|${S(r)}${p})`,x.output=T.output,x.globstar=!0,L(D+M()),W({type:"slash",value:"/",output:""});continue}x.output=x.output.slice(0,-T.output.length),T.type="globstar",T.output=S(r),T.value+=D,x.output+=T.output,x.globstar=!0,L(D);continue}const n={type:"star",value:D,output:P};!0!==r.bash?!T||"bracket"!==T.type&&"paren"!==T.type||!0!==r.regex?(x.index!==x.start&&"slash"!==T.type&&"dot"!==T.type||("dot"===T.type?(x.output+=y,T.output+=y):!0===r.dot?(x.output+=m,T.output+=m):(x.output+=A,T.output+=A),"*"!==F()&&(x.output+=d,T.output+=d)),W(n)):(n.output=D,W(n)):(n.output=".*?","bos"!==T.type&&"slash"!==T.type||(n.output=A+n.output),W(n))}for(var V;x.brackets>0;){if(!0===r.strictBrackets)throw new SyntaxError(ua("closing","]"));x.output=Lo(x.output,"["),B("brackets")}for(;x.parens>0;){if(!0===r.strictBrackets)throw new SyntaxError(ua("closing",")"));x.output=Lo(x.output,"("),B("parens")}for(;x.braces>0;){if(!0===r.strictBrackets)throw new SyntaxError(ua("closing","}"));x.output=Lo(x.output,"{"),B("braces")}if(!0===r.strictSlashes||"star"!==T.type&&"bracket"!==T.type||W({type:"maybe_slash",value:"",output:`${p}?`}),!0===x.backtrack){x.output="";for(const t of x.tokens)x.output+=null!=t.output?t.output:t.value,t.suffix&&(x.output+=t.suffix)}return x};la.fastpaths=(t,e)=>{const r={...e},n="number"==typeof r.maxLength?Math.min(na,r.maxLength):na,i=t.length;if(i>n)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${n}`);t=aa[t]||t;const s=Io(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:c,DOTS_SLASH:u,NO_DOT:l,NO_DOTS:h,NO_DOTS_SLASH:f,STAR:p,START_ANCHOR:d}=Ao.globChars(s),g=r.dot?h:l,_=r.dot?f:l,y=r.capture?"":"?:";let m=!0===r.bash?".*?":p;r.capture&&(m=`(${m})`);const v=t=>!0===t.noglobstar?m:`(${y}(?:(?!${d}${t.dot?u:o}).)*?)`,b=t=>{switch(t){case"*":return`${g}${c}${m}`;case".*":return`${o}${c}${m}`;case"*.*":return`${g}${m}${o}${c}${m}`;case"*/*":return`${g}${m}${a}${c}${_}${m}`;case"**":return g+v(r);case"**/*":return`(?:${g}${v(r)}${a})?${_}${c}${m}`;case"**/*.*":return`(?:${g}${v(r)}${a})?${_}${m}${o}${c}${m}`;case"**/.*":return`(?:${g}${v(r)}${a})?${o}${c}${m}`;default:{const e=/^(.*?)\.(\w+)$/.exec(t);if(!e)return;const r=b(e[1]);if(!r)return;return r+o+e[2]}}},w=Ho(t,{negated:!1,prefix:""});let E=b(w);return E&&!0!==r.strictSlashes&&(E+=`${a}?`),E},ra=la;const ha=(t,e,r=!1)=>{if(Array.isArray(t)){const n=t.map((t=>ha(t,e,r)));return t=>{for(const e of n){const r=e(t);if(r)return r}return!1}}const n=(i=t)&&"object"==typeof i&&!Array.isArray(i)&&t.tokens&&t.input;var i;if(""===t||"string"!=typeof t&&!n)throw new TypeError("Expected pattern to be a non-empty string");const s=e||{},o=Io(e),a=n?ha.compileRe(t,e):ha.makeRe(t,e,!1,!0),c=a.state;delete a.state;let u=()=>!1;if(s.ignore){const t={...e,ignore:null,onMatch:null,onResult:null};u=ha(s.ignore,t,r)}const l=(r,n=!1)=>{const{isMatch:i,match:l,output:h}=ha.test(r,a,e,{glob:t,posix:o}),f={glob:t,state:c,regex:a,posix:o,input:r,output:h,match:l,isMatch:i};return"function"==typeof s.onResult&&s.onResult(f),!1===i?(f.isMatch=!1,!!n&&f):u(r)?("function"==typeof s.onIgnore&&s.onIgnore(f),f.isMatch=!1,!!n&&f):("function"==typeof s.onMatch&&s.onMatch(f),!n||f)};return r&&(l.state=c),l};ha.test=(t,e,r,{glob:n,posix:i}={})=>{if("string"!=typeof t)throw new TypeError("Expected input to be a string");if(""===t)return{isMatch:!1,output:""};const s=r||{},o=s.format||(i?jo:null);let a=t===n,c=a&&o?o(t):t;return!1===a&&(c=o?o(t):t,a=c===n),!1!==a&&!0!==s.capture||(a=!0===s.matchBase||!0===s.basename?ha.matchBase(t,e,r,i):e.exec(c)),{isMatch:Boolean(a),match:a,output:c}},ha.matchBase=(t,e,r,n=Io(r))=>(e instanceof RegExp?e:ha.makeRe(e,r)).test(bo.basename(t)),ha.isMatch=(t,e,r)=>ha(e,r)(t),ha.parse=(t,e)=>Array.isArray(t)?t.map((t=>ha.parse(t,e))):ra(t,{...e,fastpaths:!1}),ha.scan=(t,e)=>wo(t,e),ha.compileRe=(t,e,r=!1,n=!1)=>{if(!0===r)return t.output;const i=e||{},s=i.contains?"":"^",o=i.contains?"":"$";let a=`${s}(?:${t.output})${o}`;t&&!0===t.negated&&(a=`^(?!${a}).*$`);const c=ha.toRegex(a,e);return!0===n&&(c.state=t),c},ha.makeRe=(t,e,r=!1,n=!1)=>{if(!t||"string"!=typeof t)throw new TypeError("Expected a non-empty string");const i=e||{};let s,o={negated:!1,fastpaths:!0},a="";return t.startsWith("./")&&(t=t.slice(2),a=o.prefix="./"),!1===i.fastpaths||"."!==t[0]&&"*"!==t[0]||(s=ra.fastpaths(t,e)),void 0===s?(o=ra(t,e),o.prefix=a+(o.prefix||"")):o.output=s,ha.compileRe(o,e,r,n)},ha.toRegex=(t,e)=>{try{const r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(t){if(e&&!0===e.debug)throw t;return/$^/}},ha.constants=Ao,vo=ha;const fa=t=>""===t||"./"===t,pa=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let n=new Set,i=new Set,s=new Set,o=0,a=t=>{s.add(t.output),r&&r.onResult&&r.onResult(t)};for(let s=0;s!n.has(t)));if(r&&0===c.length){if(!0===r.failglob)throw new Error(`No matches found for "${e.join(", ")}"`);if(!0===r.nonull||!0===r.nullglob)return r.unescape?e.map((t=>t.replace(/\\/g,""))):e}return c};pa.match=pa,pa.matcher=(t,e)=>vo(t,e),pa.any=pa.isMatch=(t,e,r)=>vo(e,r)(t),pa.not=(t,e,r={})=>{e=[].concat(e).map(String);let n=new Set,i=[],s=pa(t,e,{...r,onResult:t=>{r.onResult&&r.onResult(t),i.push(t.output)}});for(let t of i)s.includes(t)||n.add(t);return[...n]},pa.contains=(t,e,r)=>{if("string"!=typeof t)throw new TypeError(`Expected a string: "${_s.inspect(t)}"`);if(Array.isArray(e))return e.some((e=>pa.contains(t,e,r)));if("string"==typeof e){if(fa(t)||fa(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return pa.isMatch(t,e,{...r,contains:!0})},pa.matchKeys=(t,e,r)=>{if(null===(n=t)||"object"!=typeof n||Array.isArray(n))throw new TypeError("Expected the first argument to be an object");var n;let i=pa(Object.keys(t),e,r),s={};for(let e of i)s[e]=t[e];return s},pa.some=(t,e,r)=>{let n=[].concat(t);for(let t of[].concat(e)){let e=vo(String(t),r);if(n.some((t=>e(t))))return!0}return!1},pa.every=(t,e,r)=>{let n=[].concat(t);for(let t of[].concat(e)){let e=vo(String(t),r);if(!n.every((t=>e(t))))return!1}return!0},pa.all=(t,e,r)=>{if("string"!=typeof t)throw new TypeError(`Expected a string: "${_s.inspect(t)}"`);return[].concat(e).every((e=>vo(e,r)(t)))},pa.capture=(t,e,r)=>{let n=Io(r),i=vo.makeRe(String(t),{...r,capture:!0}).exec(n?jo(e):e);if(i)return i.slice(1).map((t=>void 0===t?"":t))},pa.makeRe=(...t)=>vo.makeRe(...t),pa.scan=(...t)=>vo.scan(...t),pa.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let t of ms(String(n),e))r.push(vo.parse(t,e));return r},pa.braces=(t,e)=>{if("string"!=typeof t)throw new TypeError("Expected a string");return e&&!0===e.nobrace||!/\{.*\}/.test(t)?[t]:ms(t,e)},pa.braceExpand=(t,e)=>{if("string"!=typeof t)throw new TypeError("Expected a string");return pa.braces(t,{...e,expand:!0})},gs=pa;const da=/[*?]|^!/,ga=/\[.*]/,_a=/(?:^|[^!*+?@])\(.*\|.*\)/,ya=/[!*+?@]\(.*\)/,ma=/{.*(?:,|\.\.).*}/;function va(t,e={}){return!wa(t,e)}var ba=va;function wa(t,e={}){return""!==t&&(!(!1!==e.caseSensitiveMatch&&!t.includes("\\"))||(!!(da.test(t)||ga.test(t)||_a.test(t))||(!(!1===e.extglob||!ya.test(t))||!(!1===e.braceExpansion||!ma.test(t)))))}ts.isStaticPattern=ba;var Ea=wa;ts.isDynamicPattern=Ea;var Sa=function(t){return Ra(t)?t.slice(1):t};ts.convertToPositivePattern=Sa;var Aa=function(t){return"!"+t};function Ra(t){return t.startsWith("!")&&"("!==t[1]}ts.convertToNegativePattern=Aa;var Pa=Ra;function xa(t){return!Ra(t)}ts.isNegativePattern=Pa;var Ca=xa;ts.isPositivePattern=Ca;var Oa=function(t){return t.filter(Ra)};ts.getNegativePatterns=Oa;var ka=function(t){return t.filter(xa)};ts.getPositivePatterns=ka;var Da=function(t){return ns(t,{flipBackslashes:!1})};ts.getBaseDirectory=Da;var Ta=function(t){return t.includes("**")};function ja(t){return t.endsWith("/**")}ts.hasGlobStar=Ta;var Fa=ja;ts.endsWithSlashGlobStar=Fa;var Ma=function(t){const e=rs.basename(t);return ja(t)||va(e)};ts.isAffectDepthOfReadingPattern=Ma;var Ia=function(t){return t.reduce(((t,e)=>t.concat(La(e))),[])};function La(t){return gs.braces(t,{expand:!0,nodupes:!0})}ts.expandPatternsWithBraceExpansion=Ia;var Ha=La;ts.expandBraceExpansion=Ha;var $a=function(t,e){let{parts:r}=vo.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return 0===r.length&&(r=[t]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r};function Na(t,e){return gs.makeRe(t,e)}ts.getPatternParts=$a;var Ba=Na;ts.makeRe=Ba;var Wa=function(t,e){return t.map((t=>Na(t,e)))};ts.convertPatternsToRe=Wa,es=function(t,e){return e.some((e=>e.test(t)))},ts.matchAny=es;var Ga=ts;ji.pattern=ts;var Ua={};Object.defineProperty(Ua,"__esModule",{value:!0});var Va=void 0;Ua.merge=Va;var qa={};const za=e.PassThrough,Ka=Array.prototype.slice;function Qa(t,e){if(Array.isArray(t))for(let r=0,n=t.length;rt.emit("close")))}qa=function(){const t=[],e=Ka.call(arguments);let r=!1,n=e[e.length-1];n&&!Array.isArray(n)&&null==n.pipe?e.pop():n={};const i=!1!==n.end,s=!0===n.pipeError;null==n.objectMode&&(n.objectMode=!0);null==n.highWaterMark&&(n.highWaterMark=65536);const o=za(n);function a(){for(let e=0,r=arguments.length;e0||(r=!1,c())}function a(t){function e(){t.removeListener("merge2UnpipeEnd",e),t.removeListener("end",e),s&&t.removeListener("error",r),i()}function r(t){o.emit("error",t)}if(t._readableState.endEmitted)return i();t.on("merge2UnpipeEnd",e),t.on("end",e),s&&t.on("error",r),t.pipe(o,{end:!1}),t.resume()}for(let t=0;t{t.once("error",(t=>e.emit("error",t)))})),e.once("close",(()=>Ya(t))),e.once("end",(()=>Ya(t))),e},Ua.merge=Va;var Xa=Ua;ji.stream=Ua;var Za={};Object.defineProperty(Za,"__esModule",{value:!0});var Ja=(tc=void 0,Za.isString=tc);Za.isEmpty=Ja;var tc=function(t){return"string"==typeof t};Za.isString=tc,Ja=function(t){return""===t},Za.isEmpty=Ja,Fi=Za,ji.string=Fi;var ec=function(t,e){const r=ic(t),n=oc(t,e.ignore),i=r.filter((t=>ji.pattern.isStaticPattern(t,e))),s=r.filter((t=>ji.pattern.isDynamicPattern(t,e))),o=rc(i,n,!1),a=rc(s,n,!0);return o.concat(a)};function rc(t,e,r){const n=cc(t);if("."in n){return[fc(".",t,e,r)]}return lc(n,e,r)}Di.generate=ec;var nc=rc;function ic(t){return ji.pattern.getPositivePatterns(t)}Di.convertPatternsToTasks=nc;var sc=ic;function oc(t,e){return ji.pattern.getNegativePatterns(t).concat(e).map(ji.pattern.convertToPositivePattern)}Di.getPositivePatterns=sc;var ac=oc;function cc(t){return t.reduce(((t,e)=>{const r=ji.pattern.getBaseDirectory(e);return r in t?t[r].push(e):t[r]=[e],t}),{})}Di.getNegativePatternsAsPositive=ac;var uc=cc;function lc(t,e,r){return Object.keys(t).map((n=>fc(n,t[n],e,r)))}Di.groupPatternsByBaseDirectory=uc;var hc=lc;function fc(t,e,r,n){return{dynamic:n,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(ji.pattern.convertToNegativePattern))}}Di.convertPatternGroupsToTasks=hc,Ti=fc,Di.convertPatternGroupToTask=Ti;var pc={};Object.defineProperty(pc,"__esModule",{value:!0});var dc={};Object.defineProperty(dc,"__esModule",{value:!0});const gc=e;var _c={};Object.defineProperty(_c,"__esModule",{value:!0});var yc=(kc=void 0,Dc=_c.Settings=kc,_c.stat=Dc);_c.statSync=yc;var mc={};Object.defineProperty(mc,"__esModule",{value:!0});var vc=void 0;function bc(t,e){t(e)}function wc(t,e){t(null,e)}mc.read=vc,vc=function(t,e,r){e.fs.lstat(t,((n,i)=>null!==n?bc(r,n):i.isSymbolicLink()&&e.followSymbolicLink?void e.fs.stat(t,((t,n)=>{if(null!==t)return e.throwErrorOnBrokenSymbolicLink?bc(r,t):wc(r,i);e.markSymbolicLink&&(n.isSymbolicLink=()=>!0),wc(r,n)})):wc(r,i)))},mc.read=vc;var Ec={};Object.defineProperty(Ec,"__esModule",{value:!0});var Sc=void 0;Ec.read=Sc,Sc=function(t,e){const r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{const r=e.fs.statSync(t);return e.markSymbolicLink&&(r.isSymbolicLink=()=>!0),r}catch(t){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw t}},Ec.read=Sc;var Ac={};Object.defineProperty(Ac,"__esModule",{value:!0});var Rc={};Object.defineProperty(Rc,"__esModule",{value:!0});var Pc=(Cc=void 0,Rc.FILE_SYSTEM_ADAPTER=Cc);Rc.createFileSystemAdapter=Pc;const xc=n;var Cc={lstat:xc.lstat,stat:xc.stat,lstatSync:xc.lstatSync,statSync:xc.statSync};Rc.FILE_SYSTEM_ADAPTER=Cc,Pc=function(t){return void 0===t?Rc.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Rc.FILE_SYSTEM_ADAPTER),t)},Rc.createFileSystemAdapter=Pc;var Oc=class{constructor(t={}){this._options=t,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=Rc.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(t,e){return null!=t?t:e}};Ac.default=Oc;var kc=Ac.default;_c.Settings=kc;var Dc=function(t,e,r){if("function"==typeof e)return mc.read(t,Tc(),e);mc.read(t,Tc(e),r)};function Tc(t={}){return t instanceof Ac.default?t:new Ac.default(t)}_c.stat=Dc,yc=function(t,e){const r=Tc(e);return Ec.read(t,r)},_c.statSync=yc;var jc={};Object.defineProperty(jc,"__esModule",{value:!0});var Fc=(Zu=void 0,Ju=jc.walk=Zu,tl=jc.walkSync=Ju,jc.walkStream=tl);jc.Settings=Fc;var Mc={};Object.defineProperty(Mc,"__esModule",{value:!0});var Ic={};Object.defineProperty(Ic,"__esModule",{value:!0});const Lc=u;var Hc={};Object.defineProperty(Hc,"__esModule",{value:!0});var $c=(Eu=void 0,Su=Hc.scandir=Eu,Hc.scandirSync=Su);Hc.Settings=$c;var Nc={};Object.defineProperty(Nc,"__esModule",{value:!0});var Bc=(nu=void 0,su=Nc.read=nu,Nc.readdirWithFileTypes=su);Nc.readdir=Bc;var Wc={};/*! run-parallel. MIT License. Feross Aboukhadijeh */Wc=function(t,e){let r,n,i,s=!0;Array.isArray(t)?(r=[],n=t.length):(i=Object.keys(t),r={},n=i.length);function o(t){function n(){e&&e(t,r),e=null}s?Gc(n):n()}function a(t,e,i){r[t]=i,(0==--n||e)&&o(e)}n?i?i.forEach((function(e){t[e]((function(t,r){a(e,t,r)}))})):t.forEach((function(t,e){t((function(t,r){a(e,t,r)}))})):o(null);s=!1};var Gc={};/*! queue-microtask. MIT License. Feross Aboukhadijeh */let Uc;Gc="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:f):t=>(Uc||(Uc=Promise.resolve())).then(t).catch((t=>setTimeout((()=>{throw t}),0)));var Vc={};Object.defineProperty(Vc,"__esModule",{value:!0});var qc=void 0;Vc.IS_SUPPORT_READDIR_WITH_FILE_TYPES=qc;const zc=process.versions.node.split("."),Kc=parseInt(zc[0],10),Qc=parseInt(zc[1],10);qc=Kc>10||10===Kc&&Qc>=10,Vc.IS_SUPPORT_READDIR_WITH_FILE_TYPES=qc;var Yc={};Object.defineProperty(Yc,"__esModule",{value:!0});var Xc=void 0;Yc.fs=Xc;var Zc={};Object.defineProperty(Zc,"__esModule",{value:!0});var Jc=void 0;Zc.createDirentFromStats=Jc;class tu{constructor(t,e){this.name=t,this.isBlockDevice=e.isBlockDevice.bind(e),this.isCharacterDevice=e.isCharacterDevice.bind(e),this.isDirectory=e.isDirectory.bind(e),this.isFIFO=e.isFIFO.bind(e),this.isFile=e.isFile.bind(e),this.isSocket=e.isSocket.bind(e),this.isSymbolicLink=e.isSymbolicLink.bind(e)}}Jc=function(t,e){return new tu(t,e)},Zc.createDirentFromStats=Jc,Xc=Zc,Yc.fs=Xc;var eu={};Object.defineProperty(eu,"__esModule",{value:!0});var ru=void 0;eu.joinPathSegments=ru,ru=function(t,e,r){return t.endsWith(r)?t+e:t+r+e},eu.joinPathSegments=ru;var nu=function(t,e,r){return!e.stats&&Vc.IS_SUPPORT_READDIR_WITH_FILE_TYPES?iu(t,e,r):ou(t,e,r)};function iu(t,e,r){e.fs.readdir(t,{withFileTypes:!0},((n,i)=>{if(null!==n)return au(r,n);const s=i.map((r=>({dirent:r,name:r.name,path:eu.joinPathSegments(t,r.name,e.pathSegmentSeparator)})));if(!e.followSymbolicLinks)return cu(r,s);const o=s.map((t=>function(t,e){return r=>{if(!t.dirent.isSymbolicLink())return r(null,t);e.fs.stat(t.path,((n,i)=>null!==n?e.throwErrorOnBrokenSymbolicLink?r(n):r(null,t):(t.dirent=Yc.fs.createDirentFromStats(t.name,i),r(null,t))))}}(t,e)));Wc(o,((t,e)=>{if(null!==t)return au(r,t);cu(r,e)}))}))}Nc.read=nu;var su=iu;function ou(t,e,r){e.fs.readdir(t,((n,i)=>{if(null!==n)return au(r,n);const s=i.map((r=>eu.joinPathSegments(t,r,e.pathSegmentSeparator))),o=s.map((t=>r=>_c.stat(t,e.fsStatSettings,r)));Wc(o,((t,n)=>{if(null!==t)return au(r,t);const o=[];i.forEach(((t,r)=>{const i=n[r],a={name:t,path:s[r],dirent:Yc.fs.createDirentFromStats(t,i)};e.stats&&(a.stats=i),o.push(a)})),cu(r,o)}))}))}function au(t,e){t(e)}function cu(t,e){t(null,e)}Nc.readdirWithFileTypes=su,Bc=ou,Nc.readdir=Bc;var uu={};Object.defineProperty(uu,"__esModule",{value:!0});var lu=(hu=void 0,pu=uu.read=hu,uu.readdirWithFileTypes=pu);uu.readdir=lu;var hu=function(t,e){return!e.stats&&Vc.IS_SUPPORT_READDIR_WITH_FILE_TYPES?fu(t,e):du(t,e)};function fu(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map((r=>{const n={dirent:r,name:r.name,path:eu.joinPathSegments(t,r.name,e.pathSegmentSeparator)};if(n.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{const t=e.fs.statSync(n.path);n.dirent=Yc.fs.createDirentFromStats(n.name,t)}catch(t){if(e.throwErrorOnBrokenSymbolicLink)throw t}return n}))}uu.read=hu;var pu=fu;function du(t,e){return e.fs.readdirSync(t).map((r=>{const n=eu.joinPathSegments(t,r,e.pathSegmentSeparator),i=_c.statSync(n,e.fsStatSettings),s={name:r,path:n,dirent:Yc.fs.createDirentFromStats(r,i)};return e.stats&&(s.stats=i),s}))}uu.readdirWithFileTypes=pu,lu=du,uu.readdir=lu;var gu={};Object.defineProperty(gu,"__esModule",{value:!0});const _u=c;var yu={};Object.defineProperty(yu,"__esModule",{value:!0});var mu=(bu=void 0,yu.FILE_SYSTEM_ADAPTER=bu);yu.createFileSystemAdapter=mu;const vu=n;var bu={lstat:vu.lstat,stat:vu.stat,lstatSync:vu.lstatSync,statSync:vu.statSync,readdir:vu.readdir,readdirSync:vu.readdirSync};yu.FILE_SYSTEM_ADAPTER=bu,mu=function(t){return void 0===t?yu.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},yu.FILE_SYSTEM_ADAPTER),t)},yu.createFileSystemAdapter=mu;var wu=class{constructor(t={}){this._options=t,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=yu.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,_u.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new _c.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(t,e){return null!=t?t:e}};gu.default=wu,$c=gu.default,Hc.Settings=$c;var Eu=function(t,e,r){if("function"==typeof e)return Nc.read(t,Au(),e);Nc.read(t,Au(e),r)};Hc.scandir=Eu;var Su=function(t,e){const r=Au(e);return uu.read(t,r)};function Au(t={}){return t instanceof gu.default?t:new gu.default(t)}Hc.scandirSync=Su;var Ru={},Pu={};function xu(t,e,r){if("function"==typeof t&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var n=Pu(Ou),i=null,s=null,o=0,a=null,c={push:function(r,l){var h=n.get();h.context=t,h.release=u,h.value=r,h.callback=l||Cu,h.errorHandler=a,o===c.concurrency||c.paused?s?(s.next=h,s=h):(i=h,s=h,c.saturated()):(o++,e.call(t,h.value,h.worked))},drain:Cu,saturated:Cu,pause:function(){c.paused=!0},paused:!1,concurrency:r,running:function(){return o},resume:function(){if(!c.paused)return;c.paused=!1;for(var t=0;t{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate((()=>{this._pushToQueue(this._root,this._settings.basePath)})),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(t){this._emitter.on("entry",t)}onError(t){this._emitter.once("error",t)}onEnd(t){this._emitter.once("end",t)}_pushToQueue(t,e){const r={directory:t,base:e};this._queue.push(r,(t=>{null!==t&&this._handleError(t)}))}_worker(t,e){this._scandir(t.directory,this._settings.fsScandirSettings,((r,n)=>{if(null!==r)return e(r,void 0);for(const e of n)this._handleEntry(e,t.base);e(null,void 0)}))}_handleError(t){!this._isDestroyed&&Du.isFatalError(this._settings,t)&&(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",t))}_handleEntry(t,e){if(this._isDestroyed||this._isFatalError)return;const r=t.path;void 0!==e&&(t.path=Du.joinPathSegments(e,t.name,this._settings.pathSegmentSeparator)),Du.isAppliedFilter(this._settings.entryFilter,t)&&this._emitEntry(t),t.dirent.isDirectory()&&Du.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(r,t.path)}_emitEntry(t){this._emitter.emit("entry",t)}}var $u=Hu;Ic.default=$u;var Nu=class{constructor(t,e){this._root=t,this._settings=e,this._reader=new Ic.default(this._root,this._settings),this._storage=new Set}read(t){this._reader.onError((e=>{!function(t,e){t(e)}(t,e)})),this._reader.onEntry((t=>{this._storage.add(t)})),this._reader.onEnd((()=>{!function(t,e){t(null,e)}(t,[...this._storage])})),this._reader.read()}};Mc.default=Nu;var Bu={};Object.defineProperty(Bu,"__esModule",{value:!0});const Wu=e;var Gu=class{constructor(t,e){this._root=t,this._settings=e,this._reader=new Ic.default(this._root,this._settings),this._stream=new Wu.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError((t=>{this._stream.emit("error",t)})),this._reader.onEntry((t=>{this._stream.push(t)})),this._reader.onEnd((()=>{this._stream.push(null)})),this._reader.read(),this._stream}};Bu.default=Gu;var Uu={};Object.defineProperty(Uu,"__esModule",{value:!0});var Vu={};Object.defineProperty(Vu,"__esModule",{value:!0});class qu extends Iu.default{constructor(){super(...arguments),this._scandir=Hc.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(t,e){this._queue.add({directory:t,base:e})}_handleQueue(){for(const t of this._queue.values())this._handleDirectory(t.directory,t.base)}_handleDirectory(t,e){try{const r=this._scandir(t,this._settings.fsScandirSettings);for(const t of r)this._handleEntry(t,e)}catch(t){this._handleError(t)}}_handleError(t){if(Du.isFatalError(this._settings,t))throw t}_handleEntry(t,e){const r=t.path;void 0!==e&&(t.path=Du.joinPathSegments(e,t.name,this._settings.pathSegmentSeparator)),Du.isAppliedFilter(this._settings.entryFilter,t)&&this._pushToStorage(t),t.dirent.isDirectory()&&Du.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(r,t.path)}_pushToStorage(t){this._storage.add(t)}}var zu=qu;Vu.default=zu;var Ku=class{constructor(t,e){this._root=t,this._settings=e,this._reader=new Vu.default(this._root,this._settings)}read(){return this._reader.read()}};Uu.default=Ku;var Qu={};Object.defineProperty(Qu,"__esModule",{value:!0});const Yu=c;var Xu=class{constructor(t={}){this._options=t,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,1/0),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Yu.sep),this.fsScandirSettings=new Hc.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(t,e){return null!=t?t:e}};Qu.default=Xu,Fc=Qu.default,jc.Settings=Fc;var Zu=function(t,e,r){if("function"==typeof e)return new Mc.default(t,el()).read(e);new Mc.default(t,el(e)).read(r)};jc.walk=Zu;var Ju=function(t,e){const r=el(e);return new Uu.default(t,r).read()};jc.walkSync=Ju;var tl=function(t,e){const r=el(e);return new Bu.default(t,r).read()};function el(t={}){return t instanceof Qu.default?t:new Qu.default(t)}jc.walkStream=tl;var rl={};Object.defineProperty(rl,"__esModule",{value:!0});const nl=c;var il=class{constructor(t){this._settings=t,this._fsStatSettings=new _c.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(t){return nl.resolve(this._settings.cwd,t)}_makeEntry(t,e){const r={name:e,path:e,dirent:ji.fs.createDirentFromStats(e,t)};return this._settings.stats&&(r.stats=t),r}_isFatalError(t){return!ji.errno.isEnoentCodeError(t)&&!this._settings.suppressErrors}};rl.default=il;class sl extends rl.default{constructor(){super(...arguments),this._walkStream=jc.walkStream,this._stat=_c.stat}dynamic(t,e){return this._walkStream(t,e)}static(t,e){const r=t.map(this._getFullEntryPath,this),n=new gc.PassThrough({objectMode:!0});n._write=(i,s,o)=>this._getEntry(r[i],t[i],e).then((t=>{null!==t&&e.entryFilter(t)&&n.push(t),i===r.length-1&&n.end(),o()})).catch(o);for(let t=0;tthis._makeEntry(t,e))).catch((t=>{if(r.errorFilter(t))return null;throw t}))}_getStat(t){return new Promise(((e,r)=>{this._stat(t,this._fsStatSettings,((t,n)=>null===t?e(n):r(t)))}))}}var ol=sl;dc.default=ol;var al={};Object.defineProperty(al,"__esModule",{value:!0});const cl=c;var ul={};Object.defineProperty(ul,"__esModule",{value:!0});var ll={};Object.defineProperty(ll,"__esModule",{value:!0});var hl={};Object.defineProperty(hl,"__esModule",{value:!0});var fl=class{constructor(t,e,r){this._patterns=t,this._settings=e,this._micromatchOptions=r,this._storage=[],this._fillStorage()}_fillStorage(){const t=ji.pattern.expandPatternsWithBraceExpansion(this._patterns);for(const e of t){const t=this._getPatternSegments(e),r=this._splitSegmentsIntoSections(t);this._storage.push({complete:r.length<=1,pattern:e,segments:t,sections:r})}}_getPatternSegments(t){return ji.pattern.getPatternParts(t,this._micromatchOptions).map((t=>ji.pattern.isDynamicPattern(t,this._settings)?{dynamic:!0,pattern:t,patternRe:ji.pattern.makeRe(t,this._micromatchOptions)}:{dynamic:!1,pattern:t}))}_splitSegmentsIntoSections(t){return ji.array.splitWhen(t,(t=>t.dynamic&&ji.pattern.hasGlobStar(t.pattern)))}};hl.default=fl;class pl extends hl.default{match(t){const e=t.split("/"),r=e.length,n=this._storage.filter((t=>!t.complete||t.segments.length>r));for(const t of n){const n=t.sections[0];if(!t.complete&&r>n.length)return!0;if(e.every(((e,r)=>{const n=t.segments[r];return!(!n.dynamic||!n.patternRe.test(e))||!n.dynamic&&n.pattern===e})))return!0}return!1}}var dl=pl;ll.default=dl;var gl=class{constructor(t,e){this._settings=t,this._micromatchOptions=e}getFilter(t,e,r){const n=this._getMatcher(e),i=this._getNegativePatternsRe(r);return e=>this._filter(t,e,n,i)}_getMatcher(t){return new ll.default(t,this._settings,this._micromatchOptions)}_getNegativePatternsRe(t){const e=t.filter(ji.pattern.isAffectDepthOfReadingPattern);return ji.pattern.convertPatternsToRe(e,this._micromatchOptions)}_filter(t,e,r,n){if(this._isSkippedByDeep(t,e.path))return!1;if(this._isSkippedSymbolicLink(e))return!1;const i=ji.path.removeLeadingDotSegment(e.path);return!this._isSkippedByPositivePatterns(i,r)&&this._isSkippedByNegativePatterns(i,n)}_isSkippedByDeep(t,e){return this._settings.deep!==1/0&&this._getEntryLevel(t,e)>=this._settings.deep}_getEntryLevel(t,e){const r=e.split("/").length;if(""===t)return r;return r-t.split("/").length}_isSkippedSymbolicLink(t){return!this._settings.followSymbolicLinks&&t.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(t,e){return!this._settings.baseNameMatch&&!e.match(t)}_isSkippedByNegativePatterns(t,e){return!ji.pattern.matchAny(t,e)}};ul.default=gl;var _l={};Object.defineProperty(_l,"__esModule",{value:!0});var yl=class{constructor(t,e){this._settings=t,this._micromatchOptions=e,this.index=new Map}getFilter(t,e){const r=ji.pattern.convertPatternsToRe(t,this._micromatchOptions),n=ji.pattern.convertPatternsToRe(e,this._micromatchOptions);return t=>this._filter(t,r,n)}_filter(t,e,r){if(this._settings.unique&&this._isDuplicateEntry(t))return!1;if(this._onlyFileFilter(t)||this._onlyDirectoryFilter(t))return!1;if(this._isSkippedByAbsoluteNegativePatterns(t.path,r))return!1;const n=this._settings.baseNameMatch?t.name:t.path,i=this._isMatchToPatterns(n,e)&&!this._isMatchToPatterns(t.path,r);return this._settings.unique&&i&&this._createIndexRecord(t),i}_isDuplicateEntry(t){return this.index.has(t.path)}_createIndexRecord(t){this.index.set(t.path,void 0)}_onlyFileFilter(t){return this._settings.onlyFiles&&!t.dirent.isFile()}_onlyDirectoryFilter(t){return this._settings.onlyDirectories&&!t.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(t,e){if(!this._settings.absolute)return!1;const r=ji.path.makeAbsolute(this._settings.cwd,t);return ji.pattern.matchAny(r,e)}_isMatchToPatterns(t,e){const r=ji.path.removeLeadingDotSegment(t);return ji.pattern.matchAny(r,e)}};_l.default=yl;var ml={};Object.defineProperty(ml,"__esModule",{value:!0});var vl=class{constructor(t){this._settings=t}getFilter(){return t=>this._isNonFatalError(t)}_isNonFatalError(t){return ji.errno.isEnoentCodeError(t)||this._settings.suppressErrors}};ml.default=vl;var bl={};Object.defineProperty(bl,"__esModule",{value:!0});var wl=class{constructor(t){this._settings=t}getTransformer(){return t=>this._transform(t)}_transform(t){let e=t.path;return this._settings.absolute&&(e=ji.path.makeAbsolute(this._settings.cwd,e),e=ji.path.unixify(e)),this._settings.markDirectories&&t.dirent.isDirectory()&&(e+="/"),this._settings.objectMode?Object.assign(Object.assign({},t),{path:e}):e}};bl.default=wl;var El=class{constructor(t){this._settings=t,this.errorFilter=new ml.default(this._settings),this.entryFilter=new _l.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new ul.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new bl.default(this._settings)}_getRootDirectory(t){return cl.resolve(this._settings.cwd,t.base)}_getReaderOptions(t){const e="."===t.base?"":t.base;return{basePath:e,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(e,t.positive,t.negative),entryFilter:this.entryFilter.getFilter(t.positive,t.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};al.default=El;class Sl extends al.default{constructor(){super(...arguments),this._reader=new dc.default(this._settings)}read(t){const e=this._getRootDirectory(t),r=this._getReaderOptions(t),n=[];return new Promise(((i,s)=>{const o=this.api(e,t,r);o.once("error",s),o.on("data",(t=>n.push(r.transform(t)))),o.once("end",(()=>i(n)))}))}api(t,e,r){return e.dynamic?this._reader.dynamic(t,r):this._reader.static(e.patterns,r)}}var Al=Sl;pc.default=Al;var Rl={};Object.defineProperty(Rl,"__esModule",{value:!0});const Pl=e;class xl extends al.default{constructor(){super(...arguments),this._reader=new dc.default(this._settings)}read(t){const e=this._getRootDirectory(t),r=this._getReaderOptions(t),n=this.api(e,t,r),i=new Pl.Readable({objectMode:!0,read:()=>{}});return n.once("error",(t=>i.emit("error",t))).on("data",(t=>i.emit("data",r.transform(t)))).once("end",(()=>i.emit("end"))),i.once("close",(()=>n.destroy())),i}api(t,e,r){return e.dynamic?this._reader.dynamic(t,r):this._reader.static(e.patterns,r)}}var Cl=xl;Rl.default=Cl;var Ol={};Object.defineProperty(Ol,"__esModule",{value:!0});var kl={};Object.defineProperty(kl,"__esModule",{value:!0});class Dl extends rl.default{constructor(){super(...arguments),this._walkSync=jc.walkSync,this._statSync=_c.statSync}dynamic(t,e){return this._walkSync(t,e)}static(t,e){const r=[];for(const n of t){const t=this._getFullEntryPath(n),i=this._getEntry(t,n,e);null!==i&&e.entryFilter(i)&&r.push(i)}return r}_getEntry(t,e,r){try{const r=this._getStat(t);return this._makeEntry(r,e)}catch(t){if(r.errorFilter(t))return null;throw t}}_getStat(t){return this._statSync(t,this._fsStatSettings)}}var Tl=Dl;kl.default=Tl;class jl extends al.default{constructor(){super(...arguments),this._reader=new kl.default(this._settings)}read(t){const e=this._getRootDirectory(t),r=this._getReaderOptions(t);return this.api(e,t,r).map(r.transform)}api(t,e,r){return e.dynamic?this._reader.dynamic(t,r):this._reader.static(e.patterns,r)}}var Fl=jl;Ol.default=Fl;var Ml={};Object.defineProperty(Ml,"__esModule",{value:!0});var Il=void 0;Ml.DEFAULT_FILE_SYSTEM_ADAPTER=Il;const Ll=n,Hl=r,$l=Math.max(Hl.cpus().length,1);Il={lstat:Ll.lstat,lstatSync:Ll.lstatSync,stat:Ll.stat,statSync:Ll.statSync,readdir:Ll.readdir,readdirSync:Ll.readdirSync},Ml.DEFAULT_FILE_SYSTEM_ADAPTER=Il;var Nl,Bl=class{constructor(t={}){this._options=t,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,$l),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(t,e){return void 0===t?e:t}_getFileSystemMethods(t={}){return Object.assign(Object.assign({},Ml.DEFAULT_FILE_SYSTEM_ADAPTER),t)}};async function Wl(t,e){Ul(t);const r=Gl(t,pc.default,e),n=await Promise.all(r);return ji.array.flatten(n)}function Gl(t,e,r){const n=[].concat(t),i=new Ml.default(r),s=Di.generate(n,i),o=new e(i);return s.map(o.read,o)}function Ul(t){if(![].concat(t).every((t=>ji.string.isString(t)&&!ji.string.isEmpty(t))))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}Ml.default=Bl,(Nl=Wl||(Wl={})).sync=function(t,e){Ul(t);const r=Gl(t,Ol.default,e);return ji.array.flatten(r)},Nl.stream=function(t,e){Ul(t);const r=Gl(t,Rl.default,e);return ji.stream.merge(r)},Nl.generateTasks=function(t,e){Ul(t);const r=[].concat(t),n=new Ml.default(e);return Di.generate(r,n)},Nl.isDynamicPattern=function(t,e){Ul(t);const r=new Ml.default(e);return ji.pattern.isDynamicPattern(t,r)},Nl.escapePath=function(t){return Ul(t),ji.path.escape(t)};var Vl=Hf(Wl),ql={};const{EventEmitter:zl}=u,Kl=n,Ql=c,{promisify:Yl}=s;var Xl={};const Zl=n,{Readable:Jl}=e,th=c,{promisify:eh}=s,rh=eh(Zl.readdir),nh=eh(Zl.stat),ih=eh(Zl.lstat),sh=eh(Zl.realpath),oh=new Set(["ENOENT","EPERM","EACCES","ELOOP"]),ah="files",ch="directories",uh="files_directories",lh="all",hh=[ah,ch,uh,lh],fh=t=>{if(void 0!==t){if("function"==typeof t)return t;if("string"==typeof t){const e=vo(t.trim());return t=>e(t.basename)}if(Array.isArray(t)){const e=[],r=[];for(const n of t){const t=n.trim();"!"===t.charAt(0)?r.push(vo(t.slice(1))):e.push(vo(t))}return r.length>0?e.length>0?t=>e.some((e=>e(t.basename)))&&!r.some((e=>e(t.basename))):t=>!r.some((e=>e(t.basename))):t=>e.some((e=>e(t.basename)))}}};class ph extends Jl{static get defaultOptions(){return{root:".",fileFilter:t=>!0,directoryFilter:t=>!0,type:ah,lstat:!1,depth:2147483648,alwaysStat:!1}}constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark||4096});const e={...ph.defaultOptions,...t},{root:r,type:n}=e;this._fileFilter=fh(e.fileFilter),this._directoryFilter=fh(e.directoryFilter);const i=e.lstat?ih:nh;"win32"===process.platform&&3===nh.length?this._stat=t=>i(t,{bigint:!0}):this._stat=i,this._maxDepth=e.depth,this._wantsDir=[ch,uh,lh].includes(n),this._wantsFile=[ah,uh,lh].includes(n),this._wantsEverything=n===lh,this._root=th.resolve(r),this._isDirent="Dirent"in Zl&&!e.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(r,1)],this.reading=!1,this.parent=void 0}async _read(t){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&t>0;){const{path:e,depth:r,files:n=[]}=this.parent||{};if(n.length>0){const i=n.splice(0,t).map((t=>this._formatEntry(t,e)));for(const e of await Promise.all(i)){if(this.destroyed)return;const n=await this._getEntryType(e);"directory"===n&&this._directoryFilter(e)?(r<=this._maxDepth&&this.parents.push(this._exploreDir(e.fullPath,r+1)),this._wantsDir&&(this.push(e),t--)):("file"===n||this._includeAsFile(e))&&this._fileFilter(e)&&this._wantsFile&&(this.push(e),t--)}}else{const t=this.parents.pop();if(!t){this.push(null);break}if(this.parent=await t,this.destroyed)return}}}catch(t){this.destroy(t)}finally{this.reading=!1}}}async _exploreDir(t,e){let r;try{r=await rh(t,this._rdOptions)}catch(t){this._onError(t)}return{files:r,depth:e,path:t}}async _formatEntry(t,e){let r;try{const n=this._isDirent?t.name:t,i=th.resolve(th.join(e,n));r={path:th.relative(this._root,i),fullPath:i,basename:n},r[this._statsProp]=this._isDirent?t:await this._stat(i)}catch(t){this._onError(t)}return r}_onError(t){var e;e=t,oh.has(e.code)&&!this.destroyed?this.emit("warn",t):this.destroy(t)}async _getEntryType(t){const e=t&&t[this._statsProp];if(e){if(e.isFile())return"file";if(e.isDirectory())return"directory";if(e&&e.isSymbolicLink()){const e=t.fullPath;try{const t=await sh(e),r=await ih(t);if(r.isFile())return"file";if(r.isDirectory()){const r=t.length;return e.startsWith(t)&&e.substr(r,1)===th.sep?this._onError(new Error(`Circular symlink detected: "${e}" points to "${t}"`)):"directory"}}catch(t){this._onError(t)}}}}_includeAsFile(t){const e=t&&t[this._statsProp];return e&&this._wantsEverything&&!e.isDirectory()}}const dh=(t,e={})=>{let r=e.entryType||e.type;if("both"===r&&(r=uh),r&&(e.type=r),!t)throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");if("string"!=typeof t)throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(r&&!hh.includes(r))throw new Error(`readdirp: Invalid type passed. Use one of ${hh.join(", ")}`);return e.root=t,new ph(e)};dh.promise=(t,e={})=>new Promise(((r,n)=>{const i=[];dh(t,e).on("data",(t=>i.push(t))).on("end",(()=>r(i))).on("error",(t=>n(t)))})),dh.ReaddirpStream=ph,dh.default=dh,Xl=dh;var gh={};Object.defineProperty(gh,"__esModule",{value:!0});var _h; /*! * normalize-path * * Copyright (c) 2014-2018, Jon Schlinkert. * Released under the MIT License. - */gh=function(t,e){if("string"!=typeof t)throw new TypeError("expected path to be a string");if("\\"===t||"/"===t)return"/";var r=t.length;if(r<=1)return t;var n="";if(r>4&&"\\"===t[3]){var i=t[2];"?"!==i&&"."!==i||"\\\\"!==t.slice(0,2)||(t=t.slice(2),n="//")}var s=t.split(/[/\\]+/);return!1!==e&&""===s[s.length-1]&&s.pop(),n+s.join("/")};const _h={returnIndex:!1},yh=(t,e,r,n)=>{const i=Array.isArray(r),s=i?r[0]:r;if(!i&&"string"!=typeof s)throw new TypeError("anymatch: second argument must be a string: got "+Object.prototype.toString.call(s));const o=gh(s);for(let t=0;t{if(null==t)throw new TypeError("anymatch: specify first argument");const n="boolean"==typeof r?{returnIndex:r}:r,i=n.returnIndex||!1,s=(o=t,Array.isArray(o)?o:[o]);var o;const a=s.filter((t=>"string"==typeof t&&"!"===t.charAt(0))).map((t=>t.slice(1))).map((t=>mo(t,n))),c=s.filter((t=>"string"!=typeof t||"string"==typeof t&&"!"!==t.charAt(0))).map((t=>((t,e)=>{if("function"==typeof t)return t;if("string"==typeof t){const r=mo(t,e);return e=>t===e||r(e)}return t instanceof RegExp?e=>t.test(e):t=>!1})(t,n)));return null==e?(t,e=!1)=>yh(c,a,t,"boolean"==typeof e&&e):yh(c,a,e,i)};mh.default=mh;const vh=(dh=mh).default;var bh={};const wh=n,Eh=c,{promisify:Sh}=s;var Ah;const Rh=c;var Ph;Ph=JSON.parse('["3dm","3ds","3g2","3gp","7z","a","aac","adp","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]');const xh=new Set(Ph);Ah=t=>xh.has(Rh.extname(t).slice(1).toLowerCase());const{sep:Oh}=c,{platform:Ch}=process;var kh=["listeners","errHandlers","rawEmitters"],Dh=`.${Oh}`,Th=/\\/g,jh=/\/\//,Fh=/[/\\]/,Mh=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,Ih=/^\.[/\\]/,Lh={dot:!0},Hh=()=>{},$h=t=>t,Nh="win32"===Ch,Bh="darwin"===Ch,Wh="linux"===Ch;const Gh=Sh(wh.open),Uh=Sh(wh.stat),Vh=Sh(wh.lstat),qh=Sh(wh.close),zh=Sh(wh.realpath),Kh={lstat:Vh,stat:Uh},Qh=(t,e)=>{t instanceof Set?t.forEach(e):e(t)},Yh=(t,e,r)=>{let n=t[e];n instanceof Set||(t[e]=n=new Set([n])),n.add(r)},Xh=(t,e,r)=>{const n=t[e];n instanceof Set?n.delete(r):n===r&&delete t[e]},Zh=t=>t instanceof Set?0===t.size:!t,Jh=new Map;function tf(t,e,r,n,i){const s=(e,n)=>{r(t),i(e,n,{watchedPath:t}),n&&t!==n&&ef(Eh.resolve(t,n),"listeners",Eh.join(t,n))};try{return wh.watch(t,e,s)}catch(t){n(t)}}const ef=(t,e,r,n,i)=>{const s=Jh.get(t);s&&Qh(s[e],(t=>{t(r,n,i)}))},rf=(t,e,r,n)=>{const{listener:i,errHandler:s,rawEmitter:o}=n;let a,c=Jh.get(e);if(!r.persistent)return a=tf(t,r,i,s,o),a.close.bind(a);if(c)Yh(c,"listeners",i),Yh(c,"errHandlers",s),Yh(c,"rawEmitters",o);else{if(a=tf(t,r,ef.bind(null,e,"listeners"),s,ef.bind(null,e,"rawEmitters")),!a)return;a.on("error",(async r=>{const n=ef.bind(null,e,"errHandlers");if(c.watcherUnusable=!0,Nh&&"EPERM"===r.code)try{const e=await Gh(t,"r");await qh(e),n(r)}catch(t){}else n(r)})),c={listeners:i,errHandlers:s,rawEmitters:o,watcher:a},Jh.set(e,c)}return()=>{Xh(c,"listeners",i),Xh(c,"errHandlers",s),Xh(c,"rawEmitters",o),Zh(c.listeners)&&(c.watcher.close(),Jh.delete(e),kh.forEach((t=>e=>{const r=t[e];r instanceof Set?r.clear():delete t[e]})(c)),c.watcher=void 0,Object.freeze(c))}},nf=new Map;bh=class{constructor(t){this.fsw=t,this._boundHandleError=e=>t._handleError(e)}_watchWithNodeFs(t,e){const r=this.fsw.options,n=Eh.dirname(t),i=Eh.basename(t);this.fsw._getWatchedDir(n).add(i);const s=Eh.resolve(t),o={persistent:r.persistent};let a;return e||(e=Hh),r.usePolling?(o.interval=r.enableBinaryInterval&&Ah(i)?r.binaryInterval:r.interval,a=((t,e,r,n)=>{const{listener:i,rawEmitter:s}=n;let o=nf.get(e),a=new Set,c=new Set;const u=o&&o.options;return u&&(u.persistentr.interval)&&(a=o.listeners,c=o.rawEmitters,wh.unwatchFile(e),o=void 0),o?(Yh(o,"listeners",i),Yh(o,"rawEmitters",s)):(o={listeners:i,rawEmitters:s,options:r,watcher:wh.watchFile(e,r,((r,n)=>{Qh(o.rawEmitters,(t=>{t("change",e,{curr:r,prev:n})}));const i=r.mtimeMs;(r.size!==n.size||i>n.mtimeMs||0===i)&&Qh(o.listeners,(e=>e(t,r)))}))},nf.set(e,o)),()=>{Xh(o,"listeners",i),Xh(o,"rawEmitters",s),Zh(o.listeners)&&(nf.delete(e),wh.unwatchFile(e),o.options=o.watcher=void 0,Object.freeze(o))}})(t,s,o,{listener:e,rawEmitter:this.fsw._emitRaw})):a=rf(t,s,o,{listener:e,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw}),a}_handleFile(t,e,r){if(this.fsw.closed)return;const n=Eh.dirname(t),i=Eh.basename(t),s=this.fsw._getWatchedDir(n);let o=e;if(s.has(i))return;const a=async(e,r)=>{if(this.fsw._throttle("watch",t,5))if(r&&0!==r.mtimeMs){if(s.has(i)){const e=r.atimeMs,n=r.mtimeMs;(!e||e<=n||n!==o.mtimeMs)&&this.fsw._emit("change",t,r),o=r}}else try{const r=await Uh(t);if(this.fsw.closed)return;const n=r.atimeMs,i=r.mtimeMs;(!n||n<=i||i!==o.mtimeMs)&&this.fsw._emit("change",t,r),Wh&&o.ino!==r.ino?(this.fsw._closeFile(e),o=r,this.fsw._addPathCloser(e,this._watchWithNodeFs(t,a))):o=r}catch(t){this.fsw._remove(n,i)}},c=this._watchWithNodeFs(t,a);if((!r||!this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle("add",t,0))return;this.fsw._emit("add",t,e)}return c}async _handleSymlink(t,e,r,n){if(this.fsw.closed)return;const i=t.fullPath,s=this.fsw._getWatchedDir(e);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();const e=await zh(r);if(this.fsw.closed)return;return s.has(n)?this.fsw._symlinkPaths.get(i)!==e&&(this.fsw._symlinkPaths.set(i,e),this.fsw._emit("change",r,t.stats)):(s.add(n),this.fsw._symlinkPaths.set(i,e),this.fsw._emit("add",r,t.stats)),this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(i))return!0;this.fsw._symlinkPaths.set(i,!0)}_handleRead(t,e,r,n,i,s,o){if(t=Eh.join(t,""),!r.hasGlob&&!(o=this.fsw._throttle("readdir",t,1e3)))return;const a=this.fsw._getWatchedDir(r.path),c=new Set;let u=this.fsw._readdirp(t,{fileFilter:t=>r.filterPath(t),directoryFilter:t=>r.filterDir(t),depth:0}).on("data",(async o=>{if(this.fsw.closed)return void(u=void 0);const l=o.path;let h=Eh.join(t,l);c.add(l),o.stats.isSymbolicLink()&&await this._handleSymlink(o,t,h,l)||(this.fsw.closed?u=void 0:l!==n&&(n||a.has(l))||(this.fsw._incrReadyCount(),h=Eh.join(i,Eh.relative(i,h)),this._addToNodeFs(h,e,r,s+1)))})).on("error",this._boundHandleError);return new Promise((e=>u.once("end",(()=>{if(this.fsw.closed)return void(u=void 0);const l=!!o&&o.clear();e(),a.getChildren().filter((e=>e!==t&&!c.has(e)&&(!r.hasGlob||r.filterPath({fullPath:Eh.resolve(t,e)})))).forEach((e=>{this.fsw._remove(t,e)})),u=void 0,l&&this._handleRead(t,!1,r,n,i,s,o)}))))}async _handleDir(t,e,r,n,i,s,o){const a=this.fsw._getWatchedDir(Eh.dirname(t)),c=a.has(Eh.basename(t));let u,l;r&&this.fsw.options.ignoreInitial||i||c||s.hasGlob&&!s.globFilter(t)||this.fsw._emit("addDir",t,e),a.add(Eh.basename(t)),this.fsw._getWatchedDir(t);const h=this.fsw.options.depth;if((null==h||n<=h)&&!this.fsw._symlinkPaths.has(o)){if(!i&&(await this._handleRead(t,r,s,i,t,n,u),this.fsw.closed))return;l=this._watchWithNodeFs(t,((e,r)=>{r&&0===r.mtimeMs||this._handleRead(e,!1,s,i,t,n,u)}))}return l}async _addToNodeFs(t,e,r,n,i){const s=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return s(),!1;const o=this.fsw._getWatchHelpers(t,n);!o.hasGlob&&r&&(o.hasGlob=r.hasGlob,o.globFilter=r.globFilter,o.filterPath=t=>r.filterPath(t),o.filterDir=t=>r.filterDir(t));try{const r=await Kh[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,r))return s(),!1;const a=this.fsw.options.followSymlinks&&!t.includes("*")&&!t.includes("{");let c;if(r.isDirectory()){const s=Eh.resolve(t),u=a?await zh(t):t;if(this.fsw.closed)return;if(c=await this._handleDir(o.watchPath,r,e,n,i,o,u),this.fsw.closed)return;s!==u&&void 0!==u&&this.fsw._symlinkPaths.set(s,u)}else if(r.isSymbolicLink()){const i=a?await zh(t):t;if(this.fsw.closed)return;const s=Eh.dirname(o.watchPath);if(this.fsw._getWatchedDir(s).add(o.watchPath),this.fsw._emit("add",o.watchPath,r),c=await this._handleDir(s,r,e,n,t,o,i),this.fsw.closed)return;void 0!==i&&this.fsw._symlinkPaths.set(Eh.resolve(t),i)}else c=this._handleFile(o.watchPath,r,e);return s(),this.fsw._addPathCloser(t,c),!1}catch(e){if(this.fsw._handleError(e))return s(),t}}};var sf={};const of=n,af=c,{promisify:cf}=s;let uf;try{uf=h("fsevents")}catch(t){process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR&&console.error(t)}if(uf){const t=process.version.match(/v(\d+)\.(\d+)/);if(t&&t[1]&&t[2]){const e=Number.parseInt(t[1],10),r=Number.parseInt(t[2],10);8===e&&r<16&&(uf=void 0)}}const lf=cf(of.stat),hf=cf(of.lstat),ff=cf(of.realpath),pf={stat:lf,lstat:hf},df=new Map,gf=new Set([69888,70400,71424,72704,73472,131328,131840,262912]),_f=(t,e)=>({stop:uf.watch(t,e)});const yf=t=>{let e=0;for(const r of df.keys())if(0===r.indexOf(t)&&(e++,e>=10))return!0;return!1},mf=(t,e)=>{let r=0;for(;!t.indexOf(e)&&(t=af.dirname(t))!==e;)r++;return r},vf=(t,e)=>"directory"===t.type&&e.isDirectory()||"symlink"===t.type&&e.isSymbolicLink()||"file"===t.type&&e.isFile();var bf=()=>uf&&df.size<128;(sf=class{constructor(t){this.fsw=t}checkIgnored(t,e){const r=this.fsw._ignoredPaths;if(this.fsw._isIgnored(t,e))return r.add(t),e&&e.isDirectory()&&r.add(t+"/**/*"),!0;r.delete(t),r.delete(t+"/**/*")}addOrChange(t,e,r,n,i,s,o,a){const c=i.has(s)?"change":"add";this.handleEvent(c,t,e,r,n,i,s,o,a)}async checkExists(t,e,r,n,i,s,o,a){try{const c=await lf(t);if(this.fsw.closed)return;vf(o,c)?this.addOrChange(t,e,r,n,i,s,o,a):this.handleEvent("unlink",t,e,r,n,i,s,o,a)}catch(c){"EACCES"===c.code?this.addOrChange(t,e,r,n,i,s,o,a):this.handleEvent("unlink",t,e,r,n,i,s,o,a)}}handleEvent(t,e,r,n,i,s,o,a,c){if(!this.fsw.closed&&!this.checkIgnored(e))if("unlink"===t){const t="directory"===a.type;(t||s.has(o))&&this.fsw._remove(i,o,t)}else{if("add"===t){if("directory"===a.type&&this.fsw._getWatchedDir(e),"symlink"===a.type&&c.followSymlinks){const t=void 0===c.depth?void 0:mf(r,n)+1;return this._addToFsEvents(e,!1,!0,t)}this.fsw._getWatchedDir(i).add(o)}const s="directory"===a.type?t+"Dir":t;this.fsw._emit(s,e),"addDir"===s&&this._addToFsEvents(e,!1,!0)}}_watchWithFsEvents(t,e,r,n){if(this.fsw.closed||this.fsw._isIgnored(t))return;const i=this.fsw.options,s=function(t,e,r,n){let i=af.extname(t)?af.dirname(t):t;const s=af.dirname(i);let o=df.get(i);yf(s)&&(i=s);const a=af.resolve(t),c=a!==e,u=(t,n,i)=>{c&&(t=t.replace(e,a)),t!==a&&t.indexOf(a+af.sep)||r(t,n,i)};let l=!1;for(const t of df.keys())if(0===e.indexOf(af.resolve(t)+af.sep)){i=t,o=df.get(i),l=!0;break}return o||l?o.listeners.add(u):(o={listeners:new Set([u]),rawEmitter:n,watcher:_f(i,((t,e)=>{if(!o.listeners.size)return;const r=uf.getInfo(t,e);o.listeners.forEach((n=>{n(t,e,r)})),o.rawEmitter(r.event,t,r)}))},df.set(i,o)),()=>{const t=o.listeners;if(t.delete(u),!t.size&&(df.delete(i),o.watcher))return o.watcher.stop().then((()=>{o.rawEmitter=o.watcher=void 0,Object.freeze(o)}))}}(t,e,(async(s,o,a)=>{if(this.fsw.closed)return;if(void 0!==i.depth&&mf(s,e)>i.depth)return;const c=r(af.join(t,af.relative(t,s)));if(n&&!n(c))return;const u=af.dirname(c),l=af.basename(c),h=this.fsw._getWatchedDir("directory"===a.type?c:u);if(gf.has(o)||"unknown"===a.event)if("function"==typeof i.ignored){let t;try{t=await lf(c)}catch(t){}if(this.fsw.closed)return;if(this.checkIgnored(c,t))return;vf(a,t)?this.addOrChange(c,s,e,u,h,l,a,i):this.handleEvent("unlink",c,s,e,u,h,l,a,i)}else this.checkExists(c,s,e,u,h,l,a,i);else switch(a.event){case"created":case"modified":return this.addOrChange(c,s,e,u,h,l,a,i);case"deleted":case"moved":return this.checkExists(c,s,e,u,h,l,a,i)}}),this.fsw._emitRaw);return this.fsw._emitReady(),s}async _handleFsEventsSymlink(t,e,r,n){if(!this.fsw.closed&&!this.fsw._symlinkPaths.has(e)){this.fsw._symlinkPaths.set(e,!0),this.fsw._incrReadyCount();try{const e=await ff(t);if(this.fsw.closed)return;if(this.fsw._isIgnored(e))return this.fsw._emitReady();this.fsw._incrReadyCount(),this._addToFsEvents(e||t,(n=>{let i=t;return e&&e!==Dh?i=n.replace(e,t):n!==Dh&&(i=af.join(t,n)),r(i)}),!1,n)}catch(t){if(this.fsw._handleError(t))return this.fsw._emitReady()}}}emitAdd(t,e,r,n,i){const s=r(t),o=e.isDirectory(),a=this.fsw._getWatchedDir(af.dirname(s)),c=af.basename(s);o&&this.fsw._getWatchedDir(s),a.has(c)||(a.add(c),n.ignoreInitial&&!0!==i||this.fsw._emit(o?"addDir":"add",s,e))}initWatch(t,e,r,n){if(this.fsw.closed)return;const i=this._watchWithFsEvents(r.watchPath,af.resolve(t||r.watchPath),n,r.globFilter);this.fsw._addPathCloser(e,i)}async _addToFsEvents(t,e,r,n){if(this.fsw.closed)return;const i=this.fsw.options,s="function"==typeof e?e:$h,o=this.fsw._getWatchHelpers(t);try{const e=await pf[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,e))throw null;if(e.isDirectory()){if(o.globFilter||this.emitAdd(s(t),e,s,i,r),n&&n>i.depth)return;this.fsw._readdirp(o.watchPath,{fileFilter:t=>o.filterPath(t),directoryFilter:t=>o.filterDir(t),...(a=i.depth-(n||0),isNaN(a)?{}:{depth:a})}).on("data",(t=>{if(this.fsw.closed)return;if(t.stats.isDirectory()&&!o.filterPath(t))return;const e=af.join(o.watchPath,t.path),{fullPath:n}=t;if(o.followSymlinks&&t.stats.isSymbolicLink()){const t=void 0===i.depth?void 0:mf(e,af.resolve(o.watchPath))+1;this._handleFsEventsSymlink(e,n,s,t)}else this.emitAdd(e,t.stats,s,i,r)})).on("error",Hh).on("end",(()=>{this.fsw._emitReady()}))}else this.emitAdd(o.watchPath,e,s,i,r),this.fsw._emitReady()}catch(t){t&&!this.fsw._handleError(t)||(this.fsw._emitReady(),this.fsw._emitReady())}var a;if(i.persistent&&!0!==r)if("function"==typeof e)this.initWatch(void 0,t,o,s);else{let e;try{e=await ff(o.watchPath)}catch(t){}this.initWatch(e,t,o,s)}}}).canUse=bf;const wf=Ql(zl.stat),Ef=Ql(zl.readdir),Sf=(t=[])=>Array.isArray(t)?t:[t],Af=(t,e=[])=>(t.forEach((t=>{Array.isArray(t)?Af(t,e):e.push(t)})),e),Rf=t=>{const e=Af(Sf(t));if(!e.every((t=>"string"==typeof t)))throw new TypeError(`Non-string provided as watch path: ${e}`);return e.map(xf)},Pf=t=>{let e=t.replace(Th,"/"),r=!1;for(e.startsWith("//")&&(r=!0);e.match(jh);)e=e.replace(jh,"/");return r&&(e="/"+e),e},xf=t=>Pf(Kl.normalize(Pf(t))),Of=(t="")=>e=>"string"!=typeof e?e:xf(Kl.isAbsolute(e)?e:Kl.join(t,e)),Cf=(t,e)=>void 0===t[e];class kf{constructor(t,e){this.path=t,this._removeWatcher=e,this.items=new Set}add(t){const{items:e}=this;e&&"."!==t&&".."!==t&&e.add(t)}async remove(t){const{items:e}=this;if(!e)return;if(e.delete(t),e.size>0)return;const r=this.path;try{await Ef(r)}catch(t){this._removeWatcher&&this._removeWatcher(Kl.dirname(r),Kl.basename(r))}}has(t){const{items:e}=this;if(e)return e.has(t)}getChildren(){const{items:t}=this;if(t)return[...t.values()]}dispose(){this.items.clear(),delete this.path,delete this._removeWatcher,delete this.items,Object.freeze(this)}}class Df{constructor(t,e,r,n){this.fsw=n,this.path=t=t.replace(Ih,""),this.watchPath=e,this.fullWatchPath=Kl.resolve(e),this.hasGlob=e!==t,""===t&&(this.hasGlob=!1),this.globSymlink=!(!this.hasGlob||!r)&&void 0,this.globFilter=!!this.hasGlob&&vh(t,void 0,Lh),this.dirParts=this.getDirParts(t),this.dirParts.forEach((t=>{t.length>1&&t.pop()})),this.followSymlinks=r,this.statMethod=r?"stat":"lstat"}checkGlobSymlink(t){return void 0===this.globSymlink&&(this.globSymlink=t.fullParentDir!==this.fullWatchPath&&{realPath:t.fullParentDir,linkPath:this.fullWatchPath}),this.globSymlink?t.fullPath.replace(this.globSymlink.realPath,this.globSymlink.linkPath):t.fullPath}entryPath(t){return Kl.join(this.watchPath,Kl.relative(this.watchPath,this.checkGlobSymlink(t)))}filterPath(t){const{stats:e}=t;if(e&&e.isSymbolicLink())return this.filterDir(t);const r=this.entryPath(t);return(!this.hasGlob||"function"!=typeof this.globFilter||this.globFilter(r))&&this.fsw._isntIgnored(r,e)&&this.fsw._hasReadPermissions(e)}getDirParts(t){if(!this.hasGlob)return[];const e=[];return(t.includes("{")?ys.expand(t):[t]).forEach((t=>{e.push(Kl.relative(this.watchPath,t).split(Fh))})),e}filterDir(t){if(this.hasGlob){const e=this.getDirParts(this.checkGlobSymlink(t));let r=!1;this.unmatchedGlob=!this.dirParts.some((t=>t.every(((t,n)=>("**"===t&&(r=!0),r||!e[0][n]||vh(t,e[0][n],Lh))))))}return!this.unmatchedGlob&&this.fsw._isntIgnored(this.entryPath(t),t.stats)}}class Tf extends ql{constructor(t){super();const e={};t&&Object.assign(e,t),this._watched=new Map,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._symlinkPaths=new Map,this._streams=new Set,this.closed=!1,Cf(e,"persistent")&&(e.persistent=!0),Cf(e,"ignoreInitial")&&(e.ignoreInitial=!1),Cf(e,"ignorePermissionErrors")&&(e.ignorePermissionErrors=!1),Cf(e,"interval")&&(e.interval=100),Cf(e,"binaryInterval")&&(e.binaryInterval=300),Cf(e,"disableGlobbing")&&(e.disableGlobbing=!1),e.enableBinaryInterval=e.binaryInterval!==e.interval,Cf(e,"useFsEvents")&&(e.useFsEvents=!e.usePolling);bf()||(e.useFsEvents=!1),Cf(e,"usePolling")&&!e.useFsEvents&&(e.usePolling=Bh);const r=process.env.CHOKIDAR_USEPOLLING;if(void 0!==r){const t=r.toLowerCase();e.usePolling="false"!==t&&"0"!==t&&("true"===t||"1"===t||!!t)}const n=process.env.CHOKIDAR_INTERVAL;n&&(e.interval=Number.parseInt(n,10)),Cf(e,"atomic")&&(e.atomic=!e.usePolling&&!e.useFsEvents),e.atomic&&(this._pendingUnlinks=new Map),Cf(e,"followSymlinks")&&(e.followSymlinks=!0),Cf(e,"awaitWriteFinish")&&(e.awaitWriteFinish=!1),!0===e.awaitWriteFinish&&(e.awaitWriteFinish={});const i=e.awaitWriteFinish;i&&(i.stabilityThreshold||(i.stabilityThreshold=2e3),i.pollInterval||(i.pollInterval=100),this._pendingWrites=new Map),e.ignored&&(e.ignored=Sf(e.ignored));let s=0;this._emitReady=()=>{s++,s>=this._readyCount&&(this._emitReady=Hh,this._readyEmitted=!0,process.nextTick((()=>this.emit("ready"))))},this._emitRaw=(...t)=>this.emit("raw",...t),this._readyEmitted=!1,this.options=e,e.useFsEvents?this._fsEventsHandler=new sf(this):this._nodeFsHandler=new bh(this),Object.freeze(e)}add(t,e,r){const{cwd:n,disableGlobbing:i}=this.options;this.closed=!1;let s=Rf(t);return n&&(s=s.map((t=>{const e=((t,e)=>Kl.isAbsolute(t)?t:t.startsWith("!")?"!"+Kl.join(e,t.slice(1)):Kl.join(e,t))(t,n);return i||!ns(t)?e:gh(e)}))),s=s.filter((t=>t.startsWith("!")?(this._ignoredPaths.add(t.slice(1)),!1):(this._ignoredPaths.delete(t),this._ignoredPaths.delete(t+"/**"),this._userIgnored=void 0,!0))),this.options.useFsEvents&&this._fsEventsHandler?(this._readyCount||(this._readyCount=s.length),this.options.persistent&&(this._readyCount*=2),s.forEach((t=>this._fsEventsHandler._addToFsEvents(t)))):(this._readyCount||(this._readyCount=0),this._readyCount+=s.length,Promise.all(s.map((async t=>{const n=await this._nodeFsHandler._addToNodeFs(t,!r,0,0,e);return n&&this._emitReady(),n}))).then((t=>{this.closed||t.filter((t=>t)).forEach((t=>{this.add(Kl.dirname(t),Kl.basename(e||t))}))}))),this}unwatch(t){if(this.closed)return this;const e=Rf(t),{cwd:r}=this.options;return e.forEach((t=>{Kl.isAbsolute(t)||this._closers.has(t)||(r&&(t=Kl.join(r,t)),t=Kl.resolve(t)),this._closePath(t),this._ignoredPaths.add(t),this._watched.has(t)&&this._ignoredPaths.add(t+"/**"),this._userIgnored=void 0})),this}close(){if(this.closed)return this._closePromise;this.closed=!0,this.removeAllListeners();const t=[];return this._closers.forEach((e=>e.forEach((e=>{const r=e();r instanceof Promise&&t.push(r)})))),this._streams.forEach((t=>t.destroy())),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach((t=>t.dispose())),["closers","watched","streams","symlinkPaths","throttled"].forEach((t=>{this[`_${t}`].clear()})),this._closePromise=t.length?Promise.all(t).then((()=>{})):Promise.resolve(),this._closePromise}getWatched(){const t={};return this._watched.forEach(((e,r)=>{const n=this.options.cwd?Kl.relative(this.options.cwd,r):r;t[n||"."]=e.getChildren().sort()})),t}emitWithAll(t,e){this.emit(...e),"error"!==t&&this.emit("all",...e)}async _emit(t,e,r,n,i){if(this.closed)return;const s=this.options;Nh&&(e=Kl.normalize(e)),s.cwd&&(e=Kl.relative(s.cwd,e));const o=[t,e];void 0!==i?o.push(r,n,i):void 0!==n?o.push(r,n):void 0!==r&&o.push(r);const a=s.awaitWriteFinish;let c;if(a&&(c=this._pendingWrites.get(e)))return c.lastChange=new Date,this;if(s.atomic){if("unlink"===t)return this._pendingUnlinks.set(e,o),setTimeout((()=>{this._pendingUnlinks.forEach(((t,e)=>{this.emit(...t),this.emit("all",...t),this._pendingUnlinks.delete(e)}))}),"number"==typeof s.atomic?s.atomic:100),this;"add"===t&&this._pendingUnlinks.has(e)&&(t=o[0]="change",this._pendingUnlinks.delete(e))}if(a&&("add"===t||"change"===t)&&this._readyEmitted){const r=(e,r)=>{e?(t=o[0]="error",o[1]=e,this.emitWithAll(t,o)):r&&(o.length>2?o[2]=r:o.push(r),this.emitWithAll(t,o))};return this._awaitWriteFinish(e,a.stabilityThreshold,t,r),this}if("change"===t){if(!this._throttle("change",e,50))return this}if(s.alwaysStat&&void 0===r&&("add"===t||"addDir"===t||"change"===t)){const t=s.cwd?Kl.join(s.cwd,e):e;let r;try{r=await wf(t)}catch(t){}if(!r||this.closed)return;o.push(r)}return this.emitWithAll(t,o),this}_handleError(t){const e=t&&t.code;return t&&"ENOENT"!==e&&"ENOTDIR"!==e&&(!this.options.ignorePermissionErrors||"EPERM"!==e&&"EACCES"!==e)&&this.emit("error",t),t||this.closed}_throttle(t,e,r){this._throttled.has(t)||this._throttled.set(t,new Map);const n=this._throttled.get(t),i=n.get(e);if(i)return i.count++,!1;let s;const o=()=>{const t=n.get(e),r=t?t.count:0;return n.delete(e),clearTimeout(s),t&&clearTimeout(t.timeoutObject),r};s=setTimeout(o,r);const a={timeoutObject:s,clear:o,count:0};return n.set(e,a),a}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,e,r,n){let i,s=t;this.options.cwd&&!Kl.isAbsolute(t)&&(s=Kl.join(this.options.cwd,t));const o=new Date,a=r=>{zl.stat(s,((s,o)=>{if(s||!this._pendingWrites.has(t))return void(s&&"ENOENT"!==s.code&&n(s));const c=Number(new Date);r&&o.size!==r.size&&(this._pendingWrites.get(t).lastChange=c);c-this._pendingWrites.get(t).lastChange>=e?(this._pendingWrites.delete(t),n(void 0,o)):i=setTimeout(a,this.options.awaitWriteFinish.pollInterval,o)}))};this._pendingWrites.has(t)||(this._pendingWrites.set(t,{lastChange:o,cancelWait:()=>(this._pendingWrites.delete(t),clearTimeout(i),r)}),i=setTimeout(a,this.options.awaitWriteFinish.pollInterval))}_getGlobIgnored(){return[...this._ignoredPaths.values()]}_isIgnored(t,e){if(this.options.atomic&&Mh.test(t))return!0;if(!this._userIgnored){const{cwd:t}=this.options,e=this.options.ignored,r=e&&e.map(Of(t)),n=Sf(r).filter((t=>"string"==typeof t&&!ns(t))).map((t=>t+"/**")),i=this._getGlobIgnored().map(Of(t)).concat(r,n);this._userIgnored=vh(i,void 0,Lh)}return this._userIgnored([t,e])}_isntIgnored(t,e){return!this._isIgnored(t,e)}_getWatchHelpers(t,e){const r=e||this.options.disableGlobbing||!ns(t)?t:rs(t),n=this.options.followSymlinks;return new Df(t,r,n,this)}_getWatchedDir(t){this._boundRemove||(this._boundRemove=this._remove.bind(this));const e=Kl.resolve(t);return this._watched.has(e)||this._watched.set(e,new kf(e,this._boundRemove)),this._watched.get(e)}_hasReadPermissions(t){if(this.options.ignorePermissionErrors)return!0;const e=511&(t&&Number.parseInt(t.mode,10)),r=Number.parseInt(e.toString(8)[0],10);return Boolean(4&r)}_remove(t,e,r){const n=Kl.join(t,e),i=Kl.resolve(n);if(r=null!=r?r:this._watched.has(n)||this._watched.has(i),!this._throttle("remove",n,100))return;r||this.options.useFsEvents||1!==this._watched.size||this.add(t,e,!0);this._getWatchedDir(n).getChildren().forEach((t=>this._remove(n,t)));const s=this._getWatchedDir(t),o=s.has(e);s.remove(e),this._symlinkPaths.has(i)&&this._symlinkPaths.delete(i);let a=n;if(this.options.cwd&&(a=Kl.relative(this.options.cwd,n)),this.options.awaitWriteFinish&&this._pendingWrites.has(a)){if("add"===this._pendingWrites.get(a).cancelWait())return}this._watched.delete(n),this._watched.delete(i);const c=r?"unlinkDir":"unlink";o&&!this._isIgnored(n)&&this._emit(c,n),this.options.useFsEvents||this._closePath(n)}_closePath(t){this._closeFile(t);const e=Kl.dirname(t);this._getWatchedDir(e).remove(Kl.basename(t))}_closeFile(t){const e=this._closers.get(t);e&&(e.forEach((t=>t())),this._closers.delete(t))}_addPathCloser(t,e){if(!e)return;let r=this._closers.get(t);r||(r=[],this._closers.set(t,r)),r.push(e)}_readdirp(t,e){if(this.closed)return;const r={type:"all",alwaysStat:!0,lstat:!0,...e};let n=Yl(t,r);return this._streams.add(n),n.once("close",(()=>{n=void 0})),n.once("end",(()=>{n&&(this._streams.delete(n),n=void 0)})),n}}var jf=Tf;Vl.FSWatcher=jf;var Ff=(t,e)=>{const r=new Tf(e);return r.add(t),r};Vl.watch=Ff;var Mf=function(t){if(t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var e=If();if(e&&e.has(t))return e.get(t);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var s=n?Object.getOwnPropertyDescriptor(t,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=t[i]}r.default=t,e&&e.set(t,r);return r}(Vl);function If(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return If=function(){return t},t}function Lf(t){return t&&t.__esModule?t:{default:t}}class Hf extends yn.EventEmitter{constructor(){super();const t=this.rebuildCache.bind(this);this._projectChangeWatcher=atom.project.onDidChangePaths(t);const e=this._onDidChangeFiles.bind(this);this._projectWatcher=atom.project.onDidChangeFiles(e),this._repositories=[],this._filePathsByProjectDirectory=new Map,this._filePathsByDirectory=new Map,this._fileWatchersByDirectory=new Map,this._allIgnoredGlobByDirectory=new Map,this.updateConfig()}updateConfig(){this.config={excludeVcsIgnoredPaths:atom.config.get("core.excludeVcsIgnoredPaths"),ignoreSubmodules:atom.config.get("autocomplete-paths.ignoreSubmodules"),shouldIgnoredNames:atom.config.get("autocomplete-paths.ignoredNames"),ignoredNames:atom.config.get("core.ignoredNames"),ignoredPatterns:atom.config.get("autocomplete-paths.ignoredPatterns"),maxFileCount:atom.config.get("autocomplete-paths.maxFileCount")}}async rebuildCache(){this.dispose(),this._cancelled=!1,this.emit("rebuild-cache"),await this._cacheProjectPathsAndRepositories();const t=await this._cachePaths();return await this._addWatchers(),this.emit("rebuild-cache-done"),t}getFilePathsForProjectDirectory(t,e=null){const r=this._filePathsByProjectDirectory.get(t.path)||[];return e?r.filter((t=>0===t.indexOf(e))):r}dispose(t){this._fileWatchersByDirectory.forEach((async t=>{await t.close()})),this._fileWatchersByDirectory.clear(),this._filePathsByProjectDirectory.clear(),this._filePathsByDirectory.clear(),this._repositories=[],this._projectWatcher&&(this._projectWatcher.dispose(),this._projectWatcher=null),t&&this._projectChangeWatcher&&(this._projectChangeWatcher.dispose(),this._projectChangeWatcher=null)}_isPathIgnored(t){let e=!1;return this.config.excludeVcsIgnoredPaths&&this._repositories.forEach((r=>{if(e)return;const n=this.config.ignoreSubmodules&&r.isSubmodule(t);(r.isPathIgnored(t)||n)&&(e=!0)})),this.config.shouldIgnoredNames&&this.config.ignoredNames.forEach((r=>{e||(e=e||(0,Kn.default)(t,r,{matchBase:!0,dot:!0}))})),this.config.ignoredPatterns&&this.config.ignoredPatterns.forEach((r=>{e||(e=e||(0,Kn.default)(t,r,{dot:!0}))})),e}async _cacheProjectPathsAndRepositories(){this._projectDirectories=atom.project.getDirectories();const t=this._projectDirectories.length,e=new Array(t);for(let r=0;rnull!==t))}async _addWatchers(){await Promise.all(this._projectDirectories.map((t=>this._addWatcherForDirectory(t))))}async _addWatcherForDirectory(t){let e=this._fileWatchersByDirectory.get(t);void 0!==e&&"function"==typeof e.close&&await e.close();const r=t.getPath(),n=this._allIgnoredGlobByDirectory.get(t.path);e=Mf.watch([r,...n],{persistent:!0,ignoreInitial:!0,followSymlinks:!1,interval:1e3,binaryInterval:1e3}).on("add",(e=>{this.onAddFile(t,e)})).on("unlink",(e=>{this.onRemoveFile(t,e)})).on("addDir",(t=>{this.onAddDir(t)})).on("unlinkDir",(e=>{this.onRemoveDir(t,e)})),this._fileWatchersByDirectory.set(t,e)}onAddFile(t,e){const r=this._filePathsByProjectDirectory.get(t.path);r.push(e),this._filePathsByProjectDirectory.set(t.path,r)}onRemoveFile(t,e){const r=this._filePathsByProjectDirectory.get(t.path),n=r.indexOf(e);delete r[n],this._filePathsByProjectDirectory.set(t.path,r)}async onAddDir(t){await this._cachePathsForDirectoryWithGlob(t)}onRemoveDir(t,e){const r=new Qn.Directory(e);this._removeFilePathsForDirectory(t,r)}async _onDirectoryChanged(t,e){this.emit("rebuild-cache"),this._removeFilePathsForDirectory(t,e),this._cleanWatchersForDirectory(e),await this._cachePathsForDirectory(t,e),this.emit("rebuild-cache-done")}_cleanWatchersForDirectory(t){this._fileWatchersByDirectory.forEach((async(e,r)=>{t.contains(r.path)&&(await await e.close(),this._fileWatchersByDirectory.delete(r))}))}_removeFilePathsForDirectory(t,e){let r=this._filePathsByProjectDirectory.get(t.path);r&&(r=r.filter((t=>!e.contains(t))),this._filePathsByProjectDirectory.set(t.path,r),this._filePathsByDirectory.delete(e.path))}_onDidChangeFiles(t){t.filter((t=>"modified"!==t.action)).forEach((t=>{if(!this._projectDirectories)return;const{action:e,path:r,oldPath:n}=t,i=this._projectDirectories.find((t=>0===r.indexOf(t.path)));if(!i)return;const s=i.path;if(this._isPathIgnored(r))return;const o=this._filePathsByProjectDirectory.get(s)||[];switch(e){case"created":o.push(r);break;case"deleted":{const t=o.indexOf(r);t>-1&&o.splice(t,1);break}case"renamed":{const t=o.indexOf(n);t>-1&&(o[t]=r);break}default:console.error(`unkown _onDidChangeFiles action: ${e}`)}this._filePathsByProjectDirectory.has(s)||this._filePathsByProjectDirectory.set(s,o)}))}_cachePaths(){try{return this._cachePathsWithGlob()}catch(t){return console.error(t),this._cachePathsWithAtom()}}_cachePathsForDirectory(t,e){try{return this._cachePathsForDirectoryWithGlob(e.path)}catch(r){return console.error(r),this._cachePathsForDirectoryWithAtom(t,e)}}async _cachePathsWithGlob(){return await Promise.all(this._projectDirectories.map((t=>this._cachePathsForDirectoryWithGlob(t.path))))}async _getIgnoredPatternsGlob(t){const e=[];this.config.shouldIgnoredNames&&e.push(...this.config.ignoredNames),this.config.ignoredPatterns&&e.push(...this.config.ignoredPatterns);const r=e.length,n=new Array(r);for(let i=0;ifunction(t){try{return(0,pi.globifyGitIgnoreFile)(t)}catch(t){return[]}}((0,Yn.dirname)(t)))))).flat()}return[]}async _getAllIgnoredGlob(t){const e=await this._getIgnoredPatternsGlob(t);return[...await this._getAllGitIgnoreGlob(t,e),...e]}async _cachePathsForDirectoryWithGlob(t){const e=(0,pi.globifyDirectory)(t),r=await this._getAllIgnoredGlob(t);this._allIgnoredGlobByDirectory.set(t,r);const n=await(0,Ul.default)([e,...r],{dot:!0,cwd:t,onlyFiles:!0});return this._filePathsByProjectDirectory.set(t,n),n}async _cachePathsWithAtom(){return await Promise.all(this._projectDirectories.map((t=>this._cachePathsForDirectoryWithAtom(t,t))))}async _cachePathsForDirectoryWithAtom(t,e){if(this._cancelled)return[];const r=await this._getDirectoryEntries(e);if(this._cancelled)return[];const n=[],i=[];for(let t=0,e=r.length;tthis.config.maxFileCount&&!this._cancelled?(atom.notifications.addError("autocomplete-paths",{description:`Maximum file count of ${this.config.maxFileCount} has been exceeded. Path autocompletion will not work in this project.

Click here to learn more.`,dismissable:!0}),this._filePathsByProjectDirectory.clear(),this._filePathsByDirectory.clear(),void(this._cancelled=!0)):(this._filePathsByProjectDirectory.set(t.path,(0,Xn.union)(s,n)),s=this._filePathsByDirectory.get(e.path)||[],this._filePathsByDirectory.set(e.path,(0,Xn.union)(s,n)),Promise.all(i.map((e=>this._cachePathsForDirectoryWithAtom(t,e)))))}}gn=Hf,dn.default=gn;var $f=qf(dn=dn.default),Nf=t,Bf={};Object.defineProperty(Bf,"__esModule",{value:!0});var Wf=void 0;Bf.DefaultScopes=Wf;const Gf=["import\\s+.*?from\\s+['\"]","import\\s+['\"]","require\\(['\"]","define\\(\\[?['\"]"],Uf=["js","jsx","ts","tsx","coffee","json"],Vf=[["\\.jsx?$",""],["\\.ts$",""],["\\.coffee$",""]];function qf(t){return t&&t.__esModule?t:{default:t}}Wf=[{scopes:["source.js","source.js.jsx","source.coffee","source.coffee.jsx","source.ts","source.tsx","javascript","source.flow"],prefixes:Gf,extensions:Uf,relative:!0,replaceOnInsert:[["([\\/]?index)?\\.jsx?$",""],["([\\/]?index)?\\.ts$",""],["([\\/]?index)?\\.coffee$",""]]},{scopes:["text.html.vue"],prefixes:Gf,extensions:Uf.concat("vue"),relative:!0,replaceOnInsert:Vf},{scopes:["text.html.vue"],prefixes:["@import[\\(|\\s+]?['\"]"],extensions:["css","sass","scss","less","styl"],relative:!0,replaceOnInsert:[["(/)?_([^/]*?)$","$1$2"]]},{scopes:["source.coffee","source.coffee.jsx"],prefixes:["require\\s+['\"]","define\\s+\\[?['\"]"],extensions:Uf,relative:!0,replaceOnInsert:Vf},{scopes:["source.php"],prefixes:["require_once\\(['\"]","include\\(['\"]"],extensions:["php"],relative:!0},{scopes:["source.sass","source.css.scss","source.css.less","source.stylus"],prefixes:["@import[\\(|\\s+]?['\"]"],extensions:["sass","scss","css"],relative:!0,replaceOnInsert:[["(/)?_([^/]*?)$","$1$2"]]},{scopes:["source.css"],prefixes:["@import\\s+['\"]?","@import\\s+url\\(['\"]?"],extensions:["css"],relative:!0},{scopes:["source.css","source.sass","source.css.less","source.css.scss","source.stylus"],prefixes:["url\\(['\"]?"],extensions:["png","gif","jpeg","jpg","woff","woff2","ttf","svg","otf"],relative:!0},{scopes:["source.c","source.cpp"],prefixes:["^\\s*#include\\s+['\"]"],extensions:["h","hpp"],relative:!0,includeCurrentDirectory:!1},{scopes:["source.lua"],prefixes:["require[\\s+|\\(]['\"]"],extensions:["lua"],relative:!0,includeCurrentDirectory:!1,replaceOnInsert:[["\\/","."],["\\\\","."],["\\.lua$",""]]},{scopes:["source.ruby"],prefixes:["^\\s*require[\\s+|\\(]['\"]"],extensions:["rb"],relative:!0,includeCurrentDirectory:!1,replaceOnInsert:[["\\.rb$",""]]},{scopes:["source.python"],prefixes:["^\\s*from\\s+","^\\s*import\\s+"],extensions:["py"],relative:!0,includeCurrentDirectory:!1,replaceOnInsert:[["\\/","."],["\\\\","."],["\\.py$",""]]}],Bf.DefaultScopes=Wf;class zf extends P.EventEmitter{constructor(){super(),this.reloadScopes(),this._pathsCache=new $f.default,this._isReady=!1,this._onRebuildCache=this._onRebuildCache.bind(this),this._onRebuildCacheDone=this._onRebuildCacheDone.bind(this),this._pathsCache.on("rebuild-cache",this._onRebuildCache),this._pathsCache.on("rebuild-cache-done",this._onRebuildCacheDone)}reloadScopes(){this._scopes=atom.config.get("autocomplete-paths.scopes").slice(0)||[],atom.config.get("autocomplete-paths.ignoreBuiltinScopes")||(this._scopes=this._scopes.concat(Bf.DefaultScopes));for(const t in v.OptionScopes)atom.config.get(`autocomplete-paths.${t}`)&&(this._scopes=this._scopes.slice(0).concat(v.OptionScopes[t]))}_onRebuildCache(){this.emit("rebuild-cache")}_onRebuildCacheDone(){this.emit("rebuild-cache-done")}_getSuggestionsForScope(t,e,r){const n=Qf(e).substr(r.index+r[0].length),i=n.match(/[/\\|]$/),s=0===n.indexOf("./")||0===n.indexOf("../"),o=x.default.parse(n);i&&(o.dir=x.default.join(o.dir,o.base),o.base="",o.name="");const a=function(t){const e=t.getBuffer().getPath();let r=null;return atom.project.getDirectories().forEach((t=>{t.contains(e)&&(r=t)})),r}(e.editor);if(!a)return Promise.resolve([]);const c=x.default.dirname(e.editor.getPath()),u=x.default.resolve(c,o.dir);let l=s?this._pathsCache.getFilePathsForProjectDirectory(a,u):this._pathsCache.getFilePathsForProjectDirectory(a);const h=s?o.base:n,{extensions:f}=t;if(f){const t=new RegExp(`.(${f.join("|")})$`);l=l.filter((e=>t.test(e)))}h&&(l=(0,Nf.filter)(l,h,{maxResults:10}));const p=l.map((r=>{const i=atom.config.get("autocomplete-paths.normalizeSlashes"),o=atom.project.relativizePath(r)[1];let a=o;s&&(a=x.default.relative(u,r)),i&&(a=(0,pn.default)(a));let c=x.default.relative(x.default.dirname(e.editor.getPath()),r);i&&(c=(0,pn.default)(c)),!1!==t.relative&&(r=c,!1!==t.includeCurrentDirectory&&"."!==r[0]&&(r=`./${r}`)),t.projectRelativePath&&(r=(0,pn.default)(o)),t.replaceOnInsert&&t.replaceOnInsert.forEach((([t,e])=>{const n=new RegExp(t);n.test(r)&&(r=r.replace(n,e))}));const l=c.split(x.default.sep).length;return{text:r,replacementPrefix:n,displayText:a,type:"import",iconHTML:'',score:(0,Nf.score)(a,e.prefix),distanceToFile:l}})),d=p.length;if(p.length){const t=Cr(p,(t=>t.distanceToFile)).distanceToFile;p.forEach(((e,r)=>{e.score=d-r+(t-e.distanceToFile)})),p.sort(((t,e)=>e.score-t.score))}return Promise.resolve(p)}async getSuggestions(t){const e=this._scopes.map((e=>[e,Kf(e,t)])).filter((t=>t[1])).map((([e,r])=>this._getSuggestionsForScope(e,t,r))),r=Yr(await Promise.all(e));return!!r.length&&r}async rebuildCache(){const t=await this._pathsCache.rebuildCache();return this._isReady=!0,t}isReady(){return this._isReady}get suggestionPriority(){return atom.config.get("autocomplete-paths.suggestionPriority")}get fileCount(){return atom.project.getDirectories().reduce(((t,e)=>t+this._pathsCache.getFilePathsForProjectDirectory(e).length),0)}dispose(){this._pathsCache.removeListener("rebuild-cache",this._onRebuildCache),this._pathsCache.removeListener("rebuild-cache-done",this._onRebuildCacheDone),this._pathsCache.dispose(!0)}}function Kf(t,e){const r=Array.isArray(t.scopes)?t.scopes:[t.scopes];if(!(en(e.scopeDescriptor.getScopesArray(),r).length>0))return!1;const n=Qf(e);let i=null;return(Array.isArray(t.prefixes)?t.prefixes:[t.prefixes]).forEach((t=>{const e=new RegExp(t,"i");i=i||n.match(e)})),i}function Qf(t){const{editor:e,bufferPosition:r}=t;return e.getTextInRange([[r.row,0],r])}A=zf,S.default=A,zf.prototype.selector="*",zf.prototype.inclusionPriority=1,S=S.default;var Yf,Xf=(Yf=S)&&Yf.__esModule?Yf:{default:Yf};const Zf=new a.CompositeDisposable;let Jf,tp,ep,rp,np,ip,sp;function op(){ep?np||(ip=document.createElement("autocomplete-paths-status-bar"),ip.innerHTML="Rebuilding paths cache...",np=ep.addRightTile({item:ip,priority:100}),(Jf||(ap(),Jf))&&(rp=setInterval((()=>{const t=Jf.fileCount;t>0&&(ip.innerHTML=`Rebuilding paths cache... ${t} files`)}),500))):sp=!0}function ap(){return Jf||(Jf=new Xf.default,Jf.on("rebuild-cache",(()=>{op()})),Jf.on("rebuild-cache-done",(()=>{rp&&clearInterval(rp),np&&np.destroy(),np=null,ip=null})),tp=Je((()=>Jf.rebuildCache()),1e3,!0),tp()),Jf} + */_h=function(t,e){if("string"!=typeof t)throw new TypeError("expected path to be a string");if("\\"===t||"/"===t)return"/";var r=t.length;if(r<=1)return t;var n="";if(r>4&&"\\"===t[3]){var i=t[2];"?"!==i&&"."!==i||"\\\\"!==t.slice(0,2)||(t=t.slice(2),n="//")}var s=t.split(/[/\\]+/);return!1!==e&&""===s[s.length-1]&&s.pop(),n+s.join("/")};const yh={returnIndex:!1},mh=(t,e,r,n)=>{const i=Array.isArray(r),s=i?r[0]:r;if(!i&&"string"!=typeof s)throw new TypeError("anymatch: second argument must be a string: got "+Object.prototype.toString.call(s));const o=_h(s);for(let t=0;t{if(null==t)throw new TypeError("anymatch: specify first argument");const n="boolean"==typeof r?{returnIndex:r}:r,i=n.returnIndex||!1,s=(o=t,Array.isArray(o)?o:[o]);var o;const a=s.filter((t=>"string"==typeof t&&"!"===t.charAt(0))).map((t=>t.slice(1))).map((t=>vo(t,n))),c=s.filter((t=>"string"!=typeof t||"string"==typeof t&&"!"!==t.charAt(0))).map((t=>((t,e)=>{if("function"==typeof t)return t;if("string"==typeof t){const r=vo(t,e);return e=>t===e||r(e)}return t instanceof RegExp?e=>t.test(e):t=>!1})(t,n)));return null==e?(t,e=!1)=>mh(c,a,t,"boolean"==typeof e&&e):mh(c,a,e,i)};vh.default=vh;const bh=(gh=vh).default;var wh={};const Eh=n,Sh=c,{promisify:Ah}=s;var Rh;const Ph=c;var xh;xh=JSON.parse('["3dm","3ds","3g2","3gp","7z","a","aac","adp","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]');const Ch=new Set(xh);Rh=t=>Ch.has(Ph.extname(t).slice(1).toLowerCase());const{sep:Oh}=c,{platform:kh}=process;var Dh=["listeners","errHandlers","rawEmitters"],Th=`.${Oh}`,jh=/\\/g,Fh=/\/\//,Mh=/[/\\]/,Ih=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,Lh=/^\.[/\\]/,Hh={dot:!0},$h=()=>{},Nh=t=>t,Bh="win32"===kh,Wh="darwin"===kh,Gh="linux"===kh;const Uh=Ah(Eh.open),Vh=Ah(Eh.stat),qh=Ah(Eh.lstat),zh=Ah(Eh.close),Kh=Ah(Eh.realpath),Qh={lstat:qh,stat:Vh},Yh=(t,e)=>{t instanceof Set?t.forEach(e):e(t)},Xh=(t,e,r)=>{let n=t[e];n instanceof Set||(t[e]=n=new Set([n])),n.add(r)},Zh=(t,e,r)=>{const n=t[e];n instanceof Set?n.delete(r):n===r&&delete t[e]},Jh=t=>t instanceof Set?0===t.size:!t,tf=new Map;function ef(t,e,r,n,i){const s=(e,n)=>{r(t),i(e,n,{watchedPath:t}),n&&t!==n&&rf(Sh.resolve(t,n),"listeners",Sh.join(t,n))};try{return Eh.watch(t,e,s)}catch(t){n(t)}}const rf=(t,e,r,n,i)=>{const s=tf.get(t);s&&Yh(s[e],(t=>{t(r,n,i)}))},nf=(t,e,r,n)=>{const{listener:i,errHandler:s,rawEmitter:o}=n;let a,c=tf.get(e);if(!r.persistent)return a=ef(t,r,i,s,o),a.close.bind(a);if(c)Xh(c,"listeners",i),Xh(c,"errHandlers",s),Xh(c,"rawEmitters",o);else{if(a=ef(t,r,rf.bind(null,e,"listeners"),s,rf.bind(null,e,"rawEmitters")),!a)return;a.on("error",(async r=>{const n=rf.bind(null,e,"errHandlers");if(c.watcherUnusable=!0,Bh&&"EPERM"===r.code)try{const e=await Uh(t,"r");await zh(e),n(r)}catch(t){}else n(r)})),c={listeners:i,errHandlers:s,rawEmitters:o,watcher:a},tf.set(e,c)}return()=>{Zh(c,"listeners",i),Zh(c,"errHandlers",s),Zh(c,"rawEmitters",o),Jh(c.listeners)&&(c.watcher.close(),tf.delete(e),Dh.forEach((t=>e=>{const r=t[e];r instanceof Set?r.clear():delete t[e]})(c)),c.watcher=void 0,Object.freeze(c))}},sf=new Map;wh=class{constructor(t){this.fsw=t,this._boundHandleError=e=>t._handleError(e)}_watchWithNodeFs(t,e){const r=this.fsw.options,n=Sh.dirname(t),i=Sh.basename(t);this.fsw._getWatchedDir(n).add(i);const s=Sh.resolve(t),o={persistent:r.persistent};let a;return e||(e=$h),r.usePolling?(o.interval=r.enableBinaryInterval&&Rh(i)?r.binaryInterval:r.interval,a=((t,e,r,n)=>{const{listener:i,rawEmitter:s}=n;let o=sf.get(e),a=new Set,c=new Set;const u=o&&o.options;return u&&(u.persistentr.interval)&&(a=o.listeners,c=o.rawEmitters,Eh.unwatchFile(e),o=void 0),o?(Xh(o,"listeners",i),Xh(o,"rawEmitters",s)):(o={listeners:i,rawEmitters:s,options:r,watcher:Eh.watchFile(e,r,((r,n)=>{Yh(o.rawEmitters,(t=>{t("change",e,{curr:r,prev:n})}));const i=r.mtimeMs;(r.size!==n.size||i>n.mtimeMs||0===i)&&Yh(o.listeners,(e=>e(t,r)))}))},sf.set(e,o)),()=>{Zh(o,"listeners",i),Zh(o,"rawEmitters",s),Jh(o.listeners)&&(sf.delete(e),Eh.unwatchFile(e),o.options=o.watcher=void 0,Object.freeze(o))}})(t,s,o,{listener:e,rawEmitter:this.fsw._emitRaw})):a=nf(t,s,o,{listener:e,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw}),a}_handleFile(t,e,r){if(this.fsw.closed)return;const n=Sh.dirname(t),i=Sh.basename(t),s=this.fsw._getWatchedDir(n);let o=e;if(s.has(i))return;const a=async(e,r)=>{if(this.fsw._throttle("watch",t,5))if(r&&0!==r.mtimeMs){if(s.has(i)){const e=r.atimeMs,n=r.mtimeMs;(!e||e<=n||n!==o.mtimeMs)&&this.fsw._emit("change",t,r),o=r}}else try{const r=await Vh(t);if(this.fsw.closed)return;const n=r.atimeMs,i=r.mtimeMs;(!n||n<=i||i!==o.mtimeMs)&&this.fsw._emit("change",t,r),Gh&&o.ino!==r.ino?(this.fsw._closeFile(e),o=r,this.fsw._addPathCloser(e,this._watchWithNodeFs(t,a))):o=r}catch(t){this.fsw._remove(n,i)}},c=this._watchWithNodeFs(t,a);if((!r||!this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle("add",t,0))return;this.fsw._emit("add",t,e)}return c}async _handleSymlink(t,e,r,n){if(this.fsw.closed)return;const i=t.fullPath,s=this.fsw._getWatchedDir(e);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();const e=await Kh(r);if(this.fsw.closed)return;return s.has(n)?this.fsw._symlinkPaths.get(i)!==e&&(this.fsw._symlinkPaths.set(i,e),this.fsw._emit("change",r,t.stats)):(s.add(n),this.fsw._symlinkPaths.set(i,e),this.fsw._emit("add",r,t.stats)),this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(i))return!0;this.fsw._symlinkPaths.set(i,!0)}_handleRead(t,e,r,n,i,s,o){if(t=Sh.join(t,""),!r.hasGlob&&!(o=this.fsw._throttle("readdir",t,1e3)))return;const a=this.fsw._getWatchedDir(r.path),c=new Set;let u=this.fsw._readdirp(t,{fileFilter:t=>r.filterPath(t),directoryFilter:t=>r.filterDir(t),depth:0}).on("data",(async o=>{if(this.fsw.closed)return void(u=void 0);const l=o.path;let h=Sh.join(t,l);c.add(l),o.stats.isSymbolicLink()&&await this._handleSymlink(o,t,h,l)||(this.fsw.closed?u=void 0:l!==n&&(n||a.has(l))||(this.fsw._incrReadyCount(),h=Sh.join(i,Sh.relative(i,h)),this._addToNodeFs(h,e,r,s+1)))})).on("error",this._boundHandleError);return new Promise((e=>u.once("end",(()=>{if(this.fsw.closed)return void(u=void 0);const l=!!o&&o.clear();e(),a.getChildren().filter((e=>e!==t&&!c.has(e)&&(!r.hasGlob||r.filterPath({fullPath:Sh.resolve(t,e)})))).forEach((e=>{this.fsw._remove(t,e)})),u=void 0,l&&this._handleRead(t,!1,r,n,i,s,o)}))))}async _handleDir(t,e,r,n,i,s,o){const a=this.fsw._getWatchedDir(Sh.dirname(t)),c=a.has(Sh.basename(t));let u,l;r&&this.fsw.options.ignoreInitial||i||c||s.hasGlob&&!s.globFilter(t)||this.fsw._emit("addDir",t,e),a.add(Sh.basename(t)),this.fsw._getWatchedDir(t);const h=this.fsw.options.depth;if((null==h||n<=h)&&!this.fsw._symlinkPaths.has(o)){if(!i&&(await this._handleRead(t,r,s,i,t,n,u),this.fsw.closed))return;l=this._watchWithNodeFs(t,((e,r)=>{r&&0===r.mtimeMs||this._handleRead(e,!1,s,i,t,n,u)}))}return l}async _addToNodeFs(t,e,r,n,i){const s=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return s(),!1;const o=this.fsw._getWatchHelpers(t,n);!o.hasGlob&&r&&(o.hasGlob=r.hasGlob,o.globFilter=r.globFilter,o.filterPath=t=>r.filterPath(t),o.filterDir=t=>r.filterDir(t));try{const r=await Qh[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,r))return s(),!1;const a=this.fsw.options.followSymlinks&&!t.includes("*")&&!t.includes("{");let c;if(r.isDirectory()){const s=Sh.resolve(t),u=a?await Kh(t):t;if(this.fsw.closed)return;if(c=await this._handleDir(o.watchPath,r,e,n,i,o,u),this.fsw.closed)return;s!==u&&void 0!==u&&this.fsw._symlinkPaths.set(s,u)}else if(r.isSymbolicLink()){const i=a?await Kh(t):t;if(this.fsw.closed)return;const s=Sh.dirname(o.watchPath);if(this.fsw._getWatchedDir(s).add(o.watchPath),this.fsw._emit("add",o.watchPath,r),c=await this._handleDir(s,r,e,n,t,o,i),this.fsw.closed)return;void 0!==i&&this.fsw._symlinkPaths.set(Sh.resolve(t),i)}else c=this._handleFile(o.watchPath,r,e);return s(),this.fsw._addPathCloser(t,c),!1}catch(e){if(this.fsw._handleError(e))return s(),t}}};var of={};const af=n,cf=c,{promisify:uf}=s;let lf;try{lf=h("fsevents")}catch(t){process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR&&console.error(t)}if(lf){const t=process.version.match(/v(\d+)\.(\d+)/);if(t&&t[1]&&t[2]){const e=Number.parseInt(t[1],10),r=Number.parseInt(t[2],10);8===e&&r<16&&(lf=void 0)}}const hf=uf(af.stat),ff=uf(af.lstat),pf=uf(af.realpath),df={stat:hf,lstat:ff},gf=new Map,_f=new Set([69888,70400,71424,72704,73472,131328,131840,262912]),yf=(t,e)=>({stop:lf.watch(t,e)});const mf=t=>{let e=0;for(const r of gf.keys())if(0===r.indexOf(t)&&(e++,e>=10))return!0;return!1},vf=(t,e)=>{let r=0;for(;!t.indexOf(e)&&(t=cf.dirname(t))!==e;)r++;return r},bf=(t,e)=>"directory"===t.type&&e.isDirectory()||"symlink"===t.type&&e.isSymbolicLink()||"file"===t.type&&e.isFile();var wf=()=>lf&&gf.size<128;(of=class{constructor(t){this.fsw=t}checkIgnored(t,e){const r=this.fsw._ignoredPaths;if(this.fsw._isIgnored(t,e))return r.add(t),e&&e.isDirectory()&&r.add(t+"/**/*"),!0;r.delete(t),r.delete(t+"/**/*")}addOrChange(t,e,r,n,i,s,o,a){const c=i.has(s)?"change":"add";this.handleEvent(c,t,e,r,n,i,s,o,a)}async checkExists(t,e,r,n,i,s,o,a){try{const c=await hf(t);if(this.fsw.closed)return;bf(o,c)?this.addOrChange(t,e,r,n,i,s,o,a):this.handleEvent("unlink",t,e,r,n,i,s,o,a)}catch(c){"EACCES"===c.code?this.addOrChange(t,e,r,n,i,s,o,a):this.handleEvent("unlink",t,e,r,n,i,s,o,a)}}handleEvent(t,e,r,n,i,s,o,a,c){if(!this.fsw.closed&&!this.checkIgnored(e))if("unlink"===t){const t="directory"===a.type;(t||s.has(o))&&this.fsw._remove(i,o,t)}else{if("add"===t){if("directory"===a.type&&this.fsw._getWatchedDir(e),"symlink"===a.type&&c.followSymlinks){const t=void 0===c.depth?void 0:vf(r,n)+1;return this._addToFsEvents(e,!1,!0,t)}this.fsw._getWatchedDir(i).add(o)}const s="directory"===a.type?t+"Dir":t;this.fsw._emit(s,e),"addDir"===s&&this._addToFsEvents(e,!1,!0)}}_watchWithFsEvents(t,e,r,n){if(this.fsw.closed||this.fsw._isIgnored(t))return;const i=this.fsw.options,s=function(t,e,r,n){let i=cf.extname(t)?cf.dirname(t):t;const s=cf.dirname(i);let o=gf.get(i);mf(s)&&(i=s);const a=cf.resolve(t),c=a!==e,u=(t,n,i)=>{c&&(t=t.replace(e,a)),t!==a&&t.indexOf(a+cf.sep)||r(t,n,i)};let l=!1;for(const t of gf.keys())if(0===e.indexOf(cf.resolve(t)+cf.sep)){i=t,o=gf.get(i),l=!0;break}return o||l?o.listeners.add(u):(o={listeners:new Set([u]),rawEmitter:n,watcher:yf(i,((t,e)=>{if(!o.listeners.size)return;const r=lf.getInfo(t,e);o.listeners.forEach((n=>{n(t,e,r)})),o.rawEmitter(r.event,t,r)}))},gf.set(i,o)),()=>{const t=o.listeners;if(t.delete(u),!t.size&&(gf.delete(i),o.watcher))return o.watcher.stop().then((()=>{o.rawEmitter=o.watcher=void 0,Object.freeze(o)}))}}(t,e,(async(s,o,a)=>{if(this.fsw.closed)return;if(void 0!==i.depth&&vf(s,e)>i.depth)return;const c=r(cf.join(t,cf.relative(t,s)));if(n&&!n(c))return;const u=cf.dirname(c),l=cf.basename(c),h=this.fsw._getWatchedDir("directory"===a.type?c:u);if(_f.has(o)||"unknown"===a.event)if("function"==typeof i.ignored){let t;try{t=await hf(c)}catch(t){}if(this.fsw.closed)return;if(this.checkIgnored(c,t))return;bf(a,t)?this.addOrChange(c,s,e,u,h,l,a,i):this.handleEvent("unlink",c,s,e,u,h,l,a,i)}else this.checkExists(c,s,e,u,h,l,a,i);else switch(a.event){case"created":case"modified":return this.addOrChange(c,s,e,u,h,l,a,i);case"deleted":case"moved":return this.checkExists(c,s,e,u,h,l,a,i)}}),this.fsw._emitRaw);return this.fsw._emitReady(),s}async _handleFsEventsSymlink(t,e,r,n){if(!this.fsw.closed&&!this.fsw._symlinkPaths.has(e)){this.fsw._symlinkPaths.set(e,!0),this.fsw._incrReadyCount();try{const e=await pf(t);if(this.fsw.closed)return;if(this.fsw._isIgnored(e))return this.fsw._emitReady();this.fsw._incrReadyCount(),this._addToFsEvents(e||t,(n=>{let i=t;return e&&e!==Th?i=n.replace(e,t):n!==Th&&(i=cf.join(t,n)),r(i)}),!1,n)}catch(t){if(this.fsw._handleError(t))return this.fsw._emitReady()}}}emitAdd(t,e,r,n,i){const s=r(t),o=e.isDirectory(),a=this.fsw._getWatchedDir(cf.dirname(s)),c=cf.basename(s);o&&this.fsw._getWatchedDir(s),a.has(c)||(a.add(c),n.ignoreInitial&&!0!==i||this.fsw._emit(o?"addDir":"add",s,e))}initWatch(t,e,r,n){if(this.fsw.closed)return;const i=this._watchWithFsEvents(r.watchPath,cf.resolve(t||r.watchPath),n,r.globFilter);this.fsw._addPathCloser(e,i)}async _addToFsEvents(t,e,r,n){if(this.fsw.closed)return;const i=this.fsw.options,s="function"==typeof e?e:Nh,o=this.fsw._getWatchHelpers(t);try{const e=await df[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,e))throw null;if(e.isDirectory()){if(o.globFilter||this.emitAdd(s(t),e,s,i,r),n&&n>i.depth)return;this.fsw._readdirp(o.watchPath,{fileFilter:t=>o.filterPath(t),directoryFilter:t=>o.filterDir(t),...(a=i.depth-(n||0),isNaN(a)?{}:{depth:a})}).on("data",(t=>{if(this.fsw.closed)return;if(t.stats.isDirectory()&&!o.filterPath(t))return;const e=cf.join(o.watchPath,t.path),{fullPath:n}=t;if(o.followSymlinks&&t.stats.isSymbolicLink()){const t=void 0===i.depth?void 0:vf(e,cf.resolve(o.watchPath))+1;this._handleFsEventsSymlink(e,n,s,t)}else this.emitAdd(e,t.stats,s,i,r)})).on("error",$h).on("end",(()=>{this.fsw._emitReady()}))}else this.emitAdd(o.watchPath,e,s,i,r),this.fsw._emitReady()}catch(t){t&&!this.fsw._handleError(t)||(this.fsw._emitReady(),this.fsw._emitReady())}var a;if(i.persistent&&!0!==r)if("function"==typeof e)this.initWatch(void 0,t,o,s);else{let e;try{e=await pf(o.watchPath)}catch(t){}this.initWatch(e,t,o,s)}}}).canUse=wf;const Ef=Yl(Kl.stat),Sf=Yl(Kl.readdir),Af=(t=[])=>Array.isArray(t)?t:[t],Rf=(t,e=[])=>(t.forEach((t=>{Array.isArray(t)?Rf(t,e):e.push(t)})),e),Pf=t=>{const e=Rf(Af(t));if(!e.every((t=>"string"==typeof t)))throw new TypeError(`Non-string provided as watch path: ${e}`);return e.map(Cf)},xf=t=>{let e=t.replace(jh,"/"),r=!1;for(e.startsWith("//")&&(r=!0);e.match(Fh);)e=e.replace(Fh,"/");return r&&(e="/"+e),e},Cf=t=>xf(Ql.normalize(xf(t))),Of=(t="")=>e=>"string"!=typeof e?e:Cf(Ql.isAbsolute(e)?e:Ql.join(t,e)),kf=(t,e)=>void 0===t[e];class Df{constructor(t,e){this.path=t,this._removeWatcher=e,this.items=new Set}add(t){const{items:e}=this;e&&"."!==t&&".."!==t&&e.add(t)}async remove(t){const{items:e}=this;if(!e)return;if(e.delete(t),e.size>0)return;const r=this.path;try{await Sf(r)}catch(t){this._removeWatcher&&this._removeWatcher(Ql.dirname(r),Ql.basename(r))}}has(t){const{items:e}=this;if(e)return e.has(t)}getChildren(){const{items:t}=this;if(t)return[...t.values()]}dispose(){this.items.clear(),delete this.path,delete this._removeWatcher,delete this.items,Object.freeze(this)}}class Tf{constructor(t,e,r,n){this.fsw=n,this.path=t=t.replace(Lh,""),this.watchPath=e,this.fullWatchPath=Ql.resolve(e),this.hasGlob=e!==t,""===t&&(this.hasGlob=!1),this.globSymlink=!(!this.hasGlob||!r)&&void 0,this.globFilter=!!this.hasGlob&&bh(t,void 0,Hh),this.dirParts=this.getDirParts(t),this.dirParts.forEach((t=>{t.length>1&&t.pop()})),this.followSymlinks=r,this.statMethod=r?"stat":"lstat"}checkGlobSymlink(t){return void 0===this.globSymlink&&(this.globSymlink=t.fullParentDir!==this.fullWatchPath&&{realPath:t.fullParentDir,linkPath:this.fullWatchPath}),this.globSymlink?t.fullPath.replace(this.globSymlink.realPath,this.globSymlink.linkPath):t.fullPath}entryPath(t){return Ql.join(this.watchPath,Ql.relative(this.watchPath,this.checkGlobSymlink(t)))}filterPath(t){const{stats:e}=t;if(e&&e.isSymbolicLink())return this.filterDir(t);const r=this.entryPath(t);return(!this.hasGlob||"function"!=typeof this.globFilter||this.globFilter(r))&&this.fsw._isntIgnored(r,e)&&this.fsw._hasReadPermissions(e)}getDirParts(t){if(!this.hasGlob)return[];const e=[];return(t.includes("{")?ms.expand(t):[t]).forEach((t=>{e.push(Ql.relative(this.watchPath,t).split(Mh))})),e}filterDir(t){if(this.hasGlob){const e=this.getDirParts(this.checkGlobSymlink(t));let r=!1;this.unmatchedGlob=!this.dirParts.some((t=>t.every(((t,n)=>("**"===t&&(r=!0),r||!e[0][n]||bh(t,e[0][n],Hh))))))}return!this.unmatchedGlob&&this.fsw._isntIgnored(this.entryPath(t),t.stats)}}class jf extends zl{constructor(t){super();const e={};t&&Object.assign(e,t),this._watched=new Map,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._symlinkPaths=new Map,this._streams=new Set,this.closed=!1,kf(e,"persistent")&&(e.persistent=!0),kf(e,"ignoreInitial")&&(e.ignoreInitial=!1),kf(e,"ignorePermissionErrors")&&(e.ignorePermissionErrors=!1),kf(e,"interval")&&(e.interval=100),kf(e,"binaryInterval")&&(e.binaryInterval=300),kf(e,"disableGlobbing")&&(e.disableGlobbing=!1),e.enableBinaryInterval=e.binaryInterval!==e.interval,kf(e,"useFsEvents")&&(e.useFsEvents=!e.usePolling);wf()||(e.useFsEvents=!1),kf(e,"usePolling")&&!e.useFsEvents&&(e.usePolling=Wh);const r=process.env.CHOKIDAR_USEPOLLING;if(void 0!==r){const t=r.toLowerCase();e.usePolling="false"!==t&&"0"!==t&&("true"===t||"1"===t||!!t)}const n=process.env.CHOKIDAR_INTERVAL;n&&(e.interval=Number.parseInt(n,10)),kf(e,"atomic")&&(e.atomic=!e.usePolling&&!e.useFsEvents),e.atomic&&(this._pendingUnlinks=new Map),kf(e,"followSymlinks")&&(e.followSymlinks=!0),kf(e,"awaitWriteFinish")&&(e.awaitWriteFinish=!1),!0===e.awaitWriteFinish&&(e.awaitWriteFinish={});const i=e.awaitWriteFinish;i&&(i.stabilityThreshold||(i.stabilityThreshold=2e3),i.pollInterval||(i.pollInterval=100),this._pendingWrites=new Map),e.ignored&&(e.ignored=Af(e.ignored));let s=0;this._emitReady=()=>{s++,s>=this._readyCount&&(this._emitReady=$h,this._readyEmitted=!0,process.nextTick((()=>this.emit("ready"))))},this._emitRaw=(...t)=>this.emit("raw",...t),this._readyEmitted=!1,this.options=e,e.useFsEvents?this._fsEventsHandler=new of(this):this._nodeFsHandler=new wh(this),Object.freeze(e)}add(t,e,r){const{cwd:n,disableGlobbing:i}=this.options;this.closed=!1;let s=Pf(t);return n&&(s=s.map((t=>{const e=((t,e)=>Ql.isAbsolute(t)?t:t.startsWith("!")?"!"+Ql.join(e,t.slice(1)):Ql.join(e,t))(t,n);return i||!is(t)?e:_h(e)}))),s=s.filter((t=>t.startsWith("!")?(this._ignoredPaths.add(t.slice(1)),!1):(this._ignoredPaths.delete(t),this._ignoredPaths.delete(t+"/**"),this._userIgnored=void 0,!0))),this.options.useFsEvents&&this._fsEventsHandler?(this._readyCount||(this._readyCount=s.length),this.options.persistent&&(this._readyCount*=2),s.forEach((t=>this._fsEventsHandler._addToFsEvents(t)))):(this._readyCount||(this._readyCount=0),this._readyCount+=s.length,Promise.all(s.map((async t=>{const n=await this._nodeFsHandler._addToNodeFs(t,!r,0,0,e);return n&&this._emitReady(),n}))).then((t=>{this.closed||t.filter((t=>t)).forEach((t=>{this.add(Ql.dirname(t),Ql.basename(e||t))}))}))),this}unwatch(t){if(this.closed)return this;const e=Pf(t),{cwd:r}=this.options;return e.forEach((t=>{Ql.isAbsolute(t)||this._closers.has(t)||(r&&(t=Ql.join(r,t)),t=Ql.resolve(t)),this._closePath(t),this._ignoredPaths.add(t),this._watched.has(t)&&this._ignoredPaths.add(t+"/**"),this._userIgnored=void 0})),this}close(){if(this.closed)return this._closePromise;this.closed=!0,this.removeAllListeners();const t=[];return this._closers.forEach((e=>e.forEach((e=>{const r=e();r instanceof Promise&&t.push(r)})))),this._streams.forEach((t=>t.destroy())),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach((t=>t.dispose())),["closers","watched","streams","symlinkPaths","throttled"].forEach((t=>{this[`_${t}`].clear()})),this._closePromise=t.length?Promise.all(t).then((()=>{})):Promise.resolve(),this._closePromise}getWatched(){const t={};return this._watched.forEach(((e,r)=>{const n=this.options.cwd?Ql.relative(this.options.cwd,r):r;t[n||"."]=e.getChildren().sort()})),t}emitWithAll(t,e){this.emit(...e),"error"!==t&&this.emit("all",...e)}async _emit(t,e,r,n,i){if(this.closed)return;const s=this.options;Bh&&(e=Ql.normalize(e)),s.cwd&&(e=Ql.relative(s.cwd,e));const o=[t,e];void 0!==i?o.push(r,n,i):void 0!==n?o.push(r,n):void 0!==r&&o.push(r);const a=s.awaitWriteFinish;let c;if(a&&(c=this._pendingWrites.get(e)))return c.lastChange=new Date,this;if(s.atomic){if("unlink"===t)return this._pendingUnlinks.set(e,o),setTimeout((()=>{this._pendingUnlinks.forEach(((t,e)=>{this.emit(...t),this.emit("all",...t),this._pendingUnlinks.delete(e)}))}),"number"==typeof s.atomic?s.atomic:100),this;"add"===t&&this._pendingUnlinks.has(e)&&(t=o[0]="change",this._pendingUnlinks.delete(e))}if(a&&("add"===t||"change"===t)&&this._readyEmitted){const r=(e,r)=>{e?(t=o[0]="error",o[1]=e,this.emitWithAll(t,o)):r&&(o.length>2?o[2]=r:o.push(r),this.emitWithAll(t,o))};return this._awaitWriteFinish(e,a.stabilityThreshold,t,r),this}if("change"===t){if(!this._throttle("change",e,50))return this}if(s.alwaysStat&&void 0===r&&("add"===t||"addDir"===t||"change"===t)){const t=s.cwd?Ql.join(s.cwd,e):e;let r;try{r=await Ef(t)}catch(t){}if(!r||this.closed)return;o.push(r)}return this.emitWithAll(t,o),this}_handleError(t){const e=t&&t.code;return t&&"ENOENT"!==e&&"ENOTDIR"!==e&&(!this.options.ignorePermissionErrors||"EPERM"!==e&&"EACCES"!==e)&&this.emit("error",t),t||this.closed}_throttle(t,e,r){this._throttled.has(t)||this._throttled.set(t,new Map);const n=this._throttled.get(t),i=n.get(e);if(i)return i.count++,!1;let s;const o=()=>{const t=n.get(e),r=t?t.count:0;return n.delete(e),clearTimeout(s),t&&clearTimeout(t.timeoutObject),r};s=setTimeout(o,r);const a={timeoutObject:s,clear:o,count:0};return n.set(e,a),a}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,e,r,n){let i,s=t;this.options.cwd&&!Ql.isAbsolute(t)&&(s=Ql.join(this.options.cwd,t));const o=new Date,a=r=>{Kl.stat(s,((s,o)=>{if(s||!this._pendingWrites.has(t))return void(s&&"ENOENT"!==s.code&&n(s));const c=Number(new Date);r&&o.size!==r.size&&(this._pendingWrites.get(t).lastChange=c);c-this._pendingWrites.get(t).lastChange>=e?(this._pendingWrites.delete(t),n(void 0,o)):i=setTimeout(a,this.options.awaitWriteFinish.pollInterval,o)}))};this._pendingWrites.has(t)||(this._pendingWrites.set(t,{lastChange:o,cancelWait:()=>(this._pendingWrites.delete(t),clearTimeout(i),r)}),i=setTimeout(a,this.options.awaitWriteFinish.pollInterval))}_getGlobIgnored(){return[...this._ignoredPaths.values()]}_isIgnored(t,e){if(this.options.atomic&&Ih.test(t))return!0;if(!this._userIgnored){const{cwd:t}=this.options,e=this.options.ignored,r=e&&e.map(Of(t)),n=Af(r).filter((t=>"string"==typeof t&&!is(t))).map((t=>t+"/**")),i=this._getGlobIgnored().map(Of(t)).concat(r,n);this._userIgnored=bh(i,void 0,Hh)}return this._userIgnored([t,e])}_isntIgnored(t,e){return!this._isIgnored(t,e)}_getWatchHelpers(t,e){const r=e||this.options.disableGlobbing||!is(t)?t:ns(t),n=this.options.followSymlinks;return new Tf(t,r,n,this)}_getWatchedDir(t){this._boundRemove||(this._boundRemove=this._remove.bind(this));const e=Ql.resolve(t);return this._watched.has(e)||this._watched.set(e,new Df(e,this._boundRemove)),this._watched.get(e)}_hasReadPermissions(t){if(this.options.ignorePermissionErrors)return!0;const e=511&(t&&Number.parseInt(t.mode,10)),r=Number.parseInt(e.toString(8)[0],10);return Boolean(4&r)}_remove(t,e,r){const n=Ql.join(t,e),i=Ql.resolve(n);if(r=null!=r?r:this._watched.has(n)||this._watched.has(i),!this._throttle("remove",n,100))return;r||this.options.useFsEvents||1!==this._watched.size||this.add(t,e,!0);this._getWatchedDir(n).getChildren().forEach((t=>this._remove(n,t)));const s=this._getWatchedDir(t),o=s.has(e);s.remove(e),this._symlinkPaths.has(i)&&this._symlinkPaths.delete(i);let a=n;if(this.options.cwd&&(a=Ql.relative(this.options.cwd,n)),this.options.awaitWriteFinish&&this._pendingWrites.has(a)){if("add"===this._pendingWrites.get(a).cancelWait())return}this._watched.delete(n),this._watched.delete(i);const c=r?"unlinkDir":"unlink";o&&!this._isIgnored(n)&&this._emit(c,n),this.options.useFsEvents||this._closePath(n)}_closePath(t){this._closeFile(t);const e=Ql.dirname(t);this._getWatchedDir(e).remove(Ql.basename(t))}_closeFile(t){const e=this._closers.get(t);e&&(e.forEach((t=>t())),this._closers.delete(t))}_addPathCloser(t,e){if(!e)return;let r=this._closers.get(t);r||(r=[],this._closers.set(t,r)),r.push(e)}_readdirp(t,e){if(this.closed)return;const r={type:"all",alwaysStat:!0,lstat:!0,...e};let n=Xl(t,r);return this._streams.add(n),n.once("close",(()=>{n=void 0})),n.once("end",(()=>{n&&(this._streams.delete(n),n=void 0)})),n}}var Ff=jf;ql.FSWatcher=Ff;var Mf=(t,e)=>{const r=new jf(e);return r.add(t),r};ql.watch=Mf;var If=function(t,e){if(!e&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var r=Lf(e);if(r&&r.has(t))return r.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in t)if("default"!==s&&Object.prototype.hasOwnProperty.call(t,s)){var o=i?Object.getOwnPropertyDescriptor(t,s):null;o&&(o.get||o.set)?Object.defineProperty(n,s,o):n[s]=t[s]}n.default=t,r&&r.set(t,n);return n}(ql);function Lf(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return(Lf=function(t){return t?r:e})(t)}function Hf(t){return t&&t.__esModule?t:{default:t}}class $f extends yn.EventEmitter{constructor(){super();const t=this.rebuildCache.bind(this);this._projectChangeWatcher=atom.project.onDidChangePaths(t);const e=this._onDidChangeFiles.bind(this);this._projectWatcher=atom.project.onDidChangeFiles(e),this._repositories=[],this._filePathsByProjectDirectory=new Map,this._filePathsByDirectory=new Map,this._fileWatchersByDirectory=new Map,this._allIgnoredGlobByDirectory=new Map,this.updateConfig()}updateConfig(){this.config={excludeVcsIgnoredPaths:atom.config.get("core.excludeVcsIgnoredPaths"),ignoreSubmodules:atom.config.get("autocomplete-paths.ignoreSubmodules"),shouldIgnoredNames:atom.config.get("autocomplete-paths.ignoredNames"),ignoredNames:atom.config.get("core.ignoredNames"),ignoredPatterns:atom.config.get("autocomplete-paths.ignoredPatterns"),maxFileCount:atom.config.get("autocomplete-paths.maxFileCount")}}async rebuildCache(){this.dispose(),this._cancelled=!1,this.emit("rebuild-cache"),await this._cacheProjectPathsAndRepositories();const t=await this._cachePaths();return await this._addWatchers(),this.emit("rebuild-cache-done"),t}getFilePathsForProjectDirectory(t,e=null){const r=this._filePathsByProjectDirectory.get(t.path)||[];return e?r.filter((t=>0===t.indexOf(e))):r}dispose(t){this._fileWatchersByDirectory.forEach((async t=>{await t.close()})),this._fileWatchersByDirectory.clear(),this._filePathsByProjectDirectory.clear(),this._filePathsByDirectory.clear(),this._repositories=[],this._projectWatcher&&(this._projectWatcher.dispose(),this._projectWatcher=null),t&&this._projectChangeWatcher&&(this._projectChangeWatcher.dispose(),this._projectChangeWatcher=null)}_isPathIgnored(t){let e=!1;return this.config.excludeVcsIgnoredPaths&&this._repositories.forEach((r=>{if(e)return;const n=this.config.ignoreSubmodules&&r.isSubmodule(t);(r.isPathIgnored(t)||n)&&(e=!0)})),this.config.shouldIgnoredNames&&this.config.ignoredNames.forEach((r=>{e||(e=e||(0,Kn.default)(t,r,{matchBase:!0,dot:!0}))})),this.config.ignoredPatterns&&this.config.ignoredPatterns.forEach((r=>{e||(e=e||(0,Kn.default)(t,r,{dot:!0}))})),e}async _cacheProjectPathsAndRepositories(){this._projectDirectories=atom.project.getDirectories();const t=this._projectDirectories.length,e=new Array(t);for(let r=0;rnull!==t))}async _addWatchers(){await Promise.all(this._projectDirectories.map((t=>this._addWatcherForDirectory(t))))}async _addWatcherForDirectory(t){let e=this._fileWatchersByDirectory.get(t);void 0!==e&&"function"==typeof e.close&&await e.close();const r=t.getPath();if(this._filePathsByProjectDirectory.get(r).length>=this.config.maxFileCount)return void console.warn(Xn.dedent`autocomplete-paths: Maximum file count of ${this.config.maxFileCount} has been exceeded, + so the subequent changes in the project are not tracked. + See these link to learn more: + https://github.com/atom-community/autocomplete-paths/wiki/Troubleshooting#maximum-file-limit-exceeded + https://github.com/atom-community/autocomplete-paths/issues/270 + `);const n=this._allIgnoredGlobByDirectory.get(t.path);e=If.watch([r,...n],{persistent:!0,ignoreInitial:!0,followSymlinks:!1,interval:1e3,binaryInterval:1e3}).on("add",(e=>{this.onAddFile(t,e)})).on("unlink",(e=>{this.onRemoveFile(t,e)})).on("addDir",(t=>{this.onAddDir(t)})).on("unlinkDir",(e=>{this.onRemoveDir(t,e)})),this._fileWatchersByDirectory.set(t,e)}onAddFile(t,e){const r=this._filePathsByProjectDirectory.get(t.path);r.push(e),this._filePathsByProjectDirectory.set(t.path,r)}onRemoveFile(t,e){const r=this._filePathsByProjectDirectory.get(t.path),n=r.indexOf(e);delete r[n],this._filePathsByProjectDirectory.set(t.path,r)}async onAddDir(t){await this._cachePathsForDirectoryWithGlob(t)}onRemoveDir(t,e){const r=new Qn.Directory(e);this._removeFilePathsForDirectory(t,r)}async _onDirectoryChanged(t,e){this.emit("rebuild-cache"),this._removeFilePathsForDirectory(t,e),this._cleanWatchersForDirectory(e),await this._cachePathsForDirectory(t,e),this.emit("rebuild-cache-done")}_cleanWatchersForDirectory(t){this._fileWatchersByDirectory.forEach((async(e,r)=>{t.contains(r.path)&&(await await e.close(),this._fileWatchersByDirectory.delete(r))}))}_removeFilePathsForDirectory(t,e){let r=this._filePathsByProjectDirectory.get(t.path);r&&(r=r.filter((t=>!e.contains(t))),this._filePathsByProjectDirectory.set(t.path,r),this._filePathsByDirectory.delete(e.path))}_onDidChangeFiles(t){t.filter((t=>"modified"!==t.action)).forEach((t=>{if(!this._projectDirectories)return;const{action:e,path:r,oldPath:n}=t,i=this._projectDirectories.find((t=>0===r.indexOf(t.path)));if(!i)return;const s=i.path;if(this._isPathIgnored(r))return;const o=this._filePathsByProjectDirectory.get(s)||[];switch(e){case"created":o.push(r);break;case"deleted":{const t=o.indexOf(r);t>-1&&o.splice(t,1);break}case"renamed":{const t=o.indexOf(n);t>-1&&(o[t]=r);break}default:console.error(`unkown _onDidChangeFiles action: ${e}`)}this._filePathsByProjectDirectory.has(s)||this._filePathsByProjectDirectory.set(s,o)}))}_cachePaths(){try{return this._cachePathsWithGlob()}catch(t){return console.error(t),this._cachePathsWithAtom()}}_cachePathsForDirectory(t,e){try{return this._cachePathsForDirectoryWithGlob(e.path)}catch(r){return console.error(r),this._cachePathsForDirectoryWithAtom(t,e)}}async _cachePathsWithGlob(){return await Promise.all(this._projectDirectories.map((t=>this._cachePathsForDirectoryWithGlob(t.path))))}async _getIgnoredPatternsGlob(t){const e=[];this.config.shouldIgnoredNames&&e.push(...this.config.ignoredNames),this.config.ignoredPatterns&&e.push(...this.config.ignoredPatterns);const r=e.length,n=new Array(r);for(let i=0;ifunction(t){try{return(0,di.globifyGitIgnoreFile)(t)}catch(t){return[]}}((0,Yn.dirname)(t)))))).flat()}return[]}async _getAllIgnoredGlob(t){const e=await this._getIgnoredPatternsGlob(t);return[...await this._getAllGitIgnoreGlob(t,e),...e]}async _cachePathsForDirectoryWithGlob(t){const e=(0,di.globifyDirectory)(t),r=await this._getAllIgnoredGlob(t);this._allIgnoredGlobByDirectory.set(t,r);const n=await(0,Vl.default)([e,...r],{dot:!0,cwd:t,onlyFiles:!0});return this._filePathsByProjectDirectory.set(t,n),n}async _cachePathsWithAtom(){return await Promise.all(this._projectDirectories.map((t=>this._cachePathsForDirectoryWithAtom(t,t))))}async _cachePathsForDirectoryWithAtom(t,e){if(this._cancelled)return[];const r=await this._getDirectoryEntries(e);if(this._cancelled)return[];const n=[],i=[];for(let t=0,e=r.length;tthis.config.maxFileCount&&!this._cancelled?(atom.notifications.addError("autocomplete-paths",{description:`Maximum file count of ${this.config.maxFileCount} has been exceeded. Path autocompletion will not work in this project.

Click here to learn more.`,dismissable:!0}),this._filePathsByProjectDirectory.clear(),this._filePathsByDirectory.clear(),void(this._cancelled=!0)):(this._filePathsByProjectDirectory.set(t.path,(0,Xn.union)(s,n)),s=this._filePathsByDirectory.get(e.path)||[],this._filePathsByDirectory.set(e.path,(0,Xn.union)(s,n)),Promise.all(i.map((e=>this._cachePathsForDirectoryWithAtom(t,e)))))}}gn=$f,dn.default=gn;var Nf=zf(dn=dn.default),Bf=t,Wf={};Object.defineProperty(Wf,"__esModule",{value:!0});var Gf=void 0;Wf.DefaultScopes=Gf;const Uf=["import\\s+.*?from\\s+['\"]","import\\s+['\"]","require\\(['\"]","define\\(\\[?['\"]"],Vf=["js","jsx","ts","tsx","coffee","json"],qf=[["\\.jsx?$",""],["\\.ts$",""],["\\.coffee$",""]];function zf(t){return t&&t.__esModule?t:{default:t}}Gf=[{scopes:["source.js","source.js.jsx","source.coffee","source.coffee.jsx","source.ts","source.tsx","javascript","source.flow"],prefixes:Uf,extensions:Vf,relative:!0,replaceOnInsert:[["([\\/]?index)?\\.jsx?$",""],["([\\/]?index)?\\.ts$",""],["([\\/]?index)?\\.coffee$",""]]},{scopes:["text.html.vue"],prefixes:Uf,extensions:Vf.concat("vue"),relative:!0,replaceOnInsert:qf},{scopes:["text.html.vue"],prefixes:["@import[\\(|\\s+]?['\"]"],extensions:["css","sass","scss","less","styl"],relative:!0,replaceOnInsert:[["(/)?_([^/]*?)$","$1$2"]]},{scopes:["source.coffee","source.coffee.jsx"],prefixes:["require\\s+['\"]","define\\s+\\[?['\"]"],extensions:Vf,relative:!0,replaceOnInsert:qf},{scopes:["source.php"],prefixes:["require_once\\(['\"]","include\\(['\"]"],extensions:["php"],relative:!0},{scopes:["source.sass","source.css.scss","source.css.less","source.stylus"],prefixes:["@import[\\(|\\s+]?['\"]"],extensions:["sass","scss","css"],relative:!0,replaceOnInsert:[["(/)?_([^/]*?)$","$1$2"]]},{scopes:["source.css"],prefixes:["@import\\s+['\"]?","@import\\s+url\\(['\"]?"],extensions:["css"],relative:!0},{scopes:["source.css","source.sass","source.css.less","source.css.scss","source.stylus"],prefixes:["url\\(['\"]?"],extensions:["png","gif","jpeg","jpg","woff","woff2","ttf","svg","otf"],relative:!0},{scopes:["source.c","source.cpp"],prefixes:["^\\s*#include\\s+['\"]"],extensions:["h","hpp"],relative:!0,includeCurrentDirectory:!1},{scopes:["source.lua"],prefixes:["require[\\s+|\\(]['\"]"],extensions:["lua"],relative:!0,includeCurrentDirectory:!1,replaceOnInsert:[["\\/","."],["\\\\","."],["\\.lua$",""]]},{scopes:["source.ruby"],prefixes:["^\\s*require[\\s+|\\(]['\"]"],extensions:["rb"],relative:!0,includeCurrentDirectory:!1,replaceOnInsert:[["\\.rb$",""]]},{scopes:["source.python"],prefixes:["^\\s*from\\s+","^\\s*import\\s+"],extensions:["py"],relative:!0,includeCurrentDirectory:!1,replaceOnInsert:[["\\/","."],["\\\\","."],["\\.py$",""]]}],Wf.DefaultScopes=Gf;class Kf extends P.EventEmitter{constructor(){super(),this.reloadScopes(),this._pathsCache=new Nf.default,this._isReady=!1,this._onRebuildCache=this._onRebuildCache.bind(this),this._onRebuildCacheDone=this._onRebuildCacheDone.bind(this),this._pathsCache.on("rebuild-cache",this._onRebuildCache),this._pathsCache.on("rebuild-cache-done",this._onRebuildCacheDone)}reloadScopes(){this._scopes=atom.config.get("autocomplete-paths.scopes").slice(0)||[],atom.config.get("autocomplete-paths.ignoreBuiltinScopes")||(this._scopes=this._scopes.concat(Wf.DefaultScopes));for(const t in v.OptionScopes)atom.config.get(`autocomplete-paths.${t}`)&&(this._scopes=this._scopes.slice(0).concat(v.OptionScopes[t]))}_onRebuildCache(){this.emit("rebuild-cache")}_onRebuildCacheDone(){this.emit("rebuild-cache-done")}_getSuggestionsForScope(t,e,r){const n=Yf(e).substr(r.index+r[0].length),i=n.match(/[/\\|]$/),s=0===n.indexOf("./")||0===n.indexOf("../"),o=x.default.parse(n);i&&(o.dir=x.default.join(o.dir,o.base),o.base="",o.name="");const a=function(t){const e=t.getBuffer().getPath();let r=null;return atom.project.getDirectories().forEach((t=>{t.contains(e)&&(r=t)})),r}(e.editor);if(!a)return Promise.resolve([]);const c=x.default.dirname(e.editor.getPath()),u=x.default.resolve(c,o.dir);let l=s?this._pathsCache.getFilePathsForProjectDirectory(a,u):this._pathsCache.getFilePathsForProjectDirectory(a);const h=s?o.base:n,{extensions:f}=t;if(f){const t=new RegExp(`.(${f.join("|")})$`);l=l.filter((e=>t.test(e)))}h&&(l=(0,Bf.filter)(l,h,{maxResults:10}));const p=l.map((r=>{const i=atom.config.get("autocomplete-paths.normalizeSlashes"),o=atom.project.relativizePath(r)[1];let a=o;s&&(a=x.default.relative(u,r)),i&&(a=(0,pn.default)(a));let c=x.default.relative(x.default.dirname(e.editor.getPath()),r);i&&(c=(0,pn.default)(c)),!1!==t.relative&&(r=c,!1!==t.includeCurrentDirectory&&"."!==r[0]&&(r=`./${r}`)),t.projectRelativePath&&(r=(0,pn.default)(o)),t.replaceOnInsert&&t.replaceOnInsert.forEach((([t,e])=>{const n=new RegExp(t);n.test(r)&&(r=r.replace(n,e))}));const l=c.split(x.default.sep).length;return{text:r,replacementPrefix:n,displayText:a,type:"import",iconHTML:'',score:(0,Bf.score)(a,e.prefix),distanceToFile:l}})),d=p.length;if(p.length){const t=Or(p,(t=>t.distanceToFile)).distanceToFile;p.forEach(((e,r)=>{e.score=d-r+(t-e.distanceToFile)})),p.sort(((t,e)=>e.score-t.score))}return Promise.resolve(p)}async getSuggestions(t){const e=this._scopes.map((e=>[e,Qf(e,t)])).filter((t=>t[1])).map((([e,r])=>this._getSuggestionsForScope(e,t,r))),r=Yr(await Promise.all(e));return!!r.length&&r}async rebuildCache(){const t=await this._pathsCache.rebuildCache();return this._isReady=!0,t}isReady(){return this._isReady}get suggestionPriority(){return atom.config.get("autocomplete-paths.suggestionPriority")}get fileCount(){return atom.project.getDirectories().reduce(((t,e)=>t+this._pathsCache.getFilePathsForProjectDirectory(e).length),0)}dispose(){this._pathsCache.removeListener("rebuild-cache",this._onRebuildCache),this._pathsCache.removeListener("rebuild-cache-done",this._onRebuildCacheDone),this._pathsCache.dispose(!0)}}function Qf(t,e){const r=Array.isArray(t.scopes)?t.scopes:[t.scopes];if(!(en(e.scopeDescriptor.getScopesArray(),r).length>0))return!1;const n=Yf(e);let i=null;return(Array.isArray(t.prefixes)?t.prefixes:[t.prefixes]).forEach((t=>{const e=new RegExp(t,"i");i=i||n.match(e)})),i}function Yf(t){const{editor:e,bufferPosition:r}=t;return e.getTextInRange([[r.row,0],r])}A=Kf,S.default=A,Kf.prototype.selector="*",Kf.prototype.inclusionPriority=1,S=S.default;var Xf,Zf=(Xf=S)&&Xf.__esModule?Xf:{default:Xf};const Jf=new a.CompositeDisposable;let tp,ep,rp,np,ip,sp,op;function ap(){rp?ip||(sp=document.createElement("autocomplete-paths-status-bar"),sp.innerHTML="Rebuilding paths cache...",ip=rp.addRightTile({item:sp,priority:100}),(tp||(cp(),tp))&&(np=setInterval((()=>{const t=tp.fileCount;t>0&&(sp.innerHTML=`Rebuilding paths cache... ${t} files`)}),500))):op=!0}function cp(){return tp||(tp=new Zf.default,tp.on("rebuild-cache",(()=>{ap()})),tp.on("rebuild-cache-done",(()=>{np&&clearInterval(np),ip&&ip.destroy(),ip=null,sp=null})),ep=Je((()=>tp.rebuildCache()),1e3,!0),ep()),tp} //# sourceMappingURL=autocomplete-paths.js.map diff --git a/dist/autocomplete-paths.js.map b/dist/autocomplete-paths.js.map index 7f58df4..ba78881 100644 --- a/dist/autocomplete-paths.js.map +++ b/dist/autocomplete-paths.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./lib/autocomplete-paths.js","./lib/config/option-scopes.js","./lib/config/index.js","./lib/paths-provider.js","./node_modules/underscore/modules/_setup.js","./node_modules/underscore/modules/restArguments.js","./node_modules/underscore/modules/isObject.js","./node_modules/underscore/modules/isNull.js","./node_modules/underscore/modules/isUndefined.js","./node_modules/underscore/modules/isBoolean.js","./node_modules/underscore/modules/isElement.js","./node_modules/underscore/modules/_tagTester.js","./node_modules/underscore/modules/isString.js","./node_modules/underscore/modules/isNumber.js","./node_modules/underscore/modules/isDate.js","./node_modules/underscore/modules/isRegExp.js","./node_modules/underscore/modules/isError.js","./node_modules/underscore/modules/isSymbol.js","./node_modules/underscore/modules/isArrayBuffer.js","./node_modules/underscore/modules/isFunction.js","./node_modules/underscore/modules/_hasObjectTag.js","./node_modules/underscore/modules/_stringTagBug.js","./node_modules/underscore/modules/isDataView.js","./node_modules/underscore/modules/isArray.js","./node_modules/underscore/modules/_has.js","./node_modules/underscore/modules/isArguments.js","./node_modules/underscore/modules/isFinite.js","./node_modules/underscore/modules/isNaN.js","./node_modules/underscore/modules/constant.js","./node_modules/underscore/modules/_createSizePropertyCheck.js","./node_modules/underscore/modules/_shallowProperty.js","./node_modules/underscore/modules/_getByteLength.js","./node_modules/underscore/modules/_isBufferLike.js","./node_modules/underscore/modules/isTypedArray.js","./node_modules/underscore/modules/_getLength.js","./node_modules/underscore/modules/_collectNonEnumProps.js","./node_modules/underscore/modules/keys.js","./node_modules/underscore/modules/isEmpty.js","./node_modules/underscore/modules/isMatch.js","./node_modules/underscore/modules/underscore.js","./node_modules/underscore/modules/_toBufferView.js","./node_modules/underscore/modules/isEqual.js","./node_modules/underscore/modules/allKeys.js","./node_modules/underscore/modules/_methodFingerprint.js","./node_modules/underscore/modules/isMap.js","./node_modules/underscore/modules/isWeakMap.js","./node_modules/underscore/modules/isSet.js","./node_modules/underscore/modules/isWeakSet.js","./node_modules/underscore/modules/values.js","./node_modules/underscore/modules/pairs.js","./node_modules/underscore/modules/invert.js","./node_modules/underscore/modules/functions.js","./node_modules/underscore/modules/_createAssigner.js","./node_modules/underscore/modules/extend.js","./node_modules/underscore/modules/extendOwn.js","./node_modules/underscore/modules/defaults.js","./node_modules/underscore/modules/_baseCreate.js","./node_modules/underscore/modules/create.js","./node_modules/underscore/modules/clone.js","./node_modules/underscore/modules/tap.js","./node_modules/underscore/modules/toPath.js","./node_modules/underscore/modules/_toPath.js","./node_modules/underscore/modules/_deepGet.js","./node_modules/underscore/modules/get.js","./node_modules/underscore/modules/has.js","./node_modules/underscore/modules/identity.js","./node_modules/underscore/modules/matcher.js","./node_modules/underscore/modules/property.js","./node_modules/underscore/modules/_optimizeCb.js","./node_modules/underscore/modules/_baseIteratee.js","./node_modules/underscore/modules/iteratee.js","./node_modules/underscore/modules/_cb.js","./node_modules/underscore/modules/mapObject.js","./node_modules/underscore/modules/noop.js","./node_modules/underscore/modules/propertyOf.js","./node_modules/underscore/modules/times.js","./node_modules/underscore/modules/random.js","./node_modules/underscore/modules/now.js","./node_modules/underscore/modules/_createEscaper.js","./node_modules/underscore/modules/_escapeMap.js","./node_modules/underscore/modules/escape.js","./node_modules/underscore/modules/unescape.js","./node_modules/underscore/modules/_unescapeMap.js","./node_modules/underscore/modules/templateSettings.js","./node_modules/underscore/modules/template.js","./node_modules/underscore/modules/result.js","./node_modules/underscore/modules/uniqueId.js","./node_modules/underscore/modules/chain.js","./node_modules/underscore/modules/_executeBound.js","./node_modules/underscore/modules/partial.js","./node_modules/underscore/modules/bind.js","./node_modules/underscore/modules/_isArrayLike.js","./node_modules/underscore/modules/_flatten.js","./node_modules/underscore/modules/bindAll.js","./node_modules/underscore/modules/memoize.js","./node_modules/underscore/modules/delay.js","./node_modules/underscore/modules/defer.js","./node_modules/underscore/modules/throttle.js","./node_modules/underscore/modules/debounce.js","./node_modules/underscore/modules/wrap.js","./node_modules/underscore/modules/negate.js","./node_modules/underscore/modules/compose.js","./node_modules/underscore/modules/after.js","./node_modules/underscore/modules/before.js","./node_modules/underscore/modules/once.js","./node_modules/underscore/modules/findKey.js","./node_modules/underscore/modules/_createPredicateIndexFinder.js","./node_modules/underscore/modules/findIndex.js","./node_modules/underscore/modules/findLastIndex.js","./node_modules/underscore/modules/sortedIndex.js","./node_modules/underscore/modules/_createIndexFinder.js","./node_modules/underscore/modules/indexOf.js","./node_modules/underscore/modules/lastIndexOf.js","./node_modules/underscore/modules/find.js","./node_modules/underscore/modules/findWhere.js","./node_modules/underscore/modules/each.js","./node_modules/underscore/modules/map.js","./node_modules/underscore/modules/_createReduce.js","./node_modules/underscore/modules/reduce.js","./node_modules/underscore/modules/reduceRight.js","./node_modules/underscore/modules/filter.js","./node_modules/underscore/modules/reject.js","./node_modules/underscore/modules/every.js","./node_modules/underscore/modules/some.js","./node_modules/underscore/modules/contains.js","./node_modules/underscore/modules/invoke.js","./node_modules/underscore/modules/pluck.js","./node_modules/underscore/modules/where.js","./node_modules/underscore/modules/max.js","./node_modules/underscore/modules/min.js","./node_modules/underscore/modules/sample.js","./node_modules/underscore/modules/shuffle.js","./node_modules/underscore/modules/sortBy.js","./node_modules/underscore/modules/_group.js","./node_modules/underscore/modules/groupBy.js","./node_modules/underscore/modules/indexBy.js","./node_modules/underscore/modules/countBy.js","./node_modules/underscore/modules/partition.js","./node_modules/underscore/modules/toArray.js","./node_modules/underscore/modules/size.js","./node_modules/underscore/modules/_keyInObj.js","./node_modules/underscore/modules/pick.js","./node_modules/underscore/modules/omit.js","./node_modules/underscore/modules/initial.js","./node_modules/underscore/modules/first.js","./node_modules/underscore/modules/rest.js","./node_modules/underscore/modules/last.js","./node_modules/underscore/modules/compact.js","./node_modules/underscore/modules/flatten.js","./node_modules/underscore/modules/difference.js","./node_modules/underscore/modules/without.js","./node_modules/underscore/modules/uniq.js","./node_modules/underscore/modules/union.js","./node_modules/underscore/modules/intersection.js","./node_modules/underscore/modules/unzip.js","./node_modules/underscore/modules/zip.js","./node_modules/underscore/modules/object.js","./node_modules/underscore/modules/range.js","./node_modules/underscore/modules/chunk.js","./node_modules/underscore/modules/_chainResult.js","./node_modules/underscore/modules/mixin.js","./node_modules/underscore/modules/underscore-array-methods.js","./node_modules/underscore/modules/index-default.js","./node_modules/slash/index.js","./lib/paths-cache.js","./node_modules/minimatch/minimatch.js","./node_modules/concat-map/index.js","./node_modules/balanced-match/index.js","./node_modules/brace-expansion/index.js","./lib/utils.js","./node_modules/globify-gitignore/dist/main.js","./node_modules/fast-glob/out/managers/tasks.js","./node_modules/fast-glob/out/utils/index.js","./node_modules/fast-glob/out/utils/array.js","./node_modules/fast-glob/out/utils/errno.js","./node_modules/fast-glob/out/utils/fs.js","./node_modules/fast-glob/out/utils/path.js","./node_modules/fast-glob/out/utils/pattern.js","./node_modules/is-extglob/index.js","./node_modules/is-glob/index.js","./node_modules/glob-parent/index.js","./node_modules/micromatch/index.js","./node_modules/braces/lib/utils.js","./node_modules/braces/lib/stringify.js","./node_modules/fill-range/index.js","./node_modules/is-number/index.js","./node_modules/to-regex-range/index.js","./node_modules/braces/lib/compile.js","./node_modules/braces/lib/expand.js","./node_modules/braces/lib/constants.js","./node_modules/braces/lib/parse.js","./node_modules/braces/index.js","./node_modules/picomatch/lib/picomatch.js","./node_modules/picomatch/lib/utils.js","./node_modules/picomatch/lib/constants.js","./node_modules/picomatch/lib/scan.js","./node_modules/picomatch/lib/parse.js","./node_modules/picomatch/index.js","./node_modules/fast-glob/out/utils/stream.js","./node_modules/merge2/index.js","./node_modules/fast-glob/out/utils/string.js","./node_modules/fast-glob/out/providers/async.js","./node_modules/fast-glob/out/readers/stream.js","./node_modules/@nodelib/fs.stat/out/index.js","./node_modules/@nodelib/fs.stat/out/providers/async.js","./node_modules/@nodelib/fs.stat/out/providers/sync.js","./node_modules/@nodelib/fs.stat/out/settings.js","./node_modules/@nodelib/fs.stat/out/adapters/fs.js","./node_modules/@nodelib/fs.walk/out/index.js","./node_modules/@nodelib/fs.walk/out/providers/async.js","./node_modules/@nodelib/fs.walk/out/readers/async.js","./node_modules/@nodelib/fs.scandir/out/index.js","./node_modules/@nodelib/fs.scandir/out/providers/async.js","./node_modules/run-parallel/index.js","./node_modules/queue-microtask/index.js","./node_modules/@nodelib/fs.scandir/out/constants.js","./node_modules/@nodelib/fs.scandir/out/utils/index.js","./node_modules/@nodelib/fs.scandir/out/utils/fs.js","./node_modules/@nodelib/fs.scandir/out/providers/common.js","./node_modules/@nodelib/fs.scandir/out/providers/sync.js","./node_modules/@nodelib/fs.scandir/out/settings.js","./node_modules/@nodelib/fs.scandir/out/adapters/fs.js","./node_modules/fastq/queue.js","./node_modules/reusify/reusify.js","./node_modules/@nodelib/fs.walk/out/readers/common.js","./node_modules/@nodelib/fs.walk/out/readers/reader.js","./node_modules/@nodelib/fs.walk/out/providers/stream.js","./node_modules/@nodelib/fs.walk/out/providers/sync.js","./node_modules/@nodelib/fs.walk/out/readers/sync.js","./node_modules/@nodelib/fs.walk/out/settings.js","./node_modules/fast-glob/out/readers/reader.js","./node_modules/fast-glob/out/providers/provider.js","./node_modules/fast-glob/out/providers/filters/deep.js","./node_modules/fast-glob/out/providers/matchers/partial.js","./node_modules/fast-glob/out/providers/matchers/matcher.js","./node_modules/fast-glob/out/providers/filters/entry.js","./node_modules/fast-glob/out/providers/filters/error.js","./node_modules/fast-glob/out/providers/transformers/entry.js","./node_modules/fast-glob/out/providers/stream.js","./node_modules/fast-glob/out/providers/sync.js","./node_modules/fast-glob/out/readers/sync.js","./node_modules/fast-glob/out/settings.js","./node_modules/fast-glob/out/index.js","./node_modules/chokidar/index.js","./node_modules/readdirp/index.js","./node_modules/anymatch/index.js","./node_modules/normalize-path/index.js","./node_modules/chokidar/lib/nodefs-handler.js","./node_modules/is-binary-path/index.js","./node_modules/binary-extensions/binary-extensions.json","./node_modules/chokidar/lib/constants.js","./node_modules/chokidar/lib/fsevents-handler.js","./lib/config/default-scopes.js"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$export(e, n, v) {\n Object.defineProperty(e, n, {get: v, enumerable: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","\"use babel\"\nexport { config } from \"./config\"\nimport PathsProvider from \"./paths-provider\"\nimport { CompositeDisposable } from \"atom\"\nimport { OptionScopes } from \"./config/option-scopes\"\nimport { debounce } from \"underscore\"\n\nconst subscriptions = new CompositeDisposable()\nlet _provider\n/** provider.rebuildCache method debounced */\nlet _rebuildCache\nlet _statusBar\nlet _statusBarInterval\nlet _statusBarTile\nlet _statusBarElement\nlet _displayStatusBarItemOnConsumption\n\nexport function activate() {\n subscriptions.add(\n atom.commands.add(\"atom-workspace\", {\n \"autocomplete-paths:rebuild-cache\": () => {\n _rebuildCache()\n },\n })\n )\n\n const cacheOptions = [\n \"core.ignoredNames\",\n \"core.excludeVcsIgnoredPaths\",\n \"autocomplete-paths.ignoreSubmodules\",\n \"autocomplete-paths.ignoredNames\",\n \"autocomplete-paths.ignoredPatterns\",\n \"autocomplete-paths.maxFileCount\",\n ]\n cacheOptions.forEach((cacheOption) => {\n subscriptions.add(\n atom.config.observe(cacheOption, () => {\n if (!_provider) {\n return\n }\n _provider._pathsCache.updateConfig()\n _rebuildCache()\n })\n )\n })\n\n const scopeOptions = [\"autocomplete-paths.scopes\"]\n for (const key in OptionScopes) {\n scopeOptions.push(`autocomplete-paths.${key}`)\n }\n scopeOptions.forEach((scopeOption) => {\n subscriptions.add(\n atom.config.observe(scopeOption, () => {\n if (!_provider) {\n return\n }\n _provider.reloadScopes()\n })\n )\n })\n}\n\nexport function deactivate() {\n if (_statusBarInterval) {\n clearInterval(_statusBarInterval)\n }\n subscriptions.dispose()\n if (_provider) {\n _provider.dispose(true)\n _provider = null\n }\n if (_statusBarTile) {\n _statusBarTile.destroy()\n _statusBarTile = null\n }\n}\n\n/**\n * Invoked when the status bar becomes available\n * @param {StatusBar} statusBar\n */\nexport function consumeStatusBar(statusBar) {\n _statusBar = statusBar\n if (_displayStatusBarItemOnConsumption) {\n _displayStatusBarTile()\n }\n}\n\n/**\n * Displays the status bar tile\n */\nfunction _displayStatusBarTile() {\n if (!_statusBar) {\n _displayStatusBarItemOnConsumption = true\n return\n }\n if (_statusBarTile) {\n return\n }\n\n _statusBarElement = document.createElement(\"autocomplete-paths-status-bar\")\n _statusBarElement.innerHTML = \"Rebuilding paths cache...\"\n _statusBarTile = _statusBar.addRightTile({\n item: _statusBarElement,\n priority: 100,\n })\n if (!_provider) {\n // TODO check why we need this check\n getProvider()\n if (!_provider) {\n return\n }\n }\n _statusBarInterval = setInterval(() => {\n const fileCount = _provider.fileCount\n if (fileCount > 0) {\n _statusBarElement.innerHTML = `Rebuilding paths cache... ${fileCount} files`\n }\n }, 500)\n}\n\n/**\n * Hides the status bar tile\n */\nfunction _hideStatusBarTile() {\n if (_statusBarInterval) {\n clearInterval(_statusBarInterval)\n }\n if (_statusBarTile) {\n _statusBarTile.destroy()\n }\n _statusBarTile = null\n _statusBarElement = null\n}\n\nexport function getProvider() {\n if (!_provider) {\n _provider = new PathsProvider()\n _provider.on(\"rebuild-cache\", () => {\n _displayStatusBarTile()\n })\n _provider.on(\"rebuild-cache-done\", () => {\n _hideStatusBarTile()\n })\n _rebuildCache = debounce(\n () => {\n return _provider.rebuildCache()\n },\n 1000,\n true\n )\n _rebuildCache()\n }\n return _provider\n}\n","\"use babel\"\n\nexport const OptionScopes = {\n enableHtmlSupport: [\n {\n scopes: [\"text.html.basic\"],\n prefixes: [\"src=['\\\"]\", \"href=['\\\"]\", \"name=['\\\"]\"],\n extensions: [\"js\", \"png\", \"gif\", \"jpeg\", \"jpg\", \"tiff\", \"html\", \"json\", \"svg\"],\n relative: true,\n },\n ],\n}\n","\"use babel\"\n\nimport { OptionScopes } from \"./option-scopes\"\n\nexport const config = {\n normalizeSlashes: {\n type: \"boolean\",\n description: \"Replaces backward slashes with forward slashes on windows (if possible)\",\n default: true,\n },\n maxFileCount: {\n type: \"number\",\n description: \"The maximum amount of files to be handled\",\n default: 2000,\n },\n suggestionPriority: {\n type: \"number\",\n description:\n \"Suggestion priority of this provider. If set to a number larger than or equal to 1, suggestions will be displayed on top of default suggestions.\",\n default: 2,\n },\n ignoredNames: {\n type: \"boolean\",\n default: true,\n description: \"Ignore items matched by the `Ignore Names` core option.\",\n },\n ignoreSubmodules: {\n type: \"boolean\",\n default: false,\n description: \"Ignore submodule directories.\",\n },\n ignoredPatterns: {\n type: \"array\",\n default: [],\n items: {\n type: \"string\",\n },\n description: \"Ignore additional **glob** or file path patterns.\",\n },\n ignoreBuiltinScopes: {\n type: \"boolean\",\n default: false,\n description: \"Ignore built-in scopes and use only scopes from user configuration.\",\n },\n scopes: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n scopes: {\n type: [\"array\"],\n items: {\n type: \"string\",\n },\n },\n prefixes: {\n type: [\"array\"],\n items: {\n type: \"string\",\n },\n },\n extensions: {\n type: [\"array\"],\n items: {\n type: \"string\",\n },\n },\n relative: {\n type: \"boolean\",\n default: true,\n },\n replaceOnInsert: {\n type: \"array\",\n items: {\n type: \"array\",\n items: {\n type: [\"string\", \"string\"],\n },\n },\n },\n },\n },\n },\n}\n\nconst keys = Object.keys(OptionScopes)\nfor (let i = 0, len = keys.length; i < len; i++) {\n config[keys[i]] = {\n type: \"boolean\",\n default: false,\n }\n}\n","\"use babel\"\n\nimport { EventEmitter } from \"events\"\nimport path from \"path\"\nimport { intersection, flatten, max } from \"underscore\"\nimport slash from \"slash\"\nimport PathsCache from \"./paths-cache\"\nimport { score, filter } from \"zadeh\"\nimport { DefaultScopes } from \"./config/default-scopes\"\nimport { OptionScopes } from \"./config/option-scopes\"\n\nexport default class PathsProvider extends EventEmitter {\n constructor() {\n super()\n this.reloadScopes()\n\n this._pathsCache = new PathsCache()\n this._isReady = false\n\n this._onRebuildCache = this._onRebuildCache.bind(this)\n this._onRebuildCacheDone = this._onRebuildCacheDone.bind(this)\n\n this._pathsCache.on(\"rebuild-cache\", this._onRebuildCache)\n this._pathsCache.on(\"rebuild-cache-done\", this._onRebuildCacheDone)\n }\n\n /**\n * Reloads the scopes\n */\n reloadScopes() {\n this._scopes = atom.config.get(\"autocomplete-paths.scopes\").slice(0) || []\n\n if (!atom.config.get(\"autocomplete-paths.ignoreBuiltinScopes\")) {\n this._scopes = this._scopes.concat(DefaultScopes)\n }\n\n for (const key in OptionScopes) {\n if (atom.config.get(`autocomplete-paths.${key}`)) {\n this._scopes = this._scopes.slice(0).concat(OptionScopes[key])\n }\n }\n }\n\n /**\n * Gets called when the PathsCache is starting to rebuild the cache\n * @private\n */\n _onRebuildCache() {\n this.emit(\"rebuild-cache\")\n }\n\n /**\n * Gets called when the PathsCache is done rebuilding the cache\n * @private\n */\n _onRebuildCacheDone() {\n this.emit(\"rebuild-cache-done\")\n }\n\n /**\n * Returns the suggestions for the given scope and the given request\n * @param {Object} scope\n * @param {Object} request\n * @return {Promise}\n * @private\n */\n _getSuggestionsForScope(scope, request, match) {\n const line = _getLineTextForRequest(request)\n const pathPrefix = line.substr(match.index + match[0].length)\n const trailingSlashPresent = pathPrefix.match(/[/\\\\|]$/)\n const directoryGiven = pathPrefix.indexOf(\"./\") === 0 || pathPrefix.indexOf(\"../\") === 0\n const parsedPathPrefix = path.parse(pathPrefix)\n\n // path.parse ignores trailing slashes, so we handle this manually\n if (trailingSlashPresent) {\n parsedPathPrefix.dir = path.join(parsedPathPrefix.dir, parsedPathPrefix.base)\n parsedPathPrefix.base = \"\"\n parsedPathPrefix.name = \"\"\n }\n\n const projectDirectory = _getProjectDirectory(request.editor)\n if (!projectDirectory) {\n return Promise.resolve([])\n }\n const currentDirectory = path.dirname(request.editor.getPath())\n\n const requestedDirectoryPath = path.resolve(currentDirectory, parsedPathPrefix.dir)\n\n let files = directoryGiven\n ? this._pathsCache.getFilePathsForProjectDirectory(projectDirectory, requestedDirectoryPath)\n : this._pathsCache.getFilePathsForProjectDirectory(projectDirectory)\n\n const fuzzyMatcher = directoryGiven ? parsedPathPrefix.base : pathPrefix\n\n const { extensions } = scope\n if (extensions) {\n const regex = new RegExp(`.(${extensions.join(\"|\")})$`)\n files = files.filter((pth) => regex.test(pth))\n }\n\n if (fuzzyMatcher) {\n files = filter(files, fuzzyMatcher, {\n maxResults: 10,\n })\n }\n\n const suggestions = files.map((pathName) => {\n const normalizeSlashes = atom.config.get(\"autocomplete-paths.normalizeSlashes\")\n\n const projectRelativePath = atom.project.relativizePath(pathName)[1]\n let displayText = projectRelativePath\n if (directoryGiven) {\n displayText = path.relative(requestedDirectoryPath, pathName)\n }\n if (normalizeSlashes) {\n displayText = slash(displayText)\n }\n\n // Relativize path to current file if necessary\n let relativePath = path.relative(path.dirname(request.editor.getPath()), pathName)\n if (normalizeSlashes) {\n relativePath = slash(relativePath)\n }\n if (scope.relative !== false) {\n pathName = relativePath\n if (scope.includeCurrentDirectory !== false) {\n if (pathName[0] !== \".\") {\n pathName = `./${pathName}`\n }\n }\n }\n\n if (scope.projectRelativePath) {\n pathName = slash(projectRelativePath)\n }\n\n // Replace stuff if necessary\n if (scope.replaceOnInsert) {\n // let originalPathName = pathName\n scope.replaceOnInsert.forEach(([from, to]) => {\n const regex = new RegExp(from)\n if (regex.test(pathName)) {\n pathName = pathName.replace(regex, to)\n }\n })\n }\n\n // Calculate distance to file\n const distanceToFile = relativePath.split(path.sep).length\n return {\n text: pathName,\n replacementPrefix: pathPrefix,\n displayText,\n type: \"import\",\n iconHTML: '',\n score: score(displayText, request.prefix),\n distanceToFile,\n }\n })\n\n // Modify score to incorporate distance\n const suggestionsCount = suggestions.length\n if (suggestions.length) {\n const maxDistance = max(suggestions, (s) => s.distanceToFile).distanceToFile\n suggestions.forEach((s, i) => {\n s.score = suggestionsCount - i + (maxDistance - s.distanceToFile)\n })\n\n // Sort again\n suggestions.sort((a, b) => b.score - a.score)\n }\n\n return Promise.resolve(suggestions)\n }\n\n /**\n * Returns the suggestions for the given request\n * @param {Object} request\n * @return {Promise}\n */\n async getSuggestions(request) {\n const matches = this._scopes\n .map((scope) => [scope, _scopeMatchesRequest(scope, request)])\n .filter((result) => result[1]) // Filter scopes that match\n const promises = matches.map(([scope, match]) => this._getSuggestionsForScope(scope, request, match))\n\n const suggestions = flatten(await Promise.all(promises))\n if (!suggestions.length) {\n return false\n }\n return suggestions\n }\n\n /**\n * Rebuilds the cache\n * @return {Promise}\n */\n async rebuildCache() {\n const result = await this._pathsCache.rebuildCache()\n this._isReady = true\n return result\n }\n\n isReady() {\n return this._isReady\n }\n\n get suggestionPriority() {\n return atom.config.get(\"autocomplete-paths.suggestionPriority\")\n }\n\n get fileCount() {\n return atom.project.getDirectories().reduce((accumulated, directory) => {\n const filePaths = this._pathsCache.getFilePathsForProjectDirectory(directory)\n return accumulated + filePaths.length\n }, 0)\n }\n\n /**\n * Disposes this provider\n */\n dispose() {\n this._pathsCache.removeListener(\"rebuild-cache\", this._onRebuildCache)\n this._pathsCache.removeListener(\"rebuild-cache-done\", this._onRebuildCacheDone)\n this._pathsCache.dispose(true)\n }\n}\n\nPathsProvider.prototype.selector = \"*\"\nPathsProvider.prototype.inclusionPriority = 1\n\n/**\n * Checks if the given scope config matches the given request\n * @param {Object} scope\n * @param {Object} request\n * @return {Array} The match object\n * @private\n */\nfunction _scopeMatchesRequest(scope, request) {\n const sourceScopes = Array.isArray(scope.scopes) ? scope.scopes : [scope.scopes]\n\n // Check if the scope descriptors match\n const scopeMatches = intersection(request.scopeDescriptor.getScopesArray(), sourceScopes).length > 0\n if (!scopeMatches) {\n return false\n }\n\n // Check if the line matches the prefixes\n const line = _getLineTextForRequest(request)\n\n let lineMatch = null\n const scopePrefixes = Array.isArray(scope.prefixes) ? scope.prefixes : [scope.prefixes]\n scopePrefixes.forEach((prefix) => {\n const regex = new RegExp(prefix, \"i\")\n lineMatch = lineMatch || line.match(regex)\n })\n\n return lineMatch\n}\n\n/**\n * Returns the project directory that contains the file opened in the given editor\n * @param {TextEditor} editor\n * @return {Directory}\n * @private\n */\nfunction _getProjectDirectory(editor) {\n const filePath = editor.getBuffer().getPath()\n let projectDirectory = null\n atom.project.getDirectories().forEach((directory) => {\n if (directory.contains(filePath)) {\n projectDirectory = directory\n }\n })\n return projectDirectory\n}\n\n/**\n * Returns the whole line text for the given request\n * @param {Object} request\n * @return {String}\n * @private\n */\nfunction _getLineTextForRequest(request) {\n const { editor, bufferPosition } = request\n return editor.getTextInRange([[bufferPosition.row, 0], bufferPosition])\n}\n","// Current version.\nexport var VERSION = '1.13.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nexport var hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasStringTagBug ? ie10IsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport clone from './clone.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","'use strict';\nmodule.exports = path => {\n\tconst isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(path);\n\tconst hasNonAscii = /[^\\u0000-\\u0080]+/.test(path); // eslint-disable-line no-control-regex\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn path;\n\t}\n\n\treturn path.replace(/\\\\/g, '/');\n};\n","\"use babel\"\nimport { EventEmitter } from \"events\"\nimport minimatch from \"minimatch\"\nimport { Directory, File } from \"atom\"\nimport { dirname, basename } from \"path\"\nimport { union } from \"./utils\"\nimport { globifyPath, globifyDirectory, globifyGitIgnoreFile } from \"globify-gitignore\"\nimport glob from \"fast-glob\"\nimport * as chokidar from \"chokidar\"\n\nexport default class PathsCache extends EventEmitter {\n constructor() {\n super()\n\n const rebuildCacheBound = this.rebuildCache.bind(this)\n this._projectChangeWatcher = atom.project.onDidChangePaths(rebuildCacheBound)\n\n const _onDidChangeFilesBound = this._onDidChangeFiles.bind(this)\n this._projectWatcher = atom.project.onDidChangeFiles(_onDidChangeFilesBound)\n\n this._repositories = []\n // TODO remove _filePathsByProjectDirectory and only use _filePathsByDirectory\n this._filePathsByProjectDirectory = new Map()\n this._filePathsByDirectory = new Map()\n this._fileWatchersByDirectory = new Map()\n this._allIgnoredGlobByDirectory = new Map()\n this.updateConfig()\n }\n\n updateConfig() {\n this.config = {\n excludeVcsIgnoredPaths: atom.config.get(\"core.excludeVcsIgnoredPaths\"),\n ignoreSubmodules: atom.config.get(\"autocomplete-paths.ignoreSubmodules\"),\n shouldIgnoredNames: atom.config.get(\"autocomplete-paths.ignoredNames\"),\n ignoredNames: atom.config.get(\"core.ignoredNames\"),\n ignoredPatterns: atom.config.get(\"autocomplete-paths.ignoredPatterns\"),\n maxFileCount: atom.config.get(\"autocomplete-paths.maxFileCount\"),\n }\n }\n\n /**\n * Rebuilds the paths cache\n * @returns {Promise>>}\n */\n async rebuildCache() {\n this.dispose()\n\n this._cancelled = false\n this.emit(\"rebuild-cache\")\n\n await this._cacheProjectPathsAndRepositories()\n const results = await this._cachePaths()\n\n await this._addWatchers()\n\n this.emit(\"rebuild-cache-done\")\n return results\n }\n\n /**\n * Returns the file paths for the given project directory with the given (optional) relative path\n * @param {Directory} projectDirectory\n * @param {string | null} [relativeToPath=null]\n * @return {string[]}\n */\n getFilePathsForProjectDirectory(projectDirectory, relativeToPath = null) {\n const filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path) || []\n if (relativeToPath) {\n return filePaths.filter((filePath) => filePath.indexOf(relativeToPath) === 0)\n }\n return filePaths\n }\n\n /**\n * Disposes this PathsCache\n * @param {boolean} isPackageDispose\n */\n dispose(isPackageDispose) {\n this._fileWatchersByDirectory.forEach(async (watcher) => {\n await watcher.close()\n })\n this._fileWatchersByDirectory.clear()\n this._filePathsByProjectDirectory.clear()\n this._filePathsByDirectory.clear()\n this._repositories = []\n if (this._projectWatcher) {\n this._projectWatcher.dispose()\n this._projectWatcher = null\n }\n if (isPackageDispose && this._projectChangeWatcher) {\n this._projectChangeWatcher.dispose()\n this._projectChangeWatcher = null\n }\n }\n\n /**\n * Checks if the given path is ignored\n * @param {string} path\n * @return {boolean}\n * @private\n */\n _isPathIgnored(path) {\n let ignored = false\n if (this.config.excludeVcsIgnoredPaths) {\n this._repositories.forEach((repository) => {\n if (ignored) {\n return\n }\n const isIgnoredSubmodule = this.config.ignoreSubmodules && repository.isSubmodule(path)\n if (repository.isPathIgnored(path) || isIgnoredSubmodule) {\n ignored = true\n }\n })\n }\n\n if (this.config.shouldIgnoredNames) {\n this.config.ignoredNames.forEach((ignoredName) => {\n if (ignored) {\n return\n }\n ignored = ignored || minimatch(path, ignoredName, { matchBase: true, dot: true })\n })\n }\n\n if (this.config.ignoredPatterns) {\n this.config.ignoredPatterns.forEach((ignoredPattern) => {\n if (ignored) {\n return\n }\n ignored = ignored || minimatch(path, ignoredPattern, { dot: true })\n })\n }\n\n return ignored\n }\n\n /**\n * Caches the project paths and repositories\n * @private\n */\n async _cacheProjectPathsAndRepositories() {\n this._projectDirectories = atom.project.getDirectories()\n\n // get the repositories asynchronously\n const projectNum = this._projectDirectories.length\n const repositoriesP = new Array(projectNum)\n for (let i = 0; i < projectNum; i++) {\n repositoriesP[i] = atom.project.repositoryForDirectory(this._projectDirectories[i])\n }\n const repositories = await Promise.all(repositoriesP)\n this._repositories = repositories.filter((r) => r !== null) // filter out non-repository directories\n }\n\n /**\n * Add watchers for all the projectDirectories\n * @return {Promise}\n * @private\n */\n async _addWatchers() {\n await Promise.all(\n this._projectDirectories.map((projectDirectory) => this._addWatcherForDirectory(projectDirectory))\n )\n }\n\n /**\n * Add a watcher for the projectDirectory\n * @param {Directory} projectDirectory\n * @private\n */\n async _addWatcherForDirectory(projectDirectory) {\n // close if already added\n let watcher = this._fileWatchersByDirectory.get(projectDirectory)\n if (watcher !== undefined && typeof watcher.close === \"function\") {\n await watcher.close()\n }\n // add a watcher to run `this._onDirectoryChanged`\n const projectPath = projectDirectory.getPath()\n const ignored = this._allIgnoredGlobByDirectory.get(projectDirectory.path)\n // TODO smarter handling of directory changes\n // TODO get paths from the watcher itself\n // TODO track gitignore file\n watcher = chokidar\n .watch([projectPath, ...ignored], {\n persistent: true,\n ignoreInitial: true, // do not run the listeners on the initial scan\n followSymlinks: false,\n interval: 1000,\n binaryInterval: 1000,\n })\n .on(\"add\", (addedFile) => {\n // we should track it too!\n // if (basename(addedFile) === \".gitignore\") {\n // // if a gitignore file is added re-process the folder\n // this.onRemoveDir(projectDirectory, removedDir)\n // this.onAddDir(projectDirectory, removedDir)\n // return\n // }\n this.onAddFile(projectDirectory, addedFile)\n })\n .on(\"unlink\", (removedFile) => {\n this.onRemoveFile(projectDirectory, removedFile)\n })\n .on(\"addDir\", (addedDir) => {\n this.onAddDir(addedDir)\n })\n .on(\"unlinkDir\", (removedDir) => {\n this.onRemoveDir(projectDirectory, removedDir)\n })\n this._fileWatchersByDirectory.set(projectDirectory, watcher)\n }\n\n /**\n * @param projectDirectory {Directory}\n * @param addedFile {string}\n */\n onAddFile(projectDirectory, addedFile) {\n const filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path)\n filePaths.push(addedFile)\n this._filePathsByProjectDirectory.set(projectDirectory.path, filePaths)\n }\n\n /**\n * @param projectDirectory {Directory}\n * @param removedFile {string}\n */\n onRemoveFile(projectDirectory, removedFile) {\n /** @type {string[]} */\n const filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path)\n\n // delete the removed file\n const fileIndex = filePaths.indexOf(removedFile)\n delete filePaths[fileIndex]\n this._filePathsByProjectDirectory.set(projectDirectory.path, filePaths)\n }\n\n /**\n * @param addedDir {string}\n */\n async onAddDir(addedDir) {\n await this._cachePathsForDirectoryWithGlob(addedDir)\n }\n\n /**\n * @param projectDirectory {Directory}\n * @param removedDir {string}\n */\n onRemoveDir(projectDirectory, removedDir) {\n const directory = new Directory(removedDir)\n this._removeFilePathsForDirectory(projectDirectory, directory)\n }\n\n /**\n * Invoked when the content of the given `directory` has changed\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @returns {Promise}\n * @private\n */\n async _onDirectoryChanged(projectDirectory, directory) {\n this.emit(\"rebuild-cache\")\n this._removeFilePathsForDirectory(projectDirectory, directory)\n this._cleanWatchersForDirectory(directory)\n await this._cachePathsForDirectory(projectDirectory, directory)\n this.emit(\"rebuild-cache-done\")\n }\n\n /**\n * Removes all watchers inside the given directory\n * @param {Directory} directory\n * @private\n */\n _cleanWatchersForDirectory(directory) {\n // TODO promise all\n this._fileWatchersByDirectory.forEach(async (watcher, otherDirectory) => {\n if (directory.contains(otherDirectory.path)) {\n await await watcher.close()\n this._fileWatchersByDirectory.delete(otherDirectory)\n }\n })\n }\n\n /**\n * Removes all cached file paths in the given directory\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @private\n */\n _removeFilePathsForDirectory(projectDirectory, directory) {\n let filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path)\n if (!filePaths) {\n return\n }\n\n filePaths = filePaths.filter((path) => !directory.contains(path))\n this._filePathsByProjectDirectory.set(projectDirectory.path, filePaths)\n\n this._filePathsByDirectory.delete(directory.path)\n }\n\n _onDidChangeFiles(events) {\n events\n .filter((event) => event.action !== \"modified\")\n .forEach((event) => {\n if (!this._projectDirectories) {\n return\n }\n\n const { action, path, oldPath } = event\n\n const projectDirectory = this._projectDirectories.find((pd) => path.indexOf(pd.path) === 0)\n\n if (!projectDirectory) {\n return\n }\n const directoryPath = projectDirectory.path\n const ignored = this._isPathIgnored(path)\n\n if (ignored) {\n return\n }\n\n const files = this._filePathsByProjectDirectory.get(directoryPath) || []\n\n switch (action) {\n case \"created\":\n files.push(path)\n break\n\n case \"deleted\": {\n const i = files.indexOf(path)\n if (i > -1) {\n files.splice(i, 1)\n }\n break\n }\n case \"renamed\": {\n const j = files.indexOf(oldPath)\n if (j > -1) {\n files[j] = path\n }\n break\n }\n default: {\n console.error(`unkown _onDidChangeFiles action: ${action}`)\n break\n }\n }\n\n if (!this._filePathsByProjectDirectory.has(directoryPath)) {\n this._filePathsByProjectDirectory.set(directoryPath, files)\n }\n })\n }\n\n /**\n * Caches file paths with Glob or Atom\n * @return {Promise>}\n * @private\n */\n _cachePaths() {\n try {\n return this._cachePathsWithGlob()\n } catch (e) {\n console.error(e)\n return this._cachePathsWithAtom()\n }\n }\n\n /**\n * Caches file paths for the given directory with Glob or Atom\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @return {Promise}\n * @private\n */\n _cachePathsForDirectory(projectDirectory, directory) {\n try {\n return this._cachePathsForDirectoryWithGlob(directory.path)\n } catch (e) {\n // fallback to Atom\n console.error(e)\n return this._cachePathsForDirectoryWithAtom(projectDirectory, directory)\n }\n }\n\n /*\n ██████ ██ ██████ ██████\n ██ ██ ██ ██ ██ ██\n ██ ███ ██ ██ ██ ██████\n ██ ██ ██ ██ ██ ██ ██\n ██████ ███████ ██████ ██████\n */\n\n /**\n * Builds the file cache with `glob`\n * @return {Promise>>}\n * @private\n */\n async _cachePathsWithGlob() {\n const result = await Promise.all(\n this._projectDirectories.map((projectDirectory) => this._cachePathsForDirectoryWithGlob(projectDirectory.path))\n )\n return result\n }\n\n /**\n * Returns a list of ignore patterns for a directory\n * @param {string} directoryPath\n * @returns {Promise>} an array of glob patterns\n * @private\n */\n async _getIgnoredPatternsGlob(directoryPath) {\n const patterns = []\n\n if (this.config.shouldIgnoredNames) {\n patterns.push(...this.config.ignoredNames)\n }\n\n if (this.config.ignoredPatterns) {\n patterns.push(...this.config.ignoredPatterns)\n }\n\n const patternsNum = patterns.length\n\n const globEntries = new Array(patternsNum)\n\n for (let iEntry = 0; iEntry < patternsNum; iEntry++) {\n const globifyOutput = await globifyPath(patterns[iEntry], directoryPath)\n\n // Check if `globifyPath` returns a pair or a string\n if (typeof globifyOutput === \"string\") {\n // string\n globEntries[iEntry] = globifyOutput // Place the entry in the output array\n } else {\n // pair\n globEntries[iEntry] = globifyOutput[0] // Place the entry in the output array\n globEntries.push(globifyOutput[1]) // Push the additional entry\n }\n }\n return globEntries\n }\n\n /**\n * Returns the glob pattern of all gitignore files in a directory\n * @param {string} rootDirectory\n * @param {string[]} ignoredPatternsGlob\n * @returns {Promise>} an array of glob patterns\n * @private\n */\n async _getAllGitIgnoreGlob(rootDirectory, ignoredPatternsGlob) {\n if (this.config.excludeVcsIgnoredPaths) {\n // get gitignore files\n const gitignoreFiles = await glob(\n [\"**/.gitignore\", ...ignoredPatternsGlob],\n // glob options\n {\n dot: true,\n cwd: rootDirectory,\n onlyFiles: true,\n absolute: true,\n }\n )\n return (\n await Promise.all(gitignoreFiles.map((gitignoreFile) => _getDirectoryGitIgnoreGlob(dirname(gitignoreFile))))\n ).flat()\n }\n return []\n }\n\n /**\n * Get all ignored glob using `this._getGitIgnoreGlob` and `this._getIgnoredPatternsGlob`\n * @param {string} directoryPath the given directory path\n * @returns {Promise}\n */\n async _getAllIgnoredGlob(directoryPath) {\n const ignoredPatternsGlob = await this._getIgnoredPatternsGlob(directoryPath)\n const gitignoreGlob = await this._getAllGitIgnoreGlob(directoryPath, ignoredPatternsGlob)\n return [...gitignoreGlob, ...ignoredPatternsGlob]\n }\n\n /**\n * Populates cache for the given directory\n * @param {string} directoryPath the given directory path\n * @return {Promise>}\n * @private\n */\n async _cachePathsForDirectoryWithGlob(directoryPath) {\n const directoryGlob = globifyDirectory(directoryPath)\n const allIgnoredGlob = await this._getAllIgnoredGlob(directoryPath)\n this._allIgnoredGlobByDirectory.set(directoryPath, allIgnoredGlob)\n const files = await glob(\n [directoryGlob, ...allIgnoredGlob],\n // glob options\n {\n dot: true,\n cwd: directoryPath,\n onlyFiles: true,\n }\n )\n this._filePathsByProjectDirectory.set(directoryPath, files)\n return files\n }\n\n /*\n ███████ █████ ██ ██ ██████ █████ ██████ ██ ██\n ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n █████ ███████ ██ ██ ██████ ███████ ██ █████\n ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n ██ ██ ██ ███████ ███████ ██████ ██ ██ ██████ ██ ██\n */\n\n /**\n * Builds the file cache using Atom\n * @return {Promise>>}\n * @private\n */\n async _cachePathsWithAtom() {\n const result = await Promise.all(\n this._projectDirectories.map((projectDirectory) => {\n return this._cachePathsForDirectoryWithAtom(projectDirectory, projectDirectory)\n })\n )\n return result\n }\n\n /**\n * Caches file paths for the given directory with Atom\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @return {Promise>}\n * @private\n */\n async _cachePathsForDirectoryWithAtom(projectDirectory, directory) {\n if (this._cancelled) {\n return []\n }\n\n const entries = await this._getDirectoryEntries(directory)\n if (this._cancelled) {\n return []\n }\n\n // Filter: Files and Directories that are not ignored\n const filePaths = []\n const directories = []\n for (let i = 0, len = entries.length; i < len; i++) {\n const entry = entries[i]\n if (entry instanceof File && !this._isPathIgnored(entry.path)) {\n filePaths.push(entry.path)\n } else if (entry instanceof Directory && !this._isPathIgnored(entry.path)) {\n directories.push(entry)\n }\n }\n\n // Merge file paths into existing array (which contains *all* file paths)\n let filePathsArray = this._filePathsByProjectDirectory.get(projectDirectory.path) || []\n const newPathsCount = filePathsArray.length + filePaths.length\n\n if (newPathsCount > this.config.maxFileCount && !this._cancelled) {\n atom.notifications.addError(\"autocomplete-paths\", {\n description: `Maximum file count of ${this.config.maxFileCount} has been exceeded. Path autocompletion will not work in this project.

Click here to learn more.`,\n dismissable: true,\n })\n\n this._filePathsByProjectDirectory.clear()\n this._filePathsByDirectory.clear()\n this._cancelled = true\n return\n }\n\n this._filePathsByProjectDirectory.set(projectDirectory.path, union(filePathsArray, filePaths))\n\n // Merge file paths into existing array (which contains file paths for a specific directory)\n filePathsArray = this._filePathsByDirectory.get(directory.path) || []\n this._filePathsByDirectory.set(directory.path, union(filePathsArray, filePaths))\n\n return Promise.all(directories.map((dir) => this._cachePathsForDirectoryWithAtom(projectDirectory, dir)))\n }\n}\n\n/**\n * Returns the glob pattern of a gitignore of a directory\n * @param {string} directoryPath\n * @returns {Promise>} an array of glob patterns\n * @private\n */\nfunction _getDirectoryGitIgnoreGlob(directoryPath) {\n try {\n return globifyGitIgnoreFile(directoryPath)\n } catch (err) {\n // .gitignore does not exist for this directory, ignoring\n return []\n }\n}\n","module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = require('path')\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n","module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n if(a===b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n","\"use babel\"\n\n// exec\nimport { exec as execRaw } from \"child_process\"\nimport { promisify } from \"util\"\nexport const exec = promisify(execRaw)\nimport { constants } from \"buffer\"\nexport const MAX_STRING_LENGTH = constants.MAX_STRING_LENGTH\n\n// fast merge function\n// https://uilicious.com/blog/javascript-array-push-is-945x-faster-than-array-concat/\nexport function merge(arr1: Array, arr2: Array) {\n if (!arr2.length) {\n return\n }\n Array.prototype.push.apply(arr1, arr2)\n}\n\n// get unique entries of an array\nexport function unique(arr: Array) {\n return [...new Set(arr)]\n}\n\n// fast union function (replacement for _.union)\nexport function union(arr1: Array, arr2: Array) {\n merge(arr1, arr2)\n return unique(arr1)\n}\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var t=require(\"path\"),r=require(\"fs\"),e={\"{\":\"}\",\"(\":\")\",\"[\":\"]\"},n=/\\\\(.)|(^!|\\*|[\\].+)]\\?|\\[[^\\\\\\]]+\\]|\\{[^\\\\}]+\\}|\\(\\?[:!=][^\\\\)]+\\)|\\([^|]+\\|[^\\\\)]+\\))/,i=/\\\\(.)|(^!|[*?{}()[\\]]|\\(\\?)/,o=/[‘“!#$%&+^<=>`]/,s=function(t){return\"string\"!=typeof t||function(t,r){if(\"string\"!=typeof t||\"\"===t)return!1;if(function(t){if(\"string\"!=typeof t||\"\"===t)return!1;for(var r;r=/(\\\\).|([@?!+*]\\(.*\\))/g.exec(t);){if(r[2])return!0;t=t.slice(r.index+r[0].length)}return!1}(t))return!0;var o,s=n;for(r&&!1===r.strict&&(s=i);o=s.exec(t);){if(o[2])return!0;var u=o.index+o[0].length,a=o[1],c=a?e[a]:null;if(a&&c){var f=t.indexOf(c,u);-1!==f&&(u=f+1)}t=t.slice(u)}return!1}(t)||o.test(t)},u=function(t){return!1===s(t)};var a,c=(function(t){t.exports=function(t){var r=void 0;r=\"string\"==typeof t?[t]:t.raw;for(var e=\"\",n=0;n{return!(/^\\s*$/.test(t)||(r=t,\"#\"===r[0]));var r})).map((t=>function(t){return t.replace(/^\\s+/,\"\")}(function(t){return/\\\\\\s+$/.test(t)?t.replace(/\\\\(\\s+)$/,\"$1\"):t.replace(/\\s+$/,\"\")}(t)))),n=e.length,i=new Array(n);for(let t=0;t utils.pattern.isStaticPattern(pattern, settings));\r\n const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings));\r\n const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false);\r\n const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true);\r\n return staticTasks.concat(dynamicTasks);\r\n}\r\nexports.generate = generate;\r\nfunction convertPatternsToTasks(positive, negative, dynamic) {\r\n const positivePatternsGroup = groupPatternsByBaseDirectory(positive);\r\n // When we have a global group – there is no reason to divide the patterns into independent tasks.\r\n // In this case, the global task covers the rest.\r\n if ('.' in positivePatternsGroup) {\r\n const task = convertPatternGroupToTask('.', positive, negative, dynamic);\r\n return [task];\r\n }\r\n return convertPatternGroupsToTasks(positivePatternsGroup, negative, dynamic);\r\n}\r\nexports.convertPatternsToTasks = convertPatternsToTasks;\r\nfunction getPositivePatterns(patterns) {\r\n return utils.pattern.getPositivePatterns(patterns);\r\n}\r\nexports.getPositivePatterns = getPositivePatterns;\r\nfunction getNegativePatternsAsPositive(patterns, ignore) {\r\n const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore);\r\n const positive = negative.map(utils.pattern.convertToPositivePattern);\r\n return positive;\r\n}\r\nexports.getNegativePatternsAsPositive = getNegativePatternsAsPositive;\r\nfunction groupPatternsByBaseDirectory(patterns) {\r\n const group = {};\r\n return patterns.reduce((collection, pattern) => {\r\n const base = utils.pattern.getBaseDirectory(pattern);\r\n if (base in collection) {\r\n collection[base].push(pattern);\r\n }\r\n else {\r\n collection[base] = [pattern];\r\n }\r\n return collection;\r\n }, group);\r\n}\r\nexports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory;\r\nfunction convertPatternGroupsToTasks(positive, negative, dynamic) {\r\n return Object.keys(positive).map((base) => {\r\n return convertPatternGroupToTask(base, positive[base], negative, dynamic);\r\n });\r\n}\r\nexports.convertPatternGroupsToTasks = convertPatternGroupsToTasks;\r\nfunction convertPatternGroupToTask(base, positive, negative, dynamic) {\r\n return {\r\n dynamic,\r\n positive,\r\n negative,\r\n base,\r\n patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern))\r\n };\r\n}\r\nexports.convertPatternGroupToTask = convertPatternGroupToTask;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0;\r\nconst array = require(\"./array\");\r\nexports.array = array;\r\nconst errno = require(\"./errno\");\r\nexports.errno = errno;\r\nconst fs = require(\"./fs\");\r\nexports.fs = fs;\r\nconst path = require(\"./path\");\r\nexports.path = path;\r\nconst pattern = require(\"./pattern\");\r\nexports.pattern = pattern;\r\nconst stream = require(\"./stream\");\r\nexports.stream = stream;\r\nconst string = require(\"./string\");\r\nexports.string = string;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.splitWhen = exports.flatten = void 0;\r\nfunction flatten(items) {\r\n return items.reduce((collection, item) => [].concat(collection, item), []);\r\n}\r\nexports.flatten = flatten;\r\nfunction splitWhen(items, predicate) {\r\n const result = [[]];\r\n let groupIndex = 0;\r\n for (const item of items) {\r\n if (predicate(item)) {\r\n groupIndex++;\r\n result[groupIndex] = [];\r\n }\r\n else {\r\n result[groupIndex].push(item);\r\n }\r\n }\r\n return result;\r\n}\r\nexports.splitWhen = splitWhen;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.isEnoentCodeError = void 0;\r\nfunction isEnoentCodeError(error) {\r\n return error.code === 'ENOENT';\r\n}\r\nexports.isEnoentCodeError = isEnoentCodeError;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createDirentFromStats = void 0;\r\nclass DirentFromStats {\r\n constructor(name, stats) {\r\n this.name = name;\r\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\r\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\r\n this.isDirectory = stats.isDirectory.bind(stats);\r\n this.isFIFO = stats.isFIFO.bind(stats);\r\n this.isFile = stats.isFile.bind(stats);\r\n this.isSocket = stats.isSocket.bind(stats);\r\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\r\n }\r\n}\r\nfunction createDirentFromStats(name, stats) {\r\n return new DirentFromStats(name, stats);\r\n}\r\nexports.createDirentFromStats = createDirentFromStats;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0;\r\nconst path = require(\"path\");\r\nconst LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\\\\r\nconst UNESCAPED_GLOB_SYMBOLS_RE = /(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\())/g;\r\n/**\r\n * Designed to work only with simple paths: `dir\\\\file`.\r\n */\r\nfunction unixify(filepath) {\r\n return filepath.replace(/\\\\/g, '/');\r\n}\r\nexports.unixify = unixify;\r\nfunction makeAbsolute(cwd, filepath) {\r\n return path.resolve(cwd, filepath);\r\n}\r\nexports.makeAbsolute = makeAbsolute;\r\nfunction escape(pattern) {\r\n return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\\\$2');\r\n}\r\nexports.escape = escape;\r\nfunction removeLeadingDotSegment(entry) {\r\n // We do not use `startsWith` because this is 10x slower than current implementation for some cases.\r\n // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\r\n if (entry.charAt(0) === '.') {\r\n const secondCharactery = entry.charAt(1);\r\n if (secondCharactery === '/' || secondCharactery === '\\\\') {\r\n return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT);\r\n }\r\n }\r\n return entry;\r\n}\r\nexports.removeLeadingDotSegment = removeLeadingDotSegment;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;\r\nconst path = require(\"path\");\r\nconst globParent = require(\"glob-parent\");\r\nconst micromatch = require(\"micromatch\");\r\nconst picomatch = require(\"picomatch\");\r\nconst GLOBSTAR = '**';\r\nconst ESCAPE_SYMBOL = '\\\\';\r\nconst COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/;\r\nconst REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\\[.*]/;\r\nconst REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\\(.*\\|.*\\)/;\r\nconst GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\\(.*\\)/;\r\nconst BRACE_EXPANSIONS_SYMBOLS_RE = /{.*(?:,|\\.\\.).*}/;\r\nfunction isStaticPattern(pattern, options = {}) {\r\n return !isDynamicPattern(pattern, options);\r\n}\r\nexports.isStaticPattern = isStaticPattern;\r\nfunction isDynamicPattern(pattern, options = {}) {\r\n /**\r\n * A special case with an empty string is necessary for matching patterns that start with a forward slash.\r\n * An empty string cannot be a dynamic pattern.\r\n * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'.\r\n */\r\n if (pattern === '') {\r\n return false;\r\n }\r\n /**\r\n * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check\r\n * filepath directly (without read directory).\r\n */\r\n if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) {\r\n return true;\r\n }\r\n if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) {\r\n return true;\r\n }\r\n if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) {\r\n return true;\r\n }\r\n if (options.braceExpansion !== false && BRACE_EXPANSIONS_SYMBOLS_RE.test(pattern)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isDynamicPattern = isDynamicPattern;\r\nfunction convertToPositivePattern(pattern) {\r\n return isNegativePattern(pattern) ? pattern.slice(1) : pattern;\r\n}\r\nexports.convertToPositivePattern = convertToPositivePattern;\r\nfunction convertToNegativePattern(pattern) {\r\n return '!' + pattern;\r\n}\r\nexports.convertToNegativePattern = convertToNegativePattern;\r\nfunction isNegativePattern(pattern) {\r\n return pattern.startsWith('!') && pattern[1] !== '(';\r\n}\r\nexports.isNegativePattern = isNegativePattern;\r\nfunction isPositivePattern(pattern) {\r\n return !isNegativePattern(pattern);\r\n}\r\nexports.isPositivePattern = isPositivePattern;\r\nfunction getNegativePatterns(patterns) {\r\n return patterns.filter(isNegativePattern);\r\n}\r\nexports.getNegativePatterns = getNegativePatterns;\r\nfunction getPositivePatterns(patterns) {\r\n return patterns.filter(isPositivePattern);\r\n}\r\nexports.getPositivePatterns = getPositivePatterns;\r\nfunction getBaseDirectory(pattern) {\r\n return globParent(pattern, { flipBackslashes: false });\r\n}\r\nexports.getBaseDirectory = getBaseDirectory;\r\nfunction hasGlobStar(pattern) {\r\n return pattern.includes(GLOBSTAR);\r\n}\r\nexports.hasGlobStar = hasGlobStar;\r\nfunction endsWithSlashGlobStar(pattern) {\r\n return pattern.endsWith('/' + GLOBSTAR);\r\n}\r\nexports.endsWithSlashGlobStar = endsWithSlashGlobStar;\r\nfunction isAffectDepthOfReadingPattern(pattern) {\r\n const basename = path.basename(pattern);\r\n return endsWithSlashGlobStar(pattern) || isStaticPattern(basename);\r\n}\r\nexports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;\r\nfunction expandPatternsWithBraceExpansion(patterns) {\r\n return patterns.reduce((collection, pattern) => {\r\n return collection.concat(expandBraceExpansion(pattern));\r\n }, []);\r\n}\r\nexports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion;\r\nfunction expandBraceExpansion(pattern) {\r\n return micromatch.braces(pattern, {\r\n expand: true,\r\n nodupes: true\r\n });\r\n}\r\nexports.expandBraceExpansion = expandBraceExpansion;\r\nfunction getPatternParts(pattern, options) {\r\n let { parts } = picomatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true }));\r\n /**\r\n * The scan method returns an empty array in some cases.\r\n * See micromatch/picomatch#58 for more details.\r\n */\r\n if (parts.length === 0) {\r\n parts = [pattern];\r\n }\r\n /**\r\n * The scan method does not return an empty part for the pattern with a forward slash.\r\n * This is another part of micromatch/picomatch#58.\r\n */\r\n if (parts[0].startsWith('/')) {\r\n parts[0] = parts[0].slice(1);\r\n parts.unshift('');\r\n }\r\n return parts;\r\n}\r\nexports.getPatternParts = getPatternParts;\r\nfunction makeRe(pattern, options) {\r\n return micromatch.makeRe(pattern, options);\r\n}\r\nexports.makeRe = makeRe;\r\nfunction convertPatternsToRe(patterns, options) {\r\n return patterns.map((pattern) => makeRe(pattern, options));\r\n}\r\nexports.convertPatternsToRe = convertPatternsToRe;\r\nfunction matchAny(entry, patternsRe) {\r\n return patternsRe.some((patternRe) => patternRe.test(entry));\r\n}\r\nexports.matchAny = matchAny;\r\n","/*!\n * is-extglob \n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n var match;\n while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n if (match[2]) return true;\n str = str.slice(match.index + match[0].length);\n }\n\n return false;\n};\n","/*!\n * is-glob \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictRegex = /\\\\(.)|(^!|\\*|[\\].+)]\\?|\\[[^\\\\\\]]+\\]|\\{[^\\\\}]+\\}|\\(\\?[:!=][^\\\\)]+\\)|\\([^|]+\\|[^\\\\)]+\\))/;\nvar relaxedRegex = /\\\\(.)|(^!|[*?{}()[\\]]|\\(\\?)/;\n\nmodule.exports = function isGlob(str, options) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n if (isExtglob(str)) {\n return true;\n }\n\n var regex = strictRegex;\n var match;\n\n // optionally relax regex\n if (options && options.strict === false) {\n regex = relaxedRegex;\n }\n\n while ((match = regex.exec(str))) {\n if (match[2]) return true;\n var idx = match.index + match[0].length;\n\n // if an open bracket/brace/paren is escaped,\n // set the index to the next closing character\n var open = match[1];\n var close = open ? chars[open] : null;\n if (open && close) {\n var n = str.indexOf(close, idx);\n if (n !== -1) {\n idx = n + 1;\n }\n }\n\n str = str.slice(idx);\n }\n return false;\n};\n","'use strict';\n\nvar isGlob = require('is-glob');\nvar pathPosixDirname = require('path').posix.dirname;\nvar isWin32 = require('os').platform() === 'win32';\n\nvar slash = '/';\nvar backslash = /\\\\/g;\nvar enclosure = /[\\{\\[].*[\\}\\]]$/;\nvar globby = /(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/;\nvar escaped = /\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;\n\n/**\n * @param {string} str\n * @param {Object} opts\n * @param {boolean} [opts.flipBackslashes=true]\n * @returns {string}\n */\nmodule.exports = function globParent(str, opts) {\n var options = Object.assign({ flipBackslashes: true }, opts);\n\n // flip windows path separators\n if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n str = str.replace(backslash, slash);\n }\n\n // special case for strings ending in enclosure containing path separator\n if (enclosure.test(str)) {\n str += slash;\n }\n\n // preserves full path in case of trailing path separator\n str += 'a';\n\n // remove path parts that are globby\n do {\n str = pathPosixDirname(str);\n } while (isGlob(str) || globby.test(str));\n\n // remove escape chars and return result\n return str.replace(escaped, '$1');\n};\n","'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\nconst isEmptyString = val => val === '' || val === './';\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array} `list` List of strings to match.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n patterns = [].concat(patterns);\n list = [].concat(list);\n\n let omit = new Set();\n let keep = new Set();\n let items = new Set();\n let negatives = 0;\n\n let onResult = state => {\n items.add(state.output);\n if (options && options.onResult) {\n options.onResult(state);\n }\n };\n\n for (let i = 0; i < patterns.length; i++) {\n let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n if (negated) negatives++;\n\n for (let item of list) {\n let matched = isMatch(item, true);\n\n let match = negated ? !matched.isMatch : matched.isMatch;\n if (!match) continue;\n\n if (negated) {\n omit.add(matched.output);\n } else {\n omit.delete(matched.output);\n keep.add(matched.output);\n }\n }\n }\n\n let result = negatives === patterns.length ? [...items] : [...keep];\n let matches = result.filter(item => !omit.has(item));\n\n if (options && matches.length === 0) {\n if (options.failglob === true) {\n throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n }\n\n if (options.nonull === true || options.nullglob === true) {\n return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n }\n }\n\n return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `[options]` See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n patterns = [].concat(patterns).map(String);\n let result = new Set();\n let items = [];\n\n let onResult = state => {\n if (options.onResult) options.onResult(state);\n items.push(state.output);\n };\n\n let matches = micromatch(list, patterns, { ...options, onResult });\n\n for (let item of items) {\n if (!matches.includes(item)) {\n result.add(item);\n }\n }\n return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any of the patterns matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n if (Array.isArray(pattern)) {\n return pattern.some(p => micromatch.contains(str, p, options));\n }\n\n if (typeof pattern === 'string') {\n if (isEmptyString(str) || isEmptyString(pattern)) {\n return false;\n }\n\n if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n return true;\n }\n }\n\n return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n if (!utils.isObject(obj)) {\n throw new TypeError('Expected the first argument to be an object');\n }\n let keys = micromatch(Object.keys(obj), patterns, options);\n let res = {};\n for (let key of keys) res[key] = obj[key];\n return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (items.some(item => isMatch(item))) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (!items.every(item => isMatch(item))) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n let posix = utils.isWindows(options);\n let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n if (match) {\n return match.slice(1).map(v => v === void 0 ? '' : v);\n }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n let res = [];\n for (let pattern of [].concat(patterns || [])) {\n for (let str of braces(String(pattern), options)) {\n res.push(picomatch.parse(str, options));\n }\n }\n return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n if ((options && options.nobrace === true) || !/\\{.*\\}/.test(pattern)) {\n return [pattern];\n }\n return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\nmodule.exports = micromatch;\n","'use strict';\n\nexports.isInteger = num => {\n if (typeof num === 'number') {\n return Number.isInteger(num);\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isInteger(Number(num));\n }\n return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n if (limit === false) return false;\n if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n let node = block.nodes[n];\n if (!node) return;\n\n if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n if (node.escaped !== true) {\n node.value = '\\\\' + node.value;\n node.escaped = true;\n }\n }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n if (node.type !== 'brace') return false;\n if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n node.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n if (block.type !== 'brace') return false;\n if (block.invalid === true || block.dollar) return true;\n if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n block.invalid = true;\n return true;\n }\n if (block.open !== true || block.close !== true) {\n block.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n if (node.type === 'open' || node.type === 'close') {\n return true;\n }\n return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n if (node.type === 'text') acc.push(node.value);\n if (node.type === 'range') node.type = 'text';\n return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n const result = [];\n const flat = arr => {\n for (let i = 0; i < arr.length; i++) {\n let ele = arr[i];\n Array.isArray(ele) ? flat(ele, result) : ele !== void 0 && result.push(ele);\n }\n return result;\n };\n flat(args);\n return result;\n};\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n let stringify = (node, parent = {}) => {\n let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n let invalidNode = node.invalid === true && options.escapeInvalid === true;\n let output = '';\n\n if (node.value) {\n if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n return '\\\\' + node.value;\n }\n return node.value;\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes) {\n for (let child of node.nodes) {\n output += stringify(child);\n }\n }\n return output;\n };\n\n return stringify(ast);\n};\n\n","/*!\n * fill-range \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n let value = `${input}`;\n let index = -1;\n if (value[0] === '-') value = value.slice(1);\n if (value === '0') return false;\n while (value[++index] === '0');\n return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n if (typeof start === 'string' || typeof end === 'string') {\n return true;\n }\n return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n if (maxLength > 0) {\n let dash = input[0] === '-' ? '-' : '';\n if (dash) input = input.slice(1);\n input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n }\n if (toNumber === false) {\n return String(input);\n }\n return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n let negative = input[0] === '-' ? '-' : '';\n if (negative) {\n input = input.slice(1);\n maxLength--;\n }\n while (input.length < maxLength) input = '0' + input;\n return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options) => {\n parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n let prefix = options.capture ? '' : '?:';\n let positives = '';\n let negatives = '';\n let result;\n\n if (parts.positives.length) {\n positives = parts.positives.join('|');\n }\n\n if (parts.negatives.length) {\n negatives = `-(${prefix}${parts.negatives.join('|')})`;\n }\n\n if (positives && negatives) {\n result = `${positives}|${negatives}`;\n } else {\n result = positives || negatives;\n }\n\n if (options.wrap) {\n return `(${prefix}${result})`;\n }\n\n return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n if (isNumbers) {\n return toRegexRange(a, b, { wrap: false, ...options });\n }\n\n let start = String.fromCharCode(a);\n if (a === b) return start;\n\n let stop = String.fromCharCode(b);\n return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n if (Array.isArray(start)) {\n let wrap = options.wrap === true;\n let prefix = options.capture ? '' : '?:';\n return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n }\n return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n};\n\nconst invalidStep = (step, options) => {\n if (options.strictRanges === true) {\n throw new TypeError(`Expected step \"${step}\" to be a number`);\n }\n return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n let a = Number(start);\n let b = Number(end);\n\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n }\n\n // fix negative zero\n if (a === 0) a = 0;\n if (b === 0) b = 0;\n\n let descending = a > b;\n let startString = String(start);\n let endString = String(end);\n let stepString = String(step);\n step = Math.max(Math.abs(step), 1);\n\n let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n let toNumber = padded === false && stringify(start, end, options) === false;\n let format = options.transform || transform(toNumber);\n\n if (options.toRegex && step === 1) {\n return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n }\n\n let parts = { negatives: [], positives: [] };\n let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n if (options.toRegex === true && step > 1) {\n push(a);\n } else {\n range.push(pad(format(a, index), maxLen, toNumber));\n }\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return step > 1\n ? toSequence(parts, options)\n : toRegex(range, null, { wrap: false, ...options });\n }\n\n return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n return invalidRange(start, end, options);\n }\n\n\n let format = options.transform || (val => String.fromCharCode(val));\n let a = `${start}`.charCodeAt(0);\n let b = `${end}`.charCodeAt(0);\n\n let descending = a > b;\n let min = Math.min(a, b);\n let max = Math.max(a, b);\n\n if (options.toRegex && step === 1) {\n return toRange(min, max, false, options);\n }\n\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n range.push(format(a, index));\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return toRegex(range, null, { wrap: false, options });\n }\n\n return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n if (end == null && isValidValue(start)) {\n return [start];\n }\n\n if (!isValidValue(start) || !isValidValue(end)) {\n return invalidRange(start, end, options);\n }\n\n if (typeof step === 'function') {\n return fill(start, end, 1, { transform: step });\n }\n\n if (isObject(step)) {\n return fill(start, end, 0, step);\n }\n\n let opts = { ...options };\n if (opts.capture === true) opts.wrap = true;\n step = step || opts.step || 1;\n\n if (!isNumber(step)) {\n if (step != null && !isObject(step)) return invalidStep(step, opts);\n return fill(start, end, 1, step);\n }\n\n if (isNumber(start) && isNumber(end)) {\n return fillNumbers(start, end, step, opts);\n }\n\n return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n","/*!\n * is-number \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n if (typeof num === 'number') {\n return num - num === 0;\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n }\n return false;\n};\n","/*!\n * to-regex-range \n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n if (isNumber(min) === false) {\n throw new TypeError('toRegexRange: expected the first argument to be a number');\n }\n\n if (max === void 0 || min === max) {\n return String(min);\n }\n\n if (isNumber(max) === false) {\n throw new TypeError('toRegexRange: expected the second argument to be a number.');\n }\n\n let opts = { relaxZeros: true, ...options };\n if (typeof opts.strictZeros === 'boolean') {\n opts.relaxZeros = opts.strictZeros === false;\n }\n\n let relax = String(opts.relaxZeros);\n let shorthand = String(opts.shorthand);\n let capture = String(opts.capture);\n let wrap = String(opts.wrap);\n let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n return toRegexRange.cache[cacheKey].result;\n }\n\n let a = Math.min(min, max);\n let b = Math.max(min, max);\n\n if (Math.abs(a - b) === 1) {\n let result = min + '|' + max;\n if (opts.capture) {\n return `(${result})`;\n }\n if (opts.wrap === false) {\n return result;\n }\n return `(?:${result})`;\n }\n\n let isPadded = hasPadding(min) || hasPadding(max);\n let state = { min, max, a, b };\n let positives = [];\n let negatives = [];\n\n if (isPadded) {\n state.isPadded = isPadded;\n state.maxLen = String(state.max).length;\n }\n\n if (a < 0) {\n let newMin = b < 0 ? Math.abs(b) : 1;\n negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n a = state.a = 0;\n }\n\n if (b >= 0) {\n positives = splitToPatterns(a, b, state, opts);\n }\n\n state.negatives = negatives;\n state.positives = positives;\n state.result = collatePatterns(negatives, positives, opts);\n\n if (opts.capture === true) {\n state.result = `(${state.result})`;\n } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n state.result = `(?:${state.result})`;\n }\n\n toRegexRange.cache[cacheKey] = state;\n return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n let nines = 1;\n let zeros = 1;\n\n let stop = countNines(min, nines);\n let stops = new Set([max]);\n\n while (min <= stop && stop <= max) {\n stops.add(stop);\n nines += 1;\n stop = countNines(min, nines);\n }\n\n stop = countZeros(max + 1, zeros) - 1;\n\n while (min < stop && stop <= max) {\n stops.add(stop);\n zeros += 1;\n stop = countZeros(max + 1, zeros) - 1;\n }\n\n stops = [...stops];\n stops.sort(compare);\n return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n if (start === stop) {\n return { pattern: start, count: [], digits: 0 };\n }\n\n let zipped = zip(start, stop);\n let digits = zipped.length;\n let pattern = '';\n let count = 0;\n\n for (let i = 0; i < digits; i++) {\n let [startDigit, stopDigit] = zipped[i];\n\n if (startDigit === stopDigit) {\n pattern += startDigit;\n\n } else if (startDigit !== '0' || stopDigit !== '9') {\n pattern += toCharacterClass(startDigit, stopDigit, options);\n\n } else {\n count++;\n }\n }\n\n if (count) {\n pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n }\n\n return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n let ranges = splitToRanges(min, max);\n let tokens = [];\n let start = min;\n let prev;\n\n for (let i = 0; i < ranges.length; i++) {\n let max = ranges[i];\n let obj = rangeToPattern(String(start), String(max), options);\n let zeros = '';\n\n if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n if (prev.count.length > 1) {\n prev.count.pop();\n }\n\n prev.count.push(obj.count[0]);\n prev.string = prev.pattern + toQuantifier(prev.count);\n start = max + 1;\n continue;\n }\n\n if (tok.isPadded) {\n zeros = padZeros(max, tok, options);\n }\n\n obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n tokens.push(obj);\n start = max + 1;\n prev = obj;\n }\n\n return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n let result = [];\n\n for (let ele of arr) {\n let { string } = ele;\n\n // only push if _both_ are negative...\n if (!intersection && !contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n\n // or _both_ are positive\n if (intersection && contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n }\n return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n let arr = [];\n for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n return arr;\n}\n\nfunction compare(a, b) {\n return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n let [start = 0, stop = ''] = digits;\n if (stop || start > 1) {\n return `{${start + (stop ? ',' + stop : '')}}`;\n }\n return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n if (!tok.isPadded) {\n return value;\n }\n\n let diff = Math.abs(tok.maxLen - String(value).length);\n let relax = options.relaxZeros !== false;\n\n switch (diff) {\n case 0:\n return '';\n case 1:\n return relax ? '0?' : '0';\n case 2:\n return relax ? '0{0,2}' : '00';\n default: {\n return relax ? `0{0,${diff}}` : `0{${diff}}`;\n }\n }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n let walk = (node, parent = {}) => {\n let invalidBlock = utils.isInvalidBrace(parent);\n let invalidNode = node.invalid === true && options.escapeInvalid === true;\n let invalid = invalidBlock === true || invalidNode === true;\n let prefix = options.escapeInvalid === true ? '\\\\' : '';\n let output = '';\n\n if (node.isOpen === true) {\n return prefix + node.value;\n }\n if (node.isClose === true) {\n return prefix + node.value;\n }\n\n if (node.type === 'open') {\n return invalid ? (prefix + node.value) : '(';\n }\n\n if (node.type === 'close') {\n return invalid ? (prefix + node.value) : ')';\n }\n\n if (node.type === 'comma') {\n return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|');\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes && node.ranges > 0) {\n let args = utils.reduce(node.nodes);\n let range = fill(...args, { ...options, wrap: false, toRegex: true });\n\n if (range.length !== 0) {\n return args.length > 1 && range.length > 1 ? `(${range})` : range;\n }\n }\n\n if (node.nodes) {\n for (let child of node.nodes) {\n output += walk(child, node);\n }\n }\n return output;\n };\n\n return walk(ast);\n};\n\nmodule.exports = compile;\n","'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n let result = [];\n\n queue = [].concat(queue);\n stash = [].concat(stash);\n\n if (!stash.length) return queue;\n if (!queue.length) {\n return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n }\n\n for (let item of queue) {\n if (Array.isArray(item)) {\n for (let value of item) {\n result.push(append(value, stash, enclose));\n }\n } else {\n for (let ele of stash) {\n if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele));\n }\n }\n }\n return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit;\n\n let walk = (node, parent = {}) => {\n node.queue = [];\n\n let p = parent;\n let q = parent.queue;\n\n while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n p = p.parent;\n q = p.queue;\n }\n\n if (node.invalid || node.dollar) {\n q.push(append(q.pop(), stringify(node, options)));\n return;\n }\n\n if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n q.push(append(q.pop(), ['{}']));\n return;\n }\n\n if (node.nodes && node.ranges > 0) {\n let args = utils.reduce(node.nodes);\n\n if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n }\n\n let range = fill(...args, options);\n if (range.length === 0) {\n range = stringify(node, options);\n }\n\n q.push(append(q.pop(), range));\n node.nodes = [];\n return;\n }\n\n let enclose = utils.encloseBrace(node);\n let queue = node.queue;\n let block = node;\n\n while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n block = block.parent;\n queue = block.queue;\n }\n\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i];\n\n if (child.type === 'comma' && node.type === 'brace') {\n if (i === 1) queue.push('');\n queue.push('');\n continue;\n }\n\n if (child.type === 'close') {\n q.push(append(q.pop(), queue, enclose));\n continue;\n }\n\n if (child.value && child.type !== 'open') {\n queue.push(append(queue.pop(), child.value));\n continue;\n }\n\n if (child.nodes) {\n walk(child, node);\n }\n }\n\n return queue;\n };\n\n return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n","'use strict';\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n\n // Digits\n CHAR_0: '0', /* 0 */\n CHAR_9: '9', /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 'A', /* A */\n CHAR_LOWERCASE_A: 'a', /* a */\n CHAR_UPPERCASE_Z: 'Z', /* Z */\n CHAR_LOWERCASE_Z: 'z', /* z */\n\n CHAR_LEFT_PARENTHESES: '(', /* ( */\n CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n CHAR_ASTERISK: '*', /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: '&', /* & */\n CHAR_AT: '@', /* @ */\n CHAR_BACKSLASH: '\\\\', /* \\ */\n CHAR_BACKTICK: '`', /* ` */\n CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n CHAR_COLON: ':', /* : */\n CHAR_COMMA: ',', /* , */\n CHAR_DOLLAR: '$', /* . */\n CHAR_DOT: '.', /* . */\n CHAR_DOUBLE_QUOTE: '\"', /* \" */\n CHAR_EQUAL: '=', /* = */\n CHAR_EXCLAMATION_MARK: '!', /* ! */\n CHAR_FORM_FEED: '\\f', /* \\f */\n CHAR_FORWARD_SLASH: '/', /* / */\n CHAR_HASH: '#', /* # */\n CHAR_HYPHEN_MINUS: '-', /* - */\n CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n CHAR_LEFT_CURLY_BRACE: '{', /* { */\n CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n CHAR_LINE_FEED: '\\n', /* \\n */\n CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n CHAR_PERCENT: '%', /* % */\n CHAR_PLUS: '+', /* + */\n CHAR_QUESTION_MARK: '?', /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n CHAR_SEMICOLON: ';', /* ; */\n CHAR_SINGLE_QUOTE: '\\'', /* ' */\n CHAR_SPACE: ' ', /* */\n CHAR_TAB: '\\t', /* \\t */\n CHAR_UNDERSCORE: '_', /* _ */\n CHAR_VERTICAL_LINE: '|', /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n","'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n CHAR_BACKSLASH, /* \\ */\n CHAR_BACKTICK, /* ` */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n CHAR_DOUBLE_QUOTE, /* \" */\n CHAR_SINGLE_QUOTE, /* ' */\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n let opts = options || {};\n let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n if (input.length > max) {\n throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n }\n\n let ast = { type: 'root', input, nodes: [] };\n let stack = [ast];\n let block = ast;\n let prev = ast;\n let brackets = 0;\n let length = input.length;\n let index = 0;\n let depth = 0;\n let value;\n let memo = {};\n\n /**\n * Helpers\n */\n\n const advance = () => input[index++];\n const push = node => {\n if (node.type === 'text' && prev.type === 'dot') {\n prev.type = 'text';\n }\n\n if (prev && prev.type === 'text' && node.type === 'text') {\n prev.value += node.value;\n return;\n }\n\n block.nodes.push(node);\n node.parent = block;\n node.prev = prev;\n prev = node;\n return node;\n };\n\n push({ type: 'bos' });\n\n while (index < length) {\n block = stack[stack.length - 1];\n value = advance();\n\n /**\n * Invalid chars\n */\n\n if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n continue;\n }\n\n /**\n * Escaped chars\n */\n\n if (value === CHAR_BACKSLASH) {\n push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n continue;\n }\n\n /**\n * Right square bracket (literal): ']'\n */\n\n if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n push({ type: 'text', value: '\\\\' + value });\n continue;\n }\n\n /**\n * Left square bracket: '['\n */\n\n if (value === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n\n let closed = true;\n let next;\n\n while (index < length && (next = advance())) {\n value += next;\n\n if (next === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n continue;\n }\n\n if (next === CHAR_BACKSLASH) {\n value += advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n brackets--;\n\n if (brackets === 0) {\n break;\n }\n }\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === CHAR_LEFT_PARENTHESES) {\n block = push({ type: 'paren', nodes: [] });\n stack.push(block);\n push({ type: 'text', value });\n continue;\n }\n\n if (value === CHAR_RIGHT_PARENTHESES) {\n if (block.type !== 'paren') {\n push({ type: 'text', value });\n continue;\n }\n block = stack.pop();\n push({ type: 'text', value });\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Quotes: '|\"|`\n */\n\n if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n let open = value;\n let next;\n\n if (options.keepQuotes !== true) {\n value = '';\n }\n\n while (index < length && (next = advance())) {\n if (next === CHAR_BACKSLASH) {\n value += next + advance();\n continue;\n }\n\n if (next === open) {\n if (options.keepQuotes === true) value += next;\n break;\n }\n\n value += next;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Left curly brace: '{'\n */\n\n if (value === CHAR_LEFT_CURLY_BRACE) {\n depth++;\n\n let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n let brace = {\n type: 'brace',\n open: true,\n close: false,\n dollar,\n depth,\n commas: 0,\n ranges: 0,\n nodes: []\n };\n\n block = push(brace);\n stack.push(block);\n push({ type: 'open', value });\n continue;\n }\n\n /**\n * Right curly brace: '}'\n */\n\n if (value === CHAR_RIGHT_CURLY_BRACE) {\n if (block.type !== 'brace') {\n push({ type: 'text', value });\n continue;\n }\n\n let type = 'close';\n block = stack.pop();\n block.close = true;\n\n push({ type, value });\n depth--;\n\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Comma: ','\n */\n\n if (value === CHAR_COMMA && depth > 0) {\n if (block.ranges > 0) {\n block.ranges = 0;\n let open = block.nodes.shift();\n block.nodes = [open, { type: 'text', value: stringify(block) }];\n }\n\n push({ type: 'comma', value });\n block.commas++;\n continue;\n }\n\n /**\n * Dot: '.'\n */\n\n if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n let siblings = block.nodes;\n\n if (depth === 0 || siblings.length === 0) {\n push({ type: 'text', value });\n continue;\n }\n\n if (prev.type === 'dot') {\n block.range = [];\n prev.value += value;\n prev.type = 'range';\n\n if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n block.invalid = true;\n block.ranges = 0;\n prev.type = 'text';\n continue;\n }\n\n block.ranges++;\n block.args = [];\n continue;\n }\n\n if (prev.type === 'range') {\n siblings.pop();\n\n let before = siblings[siblings.length - 1];\n before.value += prev.value + value;\n prev = before;\n block.ranges--;\n continue;\n }\n\n push({ type: 'dot', value });\n continue;\n }\n\n /**\n * Text\n */\n\n push({ type: 'text', value });\n }\n\n // Mark imbalanced braces and brackets as invalid\n do {\n block = stack.pop();\n\n if (block.type !== 'root') {\n block.nodes.forEach(node => {\n if (!node.nodes) {\n if (node.type === 'open') node.isOpen = true;\n if (node.type === 'close') node.isClose = true;\n if (!node.nodes) node.type = 'text';\n node.invalid = true;\n }\n });\n\n // get the location of the block on parent.nodes (block's siblings)\n let parent = stack[stack.length - 1];\n let index = parent.nodes.indexOf(block);\n // replace the (invalid) block with it's nodes\n parent.nodes.splice(index, 1, ...block.nodes);\n }\n } while (stack.length > 0);\n\n push({ type: 'eos' });\n return ast;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n let output = [];\n\n if (Array.isArray(input)) {\n for (let pattern of input) {\n let result = braces.create(pattern, options);\n if (Array.isArray(result)) {\n output.push(...result);\n } else {\n output.push(result);\n }\n }\n } else {\n output = [].concat(braces.create(input, options));\n }\n\n if (options && options.expand === true && options.nodupes === true) {\n output = [...new Set(output)];\n }\n return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n if (typeof input === 'string') {\n return stringify(braces.parse(input, options), options);\n }\n return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n\n let result = expand(input, options);\n\n // filter out empty strings if specified\n if (options.noempty === true) {\n result = result.filter(Boolean);\n }\n\n // filter out duplicates if specified\n if (options.nodupes === true) {\n result = [...new Set(result)];\n }\n\n return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n if (input === '' || input.length < 3) {\n return [input];\n }\n\n return options.expand !== true\n ? braces.compile(input, options)\n : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.compileRe = (parsed, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return parsed.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${parsed.output})${append}`;\n if (parsed && parsed.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = parsed;\n }\n\n return regex;\n};\n\npicomatch.makeRe = (input, options, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n const opts = options || {};\n let parsed = { negated: false, fastpaths: true };\n let prefix = '';\n let output;\n\n if (input.startsWith('./')) {\n input = input.slice(2);\n prefix = parsed.prefix = './';\n }\n\n if (opts.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n output = parse.fastpaths(input, options);\n }\n\n if (output === undefined) {\n parsed = parse(input, options);\n parsed.prefix = prefix + (parsed.prefix || '');\n } else {\n parsed.output = output;\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.supportsLookbehinds = () => {\n const segs = process.version.slice(1).split('.').map(Number);\n if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n return true;\n }\n return false;\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: path.sep,\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), and `negated` (true if the path starts with `!`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(win32);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = (opts) => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index];\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren' && !EXTGLOB_CHARS[tok.value]) {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance() || '';\n } else {\n value += advance() || '';\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if (next === '<' && !utils.supportsLookbehinds()) {\n throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n }\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(win32);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = (opts) => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.merge = void 0;\r\nconst merge2 = require(\"merge2\");\r\nfunction merge(streams) {\r\n const mergedStream = merge2(streams);\r\n streams.forEach((stream) => {\r\n stream.once('error', (error) => mergedStream.emit('error', error));\r\n });\r\n mergedStream.once('close', () => propagateCloseEventToSources(streams));\r\n mergedStream.once('end', () => propagateCloseEventToSources(streams));\r\n return mergedStream;\r\n}\r\nexports.merge = merge;\r\nfunction propagateCloseEventToSources(streams) {\r\n streams.forEach((stream) => stream.emit('close'));\r\n}\r\n","'use strict'\n/*\n * merge2\n * https://github.com/teambition/merge2\n *\n * Copyright (c) 2014-2020 Teambition\n * Licensed under the MIT license.\n */\nconst Stream = require('stream')\nconst PassThrough = Stream.PassThrough\nconst slice = Array.prototype.slice\n\nmodule.exports = merge2\n\nfunction merge2 () {\n const streamsQueue = []\n const args = slice.call(arguments)\n let merging = false\n let options = args[args.length - 1]\n\n if (options && !Array.isArray(options) && options.pipe == null) {\n args.pop()\n } else {\n options = {}\n }\n\n const doEnd = options.end !== false\n const doPipeError = options.pipeError === true\n if (options.objectMode == null) {\n options.objectMode = true\n }\n if (options.highWaterMark == null) {\n options.highWaterMark = 64 * 1024\n }\n const mergedStream = PassThrough(options)\n\n function addStream () {\n for (let i = 0, len = arguments.length; i < len; i++) {\n streamsQueue.push(pauseStreams(arguments[i], options))\n }\n mergeStream()\n return this\n }\n\n function mergeStream () {\n if (merging) {\n return\n }\n merging = true\n\n let streams = streamsQueue.shift()\n if (!streams) {\n process.nextTick(endStream)\n return\n }\n if (!Array.isArray(streams)) {\n streams = [streams]\n }\n\n let pipesCount = streams.length + 1\n\n function next () {\n if (--pipesCount > 0) {\n return\n }\n merging = false\n mergeStream()\n }\n\n function pipe (stream) {\n function onend () {\n stream.removeListener('merge2UnpipeEnd', onend)\n stream.removeListener('end', onend)\n if (doPipeError) {\n stream.removeListener('error', onerror)\n }\n next()\n }\n function onerror (err) {\n mergedStream.emit('error', err)\n }\n // skip ended stream\n if (stream._readableState.endEmitted) {\n return next()\n }\n\n stream.on('merge2UnpipeEnd', onend)\n stream.on('end', onend)\n\n if (doPipeError) {\n stream.on('error', onerror)\n }\n\n stream.pipe(mergedStream, { end: false })\n // compatible for old stream\n stream.resume()\n }\n\n for (let i = 0; i < streams.length; i++) {\n pipe(streams[i])\n }\n\n next()\n }\n\n function endStream () {\n merging = false\n // emit 'queueDrain' when all streams merged.\n mergedStream.emit('queueDrain')\n if (doEnd) {\n mergedStream.end()\n }\n }\n\n mergedStream.setMaxListeners(0)\n mergedStream.add = addStream\n mergedStream.on('unpipe', function (stream) {\n stream.emit('merge2UnpipeEnd')\n })\n\n if (args.length) {\n addStream.apply(null, args)\n }\n return mergedStream\n}\n\n// check and pause streams for pipe.\nfunction pauseStreams (streams, options) {\n if (!Array.isArray(streams)) {\n // Backwards-compat with old-style streams\n if (!streams._readableState && streams.pipe) {\n streams = streams.pipe(PassThrough(options))\n }\n if (!streams._readableState || !streams.pause || !streams.pipe) {\n throw new Error('Only readable stream can be merged.')\n }\n streams.pause()\n } else {\n for (let i = 0, len = streams.length; i < len; i++) {\n streams[i] = pauseStreams(streams[i], options)\n }\n }\n return streams\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.isEmpty = exports.isString = void 0;\r\nfunction isString(input) {\r\n return typeof input === 'string';\r\n}\r\nexports.isString = isString;\r\nfunction isEmpty(input) {\r\n return input === '';\r\n}\r\nexports.isEmpty = isEmpty;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"../readers/stream\");\r\nconst provider_1 = require(\"./provider\");\r\nclass ProviderAsync extends provider_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._reader = new stream_1.default(this._settings);\r\n }\r\n read(task) {\r\n const root = this._getRootDirectory(task);\r\n const options = this._getReaderOptions(task);\r\n const entries = [];\r\n return new Promise((resolve, reject) => {\r\n const stream = this.api(root, task, options);\r\n stream.once('error', reject);\r\n stream.on('data', (entry) => entries.push(options.transform(entry)));\r\n stream.once('end', () => resolve(entries));\r\n });\r\n }\r\n api(root, task, options) {\r\n if (task.dynamic) {\r\n return this._reader.dynamic(root, options);\r\n }\r\n return this._reader.static(task.patterns, options);\r\n }\r\n}\r\nexports.default = ProviderAsync;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"stream\");\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst fsWalk = require(\"@nodelib/fs.walk\");\r\nconst reader_1 = require(\"./reader\");\r\nclass ReaderStream extends reader_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._walkStream = fsWalk.walkStream;\r\n this._stat = fsStat.stat;\r\n }\r\n dynamic(root, options) {\r\n return this._walkStream(root, options);\r\n }\r\n static(patterns, options) {\r\n const filepaths = patterns.map(this._getFullEntryPath, this);\r\n const stream = new stream_1.PassThrough({ objectMode: true });\r\n stream._write = (index, _enc, done) => {\r\n return this._getEntry(filepaths[index], patterns[index], options)\r\n .then((entry) => {\r\n if (entry !== null && options.entryFilter(entry)) {\r\n stream.push(entry);\r\n }\r\n if (index === filepaths.length - 1) {\r\n stream.end();\r\n }\r\n done();\r\n })\r\n .catch(done);\r\n };\r\n for (let i = 0; i < filepaths.length; i++) {\r\n stream.write(i);\r\n }\r\n return stream;\r\n }\r\n _getEntry(filepath, pattern, options) {\r\n return this._getStat(filepath)\r\n .then((stats) => this._makeEntry(stats, pattern))\r\n .catch((error) => {\r\n if (options.errorFilter(error)) {\r\n return null;\r\n }\r\n throw error;\r\n });\r\n }\r\n _getStat(filepath) {\r\n return new Promise((resolve, reject) => {\r\n this._stat(filepath, this._fsStatSettings, (error, stats) => {\r\n return error === null ? resolve(stats) : reject(error);\r\n });\r\n });\r\n }\r\n}\r\nexports.default = ReaderStream;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.statSync = exports.stat = exports.Settings = void 0;\r\nconst async = require(\"./providers/async\");\r\nconst sync = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nexports.Settings = settings_1.default;\r\nfunction stat(path, optionsOrSettingsOrCallback, callback) {\r\n if (typeof optionsOrSettingsOrCallback === 'function') {\r\n return async.read(path, getSettings(), optionsOrSettingsOrCallback);\r\n }\r\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\r\n}\r\nexports.stat = stat;\r\nfunction statSync(path, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n return sync.read(path, settings);\r\n}\r\nexports.statSync = statSync;\r\nfunction getSettings(settingsOrOptions = {}) {\r\n if (settingsOrOptions instanceof settings_1.default) {\r\n return settingsOrOptions;\r\n }\r\n return new settings_1.default(settingsOrOptions);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.read = void 0;\r\nfunction read(path, settings, callback) {\r\n settings.fs.lstat(path, (lstatError, lstat) => {\r\n if (lstatError !== null) {\r\n return callFailureCallback(callback, lstatError);\r\n }\r\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\r\n return callSuccessCallback(callback, lstat);\r\n }\r\n settings.fs.stat(path, (statError, stat) => {\r\n if (statError !== null) {\r\n if (settings.throwErrorOnBrokenSymbolicLink) {\r\n return callFailureCallback(callback, statError);\r\n }\r\n return callSuccessCallback(callback, lstat);\r\n }\r\n if (settings.markSymbolicLink) {\r\n stat.isSymbolicLink = () => true;\r\n }\r\n callSuccessCallback(callback, stat);\r\n });\r\n });\r\n}\r\nexports.read = read;\r\nfunction callFailureCallback(callback, error) {\r\n callback(error);\r\n}\r\nfunction callSuccessCallback(callback, result) {\r\n callback(null, result);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.read = void 0;\r\nfunction read(path, settings) {\r\n const lstat = settings.fs.lstatSync(path);\r\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\r\n return lstat;\r\n }\r\n try {\r\n const stat = settings.fs.statSync(path);\r\n if (settings.markSymbolicLink) {\r\n stat.isSymbolicLink = () => true;\r\n }\r\n return stat;\r\n }\r\n catch (error) {\r\n if (!settings.throwErrorOnBrokenSymbolicLink) {\r\n return lstat;\r\n }\r\n throw error;\r\n }\r\n}\r\nexports.read = read;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst fs = require(\"./adapters/fs\");\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true);\r\n this.fs = fs.createFileSystemAdapter(this._options.fs);\r\n this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false);\r\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\r\n }\r\n _getValue(option, value) {\r\n return option !== null && option !== void 0 ? option : value;\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\r\nconst fs = require(\"fs\");\r\nexports.FILE_SYSTEM_ADAPTER = {\r\n lstat: fs.lstat,\r\n stat: fs.stat,\r\n lstatSync: fs.lstatSync,\r\n statSync: fs.statSync\r\n};\r\nfunction createFileSystemAdapter(fsMethods) {\r\n if (fsMethods === undefined) {\r\n return exports.FILE_SYSTEM_ADAPTER;\r\n }\r\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\r\n}\r\nexports.createFileSystemAdapter = createFileSystemAdapter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Settings = exports.walkStream = exports.walkSync = exports.walk = void 0;\r\nconst async_1 = require(\"./providers/async\");\r\nconst stream_1 = require(\"./providers/stream\");\r\nconst sync_1 = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nexports.Settings = settings_1.default;\r\nfunction walk(directory, optionsOrSettingsOrCallback, callback) {\r\n if (typeof optionsOrSettingsOrCallback === 'function') {\r\n return new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback);\r\n }\r\n new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback);\r\n}\r\nexports.walk = walk;\r\nfunction walkSync(directory, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n const provider = new sync_1.default(directory, settings);\r\n return provider.read();\r\n}\r\nexports.walkSync = walkSync;\r\nfunction walkStream(directory, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n const provider = new stream_1.default(directory, settings);\r\n return provider.read();\r\n}\r\nexports.walkStream = walkStream;\r\nfunction getSettings(settingsOrOptions = {}) {\r\n if (settingsOrOptions instanceof settings_1.default) {\r\n return settingsOrOptions;\r\n }\r\n return new settings_1.default(settingsOrOptions);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst async_1 = require(\"../readers/async\");\r\nclass AsyncProvider {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._reader = new async_1.default(this._root, this._settings);\r\n this._storage = new Set();\r\n }\r\n read(callback) {\r\n this._reader.onError((error) => {\r\n callFailureCallback(callback, error);\r\n });\r\n this._reader.onEntry((entry) => {\r\n this._storage.add(entry);\r\n });\r\n this._reader.onEnd(() => {\r\n callSuccessCallback(callback, [...this._storage]);\r\n });\r\n this._reader.read();\r\n }\r\n}\r\nexports.default = AsyncProvider;\r\nfunction callFailureCallback(callback, error) {\r\n callback(error);\r\n}\r\nfunction callSuccessCallback(callback, entries) {\r\n callback(null, entries);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst events_1 = require(\"events\");\r\nconst fsScandir = require(\"@nodelib/fs.scandir\");\r\nconst fastq = require(\"fastq\");\r\nconst common = require(\"./common\");\r\nconst reader_1 = require(\"./reader\");\r\nclass AsyncReader extends reader_1.default {\r\n constructor(_root, _settings) {\r\n super(_root, _settings);\r\n this._settings = _settings;\r\n this._scandir = fsScandir.scandir;\r\n this._emitter = new events_1.EventEmitter();\r\n this._queue = fastq(this._worker.bind(this), this._settings.concurrency);\r\n this._isFatalError = false;\r\n this._isDestroyed = false;\r\n this._queue.drain = () => {\r\n if (!this._isFatalError) {\r\n this._emitter.emit('end');\r\n }\r\n };\r\n }\r\n read() {\r\n this._isFatalError = false;\r\n this._isDestroyed = false;\r\n setImmediate(() => {\r\n this._pushToQueue(this._root, this._settings.basePath);\r\n });\r\n return this._emitter;\r\n }\r\n get isDestroyed() {\r\n return this._isDestroyed;\r\n }\r\n destroy() {\r\n if (this._isDestroyed) {\r\n throw new Error('The reader is already destroyed');\r\n }\r\n this._isDestroyed = true;\r\n this._queue.killAndDrain();\r\n }\r\n onEntry(callback) {\r\n this._emitter.on('entry', callback);\r\n }\r\n onError(callback) {\r\n this._emitter.once('error', callback);\r\n }\r\n onEnd(callback) {\r\n this._emitter.once('end', callback);\r\n }\r\n _pushToQueue(directory, base) {\r\n const queueItem = { directory, base };\r\n this._queue.push(queueItem, (error) => {\r\n if (error !== null) {\r\n this._handleError(error);\r\n }\r\n });\r\n }\r\n _worker(item, done) {\r\n this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => {\r\n if (error !== null) {\r\n return done(error, undefined);\r\n }\r\n for (const entry of entries) {\r\n this._handleEntry(entry, item.base);\r\n }\r\n done(null, undefined);\r\n });\r\n }\r\n _handleError(error) {\r\n if (this._isDestroyed || !common.isFatalError(this._settings, error)) {\r\n return;\r\n }\r\n this._isFatalError = true;\r\n this._isDestroyed = true;\r\n this._emitter.emit('error', error);\r\n }\r\n _handleEntry(entry, base) {\r\n if (this._isDestroyed || this._isFatalError) {\r\n return;\r\n }\r\n const fullpath = entry.path;\r\n if (base !== undefined) {\r\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\r\n }\r\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\r\n this._emitEntry(entry);\r\n }\r\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\r\n this._pushToQueue(fullpath, entry.path);\r\n }\r\n }\r\n _emitEntry(entry) {\r\n this._emitter.emit('entry', entry);\r\n }\r\n}\r\nexports.default = AsyncReader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Settings = exports.scandirSync = exports.scandir = void 0;\r\nconst async = require(\"./providers/async\");\r\nconst sync = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nexports.Settings = settings_1.default;\r\nfunction scandir(path, optionsOrSettingsOrCallback, callback) {\r\n if (typeof optionsOrSettingsOrCallback === 'function') {\r\n return async.read(path, getSettings(), optionsOrSettingsOrCallback);\r\n }\r\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\r\n}\r\nexports.scandir = scandir;\r\nfunction scandirSync(path, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n return sync.read(path, settings);\r\n}\r\nexports.scandirSync = scandirSync;\r\nfunction getSettings(settingsOrOptions = {}) {\r\n if (settingsOrOptions instanceof settings_1.default) {\r\n return settingsOrOptions;\r\n }\r\n return new settings_1.default(settingsOrOptions);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst rpl = require(\"run-parallel\");\r\nconst constants_1 = require(\"../constants\");\r\nconst utils = require(\"../utils\");\r\nconst common = require(\"./common\");\r\nfunction read(directory, settings, callback) {\r\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\r\n return readdirWithFileTypes(directory, settings, callback);\r\n }\r\n return readdir(directory, settings, callback);\r\n}\r\nexports.read = read;\r\nfunction readdirWithFileTypes(directory, settings, callback) {\r\n settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => {\r\n if (readdirError !== null) {\r\n return callFailureCallback(callback, readdirError);\r\n }\r\n const entries = dirents.map((dirent) => ({\r\n dirent,\r\n name: dirent.name,\r\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\r\n }));\r\n if (!settings.followSymbolicLinks) {\r\n return callSuccessCallback(callback, entries);\r\n }\r\n const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings));\r\n rpl(tasks, (rplError, rplEntries) => {\r\n if (rplError !== null) {\r\n return callFailureCallback(callback, rplError);\r\n }\r\n callSuccessCallback(callback, rplEntries);\r\n });\r\n });\r\n}\r\nexports.readdirWithFileTypes = readdirWithFileTypes;\r\nfunction makeRplTaskEntry(entry, settings) {\r\n return (done) => {\r\n if (!entry.dirent.isSymbolicLink()) {\r\n return done(null, entry);\r\n }\r\n settings.fs.stat(entry.path, (statError, stats) => {\r\n if (statError !== null) {\r\n if (settings.throwErrorOnBrokenSymbolicLink) {\r\n return done(statError);\r\n }\r\n return done(null, entry);\r\n }\r\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\r\n return done(null, entry);\r\n });\r\n };\r\n}\r\nfunction readdir(directory, settings, callback) {\r\n settings.fs.readdir(directory, (readdirError, names) => {\r\n if (readdirError !== null) {\r\n return callFailureCallback(callback, readdirError);\r\n }\r\n const filepaths = names.map((name) => common.joinPathSegments(directory, name, settings.pathSegmentSeparator));\r\n const tasks = filepaths.map((filepath) => {\r\n return (done) => fsStat.stat(filepath, settings.fsStatSettings, done);\r\n });\r\n rpl(tasks, (rplError, results) => {\r\n if (rplError !== null) {\r\n return callFailureCallback(callback, rplError);\r\n }\r\n const entries = [];\r\n names.forEach((name, index) => {\r\n const stats = results[index];\r\n const entry = {\r\n name,\r\n path: filepaths[index],\r\n dirent: utils.fs.createDirentFromStats(name, stats)\r\n };\r\n if (settings.stats) {\r\n entry.stats = stats;\r\n }\r\n entries.push(entry);\r\n });\r\n callSuccessCallback(callback, entries);\r\n });\r\n });\r\n}\r\nexports.readdir = readdir;\r\nfunction callFailureCallback(callback, error) {\r\n callback(error);\r\n}\r\nfunction callSuccessCallback(callback, result) {\r\n callback(null, result);\r\n}\r\n","/*! run-parallel. MIT License. Feross Aboukhadijeh */\nmodule.exports = runParallel\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallel (tasks, cb) {\n let results, pending, keys\n let isSync = true\n\n if (Array.isArray(tasks)) {\n results = []\n pending = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (--pending === 0 || err) {\n done(err)\n }\n }\n\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.forEach(function (key) {\n tasks[key](function (err, result) { each(key, err, result) })\n })\n } else {\n // array\n tasks.forEach(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n })\n }\n\n isSync = false\n}\n","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = void 0;\r\nconst NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.');\r\nconst MAJOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[0], 10);\r\nconst MINOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[1], 10);\r\nconst SUPPORTED_MAJOR_VERSION = 10;\r\nconst SUPPORTED_MINOR_VERSION = 10;\r\nconst IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION;\r\nconst IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION;\r\n/**\r\n * IS `true` for Node.js 10.10 and greater.\r\n */\r\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.fs = void 0;\r\nconst fs = require(\"./fs\");\r\nexports.fs = fs;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createDirentFromStats = void 0;\r\nclass DirentFromStats {\r\n constructor(name, stats) {\r\n this.name = name;\r\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\r\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\r\n this.isDirectory = stats.isDirectory.bind(stats);\r\n this.isFIFO = stats.isFIFO.bind(stats);\r\n this.isFile = stats.isFile.bind(stats);\r\n this.isSocket = stats.isSocket.bind(stats);\r\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\r\n }\r\n}\r\nfunction createDirentFromStats(name, stats) {\r\n return new DirentFromStats(name, stats);\r\n}\r\nexports.createDirentFromStats = createDirentFromStats;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.joinPathSegments = void 0;\r\nfunction joinPathSegments(a, b, separator) {\r\n /**\r\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\r\n */\r\n if (a.endsWith(separator)) {\r\n return a + b;\r\n }\r\n return a + separator + b;\r\n}\r\nexports.joinPathSegments = joinPathSegments;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst constants_1 = require(\"../constants\");\r\nconst utils = require(\"../utils\");\r\nconst common = require(\"./common\");\r\nfunction read(directory, settings) {\r\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\r\n return readdirWithFileTypes(directory, settings);\r\n }\r\n return readdir(directory, settings);\r\n}\r\nexports.read = read;\r\nfunction readdirWithFileTypes(directory, settings) {\r\n const dirents = settings.fs.readdirSync(directory, { withFileTypes: true });\r\n return dirents.map((dirent) => {\r\n const entry = {\r\n dirent,\r\n name: dirent.name,\r\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\r\n };\r\n if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) {\r\n try {\r\n const stats = settings.fs.statSync(entry.path);\r\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\r\n }\r\n catch (error) {\r\n if (settings.throwErrorOnBrokenSymbolicLink) {\r\n throw error;\r\n }\r\n }\r\n }\r\n return entry;\r\n });\r\n}\r\nexports.readdirWithFileTypes = readdirWithFileTypes;\r\nfunction readdir(directory, settings) {\r\n const names = settings.fs.readdirSync(directory);\r\n return names.map((name) => {\r\n const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\r\n const stats = fsStat.statSync(entryPath, settings.fsStatSettings);\r\n const entry = {\r\n name,\r\n path: entryPath,\r\n dirent: utils.fs.createDirentFromStats(name, stats)\r\n };\r\n if (settings.stats) {\r\n entry.stats = stats;\r\n }\r\n return entry;\r\n });\r\n}\r\nexports.readdir = readdir;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst fs = require(\"./adapters/fs\");\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false);\r\n this.fs = fs.createFileSystemAdapter(this._options.fs);\r\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\r\n this.stats = this._getValue(this._options.stats, false);\r\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\r\n this.fsStatSettings = new fsStat.Settings({\r\n followSymbolicLink: this.followSymbolicLinks,\r\n fs: this.fs,\r\n throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink\r\n });\r\n }\r\n _getValue(option, value) {\r\n return option !== null && option !== void 0 ? option : value;\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\r\nconst fs = require(\"fs\");\r\nexports.FILE_SYSTEM_ADAPTER = {\r\n lstat: fs.lstat,\r\n stat: fs.stat,\r\n lstatSync: fs.lstatSync,\r\n statSync: fs.statSync,\r\n readdir: fs.readdir,\r\n readdirSync: fs.readdirSync\r\n};\r\nfunction createFileSystemAdapter(fsMethods) {\r\n if (fsMethods === undefined) {\r\n return exports.FILE_SYSTEM_ADAPTER;\r\n }\r\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\r\n}\r\nexports.createFileSystemAdapter = createFileSystemAdapter;\r\n","'use strict'\n\nvar reusify = require('reusify')\n\nfunction fastqueue (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n if (concurrency < 1) {\n throw new Error('fastqueue concurrency must be greater than 1')\n }\n\n var cache = reusify(Task)\n var queueHead = null\n var queueTail = null\n var _running = 0\n var errorHandler = null\n\n var self = {\n push: push,\n drain: noop,\n saturated: noop,\n pause: pause,\n paused: false,\n concurrency: concurrency,\n running: running,\n resume: resume,\n idle: idle,\n length: length,\n getQueue: getQueue,\n unshift: unshift,\n empty: noop,\n kill: kill,\n killAndDrain: killAndDrain,\n error: error\n }\n\n return self\n\n function running () {\n return _running\n }\n\n function pause () {\n self.paused = true\n }\n\n function length () {\n var current = queueHead\n var counter = 0\n\n while (current) {\n current = current.next\n counter++\n }\n\n return counter\n }\n\n function getQueue () {\n var current = queueHead\n var tasks = []\n\n while (current) {\n tasks.push(current.value)\n current = current.next\n }\n\n return tasks\n }\n\n function resume () {\n if (!self.paused) return\n self.paused = false\n for (var i = 0; i < self.concurrency; i++) {\n _running++\n release()\n }\n }\n\n function idle () {\n return _running === 0 && self.length() === 0\n }\n\n function push (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n current.errorHandler = errorHandler\n\n if (_running === self.concurrency || self.paused) {\n if (queueTail) {\n queueTail.next = current\n queueTail = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function unshift (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n\n if (_running === self.concurrency || self.paused) {\n if (queueHead) {\n current.next = queueHead\n queueHead = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function release (holder) {\n if (holder) {\n cache.release(holder)\n }\n var next = queueHead\n if (next) {\n if (!self.paused) {\n if (queueTail === queueHead) {\n queueTail = null\n }\n queueHead = next.next\n next.next = null\n worker.call(context, next.value, next.worked)\n if (queueTail === null) {\n self.empty()\n }\n } else {\n _running--\n }\n } else if (--_running === 0) {\n self.drain()\n }\n }\n\n function kill () {\n queueHead = null\n queueTail = null\n self.drain = noop\n }\n\n function killAndDrain () {\n queueHead = null\n queueTail = null\n self.drain()\n self.drain = noop\n }\n\n function error (handler) {\n errorHandler = handler\n }\n}\n\nfunction noop () {}\n\nfunction Task () {\n this.value = null\n this.callback = noop\n this.next = null\n this.release = noop\n this.context = null\n this.errorHandler = null\n\n var self = this\n\n this.worked = function worked (err, result) {\n var callback = self.callback\n var errorHandler = self.errorHandler\n var val = self.value\n self.value = null\n self.callback = noop\n if (self.errorHandler) {\n errorHandler(err, val)\n }\n callback.call(self.context, err, result)\n self.release(self)\n }\n}\n\nfunction queueAsPromised (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n function asyncWrapper (arg, cb) {\n worker.call(this, arg)\n .then(function (res) {\n cb(null, res)\n }, cb)\n }\n\n var queue = fastqueue(context, asyncWrapper, concurrency)\n\n var pushCb = queue.push\n var unshiftCb = queue.unshift\n\n queue.push = push\n queue.unshift = unshift\n\n return queue\n\n function push (value) {\n return new Promise(function (resolve, reject) {\n pushCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n }\n\n function unshift (value) {\n return new Promise(function (resolve, reject) {\n unshiftCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n }\n}\n\nmodule.exports = fastqueue\nmodule.exports.promise = queueAsPromised\n","'use strict'\n\nfunction reusify (Constructor) {\n var head = new Constructor()\n var tail = head\n\n function get () {\n var current = head\n\n if (current.next) {\n head = current.next\n } else {\n head = new Constructor()\n tail = head\n }\n\n current.next = null\n\n return current\n }\n\n function release (obj) {\n tail.next = obj\n tail = obj\n }\n\n return {\n get: get,\n release: release\n }\n}\n\nmodule.exports = reusify\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = void 0;\r\nfunction isFatalError(settings, error) {\r\n if (settings.errorFilter === null) {\r\n return true;\r\n }\r\n return !settings.errorFilter(error);\r\n}\r\nexports.isFatalError = isFatalError;\r\nfunction isAppliedFilter(filter, value) {\r\n return filter === null || filter(value);\r\n}\r\nexports.isAppliedFilter = isAppliedFilter;\r\nfunction replacePathSegmentSeparator(filepath, separator) {\r\n return filepath.split(/[/\\\\]/).join(separator);\r\n}\r\nexports.replacePathSegmentSeparator = replacePathSegmentSeparator;\r\nfunction joinPathSegments(a, b, separator) {\r\n if (a === '') {\r\n return b;\r\n }\r\n /**\r\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\r\n */\r\n if (a.endsWith(separator)) {\r\n return a + b;\r\n }\r\n return a + separator + b;\r\n}\r\nexports.joinPathSegments = joinPathSegments;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst common = require(\"./common\");\r\nclass Reader {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator);\r\n }\r\n}\r\nexports.default = Reader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"stream\");\r\nconst async_1 = require(\"../readers/async\");\r\nclass StreamProvider {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._reader = new async_1.default(this._root, this._settings);\r\n this._stream = new stream_1.Readable({\r\n objectMode: true,\r\n read: () => { },\r\n destroy: () => {\r\n if (!this._reader.isDestroyed) {\r\n this._reader.destroy();\r\n }\r\n }\r\n });\r\n }\r\n read() {\r\n this._reader.onError((error) => {\r\n this._stream.emit('error', error);\r\n });\r\n this._reader.onEntry((entry) => {\r\n this._stream.push(entry);\r\n });\r\n this._reader.onEnd(() => {\r\n this._stream.push(null);\r\n });\r\n this._reader.read();\r\n return this._stream;\r\n }\r\n}\r\nexports.default = StreamProvider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst sync_1 = require(\"../readers/sync\");\r\nclass SyncProvider {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._reader = new sync_1.default(this._root, this._settings);\r\n }\r\n read() {\r\n return this._reader.read();\r\n }\r\n}\r\nexports.default = SyncProvider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst fsScandir = require(\"@nodelib/fs.scandir\");\r\nconst common = require(\"./common\");\r\nconst reader_1 = require(\"./reader\");\r\nclass SyncReader extends reader_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._scandir = fsScandir.scandirSync;\r\n this._storage = new Set();\r\n this._queue = new Set();\r\n }\r\n read() {\r\n this._pushToQueue(this._root, this._settings.basePath);\r\n this._handleQueue();\r\n return [...this._storage];\r\n }\r\n _pushToQueue(directory, base) {\r\n this._queue.add({ directory, base });\r\n }\r\n _handleQueue() {\r\n for (const item of this._queue.values()) {\r\n this._handleDirectory(item.directory, item.base);\r\n }\r\n }\r\n _handleDirectory(directory, base) {\r\n try {\r\n const entries = this._scandir(directory, this._settings.fsScandirSettings);\r\n for (const entry of entries) {\r\n this._handleEntry(entry, base);\r\n }\r\n }\r\n catch (error) {\r\n this._handleError(error);\r\n }\r\n }\r\n _handleError(error) {\r\n if (!common.isFatalError(this._settings, error)) {\r\n return;\r\n }\r\n throw error;\r\n }\r\n _handleEntry(entry, base) {\r\n const fullpath = entry.path;\r\n if (base !== undefined) {\r\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\r\n }\r\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\r\n this._pushToStorage(entry);\r\n }\r\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\r\n this._pushToQueue(fullpath, entry.path);\r\n }\r\n }\r\n _pushToStorage(entry) {\r\n this._storage.add(entry);\r\n }\r\n}\r\nexports.default = SyncReader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst fsScandir = require(\"@nodelib/fs.scandir\");\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.basePath = this._getValue(this._options.basePath, undefined);\r\n this.concurrency = this._getValue(this._options.concurrency, Infinity);\r\n this.deepFilter = this._getValue(this._options.deepFilter, null);\r\n this.entryFilter = this._getValue(this._options.entryFilter, null);\r\n this.errorFilter = this._getValue(this._options.errorFilter, null);\r\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\r\n this.fsScandirSettings = new fsScandir.Settings({\r\n followSymbolicLinks: this._options.followSymbolicLinks,\r\n fs: this._options.fs,\r\n pathSegmentSeparator: this._options.pathSegmentSeparator,\r\n stats: this._options.stats,\r\n throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink\r\n });\r\n }\r\n _getValue(option, value) {\r\n return option !== null && option !== void 0 ? option : value;\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst utils = require(\"../utils\");\r\nclass Reader {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n this._fsStatSettings = new fsStat.Settings({\r\n followSymbolicLink: this._settings.followSymbolicLinks,\r\n fs: this._settings.fs,\r\n throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks\r\n });\r\n }\r\n _getFullEntryPath(filepath) {\r\n return path.resolve(this._settings.cwd, filepath);\r\n }\r\n _makeEntry(stats, pattern) {\r\n const entry = {\r\n name: pattern,\r\n path: pattern,\r\n dirent: utils.fs.createDirentFromStats(pattern, stats)\r\n };\r\n if (this._settings.stats) {\r\n entry.stats = stats;\r\n }\r\n return entry;\r\n }\r\n _isFatalError(error) {\r\n return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;\r\n }\r\n}\r\nexports.default = Reader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst deep_1 = require(\"./filters/deep\");\r\nconst entry_1 = require(\"./filters/entry\");\r\nconst error_1 = require(\"./filters/error\");\r\nconst entry_2 = require(\"./transformers/entry\");\r\nclass Provider {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n this.errorFilter = new error_1.default(this._settings);\r\n this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());\r\n this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());\r\n this.entryTransformer = new entry_2.default(this._settings);\r\n }\r\n _getRootDirectory(task) {\r\n return path.resolve(this._settings.cwd, task.base);\r\n }\r\n _getReaderOptions(task) {\r\n const basePath = task.base === '.' ? '' : task.base;\r\n return {\r\n basePath,\r\n pathSegmentSeparator: '/',\r\n concurrency: this._settings.concurrency,\r\n deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),\r\n entryFilter: this.entryFilter.getFilter(task.positive, task.negative),\r\n errorFilter: this.errorFilter.getFilter(),\r\n followSymbolicLinks: this._settings.followSymbolicLinks,\r\n fs: this._settings.fs,\r\n stats: this._settings.stats,\r\n throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,\r\n transform: this.entryTransformer.getTransformer()\r\n };\r\n }\r\n _getMicromatchOptions() {\r\n return {\r\n dot: this._settings.dot,\r\n matchBase: this._settings.baseNameMatch,\r\n nobrace: !this._settings.braceExpansion,\r\n nocase: !this._settings.caseSensitiveMatch,\r\n noext: !this._settings.extglob,\r\n noglobstar: !this._settings.globstar,\r\n posix: true,\r\n strictSlashes: false\r\n };\r\n }\r\n}\r\nexports.default = Provider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nconst partial_1 = require(\"../matchers/partial\");\r\nclass DeepFilter {\r\n constructor(_settings, _micromatchOptions) {\r\n this._settings = _settings;\r\n this._micromatchOptions = _micromatchOptions;\r\n }\r\n getFilter(basePath, positive, negative) {\r\n const matcher = this._getMatcher(positive);\r\n const negativeRe = this._getNegativePatternsRe(negative);\r\n return (entry) => this._filter(basePath, entry, matcher, negativeRe);\r\n }\r\n _getMatcher(patterns) {\r\n return new partial_1.default(patterns, this._settings, this._micromatchOptions);\r\n }\r\n _getNegativePatternsRe(patterns) {\r\n const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern);\r\n return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions);\r\n }\r\n _filter(basePath, entry, matcher, negativeRe) {\r\n if (this._isSkippedByDeep(basePath, entry.path)) {\r\n return false;\r\n }\r\n if (this._isSkippedSymbolicLink(entry)) {\r\n return false;\r\n }\r\n const filepath = utils.path.removeLeadingDotSegment(entry.path);\r\n if (this._isSkippedByPositivePatterns(filepath, matcher)) {\r\n return false;\r\n }\r\n return this._isSkippedByNegativePatterns(filepath, negativeRe);\r\n }\r\n _isSkippedByDeep(basePath, entryPath) {\r\n /**\r\n * Avoid unnecessary depth calculations when it doesn't matter.\r\n */\r\n if (this._settings.deep === Infinity) {\r\n return false;\r\n }\r\n return this._getEntryLevel(basePath, entryPath) >= this._settings.deep;\r\n }\r\n _getEntryLevel(basePath, entryPath) {\r\n const entryPathDepth = entryPath.split('/').length;\r\n if (basePath === '') {\r\n return entryPathDepth;\r\n }\r\n const basePathDepth = basePath.split('/').length;\r\n return entryPathDepth - basePathDepth;\r\n }\r\n _isSkippedSymbolicLink(entry) {\r\n return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink();\r\n }\r\n _isSkippedByPositivePatterns(entryPath, matcher) {\r\n return !this._settings.baseNameMatch && !matcher.match(entryPath);\r\n }\r\n _isSkippedByNegativePatterns(entryPath, patternsRe) {\r\n return !utils.pattern.matchAny(entryPath, patternsRe);\r\n }\r\n}\r\nexports.default = DeepFilter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst matcher_1 = require(\"./matcher\");\r\nclass PartialMatcher extends matcher_1.default {\r\n match(filepath) {\r\n const parts = filepath.split('/');\r\n const levels = parts.length;\r\n const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels);\r\n for (const pattern of patterns) {\r\n const section = pattern.sections[0];\r\n /**\r\n * In this case, the pattern has a globstar and we must read all directories unconditionally,\r\n * but only if the level has reached the end of the first group.\r\n *\r\n * fixtures/{a,b}/**\r\n * ^ true/false ^ always true\r\n */\r\n if (!pattern.complete && levels > section.length) {\r\n return true;\r\n }\r\n const match = parts.every((part, index) => {\r\n const segment = pattern.segments[index];\r\n if (segment.dynamic && segment.patternRe.test(part)) {\r\n return true;\r\n }\r\n if (!segment.dynamic && segment.pattern === part) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (match) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\nexports.default = PartialMatcher;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass Matcher {\r\n constructor(_patterns, _settings, _micromatchOptions) {\r\n this._patterns = _patterns;\r\n this._settings = _settings;\r\n this._micromatchOptions = _micromatchOptions;\r\n this._storage = [];\r\n this._fillStorage();\r\n }\r\n _fillStorage() {\r\n /**\r\n * The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level).\r\n * So, before expand patterns with brace expansion into separated patterns.\r\n */\r\n const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns);\r\n for (const pattern of patterns) {\r\n const segments = this._getPatternSegments(pattern);\r\n const sections = this._splitSegmentsIntoSections(segments);\r\n this._storage.push({\r\n complete: sections.length <= 1,\r\n pattern,\r\n segments,\r\n sections\r\n });\r\n }\r\n }\r\n _getPatternSegments(pattern) {\r\n const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions);\r\n return parts.map((part) => {\r\n const dynamic = utils.pattern.isDynamicPattern(part, this._settings);\r\n if (!dynamic) {\r\n return {\r\n dynamic: false,\r\n pattern: part\r\n };\r\n }\r\n return {\r\n dynamic: true,\r\n pattern: part,\r\n patternRe: utils.pattern.makeRe(part, this._micromatchOptions)\r\n };\r\n });\r\n }\r\n _splitSegmentsIntoSections(segments) {\r\n return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern));\r\n }\r\n}\r\nexports.default = Matcher;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass EntryFilter {\r\n constructor(_settings, _micromatchOptions) {\r\n this._settings = _settings;\r\n this._micromatchOptions = _micromatchOptions;\r\n this.index = new Map();\r\n }\r\n getFilter(positive, negative) {\r\n const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions);\r\n const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions);\r\n return (entry) => this._filter(entry, positiveRe, negativeRe);\r\n }\r\n _filter(entry, positiveRe, negativeRe) {\r\n if (this._settings.unique && this._isDuplicateEntry(entry)) {\r\n return false;\r\n }\r\n if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {\r\n return false;\r\n }\r\n if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) {\r\n return false;\r\n }\r\n const filepath = this._settings.baseNameMatch ? entry.name : entry.path;\r\n const isMatched = this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe);\r\n if (this._settings.unique && isMatched) {\r\n this._createIndexRecord(entry);\r\n }\r\n return isMatched;\r\n }\r\n _isDuplicateEntry(entry) {\r\n return this.index.has(entry.path);\r\n }\r\n _createIndexRecord(entry) {\r\n this.index.set(entry.path, undefined);\r\n }\r\n _onlyFileFilter(entry) {\r\n return this._settings.onlyFiles && !entry.dirent.isFile();\r\n }\r\n _onlyDirectoryFilter(entry) {\r\n return this._settings.onlyDirectories && !entry.dirent.isDirectory();\r\n }\r\n _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) {\r\n if (!this._settings.absolute) {\r\n return false;\r\n }\r\n const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath);\r\n return utils.pattern.matchAny(fullpath, patternsRe);\r\n }\r\n _isMatchToPatterns(entryPath, patternsRe) {\r\n const filepath = utils.path.removeLeadingDotSegment(entryPath);\r\n return utils.pattern.matchAny(filepath, patternsRe);\r\n }\r\n}\r\nexports.default = EntryFilter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass ErrorFilter {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n }\r\n getFilter() {\r\n return (error) => this._isNonFatalError(error);\r\n }\r\n _isNonFatalError(error) {\r\n return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors;\r\n }\r\n}\r\nexports.default = ErrorFilter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass EntryTransformer {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n }\r\n getTransformer() {\r\n return (entry) => this._transform(entry);\r\n }\r\n _transform(entry) {\r\n let filepath = entry.path;\r\n if (this._settings.absolute) {\r\n filepath = utils.path.makeAbsolute(this._settings.cwd, filepath);\r\n filepath = utils.path.unixify(filepath);\r\n }\r\n if (this._settings.markDirectories && entry.dirent.isDirectory()) {\r\n filepath += '/';\r\n }\r\n if (!this._settings.objectMode) {\r\n return filepath;\r\n }\r\n return Object.assign(Object.assign({}, entry), { path: filepath });\r\n }\r\n}\r\nexports.default = EntryTransformer;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"stream\");\r\nconst stream_2 = require(\"../readers/stream\");\r\nconst provider_1 = require(\"./provider\");\r\nclass ProviderStream extends provider_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._reader = new stream_2.default(this._settings);\r\n }\r\n read(task) {\r\n const root = this._getRootDirectory(task);\r\n const options = this._getReaderOptions(task);\r\n const source = this.api(root, task, options);\r\n const destination = new stream_1.Readable({ objectMode: true, read: () => { } });\r\n source\r\n .once('error', (error) => destination.emit('error', error))\r\n .on('data', (entry) => destination.emit('data', options.transform(entry)))\r\n .once('end', () => destination.emit('end'));\r\n destination\r\n .once('close', () => source.destroy());\r\n return destination;\r\n }\r\n api(root, task, options) {\r\n if (task.dynamic) {\r\n return this._reader.dynamic(root, options);\r\n }\r\n return this._reader.static(task.patterns, options);\r\n }\r\n}\r\nexports.default = ProviderStream;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst sync_1 = require(\"../readers/sync\");\r\nconst provider_1 = require(\"./provider\");\r\nclass ProviderSync extends provider_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._reader = new sync_1.default(this._settings);\r\n }\r\n read(task) {\r\n const root = this._getRootDirectory(task);\r\n const options = this._getReaderOptions(task);\r\n const entries = this.api(root, task, options);\r\n return entries.map(options.transform);\r\n }\r\n api(root, task, options) {\r\n if (task.dynamic) {\r\n return this._reader.dynamic(root, options);\r\n }\r\n return this._reader.static(task.patterns, options);\r\n }\r\n}\r\nexports.default = ProviderSync;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst fsWalk = require(\"@nodelib/fs.walk\");\r\nconst reader_1 = require(\"./reader\");\r\nclass ReaderSync extends reader_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._walkSync = fsWalk.walkSync;\r\n this._statSync = fsStat.statSync;\r\n }\r\n dynamic(root, options) {\r\n return this._walkSync(root, options);\r\n }\r\n static(patterns, options) {\r\n const entries = [];\r\n for (const pattern of patterns) {\r\n const filepath = this._getFullEntryPath(pattern);\r\n const entry = this._getEntry(filepath, pattern, options);\r\n if (entry === null || !options.entryFilter(entry)) {\r\n continue;\r\n }\r\n entries.push(entry);\r\n }\r\n return entries;\r\n }\r\n _getEntry(filepath, pattern, options) {\r\n try {\r\n const stats = this._getStat(filepath);\r\n return this._makeEntry(stats, pattern);\r\n }\r\n catch (error) {\r\n if (options.errorFilter(error)) {\r\n return null;\r\n }\r\n throw error;\r\n }\r\n }\r\n _getStat(filepath) {\r\n return this._statSync(filepath, this._fsStatSettings);\r\n }\r\n}\r\nexports.default = ReaderSync;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;\r\nconst fs = require(\"fs\");\r\nconst os = require(\"os\");\r\n/**\r\n * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero.\r\n * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107\r\n */\r\nconst CPU_COUNT = Math.max(os.cpus().length, 1);\r\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = {\r\n lstat: fs.lstat,\r\n lstatSync: fs.lstatSync,\r\n stat: fs.stat,\r\n statSync: fs.statSync,\r\n readdir: fs.readdir,\r\n readdirSync: fs.readdirSync\r\n};\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.absolute = this._getValue(this._options.absolute, false);\r\n this.baseNameMatch = this._getValue(this._options.baseNameMatch, false);\r\n this.braceExpansion = this._getValue(this._options.braceExpansion, true);\r\n this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true);\r\n this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT);\r\n this.cwd = this._getValue(this._options.cwd, process.cwd());\r\n this.deep = this._getValue(this._options.deep, Infinity);\r\n this.dot = this._getValue(this._options.dot, false);\r\n this.extglob = this._getValue(this._options.extglob, true);\r\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true);\r\n this.fs = this._getFileSystemMethods(this._options.fs);\r\n this.globstar = this._getValue(this._options.globstar, true);\r\n this.ignore = this._getValue(this._options.ignore, []);\r\n this.markDirectories = this._getValue(this._options.markDirectories, false);\r\n this.objectMode = this._getValue(this._options.objectMode, false);\r\n this.onlyDirectories = this._getValue(this._options.onlyDirectories, false);\r\n this.onlyFiles = this._getValue(this._options.onlyFiles, true);\r\n this.stats = this._getValue(this._options.stats, false);\r\n this.suppressErrors = this._getValue(this._options.suppressErrors, false);\r\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false);\r\n this.unique = this._getValue(this._options.unique, true);\r\n if (this.onlyDirectories) {\r\n this.onlyFiles = false;\r\n }\r\n if (this.stats) {\r\n this.objectMode = true;\r\n }\r\n }\r\n _getValue(option, value) {\r\n return option === undefined ? value : option;\r\n }\r\n _getFileSystemMethods(methods = {}) {\r\n return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nconst taskManager = require(\"./managers/tasks\");\r\nconst async_1 = require(\"./providers/async\");\r\nconst stream_1 = require(\"./providers/stream\");\r\nconst sync_1 = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nconst utils = require(\"./utils\");\r\nasync function FastGlob(source, options) {\r\n assertPatternsInput(source);\r\n const works = getWorks(source, async_1.default, options);\r\n const result = await Promise.all(works);\r\n return utils.array.flatten(result);\r\n}\r\n// https://github.com/typescript-eslint/typescript-eslint/issues/60\r\n// eslint-disable-next-line no-redeclare\r\n(function (FastGlob) {\r\n function sync(source, options) {\r\n assertPatternsInput(source);\r\n const works = getWorks(source, sync_1.default, options);\r\n return utils.array.flatten(works);\r\n }\r\n FastGlob.sync = sync;\r\n function stream(source, options) {\r\n assertPatternsInput(source);\r\n const works = getWorks(source, stream_1.default, options);\r\n /**\r\n * The stream returned by the provider cannot work with an asynchronous iterator.\r\n * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams.\r\n * This affects performance (+25%). I don't see best solution right now.\r\n */\r\n return utils.stream.merge(works);\r\n }\r\n FastGlob.stream = stream;\r\n function generateTasks(source, options) {\r\n assertPatternsInput(source);\r\n const patterns = [].concat(source);\r\n const settings = new settings_1.default(options);\r\n return taskManager.generate(patterns, settings);\r\n }\r\n FastGlob.generateTasks = generateTasks;\r\n function isDynamicPattern(source, options) {\r\n assertPatternsInput(source);\r\n const settings = new settings_1.default(options);\r\n return utils.pattern.isDynamicPattern(source, settings);\r\n }\r\n FastGlob.isDynamicPattern = isDynamicPattern;\r\n function escapePath(source) {\r\n assertPatternsInput(source);\r\n return utils.path.escape(source);\r\n }\r\n FastGlob.escapePath = escapePath;\r\n})(FastGlob || (FastGlob = {}));\r\nfunction getWorks(source, _Provider, options) {\r\n const patterns = [].concat(source);\r\n const settings = new settings_1.default(options);\r\n const tasks = taskManager.generate(patterns, settings);\r\n const provider = new _Provider(settings);\r\n return tasks.map(provider.read, provider);\r\n}\r\nfunction assertPatternsInput(input) {\r\n const source = [].concat(input);\r\n const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item));\r\n if (!isValidSource) {\r\n throw new TypeError('Patterns must be a string (non empty) or an array of strings');\r\n }\r\n}\r\nmodule.exports = FastGlob;\r\n","'use strict';\n\nconst { EventEmitter } = require('events');\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst readdirp = require('readdirp');\nconst anymatch = require('anymatch').default;\nconst globParent = require('glob-parent');\nconst isGlob = require('is-glob');\nconst braces = require('braces');\nconst normalizePath = require('normalize-path');\n\nconst NodeFsHandler = require('./lib/nodefs-handler');\nconst FsEventsHandler = require('./lib/fsevents-handler');\nconst {\n EV_ALL,\n EV_READY,\n EV_ADD,\n EV_CHANGE,\n EV_UNLINK,\n EV_ADD_DIR,\n EV_UNLINK_DIR,\n EV_RAW,\n EV_ERROR,\n\n STR_CLOSE,\n STR_END,\n\n BACK_SLASH_RE,\n DOUBLE_SLASH_RE,\n SLASH_OR_BACK_SLASH_RE,\n DOT_RE,\n REPLACER_RE,\n\n SLASH,\n SLASH_SLASH,\n BRACE_START,\n BANG,\n ONE_DOT,\n TWO_DOTS,\n GLOBSTAR,\n SLASH_GLOBSTAR,\n ANYMATCH_OPTS,\n STRING_TYPE,\n FUNCTION_TYPE,\n EMPTY_STR,\n EMPTY_FN,\n\n isWindows,\n isMacos\n} = require('./lib/constants');\n\nconst stat = promisify(fs.stat);\nconst readdir = promisify(fs.readdir);\n\n/**\n * @typedef {String} Path\n * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName\n * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType\n */\n\n/**\n *\n * @typedef {Object} WatchHelpers\n * @property {Boolean} followSymlinks\n * @property {'stat'|'lstat'} statMethod\n * @property {Path} path\n * @property {Path} watchPath\n * @property {Function} entryPath\n * @property {Boolean} hasGlob\n * @property {Object} globFilter\n * @property {Function} filterPath\n * @property {Function} filterDir\n */\n\nconst arrify = (value = []) => Array.isArray(value) ? value : [value];\nconst flatten = (list, result = []) => {\n list.forEach(item => {\n if (Array.isArray(item)) {\n flatten(item, result);\n } else {\n result.push(item);\n }\n });\n return result;\n};\n\nconst unifyPaths = (paths_) => {\n /**\n * @type {Array}\n */\n const paths = flatten(arrify(paths_));\n if (!paths.every(p => typeof p === STRING_TYPE)) {\n throw new TypeError(`Non-string provided as watch path: ${paths}`);\n }\n return paths.map(normalizePathToUnix);\n};\n\n// If SLASH_SLASH occurs at the beginning of path, it is not replaced\n// because \"//StoragePC/DrivePool/Movies\" is a valid network path\nconst toUnix = (string) => {\n let str = string.replace(BACK_SLASH_RE, SLASH);\n let prepend = false;\n if (str.startsWith(SLASH_SLASH)) {\n prepend = true;\n }\n while (str.match(DOUBLE_SLASH_RE)) {\n str = str.replace(DOUBLE_SLASH_RE, SLASH);\n }\n if (prepend) {\n str = SLASH + str;\n }\n return str;\n};\n\n// Our version of upath.normalize\n// TODO: this is not equal to path-normalize module - investigate why\nconst normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path)));\n\nconst normalizeIgnored = (cwd = EMPTY_STR) => (path) => {\n if (typeof path !== STRING_TYPE) return path;\n return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path));\n};\n\nconst getAbsolutePath = (path, cwd) => {\n if (sysPath.isAbsolute(path)) {\n return path;\n }\n if (path.startsWith(BANG)) {\n return BANG + sysPath.join(cwd, path.slice(1));\n }\n return sysPath.join(cwd, path);\n};\n\nconst undef = (opts, key) => opts[key] === undefined;\n\n/**\n * Directory entry.\n * @property {Path} path\n * @property {Set} items\n */\nclass DirEntry {\n /**\n * @param {Path} dir\n * @param {Function} removeWatcher\n */\n constructor(dir, removeWatcher) {\n this.path = dir;\n this._removeWatcher = removeWatcher;\n /** @type {Set} */\n this.items = new Set();\n }\n\n add(item) {\n const {items} = this;\n if (!items) return;\n if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item);\n }\n\n async remove(item) {\n const {items} = this;\n if (!items) return;\n items.delete(item);\n if (items.size > 0) return;\n\n const dir = this.path;\n try {\n await readdir(dir);\n } catch (err) {\n if (this._removeWatcher) {\n this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir));\n }\n }\n }\n\n has(item) {\n const {items} = this;\n if (!items) return;\n return items.has(item);\n }\n\n /**\n * @returns {Array}\n */\n getChildren() {\n const {items} = this;\n if (!items) return;\n return [...items.values()];\n }\n\n dispose() {\n this.items.clear();\n delete this.path;\n delete this._removeWatcher;\n delete this.items;\n Object.freeze(this);\n }\n}\n\nconst STAT_METHOD_F = 'stat';\nconst STAT_METHOD_L = 'lstat';\nclass WatchHelper {\n constructor(path, watchPath, follow, fsw) {\n this.fsw = fsw;\n this.path = path = path.replace(REPLACER_RE, EMPTY_STR);\n this.watchPath = watchPath;\n this.fullWatchPath = sysPath.resolve(watchPath);\n this.hasGlob = watchPath !== path;\n /** @type {object|boolean} */\n if (path === EMPTY_STR) this.hasGlob = false;\n this.globSymlink = this.hasGlob && follow ? undefined : false;\n this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false;\n this.dirParts = this.getDirParts(path);\n this.dirParts.forEach((parts) => {\n if (parts.length > 1) parts.pop();\n });\n this.followSymlinks = follow;\n this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L;\n }\n\n checkGlobSymlink(entry) {\n // only need to resolve once\n // first entry should always have entry.parentDir === EMPTY_STR\n if (this.globSymlink === undefined) {\n this.globSymlink = entry.fullParentDir === this.fullWatchPath ?\n false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath};\n }\n\n if (this.globSymlink) {\n return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath);\n }\n\n return entry.fullPath;\n }\n\n entryPath(entry) {\n return sysPath.join(this.watchPath,\n sysPath.relative(this.watchPath, this.checkGlobSymlink(entry))\n );\n }\n\n filterPath(entry) {\n const {stats} = entry;\n if (stats && stats.isSymbolicLink()) return this.filterDir(entry);\n const resolvedPath = this.entryPath(entry);\n const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE ?\n this.globFilter(resolvedPath) : true;\n return matchesGlob &&\n this.fsw._isntIgnored(resolvedPath, stats) &&\n this.fsw._hasReadPermissions(stats);\n }\n\n getDirParts(path) {\n if (!this.hasGlob) return [];\n const parts = [];\n const expandedPath = path.includes(BRACE_START) ? braces.expand(path) : [path];\n expandedPath.forEach((path) => {\n parts.push(sysPath.relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE));\n });\n return parts;\n }\n\n filterDir(entry) {\n if (this.hasGlob) {\n const entryParts = this.getDirParts(this.checkGlobSymlink(entry));\n let globstar = false;\n this.unmatchedGlob = !this.dirParts.some((parts) => {\n return parts.every((part, i) => {\n if (part === GLOBSTAR) globstar = true;\n return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS);\n });\n });\n }\n return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats);\n }\n}\n\n/**\n * Watches files & directories for changes. Emitted events:\n * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error`\n *\n * new FSWatcher()\n * .add(directories)\n * .on('add', path => log('File', path, 'was added'))\n */\nclass FSWatcher extends EventEmitter {\n// Not indenting methods for history sake; for now.\nconstructor(_opts) {\n super();\n\n const opts = {};\n if (_opts) Object.assign(opts, _opts); // for frozen objects\n\n /** @type {Map} */\n this._watched = new Map();\n /** @type {Map} */\n this._closers = new Map();\n /** @type {Set} */\n this._ignoredPaths = new Set();\n\n /** @type {Map} */\n this._throttled = new Map();\n\n /** @type {Map} */\n this._symlinkPaths = new Map();\n\n this._streams = new Set();\n this.closed = false;\n\n // Set up default options.\n if (undef(opts, 'persistent')) opts.persistent = true;\n if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false;\n if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false;\n if (undef(opts, 'interval')) opts.interval = 100;\n if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300;\n if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false;\n opts.enableBinaryInterval = opts.binaryInterval !== opts.interval;\n\n // Enable fsevents on OS X when polling isn't explicitly enabled.\n if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling;\n\n // If we can't use fsevents, ensure the options reflect it's disabled.\n const canUseFsEvents = FsEventsHandler.canUse();\n if (!canUseFsEvents) opts.useFsEvents = false;\n\n // Use polling on Mac if not using fsevents.\n // Other platforms use non-polling fs_watch.\n if (undef(opts, 'usePolling') && !opts.useFsEvents) {\n opts.usePolling = isMacos;\n }\n\n // Global override (useful for end-developers that need to force polling for all\n // instances of chokidar, regardless of usage/dependency depth)\n const envPoll = process.env.CHOKIDAR_USEPOLLING;\n if (envPoll !== undefined) {\n const envLower = envPoll.toLowerCase();\n\n if (envLower === 'false' || envLower === '0') {\n opts.usePolling = false;\n } else if (envLower === 'true' || envLower === '1') {\n opts.usePolling = true;\n } else {\n opts.usePolling = !!envLower;\n }\n }\n const envInterval = process.env.CHOKIDAR_INTERVAL;\n if (envInterval) {\n opts.interval = Number.parseInt(envInterval, 10);\n }\n\n // Editor atomic write normalization enabled by default with fs.watch\n if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents;\n if (opts.atomic) this._pendingUnlinks = new Map();\n\n if (undef(opts, 'followSymlinks')) opts.followSymlinks = true;\n\n if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false;\n if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {};\n const awf = opts.awaitWriteFinish;\n if (awf) {\n if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000;\n if (!awf.pollInterval) awf.pollInterval = 100;\n this._pendingWrites = new Map();\n }\n if (opts.ignored) opts.ignored = arrify(opts.ignored);\n\n let readyCalls = 0;\n this._emitReady = () => {\n readyCalls++;\n if (readyCalls >= this._readyCount) {\n this._emitReady = EMPTY_FN;\n this._readyEmitted = true;\n // use process.nextTick to allow time for listener to be bound\n process.nextTick(() => this.emit(EV_READY));\n }\n };\n this._emitRaw = (...args) => this.emit(EV_RAW, ...args);\n this._readyEmitted = false;\n this.options = opts;\n\n // Initialize with proper watcher.\n if (opts.useFsEvents) {\n this._fsEventsHandler = new FsEventsHandler(this);\n } else {\n this._nodeFsHandler = new NodeFsHandler(this);\n }\n\n // You’re frozen when your heart’s not open.\n Object.freeze(opts);\n}\n\n// Public methods\n\n/**\n * Adds paths to be watched on an existing FSWatcher instance\n * @param {Path|Array} paths_\n * @param {String=} _origAdd private; for handling non-existent paths to be watched\n * @param {Boolean=} _internal private; indicates a non-user add\n * @returns {FSWatcher} for chaining\n */\nadd(paths_, _origAdd, _internal) {\n const {cwd, disableGlobbing} = this.options;\n this.closed = false;\n let paths = unifyPaths(paths_);\n if (cwd) {\n paths = paths.map((path) => {\n const absPath = getAbsolutePath(path, cwd);\n\n // Check `path` instead of `absPath` because the cwd portion can't be a glob\n if (disableGlobbing || !isGlob(path)) {\n return absPath;\n }\n return normalizePath(absPath);\n });\n }\n\n // set aside negated glob strings\n paths = paths.filter((path) => {\n if (path.startsWith(BANG)) {\n this._ignoredPaths.add(path.slice(1));\n return false;\n }\n\n // if a path is being added that was previously ignored, stop ignoring it\n this._ignoredPaths.delete(path);\n this._ignoredPaths.delete(path + SLASH_GLOBSTAR);\n\n // reset the cached userIgnored anymatch fn\n // to make ignoredPaths changes effective\n this._userIgnored = undefined;\n\n return true;\n });\n\n if (this.options.useFsEvents && this._fsEventsHandler) {\n if (!this._readyCount) this._readyCount = paths.length;\n if (this.options.persistent) this._readyCount *= 2;\n paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path));\n } else {\n if (!this._readyCount) this._readyCount = 0;\n this._readyCount += paths.length;\n Promise.all(\n paths.map(async path => {\n const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd);\n if (res) this._emitReady();\n return res;\n })\n ).then(results => {\n if (this.closed) return;\n results.filter(item => item).forEach(item => {\n this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item));\n });\n });\n }\n\n return this;\n}\n\n/**\n * Close watchers or start ignoring events from specified paths.\n * @param {Path|Array} paths_ - string or array of strings, file/directory paths and/or globs\n * @returns {FSWatcher} for chaining\n*/\nunwatch(paths_) {\n if (this.closed) return this;\n const paths = unifyPaths(paths_);\n const {cwd} = this.options;\n\n paths.forEach((path) => {\n // convert to absolute path unless relative path already matches\n if (!sysPath.isAbsolute(path) && !this._closers.has(path)) {\n if (cwd) path = sysPath.join(cwd, path);\n path = sysPath.resolve(path);\n }\n\n this._closePath(path);\n\n this._ignoredPaths.add(path);\n if (this._watched.has(path)) {\n this._ignoredPaths.add(path + SLASH_GLOBSTAR);\n }\n\n // reset the cached userIgnored anymatch fn\n // to make ignoredPaths changes effective\n this._userIgnored = undefined;\n });\n\n return this;\n}\n\n/**\n * Close watchers and remove all listeners from watched paths.\n * @returns {Promise}.\n*/\nclose() {\n if (this.closed) return this._closePromise;\n this.closed = true;\n\n // Memory management.\n this.removeAllListeners();\n const closers = [];\n this._closers.forEach(closerList => closerList.forEach(closer => {\n const promise = closer();\n if (promise instanceof Promise) closers.push(promise);\n }));\n this._streams.forEach(stream => stream.destroy());\n this._userIgnored = undefined;\n this._readyCount = 0;\n this._readyEmitted = false;\n this._watched.forEach(dirent => dirent.dispose());\n ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => {\n this[`_${key}`].clear();\n });\n\n this._closePromise = closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve();\n return this._closePromise;\n}\n\n/**\n * Expose list of watched paths\n * @returns {Object} for chaining\n*/\ngetWatched() {\n const watchList = {};\n this._watched.forEach((entry, dir) => {\n const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir;\n watchList[key || ONE_DOT] = entry.getChildren().sort();\n });\n return watchList;\n}\n\nemitWithAll(event, args) {\n this.emit(...args);\n if (event !== EV_ERROR) this.emit(EV_ALL, ...args);\n}\n\n// Common helpers\n// --------------\n\n/**\n * Normalize and emit events.\n * Calling _emit DOES NOT MEAN emit() would be called!\n * @param {EventName} event Type of event\n * @param {Path} path File or directory path\n * @param {*=} val1 arguments to be passed with event\n * @param {*=} val2\n * @param {*=} val3\n * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\nasync _emit(event, path, val1, val2, val3) {\n if (this.closed) return;\n\n const opts = this.options;\n if (isWindows) path = sysPath.normalize(path);\n if (opts.cwd) path = sysPath.relative(opts.cwd, path);\n /** @type Array */\n const args = [event, path];\n if (val3 !== undefined) args.push(val1, val2, val3);\n else if (val2 !== undefined) args.push(val1, val2);\n else if (val1 !== undefined) args.push(val1);\n\n const awf = opts.awaitWriteFinish;\n let pw;\n if (awf && (pw = this._pendingWrites.get(path))) {\n pw.lastChange = new Date();\n return this;\n }\n\n if (opts.atomic) {\n if (event === EV_UNLINK) {\n this._pendingUnlinks.set(path, args);\n setTimeout(() => {\n this._pendingUnlinks.forEach((entry, path) => {\n this.emit(...entry);\n this.emit(EV_ALL, ...entry);\n this._pendingUnlinks.delete(path);\n });\n }, typeof opts.atomic === 'number' ? opts.atomic : 100);\n return this;\n }\n if (event === EV_ADD && this._pendingUnlinks.has(path)) {\n event = args[0] = EV_CHANGE;\n this._pendingUnlinks.delete(path);\n }\n }\n\n if (awf && (event === EV_ADD || event === EV_CHANGE) && this._readyEmitted) {\n const awfEmit = (err, stats) => {\n if (err) {\n event = args[0] = EV_ERROR;\n args[1] = err;\n this.emitWithAll(event, args);\n } else if (stats) {\n // if stats doesn't exist the file must have been deleted\n if (args.length > 2) {\n args[2] = stats;\n } else {\n args.push(stats);\n }\n this.emitWithAll(event, args);\n }\n };\n\n this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit);\n return this;\n }\n\n if (event === EV_CHANGE) {\n const isThrottled = !this._throttle(EV_CHANGE, path, 50);\n if (isThrottled) return this;\n }\n\n if (opts.alwaysStat && val1 === undefined &&\n (event === EV_ADD || event === EV_ADD_DIR || event === EV_CHANGE)\n ) {\n const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path;\n let stats;\n try {\n stats = await stat(fullPath);\n } catch (err) {}\n // Suppress event when fs_stat fails, to avoid sending undefined 'stat'\n if (!stats || this.closed) return;\n args.push(stats);\n }\n this.emitWithAll(event, args);\n\n return this;\n}\n\n/**\n * Common handler for errors\n * @param {Error} error\n * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\n_handleError(error) {\n const code = error && error.code;\n if (error && code !== 'ENOENT' && code !== 'ENOTDIR' &&\n (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES'))\n ) {\n this.emit(EV_ERROR, error);\n }\n return error || this.closed;\n}\n\n/**\n * Helper utility for throttling\n * @param {ThrottleType} actionType type being throttled\n * @param {Path} path being acted upon\n * @param {Number} timeout duration of time to suppress duplicate actions\n * @returns {Object|false} tracking object or false if action should be suppressed\n */\n_throttle(actionType, path, timeout) {\n if (!this._throttled.has(actionType)) {\n this._throttled.set(actionType, new Map());\n }\n\n /** @type {Map} */\n const action = this._throttled.get(actionType);\n /** @type {Object} */\n const actionPath = action.get(path);\n\n if (actionPath) {\n actionPath.count++;\n return false;\n }\n\n let timeoutObject;\n const clear = () => {\n const item = action.get(path);\n const count = item ? item.count : 0;\n action.delete(path);\n clearTimeout(timeoutObject);\n if (item) clearTimeout(item.timeoutObject);\n return count;\n };\n timeoutObject = setTimeout(clear, timeout);\n const thr = {timeoutObject, clear, count: 0};\n action.set(path, thr);\n return thr;\n}\n\n_incrReadyCount() {\n return this._readyCount++;\n}\n\n/**\n * Awaits write operation to finish.\n * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback.\n * @param {Path} path being acted upon\n * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished\n * @param {EventName} event\n * @param {Function} awfEmit Callback to be called when ready for event to be emitted.\n */\n_awaitWriteFinish(path, threshold, event, awfEmit) {\n let timeoutHandler;\n\n let fullPath = path;\n if (this.options.cwd && !sysPath.isAbsolute(path)) {\n fullPath = sysPath.join(this.options.cwd, path);\n }\n\n const now = new Date();\n\n const awaitWriteFinish = (prevStat) => {\n fs.stat(fullPath, (err, curStat) => {\n if (err || !this._pendingWrites.has(path)) {\n if (err && err.code !== 'ENOENT') awfEmit(err);\n return;\n }\n\n const now = Number(new Date());\n\n if (prevStat && curStat.size !== prevStat.size) {\n this._pendingWrites.get(path).lastChange = now;\n }\n const pw = this._pendingWrites.get(path);\n const df = now - pw.lastChange;\n\n if (df >= threshold) {\n this._pendingWrites.delete(path);\n awfEmit(undefined, curStat);\n } else {\n timeoutHandler = setTimeout(\n awaitWriteFinish,\n this.options.awaitWriteFinish.pollInterval,\n curStat\n );\n }\n });\n };\n\n if (!this._pendingWrites.has(path)) {\n this._pendingWrites.set(path, {\n lastChange: now,\n cancelWait: () => {\n this._pendingWrites.delete(path);\n clearTimeout(timeoutHandler);\n return event;\n }\n });\n timeoutHandler = setTimeout(\n awaitWriteFinish,\n this.options.awaitWriteFinish.pollInterval\n );\n }\n}\n\n_getGlobIgnored() {\n return [...this._ignoredPaths.values()];\n}\n\n/**\n * Determines whether user has asked to ignore this path.\n * @param {Path} path filepath or dir\n * @param {fs.Stats=} stats result of fs.stat\n * @returns {Boolean}\n */\n_isIgnored(path, stats) {\n if (this.options.atomic && DOT_RE.test(path)) return true;\n if (!this._userIgnored) {\n const {cwd} = this.options;\n const ign = this.options.ignored;\n\n const ignored = ign && ign.map(normalizeIgnored(cwd));\n const paths = arrify(ignored)\n .filter((path) => typeof path === STRING_TYPE && !isGlob(path))\n .map((path) => path + SLASH_GLOBSTAR);\n const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths);\n this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS);\n }\n\n return this._userIgnored([path, stats]);\n}\n\n_isntIgnored(path, stat) {\n return !this._isIgnored(path, stat);\n}\n\n/**\n * Provides a set of common helpers and properties relating to symlink and glob handling.\n * @param {Path} path file, directory, or glob pattern being watched\n * @param {Number=} depth at any depth > 0, this isn't a glob\n * @returns {WatchHelper} object containing helpers for this path\n */\n_getWatchHelpers(path, depth) {\n const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path);\n const follow = this.options.followSymlinks;\n\n return new WatchHelper(path, watchPath, follow, this);\n}\n\n// Directory helpers\n// -----------------\n\n/**\n * Provides directory tracking objects\n * @param {String} directory path of the directory\n * @returns {DirEntry} the directory's tracking object\n */\n_getWatchedDir(directory) {\n if (!this._boundRemove) this._boundRemove = this._remove.bind(this);\n const dir = sysPath.resolve(directory);\n if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove));\n return this._watched.get(dir);\n}\n\n// File helpers\n// ------------\n\n/**\n * Check for read permissions.\n * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405\n * @param {fs.Stats} stats - object, result of fs_stat\n * @returns {Boolean} indicates whether the file can be read\n*/\n_hasReadPermissions(stats) {\n if (this.options.ignorePermissionErrors) return true;\n\n // stats.mode may be bigint\n const md = stats && Number.parseInt(stats.mode, 10);\n const st = md & 0o777;\n const it = Number.parseInt(st.toString(8)[0], 10);\n return Boolean(4 & it);\n}\n\n/**\n * Handles emitting unlink events for\n * files and directories, and via recursion, for\n * files and directories within directories that are unlinked\n * @param {String} directory within which the following item is located\n * @param {String} item base path of item/directory\n * @returns {void}\n*/\n_remove(directory, item, isDirectory) {\n // if what is being deleted is a directory, get that directory's paths\n // for recursive deleting and cleaning of watched object\n // if it is not a directory, nestedDirectoryChildren will be empty array\n const path = sysPath.join(directory, item);\n const fullPath = sysPath.resolve(path);\n isDirectory = isDirectory != null\n ? isDirectory\n : this._watched.has(path) || this._watched.has(fullPath);\n\n // prevent duplicate handling in case of arriving here nearly simultaneously\n // via multiple paths (such as _handleFile and _handleDir)\n if (!this._throttle('remove', path, 100)) return;\n\n // if the only watched file is removed, watch for its return\n if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) {\n this.add(directory, item, true);\n }\n\n // This will create a new entry in the watched object in either case\n // so we got to do the directory check beforehand\n const wp = this._getWatchedDir(path);\n const nestedDirectoryChildren = wp.getChildren();\n\n // Recursively remove children directories / files.\n nestedDirectoryChildren.forEach(nested => this._remove(path, nested));\n\n // Check if item was on the watched list and remove it\n const parent = this._getWatchedDir(directory);\n const wasTracked = parent.has(item);\n parent.remove(item);\n\n // Fixes issue #1042 -> Relative paths were detected and added as symlinks\n // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612),\n // but never removed from the map in case the path was deleted.\n // This leads to an incorrect state if the path was recreated:\n // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553\n if (this._symlinkPaths.has(fullPath)) {\n this._symlinkPaths.delete(fullPath);\n }\n\n // If we wait for this file to be fully written, cancel the wait.\n let relPath = path;\n if (this.options.cwd) relPath = sysPath.relative(this.options.cwd, path);\n if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) {\n const event = this._pendingWrites.get(relPath).cancelWait();\n if (event === EV_ADD) return;\n }\n\n // The Entry will either be a directory that just got removed\n // or a bogus entry to a file, in either case we have to remove it\n this._watched.delete(path);\n this._watched.delete(fullPath);\n const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK;\n if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path);\n\n // Avoid conflicts if we later create another file with the same name\n if (!this.options.useFsEvents) {\n this._closePath(path);\n }\n}\n\n/**\n * Closes all watchers for a path\n * @param {Path} path\n */\n_closePath(path) {\n this._closeFile(path)\n const dir = sysPath.dirname(path);\n this._getWatchedDir(dir).remove(sysPath.basename(path));\n}\n\n/**\n * Closes only file-specific watchers\n * @param {Path} path\n */\n_closeFile(path) {\n const closers = this._closers.get(path);\n if (!closers) return;\n closers.forEach(closer => closer());\n this._closers.delete(path);\n}\n\n/**\n *\n * @param {Path} path\n * @param {Function} closer\n */\n_addPathCloser(path, closer) {\n if (!closer) return;\n let list = this._closers.get(path);\n if (!list) {\n list = [];\n this._closers.set(path, list);\n }\n list.push(closer);\n}\n\n_readdirp(root, opts) {\n if (this.closed) return;\n const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts};\n let stream = readdirp(root, options);\n this._streams.add(stream);\n stream.once(STR_CLOSE, () => {\n stream = undefined;\n });\n stream.once(STR_END, () => {\n if (stream) {\n this._streams.delete(stream);\n stream = undefined;\n }\n });\n return stream;\n}\n\n}\n\n// Export FSWatcher class\nexports.FSWatcher = FSWatcher;\n\n/**\n * Instantiates watcher with paths to be tracked.\n * @param {String|Array} paths file/directory paths and/or globs\n * @param {Object=} options chokidar opts\n * @returns an instance of FSWatcher for chaining.\n */\nconst watch = (paths, options) => {\n const watcher = new FSWatcher(options);\n watcher.add(paths);\n return watcher;\n};\n\nexports.watch = watch;\n","'use strict';\n\nconst fs = require('fs');\nconst { Readable } = require('stream');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst picomatch = require('picomatch');\n\nconst readdir = promisify(fs.readdir);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\n/**\n * @typedef {Object} EntryInfo\n * @property {String} path\n * @property {String} fullPath\n * @property {fs.Stats=} stats\n * @property {fs.Dirent=} dirent\n * @property {String} basename\n */\n\nconst BANG = '!';\nconst NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP']);\nconst FILE_TYPE = 'files';\nconst DIR_TYPE = 'directories';\nconst FILE_DIR_TYPE = 'files_directories';\nconst EVERYTHING_TYPE = 'all';\nconst ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE];\n\nconst isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code);\n\nconst normalizeFilter = filter => {\n if (filter === undefined) return;\n if (typeof filter === 'function') return filter;\n\n if (typeof filter === 'string') {\n const glob = picomatch(filter.trim());\n return entry => glob(entry.basename);\n }\n\n if (Array.isArray(filter)) {\n const positive = [];\n const negative = [];\n for (const item of filter) {\n const trimmed = item.trim();\n if (trimmed.charAt(0) === BANG) {\n negative.push(picomatch(trimmed.slice(1)));\n } else {\n positive.push(picomatch(trimmed));\n }\n }\n\n if (negative.length > 0) {\n if (positive.length > 0) {\n return entry =>\n positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename));\n }\n return entry => !negative.some(f => f(entry.basename));\n }\n return entry => positive.some(f => f(entry.basename));\n }\n};\n\nclass ReaddirpStream extends Readable {\n static get defaultOptions() {\n return {\n root: '.',\n /* eslint-disable no-unused-vars */\n fileFilter: (path) => true,\n directoryFilter: (path) => true,\n /* eslint-enable no-unused-vars */\n type: FILE_TYPE,\n lstat: false,\n depth: 2147483648,\n alwaysStat: false\n };\n }\n\n constructor(options = {}) {\n super({\n objectMode: true,\n autoDestroy: true,\n highWaterMark: options.highWaterMark || 4096\n });\n const opts = { ...ReaddirpStream.defaultOptions, ...options };\n const { root, type } = opts;\n\n this._fileFilter = normalizeFilter(opts.fileFilter);\n this._directoryFilter = normalizeFilter(opts.directoryFilter);\n\n const statMethod = opts.lstat ? lstat : stat;\n // Use bigint stats if it's windows and stat() supports options (node 10+).\n if (process.platform === 'win32' && stat.length === 3) {\n this._stat = path => statMethod(path, { bigint: true });\n } else {\n this._stat = statMethod;\n }\n\n this._maxDepth = opts.depth;\n this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n this._wantsEverything = type === EVERYTHING_TYPE;\n this._root = sysPath.resolve(root);\n this._isDirent = ('Dirent' in fs) && !opts.alwaysStat;\n this._statsProp = this._isDirent ? 'dirent' : 'stats';\n this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent };\n\n // Launch stream with one parent, the root dir.\n this.parents = [this._exploreDir(root, 1)];\n this.reading = false;\n this.parent = undefined;\n }\n\n async _read(batch) {\n if (this.reading) return;\n this.reading = true;\n\n try {\n while (!this.destroyed && batch > 0) {\n const { path, depth, files = [] } = this.parent || {};\n\n if (files.length > 0) {\n const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path));\n for (const entry of await Promise.all(slice)) {\n if (this.destroyed) return;\n\n const entryType = await this._getEntryType(entry);\n if (entryType === 'directory' && this._directoryFilter(entry)) {\n if (depth <= this._maxDepth) {\n this.parents.push(this._exploreDir(entry.fullPath, depth + 1));\n }\n\n if (this._wantsDir) {\n this.push(entry);\n batch--;\n }\n } else if ((entryType === 'file' || this._includeAsFile(entry)) && this._fileFilter(entry)) {\n if (this._wantsFile) {\n this.push(entry);\n batch--;\n }\n }\n }\n } else {\n const parent = this.parents.pop();\n if (!parent) {\n this.push(null);\n break;\n }\n this.parent = await parent;\n if (this.destroyed) return;\n }\n }\n } catch (error) {\n this.destroy(error);\n } finally {\n this.reading = false;\n }\n }\n\n async _exploreDir(path, depth) {\n let files;\n try {\n files = await readdir(path, this._rdOptions);\n } catch (error) {\n this._onError(error);\n }\n return {files, depth, path};\n }\n\n async _formatEntry(dirent, path) {\n let entry;\n try {\n const basename = this._isDirent ? dirent.name : dirent;\n const fullPath = sysPath.resolve(sysPath.join(path, basename));\n entry = {path: sysPath.relative(this._root, fullPath), fullPath, basename};\n entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);\n } catch (err) {\n this._onError(err);\n }\n return entry;\n }\n\n _onError(err) {\n if (isNormalFlowError(err) && !this.destroyed) {\n this.emit('warn', err);\n } else {\n this.destroy(err);\n }\n }\n\n async _getEntryType(entry) {\n // entry may be undefined, because a warning or an error were emitted\n // and the statsProp is undefined\n const stats = entry && entry[this._statsProp];\n if (!stats) {\n return;\n }\n if (stats.isFile()) {\n return 'file';\n }\n if (stats.isDirectory()) {\n return 'directory';\n }\n if (stats && stats.isSymbolicLink()) {\n const full = entry.fullPath;\n try {\n const entryRealPath = await realpath(full);\n const entryRealPathStats = await lstat(entryRealPath);\n if (entryRealPathStats.isFile()) {\n return 'file';\n }\n if (entryRealPathStats.isDirectory()) {\n const len = entryRealPath.length;\n if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath.sep) {\n return this._onError(new Error(\n `Circular symlink detected: \"${full}\" points to \"${entryRealPath}\"`\n ));\n }\n return 'directory';\n }\n } catch (error) {\n this._onError(error);\n }\n }\n }\n\n _includeAsFile(entry) {\n const stats = entry && entry[this._statsProp];\n\n return stats && this._wantsEverything && !stats.isDirectory();\n }\n}\n\n/**\n * @typedef {Object} ReaddirpArguments\n * @property {Function=} fileFilter\n * @property {Function=} directoryFilter\n * @property {String=} type\n * @property {Number=} depth\n * @property {String=} root\n * @property {Boolean=} lstat\n * @property {Boolean=} bigint\n */\n\n/**\n * Main function which ends up calling readdirRec and reads all files and directories in given root recursively.\n * @param {String} root Root directory\n * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth\n */\nconst readdirp = (root, options = {}) => {\n let type = options.entryType || options.type;\n if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility\n if (type) options.type = type;\n if (!root) {\n throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)');\n } else if (typeof root !== 'string') {\n throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)');\n } else if (type && !ALL_TYPES.includes(type)) {\n throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`);\n }\n\n options.root = root;\n return new ReaddirpStream(options);\n};\n\nconst readdirpPromise = (root, options = {}) => {\n return new Promise((resolve, reject) => {\n const files = [];\n readdirp(root, options)\n .on('data', entry => files.push(entry))\n .on('end', () => resolve(files))\n .on('error', error => reject(error));\n });\n};\n\nreaddirp.promise = readdirpPromise;\nreaddirp.ReaddirpStream = ReaddirpStream;\nreaddirp.default = readdirp;\n\nmodule.exports = readdirp;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nconst picomatch = require('picomatch');\nconst normalizePath = require('normalize-path');\n\n/**\n * @typedef {(testString: string) => boolean} AnymatchFn\n * @typedef {string|RegExp|AnymatchFn} AnymatchPattern\n * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher\n */\nconst BANG = '!';\nconst DEFAULT_OPTIONS = {returnIndex: false};\nconst arrify = (item) => Array.isArray(item) ? item : [item];\n\n/**\n * @param {AnymatchPattern} matcher\n * @param {object} options\n * @returns {AnymatchFn}\n */\nconst createPattern = (matcher, options) => {\n if (typeof matcher === 'function') {\n return matcher;\n }\n if (typeof matcher === 'string') {\n const glob = picomatch(matcher, options);\n return (string) => matcher === string || glob(string);\n }\n if (matcher instanceof RegExp) {\n return (string) => matcher.test(string);\n }\n return (string) => false;\n};\n\n/**\n * @param {Array} patterns\n * @param {Array} negPatterns\n * @param {String|Array} args\n * @param {Boolean} returnIndex\n * @returns {boolean|number}\n */\nconst matchPatterns = (patterns, negPatterns, args, returnIndex) => {\n const isList = Array.isArray(args);\n const _path = isList ? args[0] : args;\n if (!isList && typeof _path !== 'string') {\n throw new TypeError('anymatch: second argument must be a string: got ' +\n Object.prototype.toString.call(_path))\n }\n const path = normalizePath(_path);\n\n for (let index = 0; index < negPatterns.length; index++) {\n const nglob = negPatterns[index];\n if (nglob(path)) {\n return returnIndex ? -1 : false;\n }\n }\n\n const applied = isList && [path].concat(args.slice(1));\n for (let index = 0; index < patterns.length; index++) {\n const pattern = patterns[index];\n if (isList ? pattern(...applied) : pattern(path)) {\n return returnIndex ? index : true;\n }\n }\n\n return returnIndex ? -1 : false;\n};\n\n/**\n * @param {AnymatchMatcher} matchers\n * @param {Array|string} testString\n * @param {object} options\n * @returns {boolean|number|Function}\n */\nconst anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => {\n if (matchers == null) {\n throw new TypeError('anymatch: specify first argument');\n }\n const opts = typeof options === 'boolean' ? {returnIndex: options} : options;\n const returnIndex = opts.returnIndex || false;\n\n // Early cache for matchers.\n const mtchers = arrify(matchers);\n const negatedGlobs = mtchers\n .filter(item => typeof item === 'string' && item.charAt(0) === BANG)\n .map(item => item.slice(1))\n .map(item => picomatch(item, opts));\n const patterns = mtchers\n .filter(item => typeof item !== 'string' || (typeof item === 'string' && item.charAt(0) !== BANG))\n .map(matcher => createPattern(matcher, opts));\n\n if (testString == null) {\n return (testString, ri = false) => {\n const returnIndex = typeof ri === 'boolean' ? ri : false;\n return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n }\n }\n\n return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n};\n\nanymatch.default = anymatch;\nmodule.exports = anymatch;\n","/*!\n * normalize-path \n *\n * Copyright (c) 2014-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nmodule.exports = function(path, stripTrailing) {\n if (typeof path !== 'string') {\n throw new TypeError('expected path to be a string');\n }\n\n if (path === '\\\\' || path === '/') return '/';\n\n var len = path.length;\n if (len <= 1) return path;\n\n // ensure that win32 namespaces has two leading slashes, so that the path is\n // handled properly by the win32 version of path.parse() after being normalized\n // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces\n var prefix = '';\n if (len > 4 && path[3] === '\\\\') {\n var ch = path[2];\n if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\\\\\') {\n path = path.slice(2);\n prefix = '//';\n }\n }\n\n var segs = path.split(/[/\\\\]+/);\n if (stripTrailing !== false && segs[segs.length - 1] === '') {\n segs.pop();\n }\n return prefix + segs.join('/');\n};\n","'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst isBinaryPath = require('is-binary-path');\nconst {\n isWindows,\n isLinux,\n EMPTY_FN,\n EMPTY_STR,\n KEY_LISTENERS,\n KEY_ERR,\n KEY_RAW,\n HANDLER_KEYS,\n EV_CHANGE,\n EV_ADD,\n EV_ADD_DIR,\n EV_ERROR,\n STR_DATA,\n STR_END,\n BRACE_START,\n STAR\n} = require('./constants');\n\nconst THROTTLE_MODE_WATCH = 'watch';\n\nconst open = promisify(fs.open);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst close = promisify(fs.close);\nconst fsrealpath = promisify(fs.realpath);\n\nconst statMethods = { lstat, stat };\n\n// TODO: emit errors properly. Example: EMFILE on Macos.\nconst foreach = (val, fn) => {\n if (val instanceof Set) {\n val.forEach(fn);\n } else {\n fn(val);\n }\n};\n\nconst addAndConvert = (main, prop, item) => {\n let container = main[prop];\n if (!(container instanceof Set)) {\n main[prop] = container = new Set([container]);\n }\n container.add(item);\n};\n\nconst clearItem = cont => key => {\n const set = cont[key];\n if (set instanceof Set) {\n set.clear();\n } else {\n delete cont[key];\n }\n};\n\nconst delFromSet = (main, prop, item) => {\n const container = main[prop];\n if (container instanceof Set) {\n container.delete(item);\n } else if (container === item) {\n delete main[prop];\n }\n};\n\nconst isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val;\n\n/**\n * @typedef {String} Path\n */\n\n// fs_watch helpers\n\n// object to hold per-process fs_watch instances\n// (may be shared across chokidar FSWatcher instances)\n\n/**\n * @typedef {Object} FsWatchContainer\n * @property {Set} listeners\n * @property {Set} errHandlers\n * @property {Set} rawEmitters\n * @property {fs.FSWatcher=} watcher\n * @property {Boolean=} watcherUnusable\n */\n\n/**\n * @type {Map}\n */\nconst FsWatchInstances = new Map();\n\n/**\n * Instantiates the fs_watch interface\n * @param {String} path to be watched\n * @param {Object} options to be passed to fs_watch\n * @param {Function} listener main event handler\n * @param {Function} errHandler emits info about errors\n * @param {Function} emitRaw emits raw event data\n * @returns {fs.FSWatcher} new fsevents instance\n */\nfunction createFsWatchInstance(path, options, listener, errHandler, emitRaw) {\n const handleEvent = (rawEvent, evPath) => {\n listener(path);\n emitRaw(rawEvent, evPath, {watchedPath: path});\n\n // emit based on events occurring for files from a directory's watcher in\n // case the file's watcher misses it (and rely on throttling to de-dupe)\n if (evPath && path !== evPath) {\n fsWatchBroadcast(\n sysPath.resolve(path, evPath), KEY_LISTENERS, sysPath.join(path, evPath)\n );\n }\n };\n try {\n return fs.watch(path, options, handleEvent);\n } catch (error) {\n errHandler(error);\n }\n}\n\n/**\n * Helper for passing fs_watch event data to a collection of listeners\n * @param {Path} fullPath absolute path bound to fs_watch instance\n * @param {String} type listener type\n * @param {*=} val1 arguments to be passed to listeners\n * @param {*=} val2\n * @param {*=} val3\n */\nconst fsWatchBroadcast = (fullPath, type, val1, val2, val3) => {\n const cont = FsWatchInstances.get(fullPath);\n if (!cont) return;\n foreach(cont[type], (listener) => {\n listener(val1, val2, val3);\n });\n};\n\n/**\n * Instantiates the fs_watch interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path\n * @param {String} fullPath absolute path\n * @param {Object} options to be passed to fs_watch\n * @param {Object} handlers container for event listener functions\n */\nconst setFsWatchListener = (path, fullPath, options, handlers) => {\n const {listener, errHandler, rawEmitter} = handlers;\n let cont = FsWatchInstances.get(fullPath);\n\n /** @type {fs.FSWatcher=} */\n let watcher;\n if (!options.persistent) {\n watcher = createFsWatchInstance(\n path, options, listener, errHandler, rawEmitter\n );\n return watcher.close.bind(watcher);\n }\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_ERR, errHandler);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n } else {\n watcher = createFsWatchInstance(\n path,\n options,\n fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS),\n errHandler, // no need to use broadcast here\n fsWatchBroadcast.bind(null, fullPath, KEY_RAW)\n );\n if (!watcher) return;\n watcher.on(EV_ERROR, async (error) => {\n const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR);\n cont.watcherUnusable = true; // documented since Node 10.4.1\n // Workaround for https://github.com/joyent/node/issues/4337\n if (isWindows && error.code === 'EPERM') {\n try {\n const fd = await open(path, 'r');\n await close(fd);\n broadcastErr(error);\n } catch (err) {}\n } else {\n broadcastErr(error);\n }\n });\n cont = {\n listeners: listener,\n errHandlers: errHandler,\n rawEmitters: rawEmitter,\n watcher\n };\n FsWatchInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n\n // removes this instance's listeners and closes the underlying fs_watch\n // instance if there are no more listeners left\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_ERR, errHandler);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n // Check to protect against issue gh-730.\n // if (cont.watcherUnusable) {\n cont.watcher.close();\n // }\n FsWatchInstances.delete(fullPath);\n HANDLER_KEYS.forEach(clearItem(cont));\n cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n\n// fs_watchFile helpers\n\n// object to hold per-process fs_watchFile instances\n// (may be shared across chokidar FSWatcher instances)\nconst FsWatchFileInstances = new Map();\n\n/**\n * Instantiates the fs_watchFile interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path to be watched\n * @param {String} fullPath absolute path\n * @param {Object} options options to be passed to fs_watchFile\n * @param {Object} handlers container for event listener functions\n * @returns {Function} closer\n */\nconst setFsWatchFileListener = (path, fullPath, options, handlers) => {\n const {listener, rawEmitter} = handlers;\n let cont = FsWatchFileInstances.get(fullPath);\n\n /* eslint-disable no-unused-vars, prefer-destructuring */\n let listeners = new Set();\n let rawEmitters = new Set();\n\n const copts = cont && cont.options;\n if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) {\n // \"Upgrade\" the watcher to persistence or a quicker interval.\n // This creates some unlikely edge case issues if the user mixes\n // settings in a very weird way, but solving for those cases\n // doesn't seem worthwhile for the added complexity.\n listeners = cont.listeners;\n rawEmitters = cont.rawEmitters;\n fs.unwatchFile(fullPath);\n cont = undefined;\n }\n\n /* eslint-enable no-unused-vars, prefer-destructuring */\n\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n } else {\n // TODO\n // listeners.add(listener);\n // rawEmitters.add(rawEmitter);\n cont = {\n listeners: listener,\n rawEmitters: rawEmitter,\n options,\n watcher: fs.watchFile(fullPath, options, (curr, prev) => {\n foreach(cont.rawEmitters, (rawEmitter) => {\n rawEmitter(EV_CHANGE, fullPath, {curr, prev});\n });\n const currmtime = curr.mtimeMs;\n if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) {\n foreach(cont.listeners, (listener) => listener(path, curr));\n }\n })\n };\n FsWatchFileInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n\n // Removes this instance's listeners and closes the underlying fs_watchFile\n // instance if there are no more listeners left.\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n FsWatchFileInstances.delete(fullPath);\n fs.unwatchFile(fullPath);\n cont.options = cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n\n/**\n * @mixin\n */\nclass NodeFsHandler {\n\n/**\n * @param {import(\"../index\").FSWatcher} fsW\n */\nconstructor(fsW) {\n this.fsw = fsW;\n this._boundHandleError = (error) => fsW._handleError(error);\n}\n\n/**\n * Watch file for changes with fs_watchFile or fs_watch.\n * @param {String} path to file or dir\n * @param {Function} listener on fs change\n * @returns {Function} closer for the watcher instance\n */\n_watchWithNodeFs(path, listener) {\n const opts = this.fsw.options;\n const directory = sysPath.dirname(path);\n const basename = sysPath.basename(path);\n const parent = this.fsw._getWatchedDir(directory);\n parent.add(basename);\n const absolutePath = sysPath.resolve(path);\n const options = {persistent: opts.persistent};\n if (!listener) listener = EMPTY_FN;\n\n let closer;\n if (opts.usePolling) {\n options.interval = opts.enableBinaryInterval && isBinaryPath(basename) ?\n opts.binaryInterval : opts.interval;\n closer = setFsWatchFileListener(path, absolutePath, options, {\n listener,\n rawEmitter: this.fsw._emitRaw\n });\n } else {\n closer = setFsWatchListener(path, absolutePath, options, {\n listener,\n errHandler: this._boundHandleError,\n rawEmitter: this.fsw._emitRaw\n });\n }\n return closer;\n}\n\n/**\n * Watch a file and emit add event if warranted.\n * @param {Path} file Path\n * @param {fs.Stats} stats result of fs_stat\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @returns {Function} closer for the watcher instance\n */\n_handleFile(file, stats, initialAdd) {\n if (this.fsw.closed) {\n return;\n }\n const dirname = sysPath.dirname(file);\n const basename = sysPath.basename(file);\n const parent = this.fsw._getWatchedDir(dirname);\n // stats is always present\n let prevStats = stats;\n\n // if the file is already being watched, do nothing\n if (parent.has(basename)) return;\n\n const listener = async (path, newStats) => {\n if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return;\n if (!newStats || newStats.mtimeMs === 0) {\n try {\n const newStats = await stat(file);\n if (this.fsw.closed) return;\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV_CHANGE, file, newStats);\n }\n if (isLinux && prevStats.ino !== newStats.ino) {\n this.fsw._closeFile(path)\n prevStats = newStats;\n this.fsw._addPathCloser(path, this._watchWithNodeFs(file, listener));\n } else {\n prevStats = newStats;\n }\n } catch (error) {\n // Fix issues where mtime is null but file is still present\n this.fsw._remove(dirname, basename);\n }\n // add is about to be emitted if file not already tracked in parent\n } else if (parent.has(basename)) {\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV_CHANGE, file, newStats);\n }\n prevStats = newStats;\n }\n }\n // kick off the watcher\n const closer = this._watchWithNodeFs(file, listener);\n\n // emit an add event if we're supposed to\n if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) {\n if (!this.fsw._throttle(EV_ADD, file, 0)) return;\n this.fsw._emit(EV_ADD, file, stats);\n }\n\n return closer;\n}\n\n/**\n * Handle symlinks encountered while reading a dir.\n * @param {Object} entry returned by readdirp\n * @param {String} directory path of dir being read\n * @param {String} path of this item\n * @param {String} item basename of this item\n * @returns {Promise} true if no more processing is needed for this entry.\n */\nasync _handleSymlink(entry, directory, path, item) {\n if (this.fsw.closed) {\n return;\n }\n const full = entry.fullPath;\n const dir = this.fsw._getWatchedDir(directory);\n\n if (!this.fsw.options.followSymlinks) {\n // watch symlink directly (don't follow) and detect changes\n this.fsw._incrReadyCount();\n const linkPath = await fsrealpath(path);\n if (this.fsw.closed) return;\n if (dir.has(item)) {\n if (this.fsw._symlinkPaths.get(full) !== linkPath) {\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV_CHANGE, path, entry.stats);\n }\n } else {\n dir.add(item);\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV_ADD, path, entry.stats);\n }\n this.fsw._emitReady();\n return true;\n }\n\n // don't follow the same symlink more than once\n if (this.fsw._symlinkPaths.has(full)) {\n return true;\n }\n\n this.fsw._symlinkPaths.set(full, true);\n}\n\n_handleRead(directory, initialAdd, wh, target, dir, depth, throttler) {\n // Normalize the directory name on Windows\n directory = sysPath.join(directory, EMPTY_STR);\n\n if (!wh.hasGlob) {\n throttler = this.fsw._throttle('readdir', directory, 1000);\n if (!throttler) return;\n }\n\n const previous = this.fsw._getWatchedDir(wh.path);\n const current = new Set();\n\n let stream = this.fsw._readdirp(directory, {\n fileFilter: entry => wh.filterPath(entry),\n directoryFilter: entry => wh.filterDir(entry),\n depth: 0\n }).on(STR_DATA, async (entry) => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const item = entry.path;\n let path = sysPath.join(directory, item);\n current.add(item);\n\n if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path, item)) {\n return;\n }\n\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n // Files that present in current directory snapshot\n // but absent in previous are added to watch list and\n // emit `add` event.\n if (item === target || !target && !previous.has(item)) {\n this.fsw._incrReadyCount();\n\n // ensure relativeness of path is preserved in case of watcher reuse\n path = sysPath.join(dir, sysPath.relative(dir, path));\n\n this._addToNodeFs(path, initialAdd, wh, depth + 1);\n }\n }).on(EV_ERROR, this._boundHandleError);\n\n return new Promise(resolve =>\n stream.once(STR_END, () => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const wasThrottled = throttler ? throttler.clear() : false;\n\n resolve();\n\n // Files that absent in current directory snapshot\n // but present in previous emit `remove` event\n // and are removed from @watched[directory].\n previous.getChildren().filter((item) => {\n return item !== directory &&\n !current.has(item) &&\n // in case of intersecting globs;\n // a path may have been filtered out of this readdir, but\n // shouldn't be removed because it matches a different glob\n (!wh.hasGlob || wh.filterPath({\n fullPath: sysPath.resolve(directory, item)\n }));\n }).forEach((item) => {\n this.fsw._remove(directory, item);\n });\n\n stream = undefined;\n\n // one more time for any missed in case changes came in extremely quickly\n if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler);\n })\n );\n}\n\n/**\n * Read directory to add / remove files from `@watched` list and re-read it on change.\n * @param {String} dir fs path\n * @param {fs.Stats} stats\n * @param {Boolean} initialAdd\n * @param {Number} depth relative to user-supplied path\n * @param {String} target child path targeted for watch\n * @param {Object} wh Common watch helpers for this path\n * @param {String} realpath\n * @returns {Promise} closer for the watcher instance.\n */\nasync _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) {\n const parentDir = this.fsw._getWatchedDir(sysPath.dirname(dir));\n const tracked = parentDir.has(sysPath.basename(dir));\n if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) {\n if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR, dir, stats);\n }\n\n // ensure dir is tracked (harmless if redundant)\n parentDir.add(sysPath.basename(dir));\n this.fsw._getWatchedDir(dir);\n let throttler;\n let closer;\n\n const oDepth = this.fsw.options.depth;\n if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) {\n if (!target) {\n await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler);\n if (this.fsw.closed) return;\n }\n\n closer = this._watchWithNodeFs(dir, (dirPath, stats) => {\n // if current directory is removed, do nothing\n if (stats && stats.mtimeMs === 0) return;\n\n this._handleRead(dirPath, false, wh, target, dir, depth, throttler);\n });\n }\n return closer;\n}\n\n/**\n * Handle added file, directory, or glob pattern.\n * Delegates call to _handleFile / _handleDir after checks.\n * @param {String} path to file or ir\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @param {Object} priorWh depth relative to user-supplied path\n * @param {Number} depth Child path actually targeted for watch\n * @param {String=} target Child path actually targeted for watch\n * @returns {Promise}\n */\nasync _addToNodeFs(path, initialAdd, priorWh, depth, target) {\n const ready = this.fsw._emitReady;\n if (this.fsw._isIgnored(path) || this.fsw.closed) {\n ready();\n return false;\n }\n\n const wh = this.fsw._getWatchHelpers(path, depth);\n if (!wh.hasGlob && priorWh) {\n wh.hasGlob = priorWh.hasGlob;\n wh.globFilter = priorWh.globFilter;\n wh.filterPath = entry => priorWh.filterPath(entry);\n wh.filterDir = entry => priorWh.filterDir(entry);\n }\n\n // evaluate what is at the path we're being asked to watch\n try {\n const stats = await statMethods[wh.statMethod](wh.watchPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(wh.watchPath, stats)) {\n ready();\n return false;\n }\n\n const follow = this.fsw.options.followSymlinks && !path.includes(STAR) && !path.includes(BRACE_START);\n let closer;\n if (stats.isDirectory()) {\n const absPath = sysPath.resolve(path);\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed) return;\n closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath);\n if (this.fsw.closed) return;\n // preserve this symlink's target path\n if (absPath !== targetPath && targetPath !== undefined) {\n this.fsw._symlinkPaths.set(absPath, targetPath);\n }\n } else if (stats.isSymbolicLink()) {\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed) return;\n const parent = sysPath.dirname(wh.watchPath);\n this.fsw._getWatchedDir(parent).add(wh.watchPath);\n this.fsw._emit(EV_ADD, wh.watchPath, stats);\n closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath);\n if (this.fsw.closed) return;\n\n // preserve this symlink's target path\n if (targetPath !== undefined) {\n this.fsw._symlinkPaths.set(sysPath.resolve(path), targetPath);\n }\n } else {\n closer = this._handleFile(wh.watchPath, stats, initialAdd);\n }\n ready();\n\n this.fsw._addPathCloser(path, closer);\n return false;\n\n } catch (error) {\n if (this.fsw._handleError(error)) {\n ready();\n return path;\n }\n }\n}\n\n}\n\nmodule.exports = NodeFsHandler;\n","'use strict';\nconst path = require('path');\nconst binaryExtensions = require('binary-extensions');\n\nconst extensions = new Set(binaryExtensions);\n\nmodule.exports = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase());\n","[\n\t\"3dm\",\n\t\"3ds\",\n\t\"3g2\",\n\t\"3gp\",\n\t\"7z\",\n\t\"a\",\n\t\"aac\",\n\t\"adp\",\n\t\"ai\",\n\t\"aif\",\n\t\"aiff\",\n\t\"alz\",\n\t\"ape\",\n\t\"apk\",\n\t\"appimage\",\n\t\"ar\",\n\t\"arj\",\n\t\"asf\",\n\t\"au\",\n\t\"avi\",\n\t\"bak\",\n\t\"baml\",\n\t\"bh\",\n\t\"bin\",\n\t\"bk\",\n\t\"bmp\",\n\t\"btif\",\n\t\"bz2\",\n\t\"bzip2\",\n\t\"cab\",\n\t\"caf\",\n\t\"cgm\",\n\t\"class\",\n\t\"cmx\",\n\t\"cpio\",\n\t\"cr2\",\n\t\"cur\",\n\t\"dat\",\n\t\"dcm\",\n\t\"deb\",\n\t\"dex\",\n\t\"djvu\",\n\t\"dll\",\n\t\"dmg\",\n\t\"dng\",\n\t\"doc\",\n\t\"docm\",\n\t\"docx\",\n\t\"dot\",\n\t\"dotm\",\n\t\"dra\",\n\t\"DS_Store\",\n\t\"dsk\",\n\t\"dts\",\n\t\"dtshd\",\n\t\"dvb\",\n\t\"dwg\",\n\t\"dxf\",\n\t\"ecelp4800\",\n\t\"ecelp7470\",\n\t\"ecelp9600\",\n\t\"egg\",\n\t\"eol\",\n\t\"eot\",\n\t\"epub\",\n\t\"exe\",\n\t\"f4v\",\n\t\"fbs\",\n\t\"fh\",\n\t\"fla\",\n\t\"flac\",\n\t\"flatpak\",\n\t\"fli\",\n\t\"flv\",\n\t\"fpx\",\n\t\"fst\",\n\t\"fvt\",\n\t\"g3\",\n\t\"gh\",\n\t\"gif\",\n\t\"graffle\",\n\t\"gz\",\n\t\"gzip\",\n\t\"h261\",\n\t\"h263\",\n\t\"h264\",\n\t\"icns\",\n\t\"ico\",\n\t\"ief\",\n\t\"img\",\n\t\"ipa\",\n\t\"iso\",\n\t\"jar\",\n\t\"jpeg\",\n\t\"jpg\",\n\t\"jpgv\",\n\t\"jpm\",\n\t\"jxr\",\n\t\"key\",\n\t\"ktx\",\n\t\"lha\",\n\t\"lib\",\n\t\"lvp\",\n\t\"lz\",\n\t\"lzh\",\n\t\"lzma\",\n\t\"lzo\",\n\t\"m3u\",\n\t\"m4a\",\n\t\"m4v\",\n\t\"mar\",\n\t\"mdi\",\n\t\"mht\",\n\t\"mid\",\n\t\"midi\",\n\t\"mj2\",\n\t\"mka\",\n\t\"mkv\",\n\t\"mmr\",\n\t\"mng\",\n\t\"mobi\",\n\t\"mov\",\n\t\"movie\",\n\t\"mp3\",\n\t\"mp4\",\n\t\"mp4a\",\n\t\"mpeg\",\n\t\"mpg\",\n\t\"mpga\",\n\t\"mxu\",\n\t\"nef\",\n\t\"npx\",\n\t\"numbers\",\n\t\"nupkg\",\n\t\"o\",\n\t\"odp\",\n\t\"ods\",\n\t\"odt\",\n\t\"oga\",\n\t\"ogg\",\n\t\"ogv\",\n\t\"otf\",\n\t\"ott\",\n\t\"pages\",\n\t\"pbm\",\n\t\"pcx\",\n\t\"pdb\",\n\t\"pdf\",\n\t\"pea\",\n\t\"pgm\",\n\t\"pic\",\n\t\"png\",\n\t\"pnm\",\n\t\"pot\",\n\t\"potm\",\n\t\"potx\",\n\t\"ppa\",\n\t\"ppam\",\n\t\"ppm\",\n\t\"pps\",\n\t\"ppsm\",\n\t\"ppsx\",\n\t\"ppt\",\n\t\"pptm\",\n\t\"pptx\",\n\t\"psd\",\n\t\"pya\",\n\t\"pyc\",\n\t\"pyo\",\n\t\"pyv\",\n\t\"qt\",\n\t\"rar\",\n\t\"ras\",\n\t\"raw\",\n\t\"resources\",\n\t\"rgb\",\n\t\"rip\",\n\t\"rlc\",\n\t\"rmf\",\n\t\"rmvb\",\n\t\"rpm\",\n\t\"rtf\",\n\t\"rz\",\n\t\"s3m\",\n\t\"s7z\",\n\t\"scpt\",\n\t\"sgi\",\n\t\"shar\",\n\t\"snap\",\n\t\"sil\",\n\t\"sketch\",\n\t\"slk\",\n\t\"smv\",\n\t\"snk\",\n\t\"so\",\n\t\"stl\",\n\t\"suo\",\n\t\"sub\",\n\t\"swf\",\n\t\"tar\",\n\t\"tbz\",\n\t\"tbz2\",\n\t\"tga\",\n\t\"tgz\",\n\t\"thmx\",\n\t\"tif\",\n\t\"tiff\",\n\t\"tlz\",\n\t\"ttc\",\n\t\"ttf\",\n\t\"txz\",\n\t\"udf\",\n\t\"uvh\",\n\t\"uvi\",\n\t\"uvm\",\n\t\"uvp\",\n\t\"uvs\",\n\t\"uvu\",\n\t\"viv\",\n\t\"vob\",\n\t\"war\",\n\t\"wav\",\n\t\"wax\",\n\t\"wbmp\",\n\t\"wdp\",\n\t\"weba\",\n\t\"webm\",\n\t\"webp\",\n\t\"whl\",\n\t\"wim\",\n\t\"wm\",\n\t\"wma\",\n\t\"wmv\",\n\t\"wmx\",\n\t\"woff\",\n\t\"woff2\",\n\t\"wrm\",\n\t\"wvx\",\n\t\"xbm\",\n\t\"xif\",\n\t\"xla\",\n\t\"xlam\",\n\t\"xls\",\n\t\"xlsb\",\n\t\"xlsm\",\n\t\"xlsx\",\n\t\"xlt\",\n\t\"xltm\",\n\t\"xltx\",\n\t\"xm\",\n\t\"xmind\",\n\t\"xpi\",\n\t\"xpm\",\n\t\"xwd\",\n\t\"xz\",\n\t\"z\",\n\t\"zip\",\n\t\"zipx\"\n]\n","'use strict';\n\nconst {sep} = require('path');\nconst {platform} = process;\n\nexports.EV_ALL = 'all';\nexports.EV_READY = 'ready';\nexports.EV_ADD = 'add';\nexports.EV_CHANGE = 'change';\nexports.EV_ADD_DIR = 'addDir';\nexports.EV_UNLINK = 'unlink';\nexports.EV_UNLINK_DIR = 'unlinkDir';\nexports.EV_RAW = 'raw';\nexports.EV_ERROR = 'error';\n\nexports.STR_DATA = 'data';\nexports.STR_END = 'end';\nexports.STR_CLOSE = 'close';\n\nexports.FSEVENT_CREATED = 'created';\nexports.FSEVENT_MODIFIED = 'modified';\nexports.FSEVENT_DELETED = 'deleted';\nexports.FSEVENT_MOVED = 'moved';\nexports.FSEVENT_CLONED = 'cloned';\nexports.FSEVENT_UNKNOWN = 'unknown';\nexports.FSEVENT_TYPE_FILE = 'file';\nexports.FSEVENT_TYPE_DIRECTORY = 'directory';\nexports.FSEVENT_TYPE_SYMLINK = 'symlink';\n\nexports.KEY_LISTENERS = 'listeners';\nexports.KEY_ERR = 'errHandlers';\nexports.KEY_RAW = 'rawEmitters';\nexports.HANDLER_KEYS = [exports.KEY_LISTENERS, exports.KEY_ERR, exports.KEY_RAW];\n\nexports.DOT_SLASH = `.${sep}`;\n\nexports.BACK_SLASH_RE = /\\\\/g;\nexports.DOUBLE_SLASH_RE = /\\/\\//;\nexports.SLASH_OR_BACK_SLASH_RE = /[/\\\\]/;\nexports.DOT_RE = /\\..*\\.(sw[px])$|~$|\\.subl.*\\.tmp/;\nexports.REPLACER_RE = /^\\.[/\\\\]/;\n\nexports.SLASH = '/';\nexports.SLASH_SLASH = '//';\nexports.BRACE_START = '{';\nexports.BANG = '!';\nexports.ONE_DOT = '.';\nexports.TWO_DOTS = '..';\nexports.STAR = '*';\nexports.GLOBSTAR = '**';\nexports.ROOT_GLOBSTAR = '/**/*';\nexports.SLASH_GLOBSTAR = '/**';\nexports.DIR_SUFFIX = 'Dir';\nexports.ANYMATCH_OPTS = {dot: true};\nexports.STRING_TYPE = 'string';\nexports.FUNCTION_TYPE = 'function';\nexports.EMPTY_STR = '';\nexports.EMPTY_FN = () => {};\nexports.IDENTITY_FN = val => val;\n\nexports.isWindows = platform === 'win32';\nexports.isMacos = platform === 'darwin';\nexports.isLinux = platform === 'linux';\n","'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\n\nlet fsevents;\ntry {\n fsevents = require('fsevents');\n} catch (error) {\n if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error);\n}\n\nif (fsevents) {\n // TODO: real check\n const mtch = process.version.match(/v(\\d+)\\.(\\d+)/);\n if (mtch && mtch[1] && mtch[2]) {\n const maj = Number.parseInt(mtch[1], 10);\n const min = Number.parseInt(mtch[2], 10);\n if (maj === 8 && min < 16) {\n fsevents = undefined;\n }\n }\n}\n\nconst {\n EV_ADD,\n EV_CHANGE,\n EV_ADD_DIR,\n EV_UNLINK,\n EV_ERROR,\n STR_DATA,\n STR_END,\n FSEVENT_CREATED,\n FSEVENT_MODIFIED,\n FSEVENT_DELETED,\n FSEVENT_MOVED,\n // FSEVENT_CLONED,\n FSEVENT_UNKNOWN,\n FSEVENT_TYPE_FILE,\n FSEVENT_TYPE_DIRECTORY,\n FSEVENT_TYPE_SYMLINK,\n\n ROOT_GLOBSTAR,\n DIR_SUFFIX,\n DOT_SLASH,\n FUNCTION_TYPE,\n EMPTY_FN,\n IDENTITY_FN\n} = require('./constants');\n\nconst Depth = (value) => isNaN(value) ? {} : {depth: value};\n\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\nconst statMethods = { stat, lstat };\n\n/**\n * @typedef {String} Path\n */\n\n/**\n * @typedef {Object} FsEventsWatchContainer\n * @property {Set} listeners\n * @property {Function} rawEmitter\n * @property {{stop: Function}} watcher\n */\n\n// fsevents instance helper functions\n/**\n * Object to hold per-process fsevents instances (may be shared across chokidar FSWatcher instances)\n * @type {Map}\n */\nconst FSEventsWatchers = new Map();\n\n// Threshold of duplicate path prefixes at which to start\n// consolidating going forward\nconst consolidateThreshhold = 10;\n\nconst wrongEventFlags = new Set([\n 69888, 70400, 71424, 72704, 73472, 131328, 131840, 262912\n]);\n\n/**\n * Instantiates the fsevents interface\n * @param {Path} path path to be watched\n * @param {Function} callback called when fsevents is bound and ready\n * @returns {{stop: Function}} new fsevents instance\n */\nconst createFSEventsInstance = (path, callback) => {\n const stop = fsevents.watch(path, callback);\n return {stop};\n};\n\n/**\n * Instantiates the fsevents interface or binds listeners to an existing one covering\n * the same file tree.\n * @param {Path} path - to be watched\n * @param {Path} realPath - real path for symlinks\n * @param {Function} listener - called when fsevents emits events\n * @param {Function} rawEmitter - passes data to listeners of the 'raw' event\n * @returns {Function} closer\n */\nfunction setFSEventsListener(path, realPath, listener, rawEmitter) {\n let watchPath = sysPath.extname(path) ? sysPath.dirname(path) : path;\n const parentPath = sysPath.dirname(watchPath);\n let cont = FSEventsWatchers.get(watchPath);\n\n // If we've accumulated a substantial number of paths that\n // could have been consolidated by watching one directory\n // above the current one, create a watcher on the parent\n // path instead, so that we do consolidate going forward.\n if (couldConsolidate(parentPath)) {\n watchPath = parentPath;\n }\n\n const resolvedPath = sysPath.resolve(path);\n const hasSymlink = resolvedPath !== realPath;\n\n const filteredListener = (fullPath, flags, info) => {\n if (hasSymlink) fullPath = fullPath.replace(realPath, resolvedPath);\n if (\n fullPath === resolvedPath ||\n !fullPath.indexOf(resolvedPath + sysPath.sep)\n ) listener(fullPath, flags, info);\n };\n\n // check if there is already a watcher on a parent path\n // modifies `watchPath` to the parent path when it finds a match\n let watchedParent = false;\n for (const watchedPath of FSEventsWatchers.keys()) {\n if (realPath.indexOf(sysPath.resolve(watchedPath) + sysPath.sep) === 0) {\n watchPath = watchedPath;\n cont = FSEventsWatchers.get(watchPath);\n watchedParent = true;\n break;\n }\n }\n\n if (cont || watchedParent) {\n cont.listeners.add(filteredListener);\n } else {\n cont = {\n listeners: new Set([filteredListener]),\n rawEmitter,\n watcher: createFSEventsInstance(watchPath, (fullPath, flags) => {\n if (!cont.listeners.size) return;\n const info = fsevents.getInfo(fullPath, flags);\n cont.listeners.forEach(list => {\n list(fullPath, flags, info);\n });\n\n cont.rawEmitter(info.event, fullPath, info);\n })\n };\n FSEventsWatchers.set(watchPath, cont);\n }\n\n // removes this instance's listeners and closes the underlying fsevents\n // instance if there are no more listeners left\n return () => {\n const lst = cont.listeners;\n\n lst.delete(filteredListener);\n if (!lst.size) {\n FSEventsWatchers.delete(watchPath);\n if (cont.watcher) return cont.watcher.stop().then(() => {\n cont.rawEmitter = cont.watcher = undefined;\n Object.freeze(cont);\n });\n }\n };\n}\n\n// Decide whether or not we should start a new higher-level\n// parent watcher\nconst couldConsolidate = (path) => {\n let count = 0;\n for (const watchPath of FSEventsWatchers.keys()) {\n if (watchPath.indexOf(path) === 0) {\n count++;\n if (count >= consolidateThreshhold) {\n return true;\n }\n }\n }\n\n return false;\n};\n\n// returns boolean indicating whether fsevents can be used\nconst canUse = () => fsevents && FSEventsWatchers.size < 128;\n\n// determines subdirectory traversal levels from root to path\nconst calcDepth = (path, root) => {\n let i = 0;\n while (!path.indexOf(root) && (path = sysPath.dirname(path)) !== root) i++;\n return i;\n};\n\n// returns boolean indicating whether the fsevents' event info has the same type\n// as the one returned by fs.stat\nconst sameTypes = (info, stats) => (\n info.type === FSEVENT_TYPE_DIRECTORY && stats.isDirectory() ||\n info.type === FSEVENT_TYPE_SYMLINK && stats.isSymbolicLink() ||\n info.type === FSEVENT_TYPE_FILE && stats.isFile()\n)\n\n/**\n * @mixin\n */\nclass FsEventsHandler {\n\n/**\n * @param {import('../index').FSWatcher} fsw\n */\nconstructor(fsw) {\n this.fsw = fsw;\n}\ncheckIgnored(path, stats) {\n const ipaths = this.fsw._ignoredPaths;\n if (this.fsw._isIgnored(path, stats)) {\n ipaths.add(path);\n if (stats && stats.isDirectory()) {\n ipaths.add(path + ROOT_GLOBSTAR);\n }\n return true;\n }\n\n ipaths.delete(path);\n ipaths.delete(path + ROOT_GLOBSTAR);\n}\n\naddOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n const event = watchedDir.has(item) ? EV_CHANGE : EV_ADD;\n this.handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n}\n\nasync checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n try {\n const stats = await stat(path)\n if (this.fsw.closed) return;\n if (sameTypes(info, stats)) {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } catch (error) {\n if (error.code === 'EACCES') {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n }\n}\n\nhandleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n if (this.fsw.closed || this.checkIgnored(path)) return;\n\n if (event === EV_UNLINK) {\n const isDirectory = info.type === FSEVENT_TYPE_DIRECTORY\n // suppress unlink events on never before seen files\n if (isDirectory || watchedDir.has(item)) {\n this.fsw._remove(parent, item, isDirectory);\n }\n } else {\n if (event === EV_ADD) {\n // track new directories\n if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path);\n\n if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) {\n // push symlinks back to the top of the stack to get handled\n const curDepth = opts.depth === undefined ?\n undefined : calcDepth(fullPath, realPath) + 1;\n return this._addToFsEvents(path, false, true, curDepth);\n }\n\n // track new paths\n // (other than symlinks being followed, which will be tracked soon)\n this.fsw._getWatchedDir(parent).add(item);\n }\n /**\n * @type {'add'|'addDir'|'unlink'|'unlinkDir'}\n */\n const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event;\n this.fsw._emit(eventName, path);\n if (eventName === EV_ADD_DIR) this._addToFsEvents(path, false, true);\n }\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} watchPath - file/dir path to be watched with fsevents\n * @param {String} realPath - real path (in case of symlinks)\n * @param {Function} transform - path transformer\n * @param {Function} globFilter - path filter in case a glob pattern was provided\n * @returns {Function} closer for the watcher instance\n*/\n_watchWithFsEvents(watchPath, realPath, transform, globFilter) {\n if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return;\n const opts = this.fsw.options;\n const watchCallback = async (fullPath, flags, info) => {\n if (this.fsw.closed) return;\n if (\n opts.depth !== undefined &&\n calcDepth(fullPath, realPath) > opts.depth\n ) return;\n const path = transform(sysPath.join(\n watchPath, sysPath.relative(watchPath, fullPath)\n ));\n if (globFilter && !globFilter(path)) return;\n // ensure directories are tracked\n const parent = sysPath.dirname(path);\n const item = sysPath.basename(path);\n const watchedDir = this.fsw._getWatchedDir(\n info.type === FSEVENT_TYPE_DIRECTORY ? path : parent\n );\n\n // correct for wrong events emitted\n if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) {\n if (typeof opts.ignored === FUNCTION_TYPE) {\n let stats;\n try {\n stats = await stat(path);\n } catch (error) {}\n if (this.fsw.closed) return;\n if (this.checkIgnored(path, stats)) return;\n if (sameTypes(info, stats)) {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } else {\n this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } else {\n switch (info.event) {\n case FSEVENT_CREATED:\n case FSEVENT_MODIFIED:\n return this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n case FSEVENT_DELETED:\n case FSEVENT_MOVED:\n return this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n }\n };\n\n const closer = setFSEventsListener(\n watchPath,\n realPath,\n watchCallback,\n this.fsw._emitRaw\n );\n\n this.fsw._emitReady();\n return closer;\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} linkPath path to symlink\n * @param {String} fullPath absolute path to the symlink\n * @param {Function} transform pre-existing path transformer\n * @param {Number} curDepth level of subdirectories traversed to where symlink is\n * @returns {Promise}\n */\nasync _handleFsEventsSymlink(linkPath, fullPath, transform, curDepth) {\n // don't follow the same symlink more than once\n if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath)) return;\n\n this.fsw._symlinkPaths.set(fullPath, true);\n this.fsw._incrReadyCount();\n\n try {\n const linkTarget = await realpath(linkPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(linkTarget)) {\n return this.fsw._emitReady();\n }\n\n this.fsw._incrReadyCount();\n\n // add the linkTarget for watching with a wrapper for transform\n // that causes emitted paths to incorporate the link's path\n this._addToFsEvents(linkTarget || linkPath, (path) => {\n let aliasedPath = linkPath;\n if (linkTarget && linkTarget !== DOT_SLASH) {\n aliasedPath = path.replace(linkTarget, linkPath);\n } else if (path !== DOT_SLASH) {\n aliasedPath = sysPath.join(linkPath, path);\n }\n return transform(aliasedPath);\n }, false, curDepth);\n } catch(error) {\n if (this.fsw._handleError(error)) {\n return this.fsw._emitReady();\n }\n }\n}\n\n/**\n *\n * @param {Path} newPath\n * @param {fs.Stats} stats\n */\nemitAdd(newPath, stats, processPath, opts, forceAdd) {\n const pp = processPath(newPath);\n const isDir = stats.isDirectory();\n const dirObj = this.fsw._getWatchedDir(sysPath.dirname(pp));\n const base = sysPath.basename(pp);\n\n // ensure empty dirs get tracked\n if (isDir) this.fsw._getWatchedDir(pp);\n if (dirObj.has(base)) return;\n dirObj.add(base);\n\n if (!opts.ignoreInitial || forceAdd === true) {\n this.fsw._emit(isDir ? EV_ADD_DIR : EV_ADD, pp, stats);\n }\n}\n\ninitWatch(realPath, path, wh, processPath) {\n if (this.fsw.closed) return;\n const closer = this._watchWithFsEvents(\n wh.watchPath,\n sysPath.resolve(realPath || wh.watchPath),\n processPath,\n wh.globFilter\n );\n this.fsw._addPathCloser(path, closer);\n}\n\n/**\n * Handle added path with fsevents\n * @param {String} path file/dir path or glob pattern\n * @param {Function|Boolean=} transform converts working path to what the user expects\n * @param {Boolean=} forceAdd ensure add is emitted\n * @param {Number=} priorDepth Level of subdirectories already traversed.\n * @returns {Promise}\n */\nasync _addToFsEvents(path, transform, forceAdd, priorDepth) {\n if (this.fsw.closed) {\n return;\n }\n const opts = this.fsw.options;\n const processPath = typeof transform === FUNCTION_TYPE ? transform : IDENTITY_FN;\n\n const wh = this.fsw._getWatchHelpers(path);\n\n // evaluate what is at the path we're being asked to watch\n try {\n const stats = await statMethods[wh.statMethod](wh.watchPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(wh.watchPath, stats)) {\n throw null;\n }\n if (stats.isDirectory()) {\n // emit addDir unless this is a glob parent\n if (!wh.globFilter) this.emitAdd(processPath(path), stats, processPath, opts, forceAdd);\n\n // don't recurse further if it would exceed depth setting\n if (priorDepth && priorDepth > opts.depth) return;\n\n // scan the contents of the dir\n this.fsw._readdirp(wh.watchPath, {\n fileFilter: entry => wh.filterPath(entry),\n directoryFilter: entry => wh.filterDir(entry),\n ...Depth(opts.depth - (priorDepth || 0))\n }).on(STR_DATA, (entry) => {\n // need to check filterPath on dirs b/c filterDir is less restrictive\n if (this.fsw.closed) {\n return;\n }\n if (entry.stats.isDirectory() && !wh.filterPath(entry)) return;\n\n const joinedPath = sysPath.join(wh.watchPath, entry.path);\n const {fullPath} = entry;\n\n if (wh.followSymlinks && entry.stats.isSymbolicLink()) {\n // preserve the current depth here since it can't be derived from\n // real paths past the symlink\n const curDepth = opts.depth === undefined ?\n undefined : calcDepth(joinedPath, sysPath.resolve(wh.watchPath)) + 1;\n\n this._handleFsEventsSymlink(joinedPath, fullPath, processPath, curDepth);\n } else {\n this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd);\n }\n }).on(EV_ERROR, EMPTY_FN).on(STR_END, () => {\n this.fsw._emitReady();\n });\n } else {\n this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd);\n this.fsw._emitReady();\n }\n } catch (error) {\n if (!error || this.fsw._handleError(error)) {\n // TODO: Strange thing: \"should not choke on an ignored watch path\" will be failed without 2 ready calls -__-\n this.fsw._emitReady();\n this.fsw._emitReady();\n }\n }\n\n if (opts.persistent && forceAdd !== true) {\n if (typeof transform === FUNCTION_TYPE) {\n // realpath has already been resolved\n this.initWatch(undefined, path, wh, processPath);\n } else {\n let realPath;\n try {\n realPath = await realpath(wh.watchPath);\n } catch (e) {}\n this.initWatch(realPath, path, wh, processPath);\n }\n }\n}\n\n}\n\nmodule.exports = FsEventsHandler;\nmodule.exports.canUse = canUse;\n","\"use babel\"\n\nconst javascriptPrefixes = [\n \"import\\\\s+.*?from\\\\s+['\\\"]\", // import foo from './foo'\n \"import\\\\s+['\\\"]\", // import './foo'\n \"require\\\\(['\\\"]\", // require('./foo')\n \"define\\\\(\\\\[?['\\\"]\", // define(['./foo']) or define('./foo')\n]\n\nconst javascriptExtensions = [\"js\", \"jsx\", \"ts\", \"tsx\", \"coffee\", \"json\"]\n\n// no index replacement\nconst javascriptReplaceOnInsert = [\n [\"\\\\.jsx?$\", \"\"],\n [\"\\\\.ts$\", \"\"],\n [\"\\\\.coffee$\", \"\"],\n]\n\n// with index replacement\nconst javascriptWithIndexReplaceOnInsert = [\n [\"([\\\\/]?index)?\\\\.jsx?$\", \"\"],\n [\"([\\\\/]?index)?\\\\.ts$\", \"\"],\n [\"([\\\\/]?index)?\\\\.coffee$\", \"\"],\n]\n\nexport const DefaultScopes = [\n {\n scopes: [\n \"source.js\",\n \"source.js.jsx\",\n \"source.coffee\",\n \"source.coffee.jsx\",\n \"source.ts\",\n \"source.tsx\",\n \"javascript\",\n \"source.flow\",\n ],\n prefixes: javascriptPrefixes,\n extensions: javascriptExtensions,\n relative: true,\n replaceOnInsert: javascriptWithIndexReplaceOnInsert,\n },\n {\n scopes: [\"text.html.vue\"],\n prefixes: javascriptPrefixes,\n extensions: javascriptExtensions.concat(\"vue\"),\n relative: true,\n replaceOnInsert: javascriptReplaceOnInsert,\n },\n {\n scopes: [\"text.html.vue\"],\n prefixes: [\n \"@import[\\\\(|\\\\s+]?['\\\"]\", // @import 'foo' or @import('foo')\n ],\n extensions: [\"css\", \"sass\", \"scss\", \"less\", \"styl\"],\n relative: true,\n replaceOnInsert: [\n [\"(/)?_([^/]*?)$\", \"$1$2\"], // dir1/_dir2/_file.sass => dir1/_dir2/file.sass\n ],\n },\n {\n scopes: [\"source.coffee\", \"source.coffee.jsx\"],\n prefixes: [\n \"require\\\\s+['\\\"]\", // require './foo'\n \"define\\\\s+\\\\[?['\\\"]\", // define(['./foo']) or define('./foo')\n ],\n extensions: javascriptExtensions,\n relative: true,\n replaceOnInsert: javascriptReplaceOnInsert,\n },\n {\n scopes: [\"source.php\"],\n prefixes: [\n \"require_once\\\\(['\\\"]\", // require_once('foo.php')\n \"include\\\\(['\\\"]\", // include('./foo.php')\n ],\n extensions: [\"php\"],\n relative: true,\n },\n {\n scopes: [\"source.sass\", \"source.css.scss\", \"source.css.less\", \"source.stylus\"],\n prefixes: [\n \"@import[\\\\(|\\\\s+]?['\\\"]\", // @import 'foo' or @import('foo')\n ],\n extensions: [\"sass\", \"scss\", \"css\"],\n relative: true,\n replaceOnInsert: [\n [\"(/)?_([^/]*?)$\", \"$1$2\"], // dir1/_dir2/_file.sass => dir1/_dir2/file.sass\n ],\n },\n {\n scopes: [\"source.css\"],\n prefixes: [\n \"@import\\\\s+['\\\"]?\", // @import 'foo.css'\n \"@import\\\\s+url\\\\(['\\\"]?\", // @import url('foo.css')\n ],\n extensions: [\"css\"],\n relative: true,\n },\n {\n scopes: [\"source.css\", \"source.sass\", \"source.css.less\", \"source.css.scss\", \"source.stylus\"],\n prefixes: [\"url\\\\(['\\\"]?\"],\n extensions: [\"png\", \"gif\", \"jpeg\", \"jpg\", \"woff\", \"woff2\", \"ttf\", \"svg\", \"otf\"],\n relative: true,\n },\n {\n scopes: [\"source.c\", \"source.cpp\"],\n prefixes: [\"^\\\\s*#include\\\\s+['\\\"]\"],\n extensions: [\"h\", \"hpp\"],\n relative: true,\n includeCurrentDirectory: false,\n },\n {\n scopes: [\"source.lua\"],\n prefixes: [\"require[\\\\s+|\\\\(]['\\\"]\"],\n extensions: [\"lua\"],\n relative: true,\n includeCurrentDirectory: false,\n replaceOnInsert: [\n [\"\\\\/\", \".\"],\n [\"\\\\\\\\\", \".\"],\n [\"\\\\.lua$\", \"\"],\n ],\n },\n {\n scopes: [\"source.ruby\"],\n prefixes: [\"^\\\\s*require[\\\\s+|\\\\(]['\\\"]\"],\n extensions: [\"rb\"],\n relative: true,\n includeCurrentDirectory: false,\n replaceOnInsert: [[\"\\\\.rb$\", \"\"]],\n },\n {\n scopes: [\"source.python\"],\n prefixes: [\"^\\\\s*from\\\\s+\", \"^\\\\s*import\\\\s+\"],\n extensions: [\"py\"],\n relative: true,\n includeCurrentDirectory: false,\n replaceOnInsert: [\n [\"\\\\/\", \".\"],\n [\"\\\\\\\\\", \".\"],\n [\"\\\\.py$\", \"\"],\n ],\n },\n]\n"],"names":["$parcel$export","e","n","v","Object","defineProperty","get","enumerable","$parcel$missingModule","name","err","Error","code","$parcel$global","globalThis","self","window","global","subscriptions","add","atom","commands","autocomplete-paths:rebuild-cache","_rebuildCache","forEach","cacheOption","config","observe","_provider","_pathsCache","updateConfig","scopeOptions","key","OptionScopes","push","scopeOption","reloadScopes","_statusBarInterval","clearInterval","dispose","_statusBarTile","destroy","statusBar","_statusBar","_displayStatusBarItemOnConsumption","_displayStatusBarTile","enableHtmlSupport","scopes","prefixes","extensions","relative","normalizeSlashes","type","description","default","maxFileCount","suggestionPriority","ignoredNames","ignoreSubmodules","ignoredPatterns","items","ignoreBuiltinScopes","properties","replaceOnInsert","keys","i","len","length","a","$4f98dcf3c1c9e6d326d487da110886a3$var$_events","_events","$4f98dcf3c1c9e6d326d487da110886a3$var$_path","$4f98dcf3c1c9e6d326d487da110886a3$var$_interopRequireDefault","_path2","value","root","Function","ArrayProto","Array","prototype","ObjProto","SymbolProto","Symbol","slice","toString","hasOwnProperty","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","isArray","nativeKeys","nativeCreate","create","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","Math","pow","restArguments","func","startIndex","max","arguments","rest","index","call","this","args","apply","isObject","obj","isNull","isUndefined","isBoolean","$4766d843fd37944fe6c40ebbaa7aaf5e$export$toString","isElement","nodeType","tagTester","tag","$530580268565aa9d3424fd2ef51901ea$export$default","isFunction","nodelist","$4766d843fd37944fe6c40ebbaa7aaf5e$export$root","document","childNodes","Int8Array","hasStringTagBug","$4766d843fd37944fe6c40ebbaa7aaf5e$export$supportsDataView","$757eee250db3ce2336c60aa91cc78956$export$default","isIE11","Map","isDataView","$4d72093464ae2487da1a1b0e7fdf8340$export$hasStringTagBug","$c4e8fa99aa95727b16a1ee8bde743672$export$default","getInt8","$1e41bcd793e643e4734c6f6ee2b4e9d8$export$default","buffer","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nativeIsArray","has","$4766d843fd37944fe6c40ebbaa7aaf5e$export$hasOwnProperty","isArguments","$2f33ee2e9052562efdc3a1ced95b6675$export$default","$b42014b70606b5e7de8aa1c63831b7d4$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$_isFinite","parseFloat","$0751ff01da0b092ac4f23f0c2d71a871$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$_isNaN","constant","createSizePropertyCheck","getSizeProperty","collection","sizeProperty","$4766d843fd37944fe6c40ebbaa7aaf5e$export$MAX_ARRAY_INDEX","shallowProperty","$082c72be95656a779fbb5fe4e4e2d893$export$default","$ce21aa60db694058381b6f594885f095$export$default","$9dc8a679e9e58bead4d368991930ccfa$export$default","typedArrayPattern","$4766d843fd37944fe6c40ebbaa7aaf5e$export$supportsArrayBuffer","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nativeIsView","$6c17244ad683b04e8fe7911905aa629a$export$default","$4113367773109491f566fca99083a621$export$default","test","$965ec70e7f224c7d3cfeca678df8bf3e$export$default","collectNonEnumProps","hash","l","contains","emulatedSet","nonEnumIdx","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nonEnumerableProps","constructor","proto","$4766d843fd37944fe6c40ebbaa7aaf5e$export$ObjProto","prop","$18c823376c5830042afa2859bd10a376$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nativeKeys","$4766d843fd37944fe6c40ebbaa7aaf5e$export$hasEnumBug","$83a1753c83f462cddba24ea36ce47496$export$default","isEmpty","$0d046df52324e1b31f2024707819811f$export$default","$4f93bbf2818679c73ac8dbfc977a7a07$export$default","$128563f5bdf8568546aad66b0e9169f2$export$default","$8ae27713e37a9c29d5e79c3d5918a77d$export$default","$3b05cdb343fae09a39046f51e776f0f0$export$default","isMatch","object","attrs","_keys","_","_wrapped","toBufferView","bufferSource","Uint8Array","byteOffset","VERSION","valueOf","toJSON","String","eq","b","aStack","bStack","deepEq","$f779cc76c1a1d6ad15d73b1a79679140$export$default","className","$4766d843fd37944fe6c40ebbaa7aaf5e$export$SymbolProto","$971933d1c47513fb09b37a92d0a37dbd$export$default","areArrays","$018820d0be3c8c64b8cf72f8b1d41946$export$default","aCtor","bCtor","pop","isEqual","allKeys","ie11fingerprint","methods","$d18db0082fe578da6811f391a71bf9b3$export$default","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","concat","setMethods","$4d72093464ae2487da1a1b0e7fdf8340$export$isIE11","$4ea201dde15b569ef673f8a94185c9b5$export$ie11fingerprint","$4ea201dde15b569ef673f8a94185c9b5$export$mapMethods","$4ea201dde15b569ef673f8a94185c9b5$export$weakMapMethods","$4ea201dde15b569ef673f8a94185c9b5$export$setMethods","values","pairs","invert","result","functions","names","sort","createAssigner","keysFunc","defaults","source","$104b4b6ceacd5903ac1c231fdc18e77a$export$default","baseCreate","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nativeCreate","Ctor","props","$2d00069fd8855ccba361fc012741c4c3$export$default","$8902de5b7a4210ae0d0d775a026129d7$export$default","clone","$2540be424c2a69d381c5f70544f42e3b$export$default","tap","interceptor","toPath","path","deepGet","defaultValue","$8018f0169c896f324d83872c991189a8$export$default","$4697741704e109ca4281e66ccaaa7ae4$export$default","$4ee2499b95037586386133e246ec0fe0$export$default","identity","matcher","$9fccc268a09f4fec9ea6784b21d8dedf$export$default","property","optimizeCb","context","argCount","accumulator","baseIteratee","$ab4f4e78340911fc2a1a827c5a582123$export$default","$d61e122df0949dd2864622a1afa3353e$export$default","$d81d08287b5f54859f4a192b71e2f8c4$export$default","$625186f364fd8dc137aa7807e64a2598$export$default","iteratee","$56307bb362f4dd86a06da23445054ab2$export$default","Infinity","cb","$c4e069c32a82fd2a5c5d04e4bcea7338$export$default","mapObject","$b957eed69440ebd3c9b1d78a45604fbd$export$default","results","currentKey","noop","propertyOf","$a500a6f010799ff9a7df787fa369084d$export$default","$ef85fb07de2211bf1f69fdcf77142185$export$default","times","accum","random","min","floor","Date","now","getTime","createEscaper","map","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","replace","&","<",">","\"","'","`","$47064242fb35d600bf21bb30548f9a9a$export$default","$f6155021e9f5ee75ffc79bef4b5cc562$export$default","$0bda26bf29d027de42adeb7830ed6529$export$default","templateSettings","evaluate","interpolate","escape","noMatch","escapes","\\","\r","\n","
","
","escapeRegExp","escapeChar","bareIdentifier","template","text","settings","oldSettings","$6872dbda78546da4704142c0c1df0ab2$export$default","offset","render","argument","variable","data","fallback","idCounter","uniqueId","prefix","id","chain","instance","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","$35cdaa6c87f6f54da4099aed660c7c22$export$default","boundArgs","placeholder","bound","position","$3228f02b676421780262a9bad058fb4c$export$default","TypeError","callArgs","flatten","input","depth","strict","output","idx","$be963c66310a07e4f4a13bd72d66d422$export$default","j","$5376fd82b55f3d24b981e8133bb55b68$export$default","$29292758879b03a0a46ea42800ca319c$export$default","memoize","hasher","cache","address","wait","setTimeout","$c5adee6e70396da0cc5875e9971e75de$export$default","$bc8c6214d737143531239ad25c501ffa$export$default","throttle","options","timeout","previous","later","leading","$eac143eb91b5babdee1b370bb2c48eca$export$default","throttled","_now","remaining","clearTimeout","trailing","cancel","debounce","immediate","passed","debounced","_args","wrap","wrapper","negate","predicate","compose","start","after","before","memo","$e34233ca0155abee01d5ca703ca59f2b$export$default","findKey","createPredicateIndexFinder","dir","array","$fbeb2a8ea83484c4fd41059810f81f2e$export$default","sortedIndex","low","high","mid","createIndexFinder","predicateFind","item","$4766d843fd37944fe6c40ebbaa7aaf5e$export$slice","$befc48520aa876d23cbcdfac862f5e5d$export$default","$c34d2514ffaee6c8d94d7f90aefb6a79$export$default","$5f6e130ef32c78852d617a03558bf4de$export$default","$08e864e25049f3fbd1dd4da7573584a0$export$default","$1d68220bec29d2d07f4928f9efe9a21e$export$default","find","$f4841c265232f176f5b6412afdb2be28$export$default","findWhere","$4e5b5c936dd0a480756133fc91e7f7b7$export$default","each","createReduce","reducer","initial","$02726a623a56a34cef551b2a009d3655$export$default","filter","$7ed9d08b1d8a9f5c63b441713d41f49a$export$default","list","reject","$d6f5e572792112b325b6c053862c316e$export$default","$8b9856ac48da8f63d1bbbfe4a5ef3268$export$default","every","some","fromIndex","guard","$f681841d2b8e02af48e523aa580f5cfa$export$default","$8ccce14a819088ce821a57479a2bd5b9$export$default","contextPath","$78faf640e937a6e0770c1dd6466db445$export$default","method","pluck","where","computed","lastComputed","sample","$2ef5063b6781c2c4fb9e84a1bbfb26b7$export$default","$19545121514a4ceec6f88f1c8e50e575$export$default","last","rand","temp","shuffle","$bbdb4d1d845f834524cc934bb966533d$export$default","sortBy","$54b924e9241a3937b7bf2ca45bb7e807$export$default","criteria","left","right","group","behavior","partition","$e94ff483595449ce238a566adc2a9a37$export$default","pass","reStrSymbol","toArray","size","keyInObj","$76a0fa0ca02a03f593de412afa88dae2$export$default","$ab487a3703a4adc687138807f1fdbdbe$export$default","$9adde3d234d1237d4e95739371a10a23$export$default","first","$e99ab7c589dceb0edc58e310af54c882$export$default","$8c85ae5c50d0dc205834f4cc8454a8df$export$default","compact","Boolean","otherArrays","$46923c265235028bf503d20f975dc959$export$default","uniq","isSorted","$e3a08816e2c3cdac5a0514eaab1eeb4d$export$default","seen","arrays","$a2bc623c109ef8d6a885afe344c4b8c1$export$default","intersection","argsLength","unzip","$3bec954eabc457cb62116031cb235e37$export$default","$af75977507aff8933bffef565e4ee112$export$default","range","stop","step","ceil","chunk","count","chainResult","mixin","$fcebd106c8e4d33ef1435c1fa5d33be6$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$push","$0a2e0b4c3f16213b5041641f42b3644c$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$ArrayProto","dest","$b7eed12b70c12bb159736912ae43341b$export$default","$b41c17ef6dc9c02f08a4b1fcd727bea6$exports","$4f98dcf3c1c9e6d326d487da110886a3$var$_slash","isExtendedLengthPath","hasNonAscii","$fa15ed738edc607bff6e414ee1228faf$var$_events","$94f1d08a4a84a8c311c1f201dc9caab3$exports","minimatch","Minimatch","sep","er","GLOBSTAR","$5e1c6d569f37099081111fea8b1350af$exports","xs","fn","res","x","balanced","str","maybeMatch","r","end","pre","body","post","reg","m","begs","beg","ai","indexOf","bi","$d2ff992d4b3847eaa4295f2dce291d6e$exports","$c5ba3e561919a5724e211288e888a239$exports","substr","expand","split","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","numeric","parseInt","charCodeAt","parseCommaParts","parts","p","postParts","shift","embrace","isPadded","el","lte","y","gte","isTop","expansions","isNumericSequence","isAlphaSequence","isSequence","isOptions","N","width","incr","abs","pad","c","fromCharCode","need","z","k","expansion","plTypes","!","open","close","?","+","*","@","reSpecials","reduce","set","slashSplit","ext","t","pattern","nocomment","charAt","trim","regexp","comment","empty","make","braceExpand","nobrace","def","orig","debug","_made","parseNegate","globSet","console","error","globParts","s","si","parse","negateOffset","nonegate","isSub","noglobstar","stateChar","re","hasMagic","nocase","escaping","patternListStack","negativeLists","inClass","reClassStart","classStart","patternStart","dot","clearStateChar","qmark","noext","reStart","pl","reEnd","cs","substring","sp","SUBPARSE","tail","$1","$2","addPatternStart","nl","nlBefore","nlFirst","nlLast","nlAfter","openParensBefore","cleanAfter","dollar","globUnescape","flags","regExp","_glob","_src","makeRe","twoStar","regExpEscape","ex","mm","f","nonull","filename","file","matchBase","matchOne","flipNegate","fi","pi","fl","hit","fr","pr","swallowee","toLowerCase","$fa15ed738edc607bff6e414ee1228faf$var$_minimatch","$fa15ed738edc607bff6e414ee1228faf$var$_interopRequireDefault","$fa15ed738edc607bff6e414ee1228faf$var$_atom","_atom","$fa15ed738edc607bff6e414ee1228faf$var$_path","arr1","arr2","merge","unique","$f4fbba484e338d4cc479dcb545e6ede1$var$_child_process","_child_process","$f4fbba484e338d4cc479dcb545e6ede1$var$_buffer","_buffer","_util","promisify","execRaw","arr","Set","constants","MAX_STRING_LENGTH","$eb6451db26f7209cf3471689426ebccd$exports","_fs","{","(","[","o","u","exec","exports","raw","readFile","stat","promises","normalize","g","async","h","OTHER","startsWith","DIRECTORY","endsWith","FILE","isDirectory","isFile","$eb6451db26f7209cf3471689426ebccd$export$globifyDirectory","globifyDirectory","$eb6451db26f7209cf3471689426ebccd$export$globifyGitIgnore","globifyGitIgnore","$eb6451db26f7209cf3471689426ebccd$export$globifyGitIgnoreFile","globifyGitIgnoreFile","$eb6451db26f7209cf3471689426ebccd$export$globifyPath","process","cwd","globifyPath","$eb6451db26f7209cf3471689426ebccd$export$posixifyPath","posixifyPath","$eb6451db26f7209cf3471689426ebccd$export$posixifyPathNormalized","posixifyPathNormalized","$b56ba0897d13f41cd51499a721c56b78$exports","generate","$b56ba0897d13f41cd51499a721c56b78$export$generate","convertPatternsToTasks","$b56ba0897d13f41cd51499a721c56b78$export$convertPatternsToTasks","getPositivePatterns","$b56ba0897d13f41cd51499a721c56b78$export$getPositivePatterns","getNegativePatternsAsPositive","$b56ba0897d13f41cd51499a721c56b78$export$getNegativePatternsAsPositive","groupPatternsByBaseDirectory","$b56ba0897d13f41cd51499a721c56b78$export$groupPatternsByBaseDirectory","convertPatternGroupsToTasks","$b56ba0897d13f41cd51499a721c56b78$export$convertPatternGroupsToTasks","convertPatternGroupToTask","$b56ba0897d13f41cd51499a721c56b78$export$convertPatternGroupToTask","$422804cb8a651aa6acba0ac7e3785dc6$exports","$422804cb8a651aa6acba0ac7e3785dc6$export$array","errno","$422804cb8a651aa6acba0ac7e3785dc6$export$errno","fs","$422804cb8a651aa6acba0ac7e3785dc6$export$fs","$422804cb8a651aa6acba0ac7e3785dc6$export$path","$422804cb8a651aa6acba0ac7e3785dc6$export$pattern","stream","$422804cb8a651aa6acba0ac7e3785dc6$export$stream","$422804cb8a651aa6acba0ac7e3785dc6$export$string","$91f583c15909e1ccdadbaf9bc51c6127$exports","$91f583c15909e1ccdadbaf9bc51c6127$export$flatten","splitWhen","$91f583c15909e1ccdadbaf9bc51c6127$export$splitWhen","groupIndex","$93874595d176bf29bfc3a9b922d2d4ff$exports","isEnoentCodeError","$93874595d176bf29bfc3a9b922d2d4ff$export$isEnoentCodeError","$455498c2b58a70fafa5a615bba0f0fb7$exports","createDirentFromStats","$455498c2b58a70fafa5a615bba0f0fb7$export$createDirentFromStats","DirentFromStats","stats","isBlockDevice","bind","isCharacterDevice","isFIFO","isSocket","isSymbolicLink","$f5f5eda539478a6d918ab7b348725789$exports","unixify","$f5f5eda539478a6d918ab7b348725789$export$unixify","makeAbsolute","$f5f5eda539478a6d918ab7b348725789$export$makeAbsolute","$f5f5eda539478a6d918ab7b348725789$export$escape","removeLeadingDotSegment","$f5f5eda539478a6d918ab7b348725789$export$removeLeadingDotSegment","UNESCAPED_GLOB_SYMBOLS_RE","filepath","resolve","entry","secondCharactery","$f0f3d808071f63337f37da8160be0d3f$exports","isStaticPattern","$f0f3d808071f63337f37da8160be0d3f$export$isStaticPattern","isDynamicPattern","$f0f3d808071f63337f37da8160be0d3f$export$isDynamicPattern","convertToPositivePattern","$f0f3d808071f63337f37da8160be0d3f$export$convertToPositivePattern","convertToNegativePattern","$f0f3d808071f63337f37da8160be0d3f$export$convertToNegativePattern","isNegativePattern","$f0f3d808071f63337f37da8160be0d3f$export$isNegativePattern","isPositivePattern","$f0f3d808071f63337f37da8160be0d3f$export$isPositivePattern","getNegativePatterns","$f0f3d808071f63337f37da8160be0d3f$export$getNegativePatterns","$f0f3d808071f63337f37da8160be0d3f$export$getPositivePatterns","getBaseDirectory","$f0f3d808071f63337f37da8160be0d3f$export$getBaseDirectory","hasGlobStar","$f0f3d808071f63337f37da8160be0d3f$export$hasGlobStar","endsWithSlashGlobStar","$f0f3d808071f63337f37da8160be0d3f$export$endsWithSlashGlobStar","isAffectDepthOfReadingPattern","$f0f3d808071f63337f37da8160be0d3f$export$isAffectDepthOfReadingPattern","expandPatternsWithBraceExpansion","$f0f3d808071f63337f37da8160be0d3f$export$expandPatternsWithBraceExpansion","expandBraceExpansion","$f0f3d808071f63337f37da8160be0d3f$export$expandBraceExpansion","getPatternParts","$f0f3d808071f63337f37da8160be0d3f$export$getPatternParts","$f0f3d808071f63337f37da8160be0d3f$export$makeRe","convertPatternsToRe","$f0f3d808071f63337f37da8160be0d3f$export$convertPatternsToRe","matchAny","$f0f3d808071f63337f37da8160be0d3f$export$matchAny","$d2ddf728bc1d253a698155c4263853ec$exports","chars","strictRegex","relaxedRegex","$5aad54ce2053ff01913dccb4f07fd55c$exports","regex","pathPosixDirname","posix","dirname","isWin32","_os","platform","backslash","enclosure","globby","escaped","$107d7de280ab69882848c42370ab9741$exports","opts","assign","flipBackslashes","util","num","Number","isInteger","block","invalid","commas","ranges","nodes","acc","node","flat","ele","$1e8b6070e1240c880554363b46d3fed7$exports","ast","stringify","parent","invalidBlock","escapeInvalid","$a60c24b13b89c4d0c490303e65b46fb5$export$isInvalidBrace","invalidNode","$a60c24b13b89c4d0c490303e65b46fb5$export$isOpenOrClose","child","$816bff67e45ad0133289504628da3d9a$exports","toRegexRange","relaxZeros","strictZeros","cacheKey","shorthand","capture","hasPadding","state","positives","negatives","maxLen","splitToPatterns","neg","pos","onlyNegative","filterPatterns","onlyPositive","intersected","collatePatterns","rangeToPattern","digits","zipped","zip","startDigit","stopDigit","toCharacterClass","tok","prev","nines","zeros","countNines","stops","countZeros","compare","splitToRanges","tokens","padZeros","toQuantifier","comparison","val","repeat","integer","diff","relax","clearCache","$6d6653f07a5df1bec4f49ea73e086fb7$exports","isValidValue","isNumber","maxLength","toNumber","dash","padStart","toMaxLen","negative","toRange","isNumbers","toRegex","rangeError","RangeError","inspect","invalidRange","strictRanges","fillNumbers","descending","startString","endString","stepString","padded","format","transform","toSequence","fill","fillLetters","invalidStep","$8a115514cdcc2d344e3c6e4194b9bce0$exports","$8fc16ef203be5a0514807a93b6777563$exports","walk","isOpen","isClose","$a60c24b13b89c4d0c490303e65b46fb5$export$reduce","append","queue","stash","enclose","$a60c24b13b89c4d0c490303e65b46fb5$export$flatten","$98c28db8c364ac8fc1a0f2f695f25755$exports","rangeLimit","q","limit","$a60c24b13b89c4d0c490303e65b46fb5$export$isInteger","$a60c24b13b89c4d0c490303e65b46fb5$export$exceedsLimit","$a60c24b13b89c4d0c490303e65b46fb5$export$encloseBrace","$22131639b2616d9722fac2c6e041c38d$exports","MAX_LENGTH","CHAR_0","CHAR_9","CHAR_UPPERCASE_A","CHAR_LOWERCASE_A","CHAR_UPPERCASE_Z","CHAR_LOWERCASE_Z","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_ASTERISK","CHAR_AMPERSAND","CHAR_AT","CHAR_BACKSLASH","CHAR_BACKTICK","CHAR_CARRIAGE_RETURN","CHAR_CIRCUMFLEX_ACCENT","CHAR_COLON","CHAR_COMMA","CHAR_DOLLAR","CHAR_DOT","CHAR_DOUBLE_QUOTE","CHAR_EQUAL","CHAR_EXCLAMATION_MARK","CHAR_FORM_FEED","CHAR_FORWARD_SLASH","CHAR_HASH","CHAR_HYPHEN_MINUS","CHAR_LEFT_ANGLE_BRACKET","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_LINE_FEED","CHAR_NO_BREAK_SPACE","CHAR_PERCENT","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_ANGLE_BRACKET","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_SQUARE_BRACKET","CHAR_SEMICOLON","CHAR_SINGLE_QUOTE","CHAR_SPACE","CHAR_TAB","CHAR_UNDERSCORE","CHAR_VERTICAL_LINE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","$10df006dd7c479e8b1fbaf07a5e6ef6d$exports","SyntaxError","stack","brackets","advance","siblings","next","keepQuotes","keepEscaping","splice","braces","nodupes","compile","noempty","$f7e75fe2d5891a3845c8cdcf400928b9$exports","win32","POSIX_CHARS","DOT_LITERAL","PLUS_LITERAL","QMARK_LITERAL","SLASH_LITERAL","ONE_CHAR","QMARK","END_ANCHOR","DOTS_SLASH","NO_DOT","NO_DOTS","NO_DOT_SLASH","NO_DOTS_SLASH","QMARK_NO_DOT","STAR","START_ANCHOR","WINDOWS_CHARS","$2aa45786d7b1a24460688dafa7cd10c1$exports","POSIX_REGEX_SOURCE","alnum","alpha","ascii","blank","cntrl","digit","graph","lower","print","punct","space","upper","word","xdigit","REGEX_BACKSLASH","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REGEX_SPECIAL_CHARS_GLOBAL","REGEX_REMOVE_BACKSLASH","REPLACEMENTS","***","**/**","**/**/**","CHAR_BACKWARD_SLASH","CHAR_GRAVE_ACCENT","SEP","extglobChars","globChars","segs","version","windows","char","lastIdx","lastIndexOf","$ebaa6f4c338ac819d1935e6e1a148c35$export$escapeLast","isPathSeparator","token","isPrefix","isGlobstar","$792e04290caab34ee0f413c5302f1daa$exports","scanToEnd","slashes","lastIndex","isBrace","isBracket","isGlob","isExtglob","braceEscaped","backslashes","negated","finished","eos","noparen","base","glob","unescape","$ebaa6f4c338ac819d1935e6e1a148c35$export$removeBackslashes","maxDepth","prevIndex","expandRange","$ebaa6f4c338ac819d1935e6e1a148c35$export$escapeRegex","syntaxError","bos","prepend","$ebaa6f4c338ac819d1935e6e1a148c35$export$isWindows","PLATFORM_CHARS","EXTGLOB_CHARS","globstar","nodot","qmarkNoDot","star","bash","noextglob","consumed","backtrack","parens","quotes","$ebaa6f4c338ac819d1935e6e1a148c35$export$removePrefix","extglobs","peek","consume","increment","decrement","extglob","inner","extglobOpen","conditions","extglobClose","extglobStar","includes","negatedExtglob","fastpaths","esc","$ebaa6f4c338ac819d1935e6e1a148c35$export$wrapOutput","strictBrackets","nobracket","prevValue","literalBrackets","outputIndex","tokensIndex","brace","dots","unshift","comma","out","toks","$ebaa6f4c338ac819d1935e6e1a148c35$export$supportsLookbehinds","prior","isStart","afterStar","strictSlashes","suffix","slashDot","$6e8d8166959b5ff3d661dc0055efdd9f$exports","picomatch","returnState","fns","isState","compileRe","isIgnored","ignore","ignoreOpts","onMatch","onResult","returnObject","onIgnore","$ebaa6f4c338ac819d1935e6e1a148c35$export$toPosixSlashes","basename","patterns","scan","parsed","returnOutput","undefined","$fc5ef10ca8dd1fe38db1d11fc62fe19f$exports","isEmptyString","micromatch","omit","keep","matched","delete","matches","failglob","nullglob","any","not","matchKeys","all","$f2329f365247f210b8156a3719658264$exports","COMMON_GLOB_SYMBOLS_RE","REGEX_CHARACTER_CLASS_SYMBOLS_RE","REGEX_GROUP_SYMBOLS_RE","GLOB_EXTENSION_SYMBOLS_RE","BRACE_EXPANSIONS_SYMBOLS_RE","caseSensitiveMatch","braceExpansion","patternsRe","patternRe","$1c4725cc0eec0ba2a9cab82dca5d79b3$exports","$1c4725cc0eec0ba2a9cab82dca5d79b3$export$merge","PassThrough","_stream","pauseStreams","streams","_readableState","pipe","pause","propagateCloseEventToSources","emit","$1ba7229c5942e8d4c054a45f1010e685$exports","streamsQueue","merging","doEnd","doPipeError","pipeError","objectMode","highWaterMark","mergedStream","addStream","mergeStream","nextTick","endStream","pipesCount","onend","removeListener","onerror","endEmitted","on","resume","setMaxListeners","once","$8d649816915867a8dfedf6898a9b2196$exports","isString","$8d649816915867a8dfedf6898a9b2196$export$isString","$8d649816915867a8dfedf6898a9b2196$export$isEmpty","positivePatterns","negativePatterns","staticPatterns","dynamicPatterns","staticTasks","dynamicTasks","positive","dynamic","positivePatternsGroup","$677e1f9ecd1673837491374705f546dd$exports","$c3e3e08b60e55625cd4e631817b89d50$exports","stream_1","$8bc05361d389b6be72b3fadae5d2c556$exports","Settings","$8bc05361d389b6be72b3fadae5d2c556$export$Settings","$8bc05361d389b6be72b3fadae5d2c556$export$stat","statSync","$8bc05361d389b6be72b3fadae5d2c556$export$statSync","$c757a2be40f3f48082549c06e4547542$exports","callFailureCallback","callback","callSuccessCallback","read","$c757a2be40f3f48082549c06e4547542$export$read","lstat","lstatError","followSymbolicLink","statError","throwErrorOnBrokenSymbolicLink","markSymbolicLink","$97b5151977b7dc49adf88b0dc34f7308$exports","$97b5151977b7dc49adf88b0dc34f7308$export$read","lstatSync","$19677b2ad3509b94009ff08f0946ce90$exports","$b5f0fa6cf50d6601b5ee3d943652391c$exports","FILE_SYSTEM_ADAPTER","$b5f0fa6cf50d6601b5ee3d943652391c$export$FILE_SYSTEM_ADAPTER","createFileSystemAdapter","$b5f0fa6cf50d6601b5ee3d943652391c$export$createFileSystemAdapter","fsMethods","_options","_getValue","option","$19677b2ad3509b94009ff08f0946ce90$export$default","optionsOrSettingsOrCallback","getSettings","settingsOrOptions","optionsOrSettings","$eceae383f01b15ff1b6fce0fa9f8d97d$exports","$eceae383f01b15ff1b6fce0fa9f8d97d$export$walk","walkSync","$eceae383f01b15ff1b6fce0fa9f8d97d$export$walkSync","walkStream","$eceae383f01b15ff1b6fce0fa9f8d97d$export$walkStream","$eceae383f01b15ff1b6fce0fa9f8d97d$export$Settings","$c6d3aff5b0a5966bf30792563b3a0384$exports","$2c1da33ebca0bd837fc7dcf17c42be81$exports","events_1","$e940d7682608bb6ab0d351114f165b6d$exports","scandir","$e940d7682608bb6ab0d351114f165b6d$export$scandir","scandirSync","$e940d7682608bb6ab0d351114f165b6d$export$scandirSync","$e940d7682608bb6ab0d351114f165b6d$export$Settings","$314ec937a4d965a0890bab57635345d3$exports","$314ec937a4d965a0890bab57635345d3$export$read","readdirWithFileTypes","$314ec937a4d965a0890bab57635345d3$export$readdirWithFileTypes","readdir","$314ec937a4d965a0890bab57635345d3$export$readdir","$ee705190b72702064369939585ddf174$exports","tasks","pending","isSync","done","$9abdb09d41774389792d67d69b4fe3ff$exports","task","promise","queueMicrotask","Promise","then","catch","$dad7fc182206763d2004f78578778508$exports","IS_SUPPORT_READDIR_WITH_FILE_TYPES","$dad7fc182206763d2004f78578778508$export$IS_SUPPORT_READDIR_WITH_FILE_TYPES","NODE_PROCESS_VERSION_PARTS","versions","MAJOR_VERSION","MINOR_VERSION","$d544a5a010663f653d340b184986120a$exports","$d544a5a010663f653d340b184986120a$export$fs","$ccd93f79daa6be19a6748935356dbb79$exports","$ccd93f79daa6be19a6748935356dbb79$export$createDirentFromStats","$6658770e654f379eb538a3f81ba91751$exports","joinPathSegments","$6658770e654f379eb538a3f81ba91751$export$joinPathSegments","separator","directory","withFileTypes","readdirError","dirents","entries","dirent","pathSegmentSeparator","followSymbolicLinks","makeRplTaskEntry","rplError","rplEntries","filepaths","fsStatSettings","$01ea633ddab34ae6965f3c2bf6c0fdf7$exports","$01ea633ddab34ae6965f3c2bf6c0fdf7$export$read","$01ea633ddab34ae6965f3c2bf6c0fdf7$export$readdirWithFileTypes","$01ea633ddab34ae6965f3c2bf6c0fdf7$export$readdir","readdirSync","entryPath","$2178ef4714438fffd03a80cd32cc1efc$exports","$b473c9fa0fefad548831ab1e8171c472$exports","$b473c9fa0fefad548831ab1e8171c472$export$FILE_SYSTEM_ADAPTER","$b473c9fa0fefad548831ab1e8171c472$export$createFileSystemAdapter","$2178ef4714438fffd03a80cd32cc1efc$export$default","fastqueue","worker","concurrency","$2cb7890bd90df65b7917472cc3d070d2$exports","Task","queueHead","queueTail","_running","errorHandler","current","release","paused","saturated","worked","drain","running","idle","counter","getQueue","kill","killAndDrain","handler","holder","Constructor","head","arg","pushCb","unshiftCb","$553e79dfd0e4ab7c0f7f9af852602d0d$exports","$553e79dfd0e4ab7c0f7f9af852602d0d$export$promise","$28ccf74058ee42aa9a9cec32fb934bd7$exports","isFatalError","$28ccf74058ee42aa9a9cec32fb934bd7$export$isFatalError","isAppliedFilter","$28ccf74058ee42aa9a9cec32fb934bd7$export$isAppliedFilter","replacePathSegmentSeparator","$28ccf74058ee42aa9a9cec32fb934bd7$export$replacePathSegmentSeparator","$28ccf74058ee42aa9a9cec32fb934bd7$export$joinPathSegments","errorFilter","$bc0bb7d1dd6380f5e8c286e7a6e9815d$exports","_root","_settings","$bc0bb7d1dd6380f5e8c286e7a6e9815d$export$default","AsyncReader","super","_scandir","_emitter","EventEmitter","_queue","_worker","_isFatalError","_isDestroyed","setImmediate","_pushToQueue","basePath","isDestroyed","onEntry","onError","onEnd","queueItem","_handleError","fsScandirSettings","_handleEntry","fullpath","entryFilter","_emitEntry","deepFilter","$2c1da33ebca0bd837fc7dcf17c42be81$export$default","_reader","_storage","$c6d3aff5b0a5966bf30792563b3a0384$export$default","$26be4b79794f6d80679cb8a25362498f$exports","Readable","$26be4b79794f6d80679cb8a25362498f$export$default","$e5f6e8e612b06ed892409b430c8501ee$exports","$862a344797f6c1c72b54b76336d38abc$exports","SyncReader","_handleQueue","_handleDirectory","_pushToStorage","$862a344797f6c1c72b54b76336d38abc$export$default","$e5f6e8e612b06ed892409b430c8501ee$export$default","$3c25873d4160a8eacbf3af0cf040b718$exports","$3c25873d4160a8eacbf3af0cf040b718$export$default","$da952f7f027e09e1d041fa364119e728$exports","_fsStatSettings","_getFullEntryPath","_makeEntry","suppressErrors","$da952f7f027e09e1d041fa364119e728$export$default","ReaderStream","_walkStream","_stat","static","_write","_enc","_getEntry","write","_getStat","$c3e3e08b60e55625cd4e631817b89d50$export$default","$d315fb9167b993f8afd07ce80b5b4d50$exports","$6fb777a4248090afc927d654da80432d$exports","$f52404b5656f6ca38bf54f7e0d7562ff$exports","$a84da9eb5f7db2806540bcfd25d29295$exports","_patterns","_micromatchOptions","_fillStorage","segments","_getPatternSegments","sections","_splitSegmentsIntoSections","complete","part","segment","$a84da9eb5f7db2806540bcfd25d29295$export$default","PartialMatcher","levels","info","section","$f52404b5656f6ca38bf54f7e0d7562ff$export$default","getFilter","_getMatcher","negativeRe","_getNegativePatternsRe","_filter","affectDepthOfReadingPatterns","_isSkippedByDeep","_isSkippedSymbolicLink","_isSkippedByPositivePatterns","_isSkippedByNegativePatterns","deep","_getEntryLevel","entryPathDepth","baseNameMatch","$6fb777a4248090afc927d654da80432d$export$default","$b3e746e92b1737cb08f1292865d58230$exports","positiveRe","_isDuplicateEntry","_onlyFileFilter","_onlyDirectoryFilter","_isSkippedByAbsoluteNegativePatterns","isMatched","_isMatchToPatterns","_createIndexRecord","onlyFiles","onlyDirectories","absolute","$b3e746e92b1737cb08f1292865d58230$export$default","$368d0b7e1e0205e704c7318f9975b611$exports","_isNonFatalError","$368d0b7e1e0205e704c7318f9975b611$export$default","$18cfe2da09606ed5942660f61e639ba3$exports","getTransformer","_transform","markDirectories","$18cfe2da09606ed5942660f61e639ba3$export$default","_getMicromatchOptions","entryTransformer","_getRootDirectory","_getReaderOptions","$d315fb9167b993f8afd07ce80b5b4d50$export$default","ProviderAsync","api","$677e1f9ecd1673837491374705f546dd$export$default","$830d12722898172b5cedb0edbe76ea36$exports","ProviderStream","destination","$830d12722898172b5cedb0edbe76ea36$export$default","$27ad7a9b24a00373e965e24243868ccf$exports","$664d9e7b85bb79c5eccce16646452ba6$exports","ReaderSync","_walkSync","_statSync","$664d9e7b85bb79c5eccce16646452ba6$export$default","ProviderSync","$27ad7a9b24a00373e965e24243868ccf$export$default","$806ac1c6f72abd60a35a06af79845a5d$exports","DEFAULT_FILE_SYSTEM_ADAPTER","$806ac1c6f72abd60a35a06af79845a5d$export$DEFAULT_FILE_SYSTEM_ADAPTER","os","CPU_COUNT","cpus","FastGlob","_getFileSystemMethods","assertPatternsInput","works","getWorks","_Provider","provider","$806ac1c6f72abd60a35a06af79845a5d$export$default","sync","generateTasks","escapePath","$fa15ed738edc607bff6e414ee1228faf$var$_fastGlob","sysPath","realpath","NORMAL_FLOW_ERRORS","FILE_TYPE","DIR_TYPE","FILE_DIR_TYPE","EVERYTHING_TYPE","ALL_TYPES","normalizeFilter","trimmed","ReaddirpStream","defaultOptions","fileFilter","directoryFilter","alwaysStat","autoDestroy","_fileFilter","_directoryFilter","statMethod","bigint","_maxDepth","_wantsDir","_wantsFile","_wantsEverything","_isDirent","_statsProp","_rdOptions","encoding","parents","_exploreDir","reading","[object Object]","batch","destroyed","files","_formatEntry","entryType","_getEntryType","fullPath","_includeAsFile","_onError","full","entryRealPath","entryRealPathStats","readdirp","$ca2f5dac767861320668accf6d4b1e70$exports","$bf37ad29abbcf103c358641a77b0e0f6$exports","$ad5394e8af4b9d7be86d4aaa529d2093$exports","stripTrailing","ch","DEFAULT_OPTIONS","returnIndex","matchPatterns","negPatterns","isList","_path","nglob","applied","anymatch","matchers","testString","mtchers","negatedGlobs","createPattern","ri","$9a6725cc51f237c59bd2dde101a7e043$exports","JSON","$f679af930e9349262225e182daa7fd86$exports","filePath","extname","fsrealpath","statMethods","foreach","addAndConvert","main","container","delFromSet","isEmptySet","FsWatchInstances","createFsWatchInstance","listener","errHandler","emitRaw","handleEvent","rawEvent","evPath","watchedPath","fsWatchBroadcast","watch","val1","val2","val3","cont","setFsWatchListener","handlers","rawEmitter","watcher","persistent","broadcastErr","watcherUnusable","$8cbc3845e0a0b879f092531808396835$export$isWindows","fd","listeners","errHandlers","rawEmitters","$8cbc3845e0a0b879f092531808396835$export$HANDLER_KEYS","clear","clearItem","freeze","FsWatchFileInstances","$9ee9127d63637f961c4ff451ce8a7aa4$exports","fsW","fsw","_boundHandleError","_watchWithNodeFs","_getWatchedDir","absolutePath","closer","$8cbc3845e0a0b879f092531808396835$export$EMPTY_FN","usePolling","interval","enableBinaryInterval","binaryInterval","copts","unwatchFile","watchFile","curr","currmtime","mtimeMs","setFsWatchFileListener","_emitRaw","_handleFile","initialAdd","closed","prevStats","newStats","_throttle","at","atimeMs","mt","_emit","$8cbc3845e0a0b879f092531808396835$export$isLinux","ino","_closeFile","_addPathCloser","_remove","ignoreInitial","_isntIgnored","followSymlinks","_incrReadyCount","linkPath","_symlinkPaths","_emitReady","_handleRead","wh","target","throttler","hasGlob","_readdirp","filterPath","filterDir","_handleSymlink","_addToNodeFs","wasThrottled","getChildren","parentDir","tracked","globFilter","oDepth","dirPath","priorWh","ready","_isIgnored","_getWatchHelpers","watchPath","follow","absPath","targetPath","_handleDir","fsevents","env","CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR","mtch","maj","FSEventsWatchers","wrongEventFlags","createFSEventsInstance","couldConsolidate","calcDepth","sameTypes","$ac251d5e34947b0caba198911f769a5d$exports","checkIgnored","ipaths","_ignoredPaths","addOrChange","realPath","watchedDir","event","curDepth","_addToFsEvents","eventName","_watchWithFsEvents","parentPath","resolvedPath","hasSymlink","filteredListener","watchedParent","getInfo","lst","setFSEventsListener","ignored","checkExists","linkTarget","aliasedPath","$8cbc3845e0a0b879f092531808396835$export$DOT_SLASH","emitAdd","newPath","processPath","forceAdd","pp","isDir","dirObj","initWatch","priorDepth","$8cbc3845e0a0b879f092531808396835$export$IDENTITY_FN","joinedPath","_handleFsEventsSymlink","canUse","$ac251d5e34947b0caba198911f769a5d$export$canUse","arrify","unifyPaths","paths_","paths","normalizePathToUnix","toUnix","$8cbc3845e0a0b879f092531808396835$export$BACK_SLASH_RE","$8cbc3845e0a0b879f092531808396835$export$DOUBLE_SLASH_RE","normalizeIgnored","isAbsolute","undef","DirEntry","removeWatcher","_removeWatcher","WatchHelper","$8cbc3845e0a0b879f092531808396835$export$REPLACER_RE","fullWatchPath","globSymlink","$8cbc3845e0a0b879f092531808396835$export$ANYMATCH_OPTS","dirParts","getDirParts","checkGlobSymlink","fullParentDir","_hasReadPermissions","$8cbc3845e0a0b879f092531808396835$export$SLASH_OR_BACK_SLASH_RE","entryParts","unmatchedGlob","FSWatcher","_opts","_watched","_closers","_throttled","_streams","ignorePermissionErrors","disableGlobbing","useFsEvents","$8cbc3845e0a0b879f092531808396835$export$isMacos","envPoll","CHOKIDAR_USEPOLLING","envLower","envInterval","CHOKIDAR_INTERVAL","atomic","_pendingUnlinks","awaitWriteFinish","awf","stabilityThreshold","pollInterval","_pendingWrites","readyCalls","_readyCount","_readyEmitted","_fsEventsHandler","_nodeFsHandler","_origAdd","_internal","getAbsolutePath","_userIgnored","unwatch","_closePath","_closePromise","removeAllListeners","closers","closerList","getWatched","watchList","emitWithAll","pw","lastChange","awfEmit","_awaitWriteFinish","actionType","action","actionPath","timeoutObject","thr","threshold","timeoutHandler","prevStat","curStat","cancelWait","_getGlobIgnored","$8cbc3845e0a0b879f092531808396835$export$DOT_RE","ign","_boundRemove","st","mode","it","nested","wasTracked","remove","relPath","$5fc730f58802e221fd46116902978493$exports","$5fc730f58802e221fd46116902978493$export$FSWatcher","$5fc730f58802e221fd46116902978493$export$watch","$fa15ed738edc607bff6e414ee1228faf$var$chokidar","$fa15ed738edc607bff6e414ee1228faf$var$_interopRequireWildcard","PathsCache","rebuildCacheBound","rebuildCache","_projectChangeWatcher","project","onDidChangePaths","_onDidChangeFilesBound","_onDidChangeFiles","_projectWatcher","onDidChangeFiles","_repositories","_filePathsByProjectDirectory","_filePathsByDirectory","_fileWatchersByDirectory","_allIgnoredGlobByDirectory","excludeVcsIgnoredPaths","shouldIgnoredNames","_cancelled","_cacheProjectPathsAndRepositories","_cachePaths","_addWatchers","getFilePathsForProjectDirectory","projectDirectory","relativeToPath","filePaths","isPackageDispose","_isPathIgnored","repository","isIgnoredSubmodule","isSubmodule","isPathIgnored","ignoredName","ignoredPattern","_projectDirectories","getDirectories","projectNum","repositoriesP","repositoryForDirectory","repositories","_addWatcherForDirectory","projectPath","getPath","chokidar","addedFile","onAddFile","removedFile","onRemoveFile","addedDir","onAddDir","removedDir","onRemoveDir","fileIndex","_cachePathsForDirectoryWithGlob","Directory","_removeFilePathsForDirectory","_cleanWatchersForDirectory","_cachePathsForDirectory","otherDirectory","events","oldPath","pd","directoryPath","_cachePathsWithGlob","_cachePathsWithAtom","_cachePathsForDirectoryWithAtom","patternsNum","globEntries","iEntry","globifyOutput","rootDirectory","ignoredPatternsGlob","gitignoreFiles","gitignoreFile","_getDirectoryGitIgnoreGlob","_getIgnoredPatternsGlob","_getAllGitIgnoreGlob","directoryGlob","allIgnoredGlob","_getAllIgnoredGlob","_getDirectoryEntries","directories","File","filePathsArray","notifications","addError","dismissable","$f4fbba484e338d4cc479dcb545e6ede1$exports","union","$4f98dcf3c1c9e6d326d487da110886a3$var$_pathsCache","$4f98dcf3c1c9e6d326d487da110886a3$var$_zadeh","_zadeh","javascriptPrefixes","javascriptExtensions","javascriptReplaceOnInsert","includeCurrentDirectory","PathsProvider","_isReady","_onRebuildCache","_onRebuildCacheDone","_scopes","DefaultScopes","_getSuggestionsForScope","scope","request","pathPrefix","_getLineTextForRequest","trailingSlashPresent","directoryGiven","parsedPathPrefix","editor","getBuffer","_getProjectDirectory","currentDirectory","requestedDirectoryPath","fuzzyMatcher","pth","maxResults","suggestions","pathName","projectRelativePath","relativizePath","displayText","relativePath","from","to","distanceToFile","replacementPrefix","iconHTML","score","suggestionsCount","maxDistance","_scopeMatchesRequest","$f9e106c2e1e1ccc57480ff8b927bda19$export$default","isReady","fileCount","accumulated","sourceScopes","$228fb12415c5bb7e75d32ba8bde9e7be$export$default","scopeDescriptor","getScopesArray","line","lineMatch","bufferPosition","getTextInRange","row","selector","inclusionPriority","$03598ba88244fec3d8d0cb2db73afc9c$var$_pathsProvider","$4f98dcf3c1c9e6d326d487da110886a3$exports","CompositeDisposable","_statusBarElement","createElement","innerHTML","addRightTile","priority","getProvider","setInterval","$097275b90bf2ee3fa89a64190f90301a$export$default"],"version":3,"file":"autocomplete-paths.js.map"} \ No newline at end of file +{"mappings":"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","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./lib/autocomplete-paths.js","./lib/config/option-scopes.js","./lib/config/index.js","./lib/paths-provider.js","./node_modules/underscore/modules/_setup.js","./node_modules/underscore/modules/restArguments.js","./node_modules/underscore/modules/isObject.js","./node_modules/underscore/modules/isNull.js","./node_modules/underscore/modules/isUndefined.js","./node_modules/underscore/modules/isBoolean.js","./node_modules/underscore/modules/isElement.js","./node_modules/underscore/modules/_tagTester.js","./node_modules/underscore/modules/isString.js","./node_modules/underscore/modules/isNumber.js","./node_modules/underscore/modules/isDate.js","./node_modules/underscore/modules/isRegExp.js","./node_modules/underscore/modules/isError.js","./node_modules/underscore/modules/isSymbol.js","./node_modules/underscore/modules/isArrayBuffer.js","./node_modules/underscore/modules/isFunction.js","./node_modules/underscore/modules/_hasObjectTag.js","./node_modules/underscore/modules/_stringTagBug.js","./node_modules/underscore/modules/isDataView.js","./node_modules/underscore/modules/isArray.js","./node_modules/underscore/modules/_has.js","./node_modules/underscore/modules/isArguments.js","./node_modules/underscore/modules/isFinite.js","./node_modules/underscore/modules/isNaN.js","./node_modules/underscore/modules/constant.js","./node_modules/underscore/modules/_createSizePropertyCheck.js","./node_modules/underscore/modules/_shallowProperty.js","./node_modules/underscore/modules/_getByteLength.js","./node_modules/underscore/modules/_isBufferLike.js","./node_modules/underscore/modules/isTypedArray.js","./node_modules/underscore/modules/_getLength.js","./node_modules/underscore/modules/_collectNonEnumProps.js","./node_modules/underscore/modules/keys.js","./node_modules/underscore/modules/isEmpty.js","./node_modules/underscore/modules/isMatch.js","./node_modules/underscore/modules/underscore.js","./node_modules/underscore/modules/_toBufferView.js","./node_modules/underscore/modules/isEqual.js","./node_modules/underscore/modules/allKeys.js","./node_modules/underscore/modules/_methodFingerprint.js","./node_modules/underscore/modules/isMap.js","./node_modules/underscore/modules/isWeakMap.js","./node_modules/underscore/modules/isSet.js","./node_modules/underscore/modules/isWeakSet.js","./node_modules/underscore/modules/values.js","./node_modules/underscore/modules/pairs.js","./node_modules/underscore/modules/invert.js","./node_modules/underscore/modules/functions.js","./node_modules/underscore/modules/_createAssigner.js","./node_modules/underscore/modules/extend.js","./node_modules/underscore/modules/extendOwn.js","./node_modules/underscore/modules/defaults.js","./node_modules/underscore/modules/_baseCreate.js","./node_modules/underscore/modules/create.js","./node_modules/underscore/modules/clone.js","./node_modules/underscore/modules/tap.js","./node_modules/underscore/modules/toPath.js","./node_modules/underscore/modules/_toPath.js","./node_modules/underscore/modules/_deepGet.js","./node_modules/underscore/modules/get.js","./node_modules/underscore/modules/has.js","./node_modules/underscore/modules/identity.js","./node_modules/underscore/modules/matcher.js","./node_modules/underscore/modules/property.js","./node_modules/underscore/modules/_optimizeCb.js","./node_modules/underscore/modules/_baseIteratee.js","./node_modules/underscore/modules/iteratee.js","./node_modules/underscore/modules/_cb.js","./node_modules/underscore/modules/mapObject.js","./node_modules/underscore/modules/noop.js","./node_modules/underscore/modules/propertyOf.js","./node_modules/underscore/modules/times.js","./node_modules/underscore/modules/random.js","./node_modules/underscore/modules/now.js","./node_modules/underscore/modules/_createEscaper.js","./node_modules/underscore/modules/_escapeMap.js","./node_modules/underscore/modules/escape.js","./node_modules/underscore/modules/unescape.js","./node_modules/underscore/modules/_unescapeMap.js","./node_modules/underscore/modules/templateSettings.js","./node_modules/underscore/modules/template.js","./node_modules/underscore/modules/result.js","./node_modules/underscore/modules/uniqueId.js","./node_modules/underscore/modules/chain.js","./node_modules/underscore/modules/_executeBound.js","./node_modules/underscore/modules/partial.js","./node_modules/underscore/modules/bind.js","./node_modules/underscore/modules/_isArrayLike.js","./node_modules/underscore/modules/_flatten.js","./node_modules/underscore/modules/bindAll.js","./node_modules/underscore/modules/memoize.js","./node_modules/underscore/modules/delay.js","./node_modules/underscore/modules/defer.js","./node_modules/underscore/modules/throttle.js","./node_modules/underscore/modules/debounce.js","./node_modules/underscore/modules/wrap.js","./node_modules/underscore/modules/negate.js","./node_modules/underscore/modules/compose.js","./node_modules/underscore/modules/after.js","./node_modules/underscore/modules/before.js","./node_modules/underscore/modules/once.js","./node_modules/underscore/modules/findKey.js","./node_modules/underscore/modules/_createPredicateIndexFinder.js","./node_modules/underscore/modules/findIndex.js","./node_modules/underscore/modules/findLastIndex.js","./node_modules/underscore/modules/sortedIndex.js","./node_modules/underscore/modules/_createIndexFinder.js","./node_modules/underscore/modules/indexOf.js","./node_modules/underscore/modules/lastIndexOf.js","./node_modules/underscore/modules/find.js","./node_modules/underscore/modules/findWhere.js","./node_modules/underscore/modules/each.js","./node_modules/underscore/modules/map.js","./node_modules/underscore/modules/_createReduce.js","./node_modules/underscore/modules/reduce.js","./node_modules/underscore/modules/reduceRight.js","./node_modules/underscore/modules/filter.js","./node_modules/underscore/modules/reject.js","./node_modules/underscore/modules/every.js","./node_modules/underscore/modules/some.js","./node_modules/underscore/modules/contains.js","./node_modules/underscore/modules/invoke.js","./node_modules/underscore/modules/pluck.js","./node_modules/underscore/modules/where.js","./node_modules/underscore/modules/max.js","./node_modules/underscore/modules/min.js","./node_modules/underscore/modules/sample.js","./node_modules/underscore/modules/shuffle.js","./node_modules/underscore/modules/sortBy.js","./node_modules/underscore/modules/_group.js","./node_modules/underscore/modules/groupBy.js","./node_modules/underscore/modules/indexBy.js","./node_modules/underscore/modules/countBy.js","./node_modules/underscore/modules/partition.js","./node_modules/underscore/modules/toArray.js","./node_modules/underscore/modules/size.js","./node_modules/underscore/modules/_keyInObj.js","./node_modules/underscore/modules/pick.js","./node_modules/underscore/modules/omit.js","./node_modules/underscore/modules/initial.js","./node_modules/underscore/modules/first.js","./node_modules/underscore/modules/rest.js","./node_modules/underscore/modules/last.js","./node_modules/underscore/modules/compact.js","./node_modules/underscore/modules/flatten.js","./node_modules/underscore/modules/difference.js","./node_modules/underscore/modules/without.js","./node_modules/underscore/modules/uniq.js","./node_modules/underscore/modules/union.js","./node_modules/underscore/modules/intersection.js","./node_modules/underscore/modules/unzip.js","./node_modules/underscore/modules/zip.js","./node_modules/underscore/modules/object.js","./node_modules/underscore/modules/range.js","./node_modules/underscore/modules/chunk.js","./node_modules/underscore/modules/_chainResult.js","./node_modules/underscore/modules/mixin.js","./node_modules/underscore/modules/underscore-array-methods.js","./node_modules/underscore/modules/index-default.js","./node_modules/slash/index.js","./lib/paths-cache.js","./node_modules/minimatch/minimatch.js","./node_modules/concat-map/index.js","./node_modules/balanced-match/index.js","./node_modules/brace-expansion/index.js","./lib/utils.js","./node_modules/globify-gitignore/dist/main.js","./node_modules/fast-glob/out/managers/tasks.js","./node_modules/fast-glob/out/utils/index.js","./node_modules/fast-glob/out/utils/array.js","./node_modules/fast-glob/out/utils/errno.js","./node_modules/fast-glob/out/utils/fs.js","./node_modules/fast-glob/out/utils/path.js","./node_modules/fast-glob/out/utils/pattern.js","./node_modules/is-extglob/index.js","./node_modules/is-glob/index.js","./node_modules/glob-parent/index.js","./node_modules/micromatch/index.js","./node_modules/braces/lib/utils.js","./node_modules/braces/lib/stringify.js","./node_modules/fill-range/index.js","./node_modules/is-number/index.js","./node_modules/to-regex-range/index.js","./node_modules/braces/lib/compile.js","./node_modules/braces/lib/expand.js","./node_modules/braces/lib/constants.js","./node_modules/braces/lib/parse.js","./node_modules/braces/index.js","./node_modules/picomatch/lib/picomatch.js","./node_modules/picomatch/lib/utils.js","./node_modules/picomatch/lib/constants.js","./node_modules/picomatch/lib/scan.js","./node_modules/picomatch/lib/parse.js","./node_modules/picomatch/index.js","./node_modules/fast-glob/out/utils/stream.js","./node_modules/merge2/index.js","./node_modules/fast-glob/out/utils/string.js","./node_modules/fast-glob/out/providers/async.js","./node_modules/fast-glob/out/readers/stream.js","./node_modules/@nodelib/fs.stat/out/index.js","./node_modules/@nodelib/fs.stat/out/providers/async.js","./node_modules/@nodelib/fs.stat/out/providers/sync.js","./node_modules/@nodelib/fs.stat/out/settings.js","./node_modules/@nodelib/fs.stat/out/adapters/fs.js","./node_modules/@nodelib/fs.walk/out/index.js","./node_modules/@nodelib/fs.walk/out/providers/async.js","./node_modules/@nodelib/fs.walk/out/readers/async.js","./node_modules/@nodelib/fs.scandir/out/index.js","./node_modules/@nodelib/fs.scandir/out/providers/async.js","./node_modules/run-parallel/index.js","./node_modules/queue-microtask/index.js","./node_modules/@nodelib/fs.scandir/out/constants.js","./node_modules/@nodelib/fs.scandir/out/utils/index.js","./node_modules/@nodelib/fs.scandir/out/utils/fs.js","./node_modules/@nodelib/fs.scandir/out/providers/common.js","./node_modules/@nodelib/fs.scandir/out/providers/sync.js","./node_modules/@nodelib/fs.scandir/out/settings.js","./node_modules/@nodelib/fs.scandir/out/adapters/fs.js","./node_modules/fastq/queue.js","./node_modules/reusify/reusify.js","./node_modules/@nodelib/fs.walk/out/readers/common.js","./node_modules/@nodelib/fs.walk/out/readers/reader.js","./node_modules/@nodelib/fs.walk/out/providers/stream.js","./node_modules/@nodelib/fs.walk/out/providers/sync.js","./node_modules/@nodelib/fs.walk/out/readers/sync.js","./node_modules/@nodelib/fs.walk/out/settings.js","./node_modules/fast-glob/out/readers/reader.js","./node_modules/fast-glob/out/providers/provider.js","./node_modules/fast-glob/out/providers/filters/deep.js","./node_modules/fast-glob/out/providers/matchers/partial.js","./node_modules/fast-glob/out/providers/matchers/matcher.js","./node_modules/fast-glob/out/providers/filters/entry.js","./node_modules/fast-glob/out/providers/filters/error.js","./node_modules/fast-glob/out/providers/transformers/entry.js","./node_modules/fast-glob/out/providers/stream.js","./node_modules/fast-glob/out/providers/sync.js","./node_modules/fast-glob/out/readers/sync.js","./node_modules/fast-glob/out/settings.js","./node_modules/fast-glob/out/index.js","./node_modules/chokidar/index.js","./node_modules/readdirp/index.js","./node_modules/anymatch/index.js","./node_modules/normalize-path/index.js","./node_modules/chokidar/lib/nodefs-handler.js","./node_modules/is-binary-path/index.js","./node_modules/binary-extensions/binary-extensions.json","./node_modules/chokidar/lib/constants.js","./node_modules/chokidar/lib/fsevents-handler.js","./lib/config/default-scopes.js"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$export(e, n, v) {\n Object.defineProperty(e, n, {get: v, enumerable: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","\"use babel\"\nexport { config } from \"./config\"\nimport PathsProvider from \"./paths-provider\"\nimport { CompositeDisposable } from \"atom\"\nimport { OptionScopes } from \"./config/option-scopes\"\nimport { debounce } from \"underscore\"\n\nconst subscriptions = new CompositeDisposable()\nlet _provider\n/** provider.rebuildCache method debounced */\nlet _rebuildCache\nlet _statusBar\nlet _statusBarInterval\nlet _statusBarTile\nlet _statusBarElement\nlet _displayStatusBarItemOnConsumption\n\nexport function activate() {\n subscriptions.add(\n atom.commands.add(\"atom-workspace\", {\n \"autocomplete-paths:rebuild-cache\": () => {\n _rebuildCache()\n },\n })\n )\n\n const cacheOptions = [\n \"core.ignoredNames\",\n \"core.excludeVcsIgnoredPaths\",\n \"autocomplete-paths.ignoreSubmodules\",\n \"autocomplete-paths.ignoredNames\",\n \"autocomplete-paths.ignoredPatterns\",\n \"autocomplete-paths.maxFileCount\",\n ]\n cacheOptions.forEach((cacheOption) => {\n subscriptions.add(\n atom.config.observe(cacheOption, () => {\n if (!_provider) {\n return\n }\n _provider._pathsCache.updateConfig()\n _rebuildCache()\n })\n )\n })\n\n const scopeOptions = [\"autocomplete-paths.scopes\"]\n for (const key in OptionScopes) {\n scopeOptions.push(`autocomplete-paths.${key}`)\n }\n scopeOptions.forEach((scopeOption) => {\n subscriptions.add(\n atom.config.observe(scopeOption, () => {\n if (!_provider) {\n return\n }\n _provider.reloadScopes()\n })\n )\n })\n}\n\nexport function deactivate() {\n if (_statusBarInterval) {\n clearInterval(_statusBarInterval)\n }\n subscriptions.dispose()\n if (_provider) {\n _provider.dispose(true)\n _provider = null\n }\n if (_statusBarTile) {\n _statusBarTile.destroy()\n _statusBarTile = null\n }\n}\n\n/**\n * Invoked when the status bar becomes available\n * @param {StatusBar} statusBar\n */\nexport function consumeStatusBar(statusBar) {\n _statusBar = statusBar\n if (_displayStatusBarItemOnConsumption) {\n _displayStatusBarTile()\n }\n}\n\n/**\n * Displays the status bar tile\n */\nfunction _displayStatusBarTile() {\n if (!_statusBar) {\n _displayStatusBarItemOnConsumption = true\n return\n }\n if (_statusBarTile) {\n return\n }\n\n _statusBarElement = document.createElement(\"autocomplete-paths-status-bar\")\n _statusBarElement.innerHTML = \"Rebuilding paths cache...\"\n _statusBarTile = _statusBar.addRightTile({\n item: _statusBarElement,\n priority: 100,\n })\n if (!_provider) {\n // TODO check why we need this check\n getProvider()\n if (!_provider) {\n return\n }\n }\n _statusBarInterval = setInterval(() => {\n const fileCount = _provider.fileCount\n if (fileCount > 0) {\n _statusBarElement.innerHTML = `Rebuilding paths cache... ${fileCount} files`\n }\n }, 500)\n}\n\n/**\n * Hides the status bar tile\n */\nfunction _hideStatusBarTile() {\n if (_statusBarInterval) {\n clearInterval(_statusBarInterval)\n }\n if (_statusBarTile) {\n _statusBarTile.destroy()\n }\n _statusBarTile = null\n _statusBarElement = null\n}\n\nexport function getProvider() {\n if (!_provider) {\n _provider = new PathsProvider()\n _provider.on(\"rebuild-cache\", () => {\n _displayStatusBarTile()\n })\n _provider.on(\"rebuild-cache-done\", () => {\n _hideStatusBarTile()\n })\n _rebuildCache = debounce(\n () => {\n return _provider.rebuildCache()\n },\n 1000,\n true\n )\n _rebuildCache()\n }\n return _provider\n}\n","\"use babel\"\n\nexport const OptionScopes = {\n enableHtmlSupport: [\n {\n scopes: [\"text.html.basic\"],\n prefixes: [\"src=['\\\"]\", \"href=['\\\"]\", \"name=['\\\"]\"],\n extensions: [\"js\", \"png\", \"gif\", \"jpeg\", \"jpg\", \"tiff\", \"html\", \"json\", \"svg\"],\n relative: true,\n },\n ],\n}\n","\"use babel\"\n\nimport { OptionScopes } from \"./option-scopes\"\n\nexport const config = {\n normalizeSlashes: {\n type: \"boolean\",\n description: \"Replaces backward slashes with forward slashes on windows (if possible)\",\n default: true,\n },\n maxFileCount: {\n type: \"number\",\n description: \"The maximum amount of files to be handled\",\n default: 2000,\n },\n suggestionPriority: {\n type: \"number\",\n description:\n \"Suggestion priority of this provider. If set to a number larger than or equal to 1, suggestions will be displayed on top of default suggestions.\",\n default: 2,\n },\n ignoredNames: {\n type: \"boolean\",\n default: true,\n description: \"Ignore items matched by the `Ignore Names` core option.\",\n },\n ignoreSubmodules: {\n type: \"boolean\",\n default: false,\n description: \"Ignore submodule directories.\",\n },\n ignoredPatterns: {\n type: \"array\",\n default: [],\n items: {\n type: \"string\",\n },\n description: \"Ignore additional **glob** or file path patterns.\",\n },\n ignoreBuiltinScopes: {\n type: \"boolean\",\n default: false,\n description: \"Ignore built-in scopes and use only scopes from user configuration.\",\n },\n scopes: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n scopes: {\n type: [\"array\"],\n items: {\n type: \"string\",\n },\n },\n prefixes: {\n type: [\"array\"],\n items: {\n type: \"string\",\n },\n },\n extensions: {\n type: [\"array\"],\n items: {\n type: \"string\",\n },\n },\n relative: {\n type: \"boolean\",\n default: true,\n },\n replaceOnInsert: {\n type: \"array\",\n items: {\n type: \"array\",\n items: {\n type: [\"string\", \"string\"],\n },\n },\n },\n },\n },\n },\n}\n\nconst keys = Object.keys(OptionScopes)\nfor (let i = 0, len = keys.length; i < len; i++) {\n config[keys[i]] = {\n type: \"boolean\",\n default: false,\n }\n}\n","\"use babel\"\n\nimport { EventEmitter } from \"events\"\nimport path from \"path\"\nimport { intersection, flatten, max } from \"underscore\"\nimport slash from \"slash\"\nimport PathsCache from \"./paths-cache\"\nimport { score, filter } from \"zadeh\"\nimport { DefaultScopes } from \"./config/default-scopes\"\nimport { OptionScopes } from \"./config/option-scopes\"\n\nexport default class PathsProvider extends EventEmitter {\n constructor() {\n super()\n this.reloadScopes()\n\n this._pathsCache = new PathsCache()\n this._isReady = false\n\n this._onRebuildCache = this._onRebuildCache.bind(this)\n this._onRebuildCacheDone = this._onRebuildCacheDone.bind(this)\n\n this._pathsCache.on(\"rebuild-cache\", this._onRebuildCache)\n this._pathsCache.on(\"rebuild-cache-done\", this._onRebuildCacheDone)\n }\n\n /**\n * Reloads the scopes\n */\n reloadScopes() {\n this._scopes = atom.config.get(\"autocomplete-paths.scopes\").slice(0) || []\n\n if (!atom.config.get(\"autocomplete-paths.ignoreBuiltinScopes\")) {\n this._scopes = this._scopes.concat(DefaultScopes)\n }\n\n for (const key in OptionScopes) {\n if (atom.config.get(`autocomplete-paths.${key}`)) {\n this._scopes = this._scopes.slice(0).concat(OptionScopes[key])\n }\n }\n }\n\n /**\n * Gets called when the PathsCache is starting to rebuild the cache\n * @private\n */\n _onRebuildCache() {\n this.emit(\"rebuild-cache\")\n }\n\n /**\n * Gets called when the PathsCache is done rebuilding the cache\n * @private\n */\n _onRebuildCacheDone() {\n this.emit(\"rebuild-cache-done\")\n }\n\n /**\n * Returns the suggestions for the given scope and the given request\n * @param {Object} scope\n * @param {Object} request\n * @return {Promise}\n * @private\n */\n _getSuggestionsForScope(scope, request, match) {\n const line = _getLineTextForRequest(request)\n const pathPrefix = line.substr(match.index + match[0].length)\n const trailingSlashPresent = pathPrefix.match(/[/\\\\|]$/)\n const directoryGiven = pathPrefix.indexOf(\"./\") === 0 || pathPrefix.indexOf(\"../\") === 0\n const parsedPathPrefix = path.parse(pathPrefix)\n\n // path.parse ignores trailing slashes, so we handle this manually\n if (trailingSlashPresent) {\n parsedPathPrefix.dir = path.join(parsedPathPrefix.dir, parsedPathPrefix.base)\n parsedPathPrefix.base = \"\"\n parsedPathPrefix.name = \"\"\n }\n\n const projectDirectory = _getProjectDirectory(request.editor)\n if (!projectDirectory) {\n return Promise.resolve([])\n }\n const currentDirectory = path.dirname(request.editor.getPath())\n\n const requestedDirectoryPath = path.resolve(currentDirectory, parsedPathPrefix.dir)\n\n let files = directoryGiven\n ? this._pathsCache.getFilePathsForProjectDirectory(projectDirectory, requestedDirectoryPath)\n : this._pathsCache.getFilePathsForProjectDirectory(projectDirectory)\n\n const fuzzyMatcher = directoryGiven ? parsedPathPrefix.base : pathPrefix\n\n const { extensions } = scope\n if (extensions) {\n const regex = new RegExp(`.(${extensions.join(\"|\")})$`)\n files = files.filter((pth) => regex.test(pth))\n }\n\n if (fuzzyMatcher) {\n files = filter(files, fuzzyMatcher, {\n maxResults: 10,\n })\n }\n\n const suggestions = files.map((pathName) => {\n const normalizeSlashes = atom.config.get(\"autocomplete-paths.normalizeSlashes\")\n\n const projectRelativePath = atom.project.relativizePath(pathName)[1]\n let displayText = projectRelativePath\n if (directoryGiven) {\n displayText = path.relative(requestedDirectoryPath, pathName)\n }\n if (normalizeSlashes) {\n displayText = slash(displayText)\n }\n\n // Relativize path to current file if necessary\n let relativePath = path.relative(path.dirname(request.editor.getPath()), pathName)\n if (normalizeSlashes) {\n relativePath = slash(relativePath)\n }\n if (scope.relative !== false) {\n pathName = relativePath\n if (scope.includeCurrentDirectory !== false) {\n if (pathName[0] !== \".\") {\n pathName = `./${pathName}`\n }\n }\n }\n\n if (scope.projectRelativePath) {\n pathName = slash(projectRelativePath)\n }\n\n // Replace stuff if necessary\n if (scope.replaceOnInsert) {\n // let originalPathName = pathName\n scope.replaceOnInsert.forEach(([from, to]) => {\n const regex = new RegExp(from)\n if (regex.test(pathName)) {\n pathName = pathName.replace(regex, to)\n }\n })\n }\n\n // Calculate distance to file\n const distanceToFile = relativePath.split(path.sep).length\n return {\n text: pathName,\n replacementPrefix: pathPrefix,\n displayText,\n type: \"import\",\n iconHTML: '',\n score: score(displayText, request.prefix),\n distanceToFile,\n }\n })\n\n // Modify score to incorporate distance\n const suggestionsCount = suggestions.length\n if (suggestions.length) {\n const maxDistance = max(suggestions, (s) => s.distanceToFile).distanceToFile\n suggestions.forEach((s, i) => {\n s.score = suggestionsCount - i + (maxDistance - s.distanceToFile)\n })\n\n // Sort again\n suggestions.sort((a, b) => b.score - a.score)\n }\n\n return Promise.resolve(suggestions)\n }\n\n /**\n * Returns the suggestions for the given request\n * @param {Object} request\n * @return {Promise}\n */\n async getSuggestions(request) {\n const matches = this._scopes\n .map((scope) => [scope, _scopeMatchesRequest(scope, request)])\n .filter((result) => result[1]) // Filter scopes that match\n const promises = matches.map(([scope, match]) => this._getSuggestionsForScope(scope, request, match))\n\n const suggestions = flatten(await Promise.all(promises))\n if (!suggestions.length) {\n return false\n }\n return suggestions\n }\n\n /**\n * Rebuilds the cache\n * @return {Promise}\n */\n async rebuildCache() {\n const result = await this._pathsCache.rebuildCache()\n this._isReady = true\n return result\n }\n\n isReady() {\n return this._isReady\n }\n\n get suggestionPriority() {\n return atom.config.get(\"autocomplete-paths.suggestionPriority\")\n }\n\n get fileCount() {\n return atom.project.getDirectories().reduce((accumulated, directory) => {\n const filePaths = this._pathsCache.getFilePathsForProjectDirectory(directory)\n return accumulated + filePaths.length\n }, 0)\n }\n\n /**\n * Disposes this provider\n */\n dispose() {\n this._pathsCache.removeListener(\"rebuild-cache\", this._onRebuildCache)\n this._pathsCache.removeListener(\"rebuild-cache-done\", this._onRebuildCacheDone)\n this._pathsCache.dispose(true)\n }\n}\n\nPathsProvider.prototype.selector = \"*\"\nPathsProvider.prototype.inclusionPriority = 1\n\n/**\n * Checks if the given scope config matches the given request\n * @param {Object} scope\n * @param {Object} request\n * @return {Array} The match object\n * @private\n */\nfunction _scopeMatchesRequest(scope, request) {\n const sourceScopes = Array.isArray(scope.scopes) ? scope.scopes : [scope.scopes]\n\n // Check if the scope descriptors match\n const scopeMatches = intersection(request.scopeDescriptor.getScopesArray(), sourceScopes).length > 0\n if (!scopeMatches) {\n return false\n }\n\n // Check if the line matches the prefixes\n const line = _getLineTextForRequest(request)\n\n let lineMatch = null\n const scopePrefixes = Array.isArray(scope.prefixes) ? scope.prefixes : [scope.prefixes]\n scopePrefixes.forEach((prefix) => {\n const regex = new RegExp(prefix, \"i\")\n lineMatch = lineMatch || line.match(regex)\n })\n\n return lineMatch\n}\n\n/**\n * Returns the project directory that contains the file opened in the given editor\n * @param {TextEditor} editor\n * @return {Directory}\n * @private\n */\nfunction _getProjectDirectory(editor) {\n const filePath = editor.getBuffer().getPath()\n let projectDirectory = null\n atom.project.getDirectories().forEach((directory) => {\n if (directory.contains(filePath)) {\n projectDirectory = directory\n }\n })\n return projectDirectory\n}\n\n/**\n * Returns the whole line text for the given request\n * @param {Object} request\n * @return {String}\n * @private\n */\nfunction _getLineTextForRequest(request) {\n const { editor, bufferPosition } = request\n return editor.getTextInRange([[bufferPosition.row, 0], bufferPosition])\n}\n","// Current version.\nexport var VERSION = '1.13.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nexport var hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasStringTagBug ? ie10IsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport clone from './clone.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","'use strict';\nmodule.exports = path => {\n\tconst isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(path);\n\tconst hasNonAscii = /[^\\u0000-\\u0080]+/.test(path); // eslint-disable-line no-control-regex\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn path;\n\t}\n\n\treturn path.replace(/\\\\/g, '/');\n};\n","\"use babel\"\nimport { EventEmitter } from \"events\"\nimport minimatch from \"minimatch\"\nimport { Directory, File } from \"atom\"\nimport { dirname, basename } from \"path\"\nimport { union, dedent } from \"./utils\"\nimport { globifyPath, globifyDirectory, globifyGitIgnoreFile } from \"globify-gitignore\"\nimport glob from \"fast-glob\"\nimport * as chokidar from \"chokidar\"\n\nexport default class PathsCache extends EventEmitter {\n constructor() {\n super()\n\n const rebuildCacheBound = this.rebuildCache.bind(this)\n this._projectChangeWatcher = atom.project.onDidChangePaths(rebuildCacheBound)\n\n const _onDidChangeFilesBound = this._onDidChangeFiles.bind(this)\n this._projectWatcher = atom.project.onDidChangeFiles(_onDidChangeFilesBound)\n\n this._repositories = []\n // TODO remove _filePathsByProjectDirectory and only use _filePathsByDirectory\n this._filePathsByProjectDirectory = new Map()\n this._filePathsByDirectory = new Map()\n this._fileWatchersByDirectory = new Map()\n this._allIgnoredGlobByDirectory = new Map()\n this.updateConfig()\n }\n\n updateConfig() {\n this.config = {\n excludeVcsIgnoredPaths: atom.config.get(\"core.excludeVcsIgnoredPaths\"),\n ignoreSubmodules: atom.config.get(\"autocomplete-paths.ignoreSubmodules\"),\n shouldIgnoredNames: atom.config.get(\"autocomplete-paths.ignoredNames\"),\n ignoredNames: atom.config.get(\"core.ignoredNames\"),\n ignoredPatterns: atom.config.get(\"autocomplete-paths.ignoredPatterns\"),\n maxFileCount: atom.config.get(\"autocomplete-paths.maxFileCount\"),\n }\n }\n\n /**\n * Rebuilds the paths cache\n * @returns {Promise>>}\n */\n async rebuildCache() {\n this.dispose()\n\n this._cancelled = false\n this.emit(\"rebuild-cache\")\n\n await this._cacheProjectPathsAndRepositories()\n const results = await this._cachePaths()\n\n await this._addWatchers()\n\n this.emit(\"rebuild-cache-done\")\n return results\n }\n\n /**\n * Returns the file paths for the given project directory with the given (optional) relative path\n * @param {Directory} projectDirectory\n * @param {string | null} [relativeToPath=null]\n * @return {string[]}\n */\n getFilePathsForProjectDirectory(projectDirectory, relativeToPath = null) {\n const filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path) || []\n if (relativeToPath) {\n return filePaths.filter((filePath) => filePath.indexOf(relativeToPath) === 0)\n }\n return filePaths\n }\n\n /**\n * Disposes this PathsCache\n * @param {boolean} isPackageDispose\n */\n dispose(isPackageDispose) {\n this._fileWatchersByDirectory.forEach(async (watcher) => {\n await watcher.close()\n })\n this._fileWatchersByDirectory.clear()\n this._filePathsByProjectDirectory.clear()\n this._filePathsByDirectory.clear()\n this._repositories = []\n if (this._projectWatcher) {\n this._projectWatcher.dispose()\n this._projectWatcher = null\n }\n if (isPackageDispose && this._projectChangeWatcher) {\n this._projectChangeWatcher.dispose()\n this._projectChangeWatcher = null\n }\n }\n\n /**\n * Checks if the given path is ignored\n * @param {string} path\n * @return {boolean}\n * @private\n */\n _isPathIgnored(path) {\n let ignored = false\n if (this.config.excludeVcsIgnoredPaths) {\n this._repositories.forEach((repository) => {\n if (ignored) {\n return\n }\n const isIgnoredSubmodule = this.config.ignoreSubmodules && repository.isSubmodule(path)\n if (repository.isPathIgnored(path) || isIgnoredSubmodule) {\n ignored = true\n }\n })\n }\n\n if (this.config.shouldIgnoredNames) {\n this.config.ignoredNames.forEach((ignoredName) => {\n if (ignored) {\n return\n }\n ignored = ignored || minimatch(path, ignoredName, { matchBase: true, dot: true })\n })\n }\n\n if (this.config.ignoredPatterns) {\n this.config.ignoredPatterns.forEach((ignoredPattern) => {\n if (ignored) {\n return\n }\n ignored = ignored || minimatch(path, ignoredPattern, { dot: true })\n })\n }\n\n return ignored\n }\n\n /**\n * Caches the project paths and repositories\n * @private\n */\n async _cacheProjectPathsAndRepositories() {\n this._projectDirectories = atom.project.getDirectories()\n\n // get the repositories asynchronously\n const projectNum = this._projectDirectories.length\n const repositoriesP = new Array(projectNum)\n for (let i = 0; i < projectNum; i++) {\n repositoriesP[i] = atom.project.repositoryForDirectory(this._projectDirectories[i])\n }\n const repositories = await Promise.all(repositoriesP)\n this._repositories = repositories.filter((r) => r !== null) // filter out non-repository directories\n }\n\n /**\n * Add watchers for all the projectDirectories\n * @return {Promise}\n * @private\n */\n async _addWatchers() {\n await Promise.all(\n this._projectDirectories.map((projectDirectory) => this._addWatcherForDirectory(projectDirectory))\n )\n }\n\n /**\n * Add a watcher for the projectDirectory\n * @param {Directory} projectDirectory\n * @private\n */\n async _addWatcherForDirectory(projectDirectory) {\n // close if already added\n let watcher = this._fileWatchersByDirectory.get(projectDirectory)\n if (watcher !== undefined && typeof watcher.close === \"function\") {\n await watcher.close()\n }\n // add a watcher to run `this._onDirectoryChanged`\n const projectPath = projectDirectory.getPath()\n if (this._filePathsByProjectDirectory.get(projectPath).length >= this.config.maxFileCount) {\n console.warn(dedent`autocomplete-paths: Maximum file count of ${this.config.maxFileCount} has been exceeded,\n so the subequent changes in the project are not tracked.\n See these link to learn more:\n https://github.com/atom-community/autocomplete-paths/wiki/Troubleshooting#maximum-file-limit-exceeded\n https://github.com/atom-community/autocomplete-paths/issues/270\n `)\n return\n }\n const ignored = this._allIgnoredGlobByDirectory.get(projectDirectory.path)\n // TODO smarter handling of directory changes\n // TODO get paths from the watcher itself\n // TODO track gitignore file\n watcher = chokidar\n .watch([projectPath, ...ignored], {\n persistent: true,\n ignoreInitial: true, // do not run the listeners on the initial scan\n followSymlinks: false,\n interval: 1000,\n binaryInterval: 1000,\n })\n .on(\"add\", (addedFile) => {\n // we should track it too!\n // if (basename(addedFile) === \".gitignore\") {\n // // if a gitignore file is added re-process the folder\n // this.onRemoveDir(projectDirectory, removedDir)\n // this.onAddDir(projectDirectory, removedDir)\n // return\n // }\n this.onAddFile(projectDirectory, addedFile)\n })\n .on(\"unlink\", (removedFile) => {\n this.onRemoveFile(projectDirectory, removedFile)\n })\n .on(\"addDir\", (addedDir) => {\n this.onAddDir(addedDir)\n })\n .on(\"unlinkDir\", (removedDir) => {\n this.onRemoveDir(projectDirectory, removedDir)\n })\n this._fileWatchersByDirectory.set(projectDirectory, watcher)\n }\n\n /**\n * @param projectDirectory {Directory}\n * @param addedFile {string}\n */\n onAddFile(projectDirectory, addedFile) {\n const filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path)\n filePaths.push(addedFile)\n this._filePathsByProjectDirectory.set(projectDirectory.path, filePaths)\n }\n\n /**\n * @param projectDirectory {Directory}\n * @param removedFile {string}\n */\n onRemoveFile(projectDirectory, removedFile) {\n /** @type {string[]} */\n const filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path)\n\n // delete the removed file\n const fileIndex = filePaths.indexOf(removedFile)\n delete filePaths[fileIndex]\n this._filePathsByProjectDirectory.set(projectDirectory.path, filePaths)\n }\n\n /**\n * @param addedDir {string}\n */\n async onAddDir(addedDir) {\n await this._cachePathsForDirectoryWithGlob(addedDir)\n }\n\n /**\n * @param projectDirectory {Directory}\n * @param removedDir {string}\n */\n onRemoveDir(projectDirectory, removedDir) {\n const directory = new Directory(removedDir)\n this._removeFilePathsForDirectory(projectDirectory, directory)\n }\n\n /**\n * Invoked when the content of the given `directory` has changed\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @returns {Promise}\n * @private\n */\n async _onDirectoryChanged(projectDirectory, directory) {\n this.emit(\"rebuild-cache\")\n this._removeFilePathsForDirectory(projectDirectory, directory)\n this._cleanWatchersForDirectory(directory)\n await this._cachePathsForDirectory(projectDirectory, directory)\n this.emit(\"rebuild-cache-done\")\n }\n\n /**\n * Removes all watchers inside the given directory\n * @param {Directory} directory\n * @private\n */\n _cleanWatchersForDirectory(directory) {\n // TODO promise all\n this._fileWatchersByDirectory.forEach(async (watcher, otherDirectory) => {\n if (directory.contains(otherDirectory.path)) {\n await await watcher.close()\n this._fileWatchersByDirectory.delete(otherDirectory)\n }\n })\n }\n\n /**\n * Removes all cached file paths in the given directory\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @private\n */\n _removeFilePathsForDirectory(projectDirectory, directory) {\n let filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path)\n if (!filePaths) {\n return\n }\n\n filePaths = filePaths.filter((path) => !directory.contains(path))\n this._filePathsByProjectDirectory.set(projectDirectory.path, filePaths)\n\n this._filePathsByDirectory.delete(directory.path)\n }\n\n _onDidChangeFiles(events) {\n events\n .filter((event) => event.action !== \"modified\")\n .forEach((event) => {\n if (!this._projectDirectories) {\n return\n }\n\n const { action, path, oldPath } = event\n\n const projectDirectory = this._projectDirectories.find((pd) => path.indexOf(pd.path) === 0)\n\n if (!projectDirectory) {\n return\n }\n const directoryPath = projectDirectory.path\n const ignored = this._isPathIgnored(path)\n\n if (ignored) {\n return\n }\n\n const files = this._filePathsByProjectDirectory.get(directoryPath) || []\n\n switch (action) {\n case \"created\":\n files.push(path)\n break\n\n case \"deleted\": {\n const i = files.indexOf(path)\n if (i > -1) {\n files.splice(i, 1)\n }\n break\n }\n case \"renamed\": {\n const j = files.indexOf(oldPath)\n if (j > -1) {\n files[j] = path\n }\n break\n }\n default: {\n console.error(`unkown _onDidChangeFiles action: ${action}`)\n break\n }\n }\n\n if (!this._filePathsByProjectDirectory.has(directoryPath)) {\n this._filePathsByProjectDirectory.set(directoryPath, files)\n }\n })\n }\n\n /**\n * Caches file paths with Glob or Atom\n * @return {Promise>}\n * @private\n */\n _cachePaths() {\n try {\n return this._cachePathsWithGlob()\n } catch (e) {\n console.error(e)\n return this._cachePathsWithAtom()\n }\n }\n\n /**\n * Caches file paths for the given directory with Glob or Atom\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @return {Promise}\n * @private\n */\n _cachePathsForDirectory(projectDirectory, directory) {\n try {\n return this._cachePathsForDirectoryWithGlob(directory.path)\n } catch (e) {\n // fallback to Atom\n console.error(e)\n return this._cachePathsForDirectoryWithAtom(projectDirectory, directory)\n }\n }\n\n /*\n ██████ ██ ██████ ██████\n ██ ██ ██ ██ ██ ██\n ██ ███ ██ ██ ██ ██████\n ██ ██ ██ ██ ██ ██ ██\n ██████ ███████ ██████ ██████\n */\n\n /**\n * Builds the file cache with `glob`\n * @return {Promise>>}\n * @private\n */\n async _cachePathsWithGlob() {\n const result = await Promise.all(\n this._projectDirectories.map((projectDirectory) => this._cachePathsForDirectoryWithGlob(projectDirectory.path))\n )\n return result\n }\n\n /**\n * Returns a list of ignore patterns for a directory\n * @param {string} directoryPath\n * @returns {Promise>} an array of glob patterns\n * @private\n */\n async _getIgnoredPatternsGlob(directoryPath) {\n const patterns = []\n\n if (this.config.shouldIgnoredNames) {\n patterns.push(...this.config.ignoredNames)\n }\n\n if (this.config.ignoredPatterns) {\n patterns.push(...this.config.ignoredPatterns)\n }\n\n const patternsNum = patterns.length\n\n const globEntries = new Array(patternsNum)\n\n for (let iEntry = 0; iEntry < patternsNum; iEntry++) {\n const globifyOutput = await globifyPath(patterns[iEntry], directoryPath)\n\n // Check if `globifyPath` returns a pair or a string\n if (typeof globifyOutput === \"string\") {\n // string\n globEntries[iEntry] = globifyOutput // Place the entry in the output array\n } else {\n // pair\n globEntries[iEntry] = globifyOutput[0] // Place the entry in the output array\n globEntries.push(globifyOutput[1]) // Push the additional entry\n }\n }\n return globEntries\n }\n\n /**\n * Returns the glob pattern of all gitignore files in a directory\n * @param {string} rootDirectory\n * @param {string[]} ignoredPatternsGlob\n * @returns {Promise>} an array of glob patterns\n * @private\n */\n async _getAllGitIgnoreGlob(rootDirectory, ignoredPatternsGlob) {\n if (this.config.excludeVcsIgnoredPaths) {\n // get gitignore files\n const gitignoreFiles = await glob(\n [\"**/.gitignore\", ...ignoredPatternsGlob],\n // glob options\n {\n dot: true,\n cwd: rootDirectory,\n onlyFiles: true,\n absolute: true,\n }\n )\n return (\n await Promise.all(gitignoreFiles.map((gitignoreFile) => _getDirectoryGitIgnoreGlob(dirname(gitignoreFile))))\n ).flat()\n }\n return []\n }\n\n /**\n * Get all ignored glob using `this._getGitIgnoreGlob` and `this._getIgnoredPatternsGlob`\n * @param {string} directoryPath the given directory path\n * @returns {Promise}\n */\n async _getAllIgnoredGlob(directoryPath) {\n const ignoredPatternsGlob = await this._getIgnoredPatternsGlob(directoryPath)\n const gitignoreGlob = await this._getAllGitIgnoreGlob(directoryPath, ignoredPatternsGlob)\n return [...gitignoreGlob, ...ignoredPatternsGlob]\n }\n\n /**\n * Populates cache for the given directory\n * @param {string} directoryPath the given directory path\n * @return {Promise>}\n * @private\n */\n async _cachePathsForDirectoryWithGlob(directoryPath) {\n const directoryGlob = globifyDirectory(directoryPath)\n const allIgnoredGlob = await this._getAllIgnoredGlob(directoryPath)\n this._allIgnoredGlobByDirectory.set(directoryPath, allIgnoredGlob)\n const files = await glob(\n [directoryGlob, ...allIgnoredGlob],\n // glob options\n {\n dot: true,\n cwd: directoryPath,\n onlyFiles: true,\n }\n )\n this._filePathsByProjectDirectory.set(directoryPath, files)\n return files\n }\n\n /*\n ███████ █████ ██ ██ ██████ █████ ██████ ██ ██\n ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n █████ ███████ ██ ██ ██████ ███████ ██ █████\n ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n ██ ██ ██ ███████ ███████ ██████ ██ ██ ██████ ██ ██\n */\n\n /**\n * Builds the file cache using Atom\n * @return {Promise>>}\n * @private\n */\n async _cachePathsWithAtom() {\n const result = await Promise.all(\n this._projectDirectories.map((projectDirectory) => {\n return this._cachePathsForDirectoryWithAtom(projectDirectory, projectDirectory)\n })\n )\n return result\n }\n\n /**\n * Caches file paths for the given directory with Atom\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @return {Promise>}\n * @private\n */\n async _cachePathsForDirectoryWithAtom(projectDirectory, directory) {\n if (this._cancelled) {\n return []\n }\n\n const entries = await this._getDirectoryEntries(directory)\n if (this._cancelled) {\n return []\n }\n\n // Filter: Files and Directories that are not ignored\n const filePaths = []\n const directories = []\n for (let i = 0, len = entries.length; i < len; i++) {\n const entry = entries[i]\n if (entry instanceof File && !this._isPathIgnored(entry.path)) {\n filePaths.push(entry.path)\n } else if (entry instanceof Directory && !this._isPathIgnored(entry.path)) {\n directories.push(entry)\n }\n }\n\n // Merge file paths into existing array (which contains *all* file paths)\n let filePathsArray = this._filePathsByProjectDirectory.get(projectDirectory.path) || []\n const newPathsCount = filePathsArray.length + filePaths.length\n\n if (newPathsCount > this.config.maxFileCount && !this._cancelled) {\n atom.notifications.addError(\"autocomplete-paths\", {\n description: `Maximum file count of ${this.config.maxFileCount} has been exceeded. Path autocompletion will not work in this project.

Click here to learn more.`,\n dismissable: true,\n })\n\n this._filePathsByProjectDirectory.clear()\n this._filePathsByDirectory.clear()\n this._cancelled = true\n return\n }\n\n this._filePathsByProjectDirectory.set(projectDirectory.path, union(filePathsArray, filePaths))\n\n // Merge file paths into existing array (which contains file paths for a specific directory)\n filePathsArray = this._filePathsByDirectory.get(directory.path) || []\n this._filePathsByDirectory.set(directory.path, union(filePathsArray, filePaths))\n\n return Promise.all(directories.map((dir) => this._cachePathsForDirectoryWithAtom(projectDirectory, dir)))\n }\n}\n\n/**\n * Returns the glob pattern of a gitignore of a directory\n * @param {string} directoryPath\n * @returns {Promise>} an array of glob patterns\n * @private\n */\nfunction _getDirectoryGitIgnoreGlob(directoryPath) {\n try {\n return globifyGitIgnoreFile(directoryPath)\n } catch (err) {\n // .gitignore does not exist for this directory, ignoring\n return []\n }\n}\n","module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = require('path')\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n","module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n if(a===b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n","\"use babel\"\n\n// exec\nimport { exec as execRaw } from \"child_process\"\nimport { promisify } from \"util\"\nexport const exec = promisify(execRaw)\nimport { constants } from \"buffer\"\nexport const MAX_STRING_LENGTH = constants.MAX_STRING_LENGTH\n\n// fast merge function\n// https://uilicious.com/blog/javascript-array-push-is-945x-faster-than-array-concat/\nexport function merge(arr1: Array, arr2: Array) {\n if (!arr2.length) {\n return\n }\n Array.prototype.push.apply(arr1, arr2)\n}\n\n// get unique entries of an array\nexport function unique(arr: Array) {\n return [...new Set(arr)]\n}\n\n// fast union function (replacement for _.union)\nexport function union(arr1: Array, arr2: Array) {\n merge(arr1, arr2)\n return unique(arr1)\n}\n\n/** @params {Array} str */\nexport function dedent(str) {\n return String(str).replace(/(\\n)\\s+/g, \"$1\")\n}\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var t=require(\"path\"),r=require(\"fs\"),e={\"{\":\"}\",\"(\":\")\",\"[\":\"]\"},n=/\\\\(.)|(^!|\\*|[\\].+)]\\?|\\[[^\\\\\\]]+\\]|\\{[^\\\\}]+\\}|\\(\\?[:!=][^\\\\)]+\\)|\\([^|]+\\|[^\\\\)]+\\))/,i=/\\\\(.)|(^!|[*?{}()[\\]]|\\(\\?)/,o=/[‘“!#$%&+^<=>`]/,s=function(t){return\"string\"!=typeof t||function(t,r){if(\"string\"!=typeof t||\"\"===t)return!1;if(function(t){if(\"string\"!=typeof t||\"\"===t)return!1;for(var r;r=/(\\\\).|([@?!+*]\\(.*\\))/g.exec(t);){if(r[2])return!0;t=t.slice(r.index+r[0].length)}return!1}(t))return!0;var o,s=n;for(r&&!1===r.strict&&(s=i);o=s.exec(t);){if(o[2])return!0;var u=o.index+o[0].length,a=o[1],c=a?e[a]:null;if(a&&c){var f=t.indexOf(c,u);-1!==f&&(u=f+1)}t=t.slice(u)}return!1}(t)||o.test(t)},u=function(t){return!1===s(t)};var a,c=(function(t){t.exports=function(t){var r=void 0;r=\"string\"==typeof t?[t]:t.raw;for(var e=\"\",n=0;n{return!(/^\\s*$/.test(t)||(r=t,\"#\"===r[0]));var r})).map((t=>function(t){return t.replace(/^\\s+/,\"\")}(function(t){return/\\\\\\s+$/.test(t)?t.replace(/\\\\(\\s+)$/,\"$1\"):t.replace(/\\s+$/,\"\")}(t)))),n=e.length,i=new Array(n);for(let t=0;t utils.pattern.isStaticPattern(pattern, settings));\r\n const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings));\r\n const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false);\r\n const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true);\r\n return staticTasks.concat(dynamicTasks);\r\n}\r\nexports.generate = generate;\r\nfunction convertPatternsToTasks(positive, negative, dynamic) {\r\n const positivePatternsGroup = groupPatternsByBaseDirectory(positive);\r\n // When we have a global group – there is no reason to divide the patterns into independent tasks.\r\n // In this case, the global task covers the rest.\r\n if ('.' in positivePatternsGroup) {\r\n const task = convertPatternGroupToTask('.', positive, negative, dynamic);\r\n return [task];\r\n }\r\n return convertPatternGroupsToTasks(positivePatternsGroup, negative, dynamic);\r\n}\r\nexports.convertPatternsToTasks = convertPatternsToTasks;\r\nfunction getPositivePatterns(patterns) {\r\n return utils.pattern.getPositivePatterns(patterns);\r\n}\r\nexports.getPositivePatterns = getPositivePatterns;\r\nfunction getNegativePatternsAsPositive(patterns, ignore) {\r\n const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore);\r\n const positive = negative.map(utils.pattern.convertToPositivePattern);\r\n return positive;\r\n}\r\nexports.getNegativePatternsAsPositive = getNegativePatternsAsPositive;\r\nfunction groupPatternsByBaseDirectory(patterns) {\r\n const group = {};\r\n return patterns.reduce((collection, pattern) => {\r\n const base = utils.pattern.getBaseDirectory(pattern);\r\n if (base in collection) {\r\n collection[base].push(pattern);\r\n }\r\n else {\r\n collection[base] = [pattern];\r\n }\r\n return collection;\r\n }, group);\r\n}\r\nexports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory;\r\nfunction convertPatternGroupsToTasks(positive, negative, dynamic) {\r\n return Object.keys(positive).map((base) => {\r\n return convertPatternGroupToTask(base, positive[base], negative, dynamic);\r\n });\r\n}\r\nexports.convertPatternGroupsToTasks = convertPatternGroupsToTasks;\r\nfunction convertPatternGroupToTask(base, positive, negative, dynamic) {\r\n return {\r\n dynamic,\r\n positive,\r\n negative,\r\n base,\r\n patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern))\r\n };\r\n}\r\nexports.convertPatternGroupToTask = convertPatternGroupToTask;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0;\r\nconst array = require(\"./array\");\r\nexports.array = array;\r\nconst errno = require(\"./errno\");\r\nexports.errno = errno;\r\nconst fs = require(\"./fs\");\r\nexports.fs = fs;\r\nconst path = require(\"./path\");\r\nexports.path = path;\r\nconst pattern = require(\"./pattern\");\r\nexports.pattern = pattern;\r\nconst stream = require(\"./stream\");\r\nexports.stream = stream;\r\nconst string = require(\"./string\");\r\nexports.string = string;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.splitWhen = exports.flatten = void 0;\r\nfunction flatten(items) {\r\n return items.reduce((collection, item) => [].concat(collection, item), []);\r\n}\r\nexports.flatten = flatten;\r\nfunction splitWhen(items, predicate) {\r\n const result = [[]];\r\n let groupIndex = 0;\r\n for (const item of items) {\r\n if (predicate(item)) {\r\n groupIndex++;\r\n result[groupIndex] = [];\r\n }\r\n else {\r\n result[groupIndex].push(item);\r\n }\r\n }\r\n return result;\r\n}\r\nexports.splitWhen = splitWhen;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.isEnoentCodeError = void 0;\r\nfunction isEnoentCodeError(error) {\r\n return error.code === 'ENOENT';\r\n}\r\nexports.isEnoentCodeError = isEnoentCodeError;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createDirentFromStats = void 0;\r\nclass DirentFromStats {\r\n constructor(name, stats) {\r\n this.name = name;\r\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\r\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\r\n this.isDirectory = stats.isDirectory.bind(stats);\r\n this.isFIFO = stats.isFIFO.bind(stats);\r\n this.isFile = stats.isFile.bind(stats);\r\n this.isSocket = stats.isSocket.bind(stats);\r\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\r\n }\r\n}\r\nfunction createDirentFromStats(name, stats) {\r\n return new DirentFromStats(name, stats);\r\n}\r\nexports.createDirentFromStats = createDirentFromStats;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0;\r\nconst path = require(\"path\");\r\nconst LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\\\\r\nconst UNESCAPED_GLOB_SYMBOLS_RE = /(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\())/g;\r\n/**\r\n * Designed to work only with simple paths: `dir\\\\file`.\r\n */\r\nfunction unixify(filepath) {\r\n return filepath.replace(/\\\\/g, '/');\r\n}\r\nexports.unixify = unixify;\r\nfunction makeAbsolute(cwd, filepath) {\r\n return path.resolve(cwd, filepath);\r\n}\r\nexports.makeAbsolute = makeAbsolute;\r\nfunction escape(pattern) {\r\n return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\\\$2');\r\n}\r\nexports.escape = escape;\r\nfunction removeLeadingDotSegment(entry) {\r\n // We do not use `startsWith` because this is 10x slower than current implementation for some cases.\r\n // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\r\n if (entry.charAt(0) === '.') {\r\n const secondCharactery = entry.charAt(1);\r\n if (secondCharactery === '/' || secondCharactery === '\\\\') {\r\n return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT);\r\n }\r\n }\r\n return entry;\r\n}\r\nexports.removeLeadingDotSegment = removeLeadingDotSegment;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;\r\nconst path = require(\"path\");\r\nconst globParent = require(\"glob-parent\");\r\nconst micromatch = require(\"micromatch\");\r\nconst picomatch = require(\"picomatch\");\r\nconst GLOBSTAR = '**';\r\nconst ESCAPE_SYMBOL = '\\\\';\r\nconst COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/;\r\nconst REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\\[.*]/;\r\nconst REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\\(.*\\|.*\\)/;\r\nconst GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\\(.*\\)/;\r\nconst BRACE_EXPANSIONS_SYMBOLS_RE = /{.*(?:,|\\.\\.).*}/;\r\nfunction isStaticPattern(pattern, options = {}) {\r\n return !isDynamicPattern(pattern, options);\r\n}\r\nexports.isStaticPattern = isStaticPattern;\r\nfunction isDynamicPattern(pattern, options = {}) {\r\n /**\r\n * A special case with an empty string is necessary for matching patterns that start with a forward slash.\r\n * An empty string cannot be a dynamic pattern.\r\n * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'.\r\n */\r\n if (pattern === '') {\r\n return false;\r\n }\r\n /**\r\n * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check\r\n * filepath directly (without read directory).\r\n */\r\n if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) {\r\n return true;\r\n }\r\n if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) {\r\n return true;\r\n }\r\n if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) {\r\n return true;\r\n }\r\n if (options.braceExpansion !== false && BRACE_EXPANSIONS_SYMBOLS_RE.test(pattern)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isDynamicPattern = isDynamicPattern;\r\nfunction convertToPositivePattern(pattern) {\r\n return isNegativePattern(pattern) ? pattern.slice(1) : pattern;\r\n}\r\nexports.convertToPositivePattern = convertToPositivePattern;\r\nfunction convertToNegativePattern(pattern) {\r\n return '!' + pattern;\r\n}\r\nexports.convertToNegativePattern = convertToNegativePattern;\r\nfunction isNegativePattern(pattern) {\r\n return pattern.startsWith('!') && pattern[1] !== '(';\r\n}\r\nexports.isNegativePattern = isNegativePattern;\r\nfunction isPositivePattern(pattern) {\r\n return !isNegativePattern(pattern);\r\n}\r\nexports.isPositivePattern = isPositivePattern;\r\nfunction getNegativePatterns(patterns) {\r\n return patterns.filter(isNegativePattern);\r\n}\r\nexports.getNegativePatterns = getNegativePatterns;\r\nfunction getPositivePatterns(patterns) {\r\n return patterns.filter(isPositivePattern);\r\n}\r\nexports.getPositivePatterns = getPositivePatterns;\r\nfunction getBaseDirectory(pattern) {\r\n return globParent(pattern, { flipBackslashes: false });\r\n}\r\nexports.getBaseDirectory = getBaseDirectory;\r\nfunction hasGlobStar(pattern) {\r\n return pattern.includes(GLOBSTAR);\r\n}\r\nexports.hasGlobStar = hasGlobStar;\r\nfunction endsWithSlashGlobStar(pattern) {\r\n return pattern.endsWith('/' + GLOBSTAR);\r\n}\r\nexports.endsWithSlashGlobStar = endsWithSlashGlobStar;\r\nfunction isAffectDepthOfReadingPattern(pattern) {\r\n const basename = path.basename(pattern);\r\n return endsWithSlashGlobStar(pattern) || isStaticPattern(basename);\r\n}\r\nexports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;\r\nfunction expandPatternsWithBraceExpansion(patterns) {\r\n return patterns.reduce((collection, pattern) => {\r\n return collection.concat(expandBraceExpansion(pattern));\r\n }, []);\r\n}\r\nexports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion;\r\nfunction expandBraceExpansion(pattern) {\r\n return micromatch.braces(pattern, {\r\n expand: true,\r\n nodupes: true\r\n });\r\n}\r\nexports.expandBraceExpansion = expandBraceExpansion;\r\nfunction getPatternParts(pattern, options) {\r\n let { parts } = picomatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true }));\r\n /**\r\n * The scan method returns an empty array in some cases.\r\n * See micromatch/picomatch#58 for more details.\r\n */\r\n if (parts.length === 0) {\r\n parts = [pattern];\r\n }\r\n /**\r\n * The scan method does not return an empty part for the pattern with a forward slash.\r\n * This is another part of micromatch/picomatch#58.\r\n */\r\n if (parts[0].startsWith('/')) {\r\n parts[0] = parts[0].slice(1);\r\n parts.unshift('');\r\n }\r\n return parts;\r\n}\r\nexports.getPatternParts = getPatternParts;\r\nfunction makeRe(pattern, options) {\r\n return micromatch.makeRe(pattern, options);\r\n}\r\nexports.makeRe = makeRe;\r\nfunction convertPatternsToRe(patterns, options) {\r\n return patterns.map((pattern) => makeRe(pattern, options));\r\n}\r\nexports.convertPatternsToRe = convertPatternsToRe;\r\nfunction matchAny(entry, patternsRe) {\r\n return patternsRe.some((patternRe) => patternRe.test(entry));\r\n}\r\nexports.matchAny = matchAny;\r\n","/*!\n * is-extglob \n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n var match;\n while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n if (match[2]) return true;\n str = str.slice(match.index + match[0].length);\n }\n\n return false;\n};\n","/*!\n * is-glob \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictRegex = /\\\\(.)|(^!|\\*|[\\].+)]\\?|\\[[^\\\\\\]]+\\]|\\{[^\\\\}]+\\}|\\(\\?[:!=][^\\\\)]+\\)|\\([^|]+\\|[^\\\\)]+\\))/;\nvar relaxedRegex = /\\\\(.)|(^!|[*?{}()[\\]]|\\(\\?)/;\n\nmodule.exports = function isGlob(str, options) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n if (isExtglob(str)) {\n return true;\n }\n\n var regex = strictRegex;\n var match;\n\n // optionally relax regex\n if (options && options.strict === false) {\n regex = relaxedRegex;\n }\n\n while ((match = regex.exec(str))) {\n if (match[2]) return true;\n var idx = match.index + match[0].length;\n\n // if an open bracket/brace/paren is escaped,\n // set the index to the next closing character\n var open = match[1];\n var close = open ? chars[open] : null;\n if (open && close) {\n var n = str.indexOf(close, idx);\n if (n !== -1) {\n idx = n + 1;\n }\n }\n\n str = str.slice(idx);\n }\n return false;\n};\n","'use strict';\n\nvar isGlob = require('is-glob');\nvar pathPosixDirname = require('path').posix.dirname;\nvar isWin32 = require('os').platform() === 'win32';\n\nvar slash = '/';\nvar backslash = /\\\\/g;\nvar enclosure = /[\\{\\[].*[\\}\\]]$/;\nvar globby = /(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/;\nvar escaped = /\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;\n\n/**\n * @param {string} str\n * @param {Object} opts\n * @param {boolean} [opts.flipBackslashes=true]\n * @returns {string}\n */\nmodule.exports = function globParent(str, opts) {\n var options = Object.assign({ flipBackslashes: true }, opts);\n\n // flip windows path separators\n if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n str = str.replace(backslash, slash);\n }\n\n // special case for strings ending in enclosure containing path separator\n if (enclosure.test(str)) {\n str += slash;\n }\n\n // preserves full path in case of trailing path separator\n str += 'a';\n\n // remove path parts that are globby\n do {\n str = pathPosixDirname(str);\n } while (isGlob(str) || globby.test(str));\n\n // remove escape chars and return result\n return str.replace(escaped, '$1');\n};\n","'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\nconst isEmptyString = val => val === '' || val === './';\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array} `list` List of strings to match.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n patterns = [].concat(patterns);\n list = [].concat(list);\n\n let omit = new Set();\n let keep = new Set();\n let items = new Set();\n let negatives = 0;\n\n let onResult = state => {\n items.add(state.output);\n if (options && options.onResult) {\n options.onResult(state);\n }\n };\n\n for (let i = 0; i < patterns.length; i++) {\n let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n if (negated) negatives++;\n\n for (let item of list) {\n let matched = isMatch(item, true);\n\n let match = negated ? !matched.isMatch : matched.isMatch;\n if (!match) continue;\n\n if (negated) {\n omit.add(matched.output);\n } else {\n omit.delete(matched.output);\n keep.add(matched.output);\n }\n }\n }\n\n let result = negatives === patterns.length ? [...items] : [...keep];\n let matches = result.filter(item => !omit.has(item));\n\n if (options && matches.length === 0) {\n if (options.failglob === true) {\n throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n }\n\n if (options.nonull === true || options.nullglob === true) {\n return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n }\n }\n\n return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `[options]` See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n patterns = [].concat(patterns).map(String);\n let result = new Set();\n let items = [];\n\n let onResult = state => {\n if (options.onResult) options.onResult(state);\n items.push(state.output);\n };\n\n let matches = micromatch(list, patterns, { ...options, onResult });\n\n for (let item of items) {\n if (!matches.includes(item)) {\n result.add(item);\n }\n }\n return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any of the patterns matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n if (Array.isArray(pattern)) {\n return pattern.some(p => micromatch.contains(str, p, options));\n }\n\n if (typeof pattern === 'string') {\n if (isEmptyString(str) || isEmptyString(pattern)) {\n return false;\n }\n\n if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n return true;\n }\n }\n\n return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n if (!utils.isObject(obj)) {\n throw new TypeError('Expected the first argument to be an object');\n }\n let keys = micromatch(Object.keys(obj), patterns, options);\n let res = {};\n for (let key of keys) res[key] = obj[key];\n return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (items.some(item => isMatch(item))) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (!items.every(item => isMatch(item))) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n let posix = utils.isWindows(options);\n let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n if (match) {\n return match.slice(1).map(v => v === void 0 ? '' : v);\n }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n let res = [];\n for (let pattern of [].concat(patterns || [])) {\n for (let str of braces(String(pattern), options)) {\n res.push(picomatch.parse(str, options));\n }\n }\n return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n if ((options && options.nobrace === true) || !/\\{.*\\}/.test(pattern)) {\n return [pattern];\n }\n return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\nmodule.exports = micromatch;\n","'use strict';\n\nexports.isInteger = num => {\n if (typeof num === 'number') {\n return Number.isInteger(num);\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isInteger(Number(num));\n }\n return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n if (limit === false) return false;\n if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n let node = block.nodes[n];\n if (!node) return;\n\n if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n if (node.escaped !== true) {\n node.value = '\\\\' + node.value;\n node.escaped = true;\n }\n }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n if (node.type !== 'brace') return false;\n if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n node.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n if (block.type !== 'brace') return false;\n if (block.invalid === true || block.dollar) return true;\n if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n block.invalid = true;\n return true;\n }\n if (block.open !== true || block.close !== true) {\n block.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n if (node.type === 'open' || node.type === 'close') {\n return true;\n }\n return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n if (node.type === 'text') acc.push(node.value);\n if (node.type === 'range') node.type = 'text';\n return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n const result = [];\n const flat = arr => {\n for (let i = 0; i < arr.length; i++) {\n let ele = arr[i];\n Array.isArray(ele) ? flat(ele, result) : ele !== void 0 && result.push(ele);\n }\n return result;\n };\n flat(args);\n return result;\n};\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n let stringify = (node, parent = {}) => {\n let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n let invalidNode = node.invalid === true && options.escapeInvalid === true;\n let output = '';\n\n if (node.value) {\n if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n return '\\\\' + node.value;\n }\n return node.value;\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes) {\n for (let child of node.nodes) {\n output += stringify(child);\n }\n }\n return output;\n };\n\n return stringify(ast);\n};\n\n","/*!\n * fill-range \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n let value = `${input}`;\n let index = -1;\n if (value[0] === '-') value = value.slice(1);\n if (value === '0') return false;\n while (value[++index] === '0');\n return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n if (typeof start === 'string' || typeof end === 'string') {\n return true;\n }\n return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n if (maxLength > 0) {\n let dash = input[0] === '-' ? '-' : '';\n if (dash) input = input.slice(1);\n input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n }\n if (toNumber === false) {\n return String(input);\n }\n return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n let negative = input[0] === '-' ? '-' : '';\n if (negative) {\n input = input.slice(1);\n maxLength--;\n }\n while (input.length < maxLength) input = '0' + input;\n return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options) => {\n parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n let prefix = options.capture ? '' : '?:';\n let positives = '';\n let negatives = '';\n let result;\n\n if (parts.positives.length) {\n positives = parts.positives.join('|');\n }\n\n if (parts.negatives.length) {\n negatives = `-(${prefix}${parts.negatives.join('|')})`;\n }\n\n if (positives && negatives) {\n result = `${positives}|${negatives}`;\n } else {\n result = positives || negatives;\n }\n\n if (options.wrap) {\n return `(${prefix}${result})`;\n }\n\n return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n if (isNumbers) {\n return toRegexRange(a, b, { wrap: false, ...options });\n }\n\n let start = String.fromCharCode(a);\n if (a === b) return start;\n\n let stop = String.fromCharCode(b);\n return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n if (Array.isArray(start)) {\n let wrap = options.wrap === true;\n let prefix = options.capture ? '' : '?:';\n return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n }\n return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n};\n\nconst invalidStep = (step, options) => {\n if (options.strictRanges === true) {\n throw new TypeError(`Expected step \"${step}\" to be a number`);\n }\n return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n let a = Number(start);\n let b = Number(end);\n\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n }\n\n // fix negative zero\n if (a === 0) a = 0;\n if (b === 0) b = 0;\n\n let descending = a > b;\n let startString = String(start);\n let endString = String(end);\n let stepString = String(step);\n step = Math.max(Math.abs(step), 1);\n\n let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n let toNumber = padded === false && stringify(start, end, options) === false;\n let format = options.transform || transform(toNumber);\n\n if (options.toRegex && step === 1) {\n return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n }\n\n let parts = { negatives: [], positives: [] };\n let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n if (options.toRegex === true && step > 1) {\n push(a);\n } else {\n range.push(pad(format(a, index), maxLen, toNumber));\n }\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return step > 1\n ? toSequence(parts, options)\n : toRegex(range, null, { wrap: false, ...options });\n }\n\n return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n return invalidRange(start, end, options);\n }\n\n\n let format = options.transform || (val => String.fromCharCode(val));\n let a = `${start}`.charCodeAt(0);\n let b = `${end}`.charCodeAt(0);\n\n let descending = a > b;\n let min = Math.min(a, b);\n let max = Math.max(a, b);\n\n if (options.toRegex && step === 1) {\n return toRange(min, max, false, options);\n }\n\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n range.push(format(a, index));\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return toRegex(range, null, { wrap: false, options });\n }\n\n return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n if (end == null && isValidValue(start)) {\n return [start];\n }\n\n if (!isValidValue(start) || !isValidValue(end)) {\n return invalidRange(start, end, options);\n }\n\n if (typeof step === 'function') {\n return fill(start, end, 1, { transform: step });\n }\n\n if (isObject(step)) {\n return fill(start, end, 0, step);\n }\n\n let opts = { ...options };\n if (opts.capture === true) opts.wrap = true;\n step = step || opts.step || 1;\n\n if (!isNumber(step)) {\n if (step != null && !isObject(step)) return invalidStep(step, opts);\n return fill(start, end, 1, step);\n }\n\n if (isNumber(start) && isNumber(end)) {\n return fillNumbers(start, end, step, opts);\n }\n\n return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n","/*!\n * is-number \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n if (typeof num === 'number') {\n return num - num === 0;\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n }\n return false;\n};\n","/*!\n * to-regex-range \n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n if (isNumber(min) === false) {\n throw new TypeError('toRegexRange: expected the first argument to be a number');\n }\n\n if (max === void 0 || min === max) {\n return String(min);\n }\n\n if (isNumber(max) === false) {\n throw new TypeError('toRegexRange: expected the second argument to be a number.');\n }\n\n let opts = { relaxZeros: true, ...options };\n if (typeof opts.strictZeros === 'boolean') {\n opts.relaxZeros = opts.strictZeros === false;\n }\n\n let relax = String(opts.relaxZeros);\n let shorthand = String(opts.shorthand);\n let capture = String(opts.capture);\n let wrap = String(opts.wrap);\n let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n return toRegexRange.cache[cacheKey].result;\n }\n\n let a = Math.min(min, max);\n let b = Math.max(min, max);\n\n if (Math.abs(a - b) === 1) {\n let result = min + '|' + max;\n if (opts.capture) {\n return `(${result})`;\n }\n if (opts.wrap === false) {\n return result;\n }\n return `(?:${result})`;\n }\n\n let isPadded = hasPadding(min) || hasPadding(max);\n let state = { min, max, a, b };\n let positives = [];\n let negatives = [];\n\n if (isPadded) {\n state.isPadded = isPadded;\n state.maxLen = String(state.max).length;\n }\n\n if (a < 0) {\n let newMin = b < 0 ? Math.abs(b) : 1;\n negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n a = state.a = 0;\n }\n\n if (b >= 0) {\n positives = splitToPatterns(a, b, state, opts);\n }\n\n state.negatives = negatives;\n state.positives = positives;\n state.result = collatePatterns(negatives, positives, opts);\n\n if (opts.capture === true) {\n state.result = `(${state.result})`;\n } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n state.result = `(?:${state.result})`;\n }\n\n toRegexRange.cache[cacheKey] = state;\n return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n let nines = 1;\n let zeros = 1;\n\n let stop = countNines(min, nines);\n let stops = new Set([max]);\n\n while (min <= stop && stop <= max) {\n stops.add(stop);\n nines += 1;\n stop = countNines(min, nines);\n }\n\n stop = countZeros(max + 1, zeros) - 1;\n\n while (min < stop && stop <= max) {\n stops.add(stop);\n zeros += 1;\n stop = countZeros(max + 1, zeros) - 1;\n }\n\n stops = [...stops];\n stops.sort(compare);\n return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n if (start === stop) {\n return { pattern: start, count: [], digits: 0 };\n }\n\n let zipped = zip(start, stop);\n let digits = zipped.length;\n let pattern = '';\n let count = 0;\n\n for (let i = 0; i < digits; i++) {\n let [startDigit, stopDigit] = zipped[i];\n\n if (startDigit === stopDigit) {\n pattern += startDigit;\n\n } else if (startDigit !== '0' || stopDigit !== '9') {\n pattern += toCharacterClass(startDigit, stopDigit, options);\n\n } else {\n count++;\n }\n }\n\n if (count) {\n pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n }\n\n return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n let ranges = splitToRanges(min, max);\n let tokens = [];\n let start = min;\n let prev;\n\n for (let i = 0; i < ranges.length; i++) {\n let max = ranges[i];\n let obj = rangeToPattern(String(start), String(max), options);\n let zeros = '';\n\n if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n if (prev.count.length > 1) {\n prev.count.pop();\n }\n\n prev.count.push(obj.count[0]);\n prev.string = prev.pattern + toQuantifier(prev.count);\n start = max + 1;\n continue;\n }\n\n if (tok.isPadded) {\n zeros = padZeros(max, tok, options);\n }\n\n obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n tokens.push(obj);\n start = max + 1;\n prev = obj;\n }\n\n return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n let result = [];\n\n for (let ele of arr) {\n let { string } = ele;\n\n // only push if _both_ are negative...\n if (!intersection && !contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n\n // or _both_ are positive\n if (intersection && contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n }\n return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n let arr = [];\n for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n return arr;\n}\n\nfunction compare(a, b) {\n return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n let [start = 0, stop = ''] = digits;\n if (stop || start > 1) {\n return `{${start + (stop ? ',' + stop : '')}}`;\n }\n return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n if (!tok.isPadded) {\n return value;\n }\n\n let diff = Math.abs(tok.maxLen - String(value).length);\n let relax = options.relaxZeros !== false;\n\n switch (diff) {\n case 0:\n return '';\n case 1:\n return relax ? '0?' : '0';\n case 2:\n return relax ? '0{0,2}' : '00';\n default: {\n return relax ? `0{0,${diff}}` : `0{${diff}}`;\n }\n }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n let walk = (node, parent = {}) => {\n let invalidBlock = utils.isInvalidBrace(parent);\n let invalidNode = node.invalid === true && options.escapeInvalid === true;\n let invalid = invalidBlock === true || invalidNode === true;\n let prefix = options.escapeInvalid === true ? '\\\\' : '';\n let output = '';\n\n if (node.isOpen === true) {\n return prefix + node.value;\n }\n if (node.isClose === true) {\n return prefix + node.value;\n }\n\n if (node.type === 'open') {\n return invalid ? (prefix + node.value) : '(';\n }\n\n if (node.type === 'close') {\n return invalid ? (prefix + node.value) : ')';\n }\n\n if (node.type === 'comma') {\n return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|');\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes && node.ranges > 0) {\n let args = utils.reduce(node.nodes);\n let range = fill(...args, { ...options, wrap: false, toRegex: true });\n\n if (range.length !== 0) {\n return args.length > 1 && range.length > 1 ? `(${range})` : range;\n }\n }\n\n if (node.nodes) {\n for (let child of node.nodes) {\n output += walk(child, node);\n }\n }\n return output;\n };\n\n return walk(ast);\n};\n\nmodule.exports = compile;\n","'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n let result = [];\n\n queue = [].concat(queue);\n stash = [].concat(stash);\n\n if (!stash.length) return queue;\n if (!queue.length) {\n return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n }\n\n for (let item of queue) {\n if (Array.isArray(item)) {\n for (let value of item) {\n result.push(append(value, stash, enclose));\n }\n } else {\n for (let ele of stash) {\n if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele));\n }\n }\n }\n return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit;\n\n let walk = (node, parent = {}) => {\n node.queue = [];\n\n let p = parent;\n let q = parent.queue;\n\n while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n p = p.parent;\n q = p.queue;\n }\n\n if (node.invalid || node.dollar) {\n q.push(append(q.pop(), stringify(node, options)));\n return;\n }\n\n if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n q.push(append(q.pop(), ['{}']));\n return;\n }\n\n if (node.nodes && node.ranges > 0) {\n let args = utils.reduce(node.nodes);\n\n if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n }\n\n let range = fill(...args, options);\n if (range.length === 0) {\n range = stringify(node, options);\n }\n\n q.push(append(q.pop(), range));\n node.nodes = [];\n return;\n }\n\n let enclose = utils.encloseBrace(node);\n let queue = node.queue;\n let block = node;\n\n while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n block = block.parent;\n queue = block.queue;\n }\n\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i];\n\n if (child.type === 'comma' && node.type === 'brace') {\n if (i === 1) queue.push('');\n queue.push('');\n continue;\n }\n\n if (child.type === 'close') {\n q.push(append(q.pop(), queue, enclose));\n continue;\n }\n\n if (child.value && child.type !== 'open') {\n queue.push(append(queue.pop(), child.value));\n continue;\n }\n\n if (child.nodes) {\n walk(child, node);\n }\n }\n\n return queue;\n };\n\n return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n","'use strict';\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n\n // Digits\n CHAR_0: '0', /* 0 */\n CHAR_9: '9', /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 'A', /* A */\n CHAR_LOWERCASE_A: 'a', /* a */\n CHAR_UPPERCASE_Z: 'Z', /* Z */\n CHAR_LOWERCASE_Z: 'z', /* z */\n\n CHAR_LEFT_PARENTHESES: '(', /* ( */\n CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n CHAR_ASTERISK: '*', /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: '&', /* & */\n CHAR_AT: '@', /* @ */\n CHAR_BACKSLASH: '\\\\', /* \\ */\n CHAR_BACKTICK: '`', /* ` */\n CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n CHAR_COLON: ':', /* : */\n CHAR_COMMA: ',', /* , */\n CHAR_DOLLAR: '$', /* . */\n CHAR_DOT: '.', /* . */\n CHAR_DOUBLE_QUOTE: '\"', /* \" */\n CHAR_EQUAL: '=', /* = */\n CHAR_EXCLAMATION_MARK: '!', /* ! */\n CHAR_FORM_FEED: '\\f', /* \\f */\n CHAR_FORWARD_SLASH: '/', /* / */\n CHAR_HASH: '#', /* # */\n CHAR_HYPHEN_MINUS: '-', /* - */\n CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n CHAR_LEFT_CURLY_BRACE: '{', /* { */\n CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n CHAR_LINE_FEED: '\\n', /* \\n */\n CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n CHAR_PERCENT: '%', /* % */\n CHAR_PLUS: '+', /* + */\n CHAR_QUESTION_MARK: '?', /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n CHAR_SEMICOLON: ';', /* ; */\n CHAR_SINGLE_QUOTE: '\\'', /* ' */\n CHAR_SPACE: ' ', /* */\n CHAR_TAB: '\\t', /* \\t */\n CHAR_UNDERSCORE: '_', /* _ */\n CHAR_VERTICAL_LINE: '|', /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n","'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n CHAR_BACKSLASH, /* \\ */\n CHAR_BACKTICK, /* ` */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n CHAR_DOUBLE_QUOTE, /* \" */\n CHAR_SINGLE_QUOTE, /* ' */\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n let opts = options || {};\n let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n if (input.length > max) {\n throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n }\n\n let ast = { type: 'root', input, nodes: [] };\n let stack = [ast];\n let block = ast;\n let prev = ast;\n let brackets = 0;\n let length = input.length;\n let index = 0;\n let depth = 0;\n let value;\n let memo = {};\n\n /**\n * Helpers\n */\n\n const advance = () => input[index++];\n const push = node => {\n if (node.type === 'text' && prev.type === 'dot') {\n prev.type = 'text';\n }\n\n if (prev && prev.type === 'text' && node.type === 'text') {\n prev.value += node.value;\n return;\n }\n\n block.nodes.push(node);\n node.parent = block;\n node.prev = prev;\n prev = node;\n return node;\n };\n\n push({ type: 'bos' });\n\n while (index < length) {\n block = stack[stack.length - 1];\n value = advance();\n\n /**\n * Invalid chars\n */\n\n if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n continue;\n }\n\n /**\n * Escaped chars\n */\n\n if (value === CHAR_BACKSLASH) {\n push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n continue;\n }\n\n /**\n * Right square bracket (literal): ']'\n */\n\n if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n push({ type: 'text', value: '\\\\' + value });\n continue;\n }\n\n /**\n * Left square bracket: '['\n */\n\n if (value === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n\n let closed = true;\n let next;\n\n while (index < length && (next = advance())) {\n value += next;\n\n if (next === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n continue;\n }\n\n if (next === CHAR_BACKSLASH) {\n value += advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n brackets--;\n\n if (brackets === 0) {\n break;\n }\n }\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === CHAR_LEFT_PARENTHESES) {\n block = push({ type: 'paren', nodes: [] });\n stack.push(block);\n push({ type: 'text', value });\n continue;\n }\n\n if (value === CHAR_RIGHT_PARENTHESES) {\n if (block.type !== 'paren') {\n push({ type: 'text', value });\n continue;\n }\n block = stack.pop();\n push({ type: 'text', value });\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Quotes: '|\"|`\n */\n\n if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n let open = value;\n let next;\n\n if (options.keepQuotes !== true) {\n value = '';\n }\n\n while (index < length && (next = advance())) {\n if (next === CHAR_BACKSLASH) {\n value += next + advance();\n continue;\n }\n\n if (next === open) {\n if (options.keepQuotes === true) value += next;\n break;\n }\n\n value += next;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Left curly brace: '{'\n */\n\n if (value === CHAR_LEFT_CURLY_BRACE) {\n depth++;\n\n let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n let brace = {\n type: 'brace',\n open: true,\n close: false,\n dollar,\n depth,\n commas: 0,\n ranges: 0,\n nodes: []\n };\n\n block = push(brace);\n stack.push(block);\n push({ type: 'open', value });\n continue;\n }\n\n /**\n * Right curly brace: '}'\n */\n\n if (value === CHAR_RIGHT_CURLY_BRACE) {\n if (block.type !== 'brace') {\n push({ type: 'text', value });\n continue;\n }\n\n let type = 'close';\n block = stack.pop();\n block.close = true;\n\n push({ type, value });\n depth--;\n\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Comma: ','\n */\n\n if (value === CHAR_COMMA && depth > 0) {\n if (block.ranges > 0) {\n block.ranges = 0;\n let open = block.nodes.shift();\n block.nodes = [open, { type: 'text', value: stringify(block) }];\n }\n\n push({ type: 'comma', value });\n block.commas++;\n continue;\n }\n\n /**\n * Dot: '.'\n */\n\n if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n let siblings = block.nodes;\n\n if (depth === 0 || siblings.length === 0) {\n push({ type: 'text', value });\n continue;\n }\n\n if (prev.type === 'dot') {\n block.range = [];\n prev.value += value;\n prev.type = 'range';\n\n if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n block.invalid = true;\n block.ranges = 0;\n prev.type = 'text';\n continue;\n }\n\n block.ranges++;\n block.args = [];\n continue;\n }\n\n if (prev.type === 'range') {\n siblings.pop();\n\n let before = siblings[siblings.length - 1];\n before.value += prev.value + value;\n prev = before;\n block.ranges--;\n continue;\n }\n\n push({ type: 'dot', value });\n continue;\n }\n\n /**\n * Text\n */\n\n push({ type: 'text', value });\n }\n\n // Mark imbalanced braces and brackets as invalid\n do {\n block = stack.pop();\n\n if (block.type !== 'root') {\n block.nodes.forEach(node => {\n if (!node.nodes) {\n if (node.type === 'open') node.isOpen = true;\n if (node.type === 'close') node.isClose = true;\n if (!node.nodes) node.type = 'text';\n node.invalid = true;\n }\n });\n\n // get the location of the block on parent.nodes (block's siblings)\n let parent = stack[stack.length - 1];\n let index = parent.nodes.indexOf(block);\n // replace the (invalid) block with it's nodes\n parent.nodes.splice(index, 1, ...block.nodes);\n }\n } while (stack.length > 0);\n\n push({ type: 'eos' });\n return ast;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n let output = [];\n\n if (Array.isArray(input)) {\n for (let pattern of input) {\n let result = braces.create(pattern, options);\n if (Array.isArray(result)) {\n output.push(...result);\n } else {\n output.push(result);\n }\n }\n } else {\n output = [].concat(braces.create(input, options));\n }\n\n if (options && options.expand === true && options.nodupes === true) {\n output = [...new Set(output)];\n }\n return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n if (typeof input === 'string') {\n return stringify(braces.parse(input, options), options);\n }\n return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n\n let result = expand(input, options);\n\n // filter out empty strings if specified\n if (options.noempty === true) {\n result = result.filter(Boolean);\n }\n\n // filter out duplicates if specified\n if (options.nodupes === true) {\n result = [...new Set(result)];\n }\n\n return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n if (input === '' || input.length < 3) {\n return [input];\n }\n\n return options.expand !== true\n ? braces.compile(input, options)\n : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.compileRe = (parsed, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return parsed.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${parsed.output})${append}`;\n if (parsed && parsed.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = parsed;\n }\n\n return regex;\n};\n\npicomatch.makeRe = (input, options, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n const opts = options || {};\n let parsed = { negated: false, fastpaths: true };\n let prefix = '';\n let output;\n\n if (input.startsWith('./')) {\n input = input.slice(2);\n prefix = parsed.prefix = './';\n }\n\n if (opts.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n output = parse.fastpaths(input, options);\n }\n\n if (output === undefined) {\n parsed = parse(input, options);\n parsed.prefix = prefix + (parsed.prefix || '');\n } else {\n parsed.output = output;\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.supportsLookbehinds = () => {\n const segs = process.version.slice(1).split('.').map(Number);\n if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n return true;\n }\n return false;\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: path.sep,\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), and `negated` (true if the path starts with `!`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(win32);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = (opts) => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index];\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren' && !EXTGLOB_CHARS[tok.value]) {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance() || '';\n } else {\n value += advance() || '';\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if (next === '<' && !utils.supportsLookbehinds()) {\n throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n }\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(win32);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = (opts) => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.merge = void 0;\r\nconst merge2 = require(\"merge2\");\r\nfunction merge(streams) {\r\n const mergedStream = merge2(streams);\r\n streams.forEach((stream) => {\r\n stream.once('error', (error) => mergedStream.emit('error', error));\r\n });\r\n mergedStream.once('close', () => propagateCloseEventToSources(streams));\r\n mergedStream.once('end', () => propagateCloseEventToSources(streams));\r\n return mergedStream;\r\n}\r\nexports.merge = merge;\r\nfunction propagateCloseEventToSources(streams) {\r\n streams.forEach((stream) => stream.emit('close'));\r\n}\r\n","'use strict'\n/*\n * merge2\n * https://github.com/teambition/merge2\n *\n * Copyright (c) 2014-2020 Teambition\n * Licensed under the MIT license.\n */\nconst Stream = require('stream')\nconst PassThrough = Stream.PassThrough\nconst slice = Array.prototype.slice\n\nmodule.exports = merge2\n\nfunction merge2 () {\n const streamsQueue = []\n const args = slice.call(arguments)\n let merging = false\n let options = args[args.length - 1]\n\n if (options && !Array.isArray(options) && options.pipe == null) {\n args.pop()\n } else {\n options = {}\n }\n\n const doEnd = options.end !== false\n const doPipeError = options.pipeError === true\n if (options.objectMode == null) {\n options.objectMode = true\n }\n if (options.highWaterMark == null) {\n options.highWaterMark = 64 * 1024\n }\n const mergedStream = PassThrough(options)\n\n function addStream () {\n for (let i = 0, len = arguments.length; i < len; i++) {\n streamsQueue.push(pauseStreams(arguments[i], options))\n }\n mergeStream()\n return this\n }\n\n function mergeStream () {\n if (merging) {\n return\n }\n merging = true\n\n let streams = streamsQueue.shift()\n if (!streams) {\n process.nextTick(endStream)\n return\n }\n if (!Array.isArray(streams)) {\n streams = [streams]\n }\n\n let pipesCount = streams.length + 1\n\n function next () {\n if (--pipesCount > 0) {\n return\n }\n merging = false\n mergeStream()\n }\n\n function pipe (stream) {\n function onend () {\n stream.removeListener('merge2UnpipeEnd', onend)\n stream.removeListener('end', onend)\n if (doPipeError) {\n stream.removeListener('error', onerror)\n }\n next()\n }\n function onerror (err) {\n mergedStream.emit('error', err)\n }\n // skip ended stream\n if (stream._readableState.endEmitted) {\n return next()\n }\n\n stream.on('merge2UnpipeEnd', onend)\n stream.on('end', onend)\n\n if (doPipeError) {\n stream.on('error', onerror)\n }\n\n stream.pipe(mergedStream, { end: false })\n // compatible for old stream\n stream.resume()\n }\n\n for (let i = 0; i < streams.length; i++) {\n pipe(streams[i])\n }\n\n next()\n }\n\n function endStream () {\n merging = false\n // emit 'queueDrain' when all streams merged.\n mergedStream.emit('queueDrain')\n if (doEnd) {\n mergedStream.end()\n }\n }\n\n mergedStream.setMaxListeners(0)\n mergedStream.add = addStream\n mergedStream.on('unpipe', function (stream) {\n stream.emit('merge2UnpipeEnd')\n })\n\n if (args.length) {\n addStream.apply(null, args)\n }\n return mergedStream\n}\n\n// check and pause streams for pipe.\nfunction pauseStreams (streams, options) {\n if (!Array.isArray(streams)) {\n // Backwards-compat with old-style streams\n if (!streams._readableState && streams.pipe) {\n streams = streams.pipe(PassThrough(options))\n }\n if (!streams._readableState || !streams.pause || !streams.pipe) {\n throw new Error('Only readable stream can be merged.')\n }\n streams.pause()\n } else {\n for (let i = 0, len = streams.length; i < len; i++) {\n streams[i] = pauseStreams(streams[i], options)\n }\n }\n return streams\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.isEmpty = exports.isString = void 0;\r\nfunction isString(input) {\r\n return typeof input === 'string';\r\n}\r\nexports.isString = isString;\r\nfunction isEmpty(input) {\r\n return input === '';\r\n}\r\nexports.isEmpty = isEmpty;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"../readers/stream\");\r\nconst provider_1 = require(\"./provider\");\r\nclass ProviderAsync extends provider_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._reader = new stream_1.default(this._settings);\r\n }\r\n read(task) {\r\n const root = this._getRootDirectory(task);\r\n const options = this._getReaderOptions(task);\r\n const entries = [];\r\n return new Promise((resolve, reject) => {\r\n const stream = this.api(root, task, options);\r\n stream.once('error', reject);\r\n stream.on('data', (entry) => entries.push(options.transform(entry)));\r\n stream.once('end', () => resolve(entries));\r\n });\r\n }\r\n api(root, task, options) {\r\n if (task.dynamic) {\r\n return this._reader.dynamic(root, options);\r\n }\r\n return this._reader.static(task.patterns, options);\r\n }\r\n}\r\nexports.default = ProviderAsync;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"stream\");\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst fsWalk = require(\"@nodelib/fs.walk\");\r\nconst reader_1 = require(\"./reader\");\r\nclass ReaderStream extends reader_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._walkStream = fsWalk.walkStream;\r\n this._stat = fsStat.stat;\r\n }\r\n dynamic(root, options) {\r\n return this._walkStream(root, options);\r\n }\r\n static(patterns, options) {\r\n const filepaths = patterns.map(this._getFullEntryPath, this);\r\n const stream = new stream_1.PassThrough({ objectMode: true });\r\n stream._write = (index, _enc, done) => {\r\n return this._getEntry(filepaths[index], patterns[index], options)\r\n .then((entry) => {\r\n if (entry !== null && options.entryFilter(entry)) {\r\n stream.push(entry);\r\n }\r\n if (index === filepaths.length - 1) {\r\n stream.end();\r\n }\r\n done();\r\n })\r\n .catch(done);\r\n };\r\n for (let i = 0; i < filepaths.length; i++) {\r\n stream.write(i);\r\n }\r\n return stream;\r\n }\r\n _getEntry(filepath, pattern, options) {\r\n return this._getStat(filepath)\r\n .then((stats) => this._makeEntry(stats, pattern))\r\n .catch((error) => {\r\n if (options.errorFilter(error)) {\r\n return null;\r\n }\r\n throw error;\r\n });\r\n }\r\n _getStat(filepath) {\r\n return new Promise((resolve, reject) => {\r\n this._stat(filepath, this._fsStatSettings, (error, stats) => {\r\n return error === null ? resolve(stats) : reject(error);\r\n });\r\n });\r\n }\r\n}\r\nexports.default = ReaderStream;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.statSync = exports.stat = exports.Settings = void 0;\r\nconst async = require(\"./providers/async\");\r\nconst sync = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nexports.Settings = settings_1.default;\r\nfunction stat(path, optionsOrSettingsOrCallback, callback) {\r\n if (typeof optionsOrSettingsOrCallback === 'function') {\r\n return async.read(path, getSettings(), optionsOrSettingsOrCallback);\r\n }\r\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\r\n}\r\nexports.stat = stat;\r\nfunction statSync(path, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n return sync.read(path, settings);\r\n}\r\nexports.statSync = statSync;\r\nfunction getSettings(settingsOrOptions = {}) {\r\n if (settingsOrOptions instanceof settings_1.default) {\r\n return settingsOrOptions;\r\n }\r\n return new settings_1.default(settingsOrOptions);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.read = void 0;\r\nfunction read(path, settings, callback) {\r\n settings.fs.lstat(path, (lstatError, lstat) => {\r\n if (lstatError !== null) {\r\n return callFailureCallback(callback, lstatError);\r\n }\r\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\r\n return callSuccessCallback(callback, lstat);\r\n }\r\n settings.fs.stat(path, (statError, stat) => {\r\n if (statError !== null) {\r\n if (settings.throwErrorOnBrokenSymbolicLink) {\r\n return callFailureCallback(callback, statError);\r\n }\r\n return callSuccessCallback(callback, lstat);\r\n }\r\n if (settings.markSymbolicLink) {\r\n stat.isSymbolicLink = () => true;\r\n }\r\n callSuccessCallback(callback, stat);\r\n });\r\n });\r\n}\r\nexports.read = read;\r\nfunction callFailureCallback(callback, error) {\r\n callback(error);\r\n}\r\nfunction callSuccessCallback(callback, result) {\r\n callback(null, result);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.read = void 0;\r\nfunction read(path, settings) {\r\n const lstat = settings.fs.lstatSync(path);\r\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\r\n return lstat;\r\n }\r\n try {\r\n const stat = settings.fs.statSync(path);\r\n if (settings.markSymbolicLink) {\r\n stat.isSymbolicLink = () => true;\r\n }\r\n return stat;\r\n }\r\n catch (error) {\r\n if (!settings.throwErrorOnBrokenSymbolicLink) {\r\n return lstat;\r\n }\r\n throw error;\r\n }\r\n}\r\nexports.read = read;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst fs = require(\"./adapters/fs\");\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true);\r\n this.fs = fs.createFileSystemAdapter(this._options.fs);\r\n this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false);\r\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\r\n }\r\n _getValue(option, value) {\r\n return option !== null && option !== void 0 ? option : value;\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\r\nconst fs = require(\"fs\");\r\nexports.FILE_SYSTEM_ADAPTER = {\r\n lstat: fs.lstat,\r\n stat: fs.stat,\r\n lstatSync: fs.lstatSync,\r\n statSync: fs.statSync\r\n};\r\nfunction createFileSystemAdapter(fsMethods) {\r\n if (fsMethods === undefined) {\r\n return exports.FILE_SYSTEM_ADAPTER;\r\n }\r\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\r\n}\r\nexports.createFileSystemAdapter = createFileSystemAdapter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Settings = exports.walkStream = exports.walkSync = exports.walk = void 0;\r\nconst async_1 = require(\"./providers/async\");\r\nconst stream_1 = require(\"./providers/stream\");\r\nconst sync_1 = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nexports.Settings = settings_1.default;\r\nfunction walk(directory, optionsOrSettingsOrCallback, callback) {\r\n if (typeof optionsOrSettingsOrCallback === 'function') {\r\n return new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback);\r\n }\r\n new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback);\r\n}\r\nexports.walk = walk;\r\nfunction walkSync(directory, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n const provider = new sync_1.default(directory, settings);\r\n return provider.read();\r\n}\r\nexports.walkSync = walkSync;\r\nfunction walkStream(directory, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n const provider = new stream_1.default(directory, settings);\r\n return provider.read();\r\n}\r\nexports.walkStream = walkStream;\r\nfunction getSettings(settingsOrOptions = {}) {\r\n if (settingsOrOptions instanceof settings_1.default) {\r\n return settingsOrOptions;\r\n }\r\n return new settings_1.default(settingsOrOptions);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst async_1 = require(\"../readers/async\");\r\nclass AsyncProvider {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._reader = new async_1.default(this._root, this._settings);\r\n this._storage = new Set();\r\n }\r\n read(callback) {\r\n this._reader.onError((error) => {\r\n callFailureCallback(callback, error);\r\n });\r\n this._reader.onEntry((entry) => {\r\n this._storage.add(entry);\r\n });\r\n this._reader.onEnd(() => {\r\n callSuccessCallback(callback, [...this._storage]);\r\n });\r\n this._reader.read();\r\n }\r\n}\r\nexports.default = AsyncProvider;\r\nfunction callFailureCallback(callback, error) {\r\n callback(error);\r\n}\r\nfunction callSuccessCallback(callback, entries) {\r\n callback(null, entries);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst events_1 = require(\"events\");\r\nconst fsScandir = require(\"@nodelib/fs.scandir\");\r\nconst fastq = require(\"fastq\");\r\nconst common = require(\"./common\");\r\nconst reader_1 = require(\"./reader\");\r\nclass AsyncReader extends reader_1.default {\r\n constructor(_root, _settings) {\r\n super(_root, _settings);\r\n this._settings = _settings;\r\n this._scandir = fsScandir.scandir;\r\n this._emitter = new events_1.EventEmitter();\r\n this._queue = fastq(this._worker.bind(this), this._settings.concurrency);\r\n this._isFatalError = false;\r\n this._isDestroyed = false;\r\n this._queue.drain = () => {\r\n if (!this._isFatalError) {\r\n this._emitter.emit('end');\r\n }\r\n };\r\n }\r\n read() {\r\n this._isFatalError = false;\r\n this._isDestroyed = false;\r\n setImmediate(() => {\r\n this._pushToQueue(this._root, this._settings.basePath);\r\n });\r\n return this._emitter;\r\n }\r\n get isDestroyed() {\r\n return this._isDestroyed;\r\n }\r\n destroy() {\r\n if (this._isDestroyed) {\r\n throw new Error('The reader is already destroyed');\r\n }\r\n this._isDestroyed = true;\r\n this._queue.killAndDrain();\r\n }\r\n onEntry(callback) {\r\n this._emitter.on('entry', callback);\r\n }\r\n onError(callback) {\r\n this._emitter.once('error', callback);\r\n }\r\n onEnd(callback) {\r\n this._emitter.once('end', callback);\r\n }\r\n _pushToQueue(directory, base) {\r\n const queueItem = { directory, base };\r\n this._queue.push(queueItem, (error) => {\r\n if (error !== null) {\r\n this._handleError(error);\r\n }\r\n });\r\n }\r\n _worker(item, done) {\r\n this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => {\r\n if (error !== null) {\r\n return done(error, undefined);\r\n }\r\n for (const entry of entries) {\r\n this._handleEntry(entry, item.base);\r\n }\r\n done(null, undefined);\r\n });\r\n }\r\n _handleError(error) {\r\n if (this._isDestroyed || !common.isFatalError(this._settings, error)) {\r\n return;\r\n }\r\n this._isFatalError = true;\r\n this._isDestroyed = true;\r\n this._emitter.emit('error', error);\r\n }\r\n _handleEntry(entry, base) {\r\n if (this._isDestroyed || this._isFatalError) {\r\n return;\r\n }\r\n const fullpath = entry.path;\r\n if (base !== undefined) {\r\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\r\n }\r\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\r\n this._emitEntry(entry);\r\n }\r\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\r\n this._pushToQueue(fullpath, entry.path);\r\n }\r\n }\r\n _emitEntry(entry) {\r\n this._emitter.emit('entry', entry);\r\n }\r\n}\r\nexports.default = AsyncReader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Settings = exports.scandirSync = exports.scandir = void 0;\r\nconst async = require(\"./providers/async\");\r\nconst sync = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nexports.Settings = settings_1.default;\r\nfunction scandir(path, optionsOrSettingsOrCallback, callback) {\r\n if (typeof optionsOrSettingsOrCallback === 'function') {\r\n return async.read(path, getSettings(), optionsOrSettingsOrCallback);\r\n }\r\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\r\n}\r\nexports.scandir = scandir;\r\nfunction scandirSync(path, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n return sync.read(path, settings);\r\n}\r\nexports.scandirSync = scandirSync;\r\nfunction getSettings(settingsOrOptions = {}) {\r\n if (settingsOrOptions instanceof settings_1.default) {\r\n return settingsOrOptions;\r\n }\r\n return new settings_1.default(settingsOrOptions);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst rpl = require(\"run-parallel\");\r\nconst constants_1 = require(\"../constants\");\r\nconst utils = require(\"../utils\");\r\nconst common = require(\"./common\");\r\nfunction read(directory, settings, callback) {\r\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\r\n return readdirWithFileTypes(directory, settings, callback);\r\n }\r\n return readdir(directory, settings, callback);\r\n}\r\nexports.read = read;\r\nfunction readdirWithFileTypes(directory, settings, callback) {\r\n settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => {\r\n if (readdirError !== null) {\r\n return callFailureCallback(callback, readdirError);\r\n }\r\n const entries = dirents.map((dirent) => ({\r\n dirent,\r\n name: dirent.name,\r\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\r\n }));\r\n if (!settings.followSymbolicLinks) {\r\n return callSuccessCallback(callback, entries);\r\n }\r\n const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings));\r\n rpl(tasks, (rplError, rplEntries) => {\r\n if (rplError !== null) {\r\n return callFailureCallback(callback, rplError);\r\n }\r\n callSuccessCallback(callback, rplEntries);\r\n });\r\n });\r\n}\r\nexports.readdirWithFileTypes = readdirWithFileTypes;\r\nfunction makeRplTaskEntry(entry, settings) {\r\n return (done) => {\r\n if (!entry.dirent.isSymbolicLink()) {\r\n return done(null, entry);\r\n }\r\n settings.fs.stat(entry.path, (statError, stats) => {\r\n if (statError !== null) {\r\n if (settings.throwErrorOnBrokenSymbolicLink) {\r\n return done(statError);\r\n }\r\n return done(null, entry);\r\n }\r\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\r\n return done(null, entry);\r\n });\r\n };\r\n}\r\nfunction readdir(directory, settings, callback) {\r\n settings.fs.readdir(directory, (readdirError, names) => {\r\n if (readdirError !== null) {\r\n return callFailureCallback(callback, readdirError);\r\n }\r\n const filepaths = names.map((name) => common.joinPathSegments(directory, name, settings.pathSegmentSeparator));\r\n const tasks = filepaths.map((filepath) => {\r\n return (done) => fsStat.stat(filepath, settings.fsStatSettings, done);\r\n });\r\n rpl(tasks, (rplError, results) => {\r\n if (rplError !== null) {\r\n return callFailureCallback(callback, rplError);\r\n }\r\n const entries = [];\r\n names.forEach((name, index) => {\r\n const stats = results[index];\r\n const entry = {\r\n name,\r\n path: filepaths[index],\r\n dirent: utils.fs.createDirentFromStats(name, stats)\r\n };\r\n if (settings.stats) {\r\n entry.stats = stats;\r\n }\r\n entries.push(entry);\r\n });\r\n callSuccessCallback(callback, entries);\r\n });\r\n });\r\n}\r\nexports.readdir = readdir;\r\nfunction callFailureCallback(callback, error) {\r\n callback(error);\r\n}\r\nfunction callSuccessCallback(callback, result) {\r\n callback(null, result);\r\n}\r\n","/*! run-parallel. MIT License. Feross Aboukhadijeh */\nmodule.exports = runParallel\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallel (tasks, cb) {\n let results, pending, keys\n let isSync = true\n\n if (Array.isArray(tasks)) {\n results = []\n pending = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (--pending === 0 || err) {\n done(err)\n }\n }\n\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.forEach(function (key) {\n tasks[key](function (err, result) { each(key, err, result) })\n })\n } else {\n // array\n tasks.forEach(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n })\n }\n\n isSync = false\n}\n","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = void 0;\r\nconst NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.');\r\nconst MAJOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[0], 10);\r\nconst MINOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[1], 10);\r\nconst SUPPORTED_MAJOR_VERSION = 10;\r\nconst SUPPORTED_MINOR_VERSION = 10;\r\nconst IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION;\r\nconst IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION;\r\n/**\r\n * IS `true` for Node.js 10.10 and greater.\r\n */\r\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.fs = void 0;\r\nconst fs = require(\"./fs\");\r\nexports.fs = fs;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createDirentFromStats = void 0;\r\nclass DirentFromStats {\r\n constructor(name, stats) {\r\n this.name = name;\r\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\r\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\r\n this.isDirectory = stats.isDirectory.bind(stats);\r\n this.isFIFO = stats.isFIFO.bind(stats);\r\n this.isFile = stats.isFile.bind(stats);\r\n this.isSocket = stats.isSocket.bind(stats);\r\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\r\n }\r\n}\r\nfunction createDirentFromStats(name, stats) {\r\n return new DirentFromStats(name, stats);\r\n}\r\nexports.createDirentFromStats = createDirentFromStats;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.joinPathSegments = void 0;\r\nfunction joinPathSegments(a, b, separator) {\r\n /**\r\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\r\n */\r\n if (a.endsWith(separator)) {\r\n return a + b;\r\n }\r\n return a + separator + b;\r\n}\r\nexports.joinPathSegments = joinPathSegments;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst constants_1 = require(\"../constants\");\r\nconst utils = require(\"../utils\");\r\nconst common = require(\"./common\");\r\nfunction read(directory, settings) {\r\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\r\n return readdirWithFileTypes(directory, settings);\r\n }\r\n return readdir(directory, settings);\r\n}\r\nexports.read = read;\r\nfunction readdirWithFileTypes(directory, settings) {\r\n const dirents = settings.fs.readdirSync(directory, { withFileTypes: true });\r\n return dirents.map((dirent) => {\r\n const entry = {\r\n dirent,\r\n name: dirent.name,\r\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\r\n };\r\n if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) {\r\n try {\r\n const stats = settings.fs.statSync(entry.path);\r\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\r\n }\r\n catch (error) {\r\n if (settings.throwErrorOnBrokenSymbolicLink) {\r\n throw error;\r\n }\r\n }\r\n }\r\n return entry;\r\n });\r\n}\r\nexports.readdirWithFileTypes = readdirWithFileTypes;\r\nfunction readdir(directory, settings) {\r\n const names = settings.fs.readdirSync(directory);\r\n return names.map((name) => {\r\n const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\r\n const stats = fsStat.statSync(entryPath, settings.fsStatSettings);\r\n const entry = {\r\n name,\r\n path: entryPath,\r\n dirent: utils.fs.createDirentFromStats(name, stats)\r\n };\r\n if (settings.stats) {\r\n entry.stats = stats;\r\n }\r\n return entry;\r\n });\r\n}\r\nexports.readdir = readdir;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst fs = require(\"./adapters/fs\");\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false);\r\n this.fs = fs.createFileSystemAdapter(this._options.fs);\r\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\r\n this.stats = this._getValue(this._options.stats, false);\r\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\r\n this.fsStatSettings = new fsStat.Settings({\r\n followSymbolicLink: this.followSymbolicLinks,\r\n fs: this.fs,\r\n throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink\r\n });\r\n }\r\n _getValue(option, value) {\r\n return option !== null && option !== void 0 ? option : value;\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\r\nconst fs = require(\"fs\");\r\nexports.FILE_SYSTEM_ADAPTER = {\r\n lstat: fs.lstat,\r\n stat: fs.stat,\r\n lstatSync: fs.lstatSync,\r\n statSync: fs.statSync,\r\n readdir: fs.readdir,\r\n readdirSync: fs.readdirSync\r\n};\r\nfunction createFileSystemAdapter(fsMethods) {\r\n if (fsMethods === undefined) {\r\n return exports.FILE_SYSTEM_ADAPTER;\r\n }\r\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\r\n}\r\nexports.createFileSystemAdapter = createFileSystemAdapter;\r\n","'use strict'\n\nvar reusify = require('reusify')\n\nfunction fastqueue (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n if (concurrency < 1) {\n throw new Error('fastqueue concurrency must be greater than 1')\n }\n\n var cache = reusify(Task)\n var queueHead = null\n var queueTail = null\n var _running = 0\n var errorHandler = null\n\n var self = {\n push: push,\n drain: noop,\n saturated: noop,\n pause: pause,\n paused: false,\n concurrency: concurrency,\n running: running,\n resume: resume,\n idle: idle,\n length: length,\n getQueue: getQueue,\n unshift: unshift,\n empty: noop,\n kill: kill,\n killAndDrain: killAndDrain,\n error: error\n }\n\n return self\n\n function running () {\n return _running\n }\n\n function pause () {\n self.paused = true\n }\n\n function length () {\n var current = queueHead\n var counter = 0\n\n while (current) {\n current = current.next\n counter++\n }\n\n return counter\n }\n\n function getQueue () {\n var current = queueHead\n var tasks = []\n\n while (current) {\n tasks.push(current.value)\n current = current.next\n }\n\n return tasks\n }\n\n function resume () {\n if (!self.paused) return\n self.paused = false\n for (var i = 0; i < self.concurrency; i++) {\n _running++\n release()\n }\n }\n\n function idle () {\n return _running === 0 && self.length() === 0\n }\n\n function push (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n current.errorHandler = errorHandler\n\n if (_running === self.concurrency || self.paused) {\n if (queueTail) {\n queueTail.next = current\n queueTail = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function unshift (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n\n if (_running === self.concurrency || self.paused) {\n if (queueHead) {\n current.next = queueHead\n queueHead = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function release (holder) {\n if (holder) {\n cache.release(holder)\n }\n var next = queueHead\n if (next) {\n if (!self.paused) {\n if (queueTail === queueHead) {\n queueTail = null\n }\n queueHead = next.next\n next.next = null\n worker.call(context, next.value, next.worked)\n if (queueTail === null) {\n self.empty()\n }\n } else {\n _running--\n }\n } else if (--_running === 0) {\n self.drain()\n }\n }\n\n function kill () {\n queueHead = null\n queueTail = null\n self.drain = noop\n }\n\n function killAndDrain () {\n queueHead = null\n queueTail = null\n self.drain()\n self.drain = noop\n }\n\n function error (handler) {\n errorHandler = handler\n }\n}\n\nfunction noop () {}\n\nfunction Task () {\n this.value = null\n this.callback = noop\n this.next = null\n this.release = noop\n this.context = null\n this.errorHandler = null\n\n var self = this\n\n this.worked = function worked (err, result) {\n var callback = self.callback\n var errorHandler = self.errorHandler\n var val = self.value\n self.value = null\n self.callback = noop\n if (self.errorHandler) {\n errorHandler(err, val)\n }\n callback.call(self.context, err, result)\n self.release(self)\n }\n}\n\nfunction queueAsPromised (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n function asyncWrapper (arg, cb) {\n worker.call(this, arg)\n .then(function (res) {\n cb(null, res)\n }, cb)\n }\n\n var queue = fastqueue(context, asyncWrapper, concurrency)\n\n var pushCb = queue.push\n var unshiftCb = queue.unshift\n\n queue.push = push\n queue.unshift = unshift\n\n return queue\n\n function push (value) {\n return new Promise(function (resolve, reject) {\n pushCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n }\n\n function unshift (value) {\n return new Promise(function (resolve, reject) {\n unshiftCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n }\n}\n\nmodule.exports = fastqueue\nmodule.exports.promise = queueAsPromised\n","'use strict'\n\nfunction reusify (Constructor) {\n var head = new Constructor()\n var tail = head\n\n function get () {\n var current = head\n\n if (current.next) {\n head = current.next\n } else {\n head = new Constructor()\n tail = head\n }\n\n current.next = null\n\n return current\n }\n\n function release (obj) {\n tail.next = obj\n tail = obj\n }\n\n return {\n get: get,\n release: release\n }\n}\n\nmodule.exports = reusify\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = void 0;\r\nfunction isFatalError(settings, error) {\r\n if (settings.errorFilter === null) {\r\n return true;\r\n }\r\n return !settings.errorFilter(error);\r\n}\r\nexports.isFatalError = isFatalError;\r\nfunction isAppliedFilter(filter, value) {\r\n return filter === null || filter(value);\r\n}\r\nexports.isAppliedFilter = isAppliedFilter;\r\nfunction replacePathSegmentSeparator(filepath, separator) {\r\n return filepath.split(/[/\\\\]/).join(separator);\r\n}\r\nexports.replacePathSegmentSeparator = replacePathSegmentSeparator;\r\nfunction joinPathSegments(a, b, separator) {\r\n if (a === '') {\r\n return b;\r\n }\r\n /**\r\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\r\n */\r\n if (a.endsWith(separator)) {\r\n return a + b;\r\n }\r\n return a + separator + b;\r\n}\r\nexports.joinPathSegments = joinPathSegments;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst common = require(\"./common\");\r\nclass Reader {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator);\r\n }\r\n}\r\nexports.default = Reader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"stream\");\r\nconst async_1 = require(\"../readers/async\");\r\nclass StreamProvider {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._reader = new async_1.default(this._root, this._settings);\r\n this._stream = new stream_1.Readable({\r\n objectMode: true,\r\n read: () => { },\r\n destroy: () => {\r\n if (!this._reader.isDestroyed) {\r\n this._reader.destroy();\r\n }\r\n }\r\n });\r\n }\r\n read() {\r\n this._reader.onError((error) => {\r\n this._stream.emit('error', error);\r\n });\r\n this._reader.onEntry((entry) => {\r\n this._stream.push(entry);\r\n });\r\n this._reader.onEnd(() => {\r\n this._stream.push(null);\r\n });\r\n this._reader.read();\r\n return this._stream;\r\n }\r\n}\r\nexports.default = StreamProvider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst sync_1 = require(\"../readers/sync\");\r\nclass SyncProvider {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._reader = new sync_1.default(this._root, this._settings);\r\n }\r\n read() {\r\n return this._reader.read();\r\n }\r\n}\r\nexports.default = SyncProvider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst fsScandir = require(\"@nodelib/fs.scandir\");\r\nconst common = require(\"./common\");\r\nconst reader_1 = require(\"./reader\");\r\nclass SyncReader extends reader_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._scandir = fsScandir.scandirSync;\r\n this._storage = new Set();\r\n this._queue = new Set();\r\n }\r\n read() {\r\n this._pushToQueue(this._root, this._settings.basePath);\r\n this._handleQueue();\r\n return [...this._storage];\r\n }\r\n _pushToQueue(directory, base) {\r\n this._queue.add({ directory, base });\r\n }\r\n _handleQueue() {\r\n for (const item of this._queue.values()) {\r\n this._handleDirectory(item.directory, item.base);\r\n }\r\n }\r\n _handleDirectory(directory, base) {\r\n try {\r\n const entries = this._scandir(directory, this._settings.fsScandirSettings);\r\n for (const entry of entries) {\r\n this._handleEntry(entry, base);\r\n }\r\n }\r\n catch (error) {\r\n this._handleError(error);\r\n }\r\n }\r\n _handleError(error) {\r\n if (!common.isFatalError(this._settings, error)) {\r\n return;\r\n }\r\n throw error;\r\n }\r\n _handleEntry(entry, base) {\r\n const fullpath = entry.path;\r\n if (base !== undefined) {\r\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\r\n }\r\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\r\n this._pushToStorage(entry);\r\n }\r\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\r\n this._pushToQueue(fullpath, entry.path);\r\n }\r\n }\r\n _pushToStorage(entry) {\r\n this._storage.add(entry);\r\n }\r\n}\r\nexports.default = SyncReader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst fsScandir = require(\"@nodelib/fs.scandir\");\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.basePath = this._getValue(this._options.basePath, undefined);\r\n this.concurrency = this._getValue(this._options.concurrency, Infinity);\r\n this.deepFilter = this._getValue(this._options.deepFilter, null);\r\n this.entryFilter = this._getValue(this._options.entryFilter, null);\r\n this.errorFilter = this._getValue(this._options.errorFilter, null);\r\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\r\n this.fsScandirSettings = new fsScandir.Settings({\r\n followSymbolicLinks: this._options.followSymbolicLinks,\r\n fs: this._options.fs,\r\n pathSegmentSeparator: this._options.pathSegmentSeparator,\r\n stats: this._options.stats,\r\n throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink\r\n });\r\n }\r\n _getValue(option, value) {\r\n return option !== null && option !== void 0 ? option : value;\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst utils = require(\"../utils\");\r\nclass Reader {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n this._fsStatSettings = new fsStat.Settings({\r\n followSymbolicLink: this._settings.followSymbolicLinks,\r\n fs: this._settings.fs,\r\n throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks\r\n });\r\n }\r\n _getFullEntryPath(filepath) {\r\n return path.resolve(this._settings.cwd, filepath);\r\n }\r\n _makeEntry(stats, pattern) {\r\n const entry = {\r\n name: pattern,\r\n path: pattern,\r\n dirent: utils.fs.createDirentFromStats(pattern, stats)\r\n };\r\n if (this._settings.stats) {\r\n entry.stats = stats;\r\n }\r\n return entry;\r\n }\r\n _isFatalError(error) {\r\n return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;\r\n }\r\n}\r\nexports.default = Reader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst deep_1 = require(\"./filters/deep\");\r\nconst entry_1 = require(\"./filters/entry\");\r\nconst error_1 = require(\"./filters/error\");\r\nconst entry_2 = require(\"./transformers/entry\");\r\nclass Provider {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n this.errorFilter = new error_1.default(this._settings);\r\n this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());\r\n this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());\r\n this.entryTransformer = new entry_2.default(this._settings);\r\n }\r\n _getRootDirectory(task) {\r\n return path.resolve(this._settings.cwd, task.base);\r\n }\r\n _getReaderOptions(task) {\r\n const basePath = task.base === '.' ? '' : task.base;\r\n return {\r\n basePath,\r\n pathSegmentSeparator: '/',\r\n concurrency: this._settings.concurrency,\r\n deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),\r\n entryFilter: this.entryFilter.getFilter(task.positive, task.negative),\r\n errorFilter: this.errorFilter.getFilter(),\r\n followSymbolicLinks: this._settings.followSymbolicLinks,\r\n fs: this._settings.fs,\r\n stats: this._settings.stats,\r\n throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,\r\n transform: this.entryTransformer.getTransformer()\r\n };\r\n }\r\n _getMicromatchOptions() {\r\n return {\r\n dot: this._settings.dot,\r\n matchBase: this._settings.baseNameMatch,\r\n nobrace: !this._settings.braceExpansion,\r\n nocase: !this._settings.caseSensitiveMatch,\r\n noext: !this._settings.extglob,\r\n noglobstar: !this._settings.globstar,\r\n posix: true,\r\n strictSlashes: false\r\n };\r\n }\r\n}\r\nexports.default = Provider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nconst partial_1 = require(\"../matchers/partial\");\r\nclass DeepFilter {\r\n constructor(_settings, _micromatchOptions) {\r\n this._settings = _settings;\r\n this._micromatchOptions = _micromatchOptions;\r\n }\r\n getFilter(basePath, positive, negative) {\r\n const matcher = this._getMatcher(positive);\r\n const negativeRe = this._getNegativePatternsRe(negative);\r\n return (entry) => this._filter(basePath, entry, matcher, negativeRe);\r\n }\r\n _getMatcher(patterns) {\r\n return new partial_1.default(patterns, this._settings, this._micromatchOptions);\r\n }\r\n _getNegativePatternsRe(patterns) {\r\n const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern);\r\n return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions);\r\n }\r\n _filter(basePath, entry, matcher, negativeRe) {\r\n if (this._isSkippedByDeep(basePath, entry.path)) {\r\n return false;\r\n }\r\n if (this._isSkippedSymbolicLink(entry)) {\r\n return false;\r\n }\r\n const filepath = utils.path.removeLeadingDotSegment(entry.path);\r\n if (this._isSkippedByPositivePatterns(filepath, matcher)) {\r\n return false;\r\n }\r\n return this._isSkippedByNegativePatterns(filepath, negativeRe);\r\n }\r\n _isSkippedByDeep(basePath, entryPath) {\r\n /**\r\n * Avoid unnecessary depth calculations when it doesn't matter.\r\n */\r\n if (this._settings.deep === Infinity) {\r\n return false;\r\n }\r\n return this._getEntryLevel(basePath, entryPath) >= this._settings.deep;\r\n }\r\n _getEntryLevel(basePath, entryPath) {\r\n const entryPathDepth = entryPath.split('/').length;\r\n if (basePath === '') {\r\n return entryPathDepth;\r\n }\r\n const basePathDepth = basePath.split('/').length;\r\n return entryPathDepth - basePathDepth;\r\n }\r\n _isSkippedSymbolicLink(entry) {\r\n return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink();\r\n }\r\n _isSkippedByPositivePatterns(entryPath, matcher) {\r\n return !this._settings.baseNameMatch && !matcher.match(entryPath);\r\n }\r\n _isSkippedByNegativePatterns(entryPath, patternsRe) {\r\n return !utils.pattern.matchAny(entryPath, patternsRe);\r\n }\r\n}\r\nexports.default = DeepFilter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst matcher_1 = require(\"./matcher\");\r\nclass PartialMatcher extends matcher_1.default {\r\n match(filepath) {\r\n const parts = filepath.split('/');\r\n const levels = parts.length;\r\n const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels);\r\n for (const pattern of patterns) {\r\n const section = pattern.sections[0];\r\n /**\r\n * In this case, the pattern has a globstar and we must read all directories unconditionally,\r\n * but only if the level has reached the end of the first group.\r\n *\r\n * fixtures/{a,b}/**\r\n * ^ true/false ^ always true\r\n */\r\n if (!pattern.complete && levels > section.length) {\r\n return true;\r\n }\r\n const match = parts.every((part, index) => {\r\n const segment = pattern.segments[index];\r\n if (segment.dynamic && segment.patternRe.test(part)) {\r\n return true;\r\n }\r\n if (!segment.dynamic && segment.pattern === part) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (match) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\nexports.default = PartialMatcher;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass Matcher {\r\n constructor(_patterns, _settings, _micromatchOptions) {\r\n this._patterns = _patterns;\r\n this._settings = _settings;\r\n this._micromatchOptions = _micromatchOptions;\r\n this._storage = [];\r\n this._fillStorage();\r\n }\r\n _fillStorage() {\r\n /**\r\n * The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level).\r\n * So, before expand patterns with brace expansion into separated patterns.\r\n */\r\n const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns);\r\n for (const pattern of patterns) {\r\n const segments = this._getPatternSegments(pattern);\r\n const sections = this._splitSegmentsIntoSections(segments);\r\n this._storage.push({\r\n complete: sections.length <= 1,\r\n pattern,\r\n segments,\r\n sections\r\n });\r\n }\r\n }\r\n _getPatternSegments(pattern) {\r\n const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions);\r\n return parts.map((part) => {\r\n const dynamic = utils.pattern.isDynamicPattern(part, this._settings);\r\n if (!dynamic) {\r\n return {\r\n dynamic: false,\r\n pattern: part\r\n };\r\n }\r\n return {\r\n dynamic: true,\r\n pattern: part,\r\n patternRe: utils.pattern.makeRe(part, this._micromatchOptions)\r\n };\r\n });\r\n }\r\n _splitSegmentsIntoSections(segments) {\r\n return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern));\r\n }\r\n}\r\nexports.default = Matcher;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass EntryFilter {\r\n constructor(_settings, _micromatchOptions) {\r\n this._settings = _settings;\r\n this._micromatchOptions = _micromatchOptions;\r\n this.index = new Map();\r\n }\r\n getFilter(positive, negative) {\r\n const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions);\r\n const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions);\r\n return (entry) => this._filter(entry, positiveRe, negativeRe);\r\n }\r\n _filter(entry, positiveRe, negativeRe) {\r\n if (this._settings.unique && this._isDuplicateEntry(entry)) {\r\n return false;\r\n }\r\n if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {\r\n return false;\r\n }\r\n if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) {\r\n return false;\r\n }\r\n const filepath = this._settings.baseNameMatch ? entry.name : entry.path;\r\n const isMatched = this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe);\r\n if (this._settings.unique && isMatched) {\r\n this._createIndexRecord(entry);\r\n }\r\n return isMatched;\r\n }\r\n _isDuplicateEntry(entry) {\r\n return this.index.has(entry.path);\r\n }\r\n _createIndexRecord(entry) {\r\n this.index.set(entry.path, undefined);\r\n }\r\n _onlyFileFilter(entry) {\r\n return this._settings.onlyFiles && !entry.dirent.isFile();\r\n }\r\n _onlyDirectoryFilter(entry) {\r\n return this._settings.onlyDirectories && !entry.dirent.isDirectory();\r\n }\r\n _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) {\r\n if (!this._settings.absolute) {\r\n return false;\r\n }\r\n const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath);\r\n return utils.pattern.matchAny(fullpath, patternsRe);\r\n }\r\n _isMatchToPatterns(entryPath, patternsRe) {\r\n const filepath = utils.path.removeLeadingDotSegment(entryPath);\r\n return utils.pattern.matchAny(filepath, patternsRe);\r\n }\r\n}\r\nexports.default = EntryFilter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass ErrorFilter {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n }\r\n getFilter() {\r\n return (error) => this._isNonFatalError(error);\r\n }\r\n _isNonFatalError(error) {\r\n return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors;\r\n }\r\n}\r\nexports.default = ErrorFilter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass EntryTransformer {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n }\r\n getTransformer() {\r\n return (entry) => this._transform(entry);\r\n }\r\n _transform(entry) {\r\n let filepath = entry.path;\r\n if (this._settings.absolute) {\r\n filepath = utils.path.makeAbsolute(this._settings.cwd, filepath);\r\n filepath = utils.path.unixify(filepath);\r\n }\r\n if (this._settings.markDirectories && entry.dirent.isDirectory()) {\r\n filepath += '/';\r\n }\r\n if (!this._settings.objectMode) {\r\n return filepath;\r\n }\r\n return Object.assign(Object.assign({}, entry), { path: filepath });\r\n }\r\n}\r\nexports.default = EntryTransformer;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"stream\");\r\nconst stream_2 = require(\"../readers/stream\");\r\nconst provider_1 = require(\"./provider\");\r\nclass ProviderStream extends provider_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._reader = new stream_2.default(this._settings);\r\n }\r\n read(task) {\r\n const root = this._getRootDirectory(task);\r\n const options = this._getReaderOptions(task);\r\n const source = this.api(root, task, options);\r\n const destination = new stream_1.Readable({ objectMode: true, read: () => { } });\r\n source\r\n .once('error', (error) => destination.emit('error', error))\r\n .on('data', (entry) => destination.emit('data', options.transform(entry)))\r\n .once('end', () => destination.emit('end'));\r\n destination\r\n .once('close', () => source.destroy());\r\n return destination;\r\n }\r\n api(root, task, options) {\r\n if (task.dynamic) {\r\n return this._reader.dynamic(root, options);\r\n }\r\n return this._reader.static(task.patterns, options);\r\n }\r\n}\r\nexports.default = ProviderStream;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst sync_1 = require(\"../readers/sync\");\r\nconst provider_1 = require(\"./provider\");\r\nclass ProviderSync extends provider_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._reader = new sync_1.default(this._settings);\r\n }\r\n read(task) {\r\n const root = this._getRootDirectory(task);\r\n const options = this._getReaderOptions(task);\r\n const entries = this.api(root, task, options);\r\n return entries.map(options.transform);\r\n }\r\n api(root, task, options) {\r\n if (task.dynamic) {\r\n return this._reader.dynamic(root, options);\r\n }\r\n return this._reader.static(task.patterns, options);\r\n }\r\n}\r\nexports.default = ProviderSync;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst fsWalk = require(\"@nodelib/fs.walk\");\r\nconst reader_1 = require(\"./reader\");\r\nclass ReaderSync extends reader_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._walkSync = fsWalk.walkSync;\r\n this._statSync = fsStat.statSync;\r\n }\r\n dynamic(root, options) {\r\n return this._walkSync(root, options);\r\n }\r\n static(patterns, options) {\r\n const entries = [];\r\n for (const pattern of patterns) {\r\n const filepath = this._getFullEntryPath(pattern);\r\n const entry = this._getEntry(filepath, pattern, options);\r\n if (entry === null || !options.entryFilter(entry)) {\r\n continue;\r\n }\r\n entries.push(entry);\r\n }\r\n return entries;\r\n }\r\n _getEntry(filepath, pattern, options) {\r\n try {\r\n const stats = this._getStat(filepath);\r\n return this._makeEntry(stats, pattern);\r\n }\r\n catch (error) {\r\n if (options.errorFilter(error)) {\r\n return null;\r\n }\r\n throw error;\r\n }\r\n }\r\n _getStat(filepath) {\r\n return this._statSync(filepath, this._fsStatSettings);\r\n }\r\n}\r\nexports.default = ReaderSync;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;\r\nconst fs = require(\"fs\");\r\nconst os = require(\"os\");\r\n/**\r\n * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero.\r\n * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107\r\n */\r\nconst CPU_COUNT = Math.max(os.cpus().length, 1);\r\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = {\r\n lstat: fs.lstat,\r\n lstatSync: fs.lstatSync,\r\n stat: fs.stat,\r\n statSync: fs.statSync,\r\n readdir: fs.readdir,\r\n readdirSync: fs.readdirSync\r\n};\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.absolute = this._getValue(this._options.absolute, false);\r\n this.baseNameMatch = this._getValue(this._options.baseNameMatch, false);\r\n this.braceExpansion = this._getValue(this._options.braceExpansion, true);\r\n this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true);\r\n this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT);\r\n this.cwd = this._getValue(this._options.cwd, process.cwd());\r\n this.deep = this._getValue(this._options.deep, Infinity);\r\n this.dot = this._getValue(this._options.dot, false);\r\n this.extglob = this._getValue(this._options.extglob, true);\r\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true);\r\n this.fs = this._getFileSystemMethods(this._options.fs);\r\n this.globstar = this._getValue(this._options.globstar, true);\r\n this.ignore = this._getValue(this._options.ignore, []);\r\n this.markDirectories = this._getValue(this._options.markDirectories, false);\r\n this.objectMode = this._getValue(this._options.objectMode, false);\r\n this.onlyDirectories = this._getValue(this._options.onlyDirectories, false);\r\n this.onlyFiles = this._getValue(this._options.onlyFiles, true);\r\n this.stats = this._getValue(this._options.stats, false);\r\n this.suppressErrors = this._getValue(this._options.suppressErrors, false);\r\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false);\r\n this.unique = this._getValue(this._options.unique, true);\r\n if (this.onlyDirectories) {\r\n this.onlyFiles = false;\r\n }\r\n if (this.stats) {\r\n this.objectMode = true;\r\n }\r\n }\r\n _getValue(option, value) {\r\n return option === undefined ? value : option;\r\n }\r\n _getFileSystemMethods(methods = {}) {\r\n return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nconst taskManager = require(\"./managers/tasks\");\r\nconst async_1 = require(\"./providers/async\");\r\nconst stream_1 = require(\"./providers/stream\");\r\nconst sync_1 = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nconst utils = require(\"./utils\");\r\nasync function FastGlob(source, options) {\r\n assertPatternsInput(source);\r\n const works = getWorks(source, async_1.default, options);\r\n const result = await Promise.all(works);\r\n return utils.array.flatten(result);\r\n}\r\n// https://github.com/typescript-eslint/typescript-eslint/issues/60\r\n// eslint-disable-next-line no-redeclare\r\n(function (FastGlob) {\r\n function sync(source, options) {\r\n assertPatternsInput(source);\r\n const works = getWorks(source, sync_1.default, options);\r\n return utils.array.flatten(works);\r\n }\r\n FastGlob.sync = sync;\r\n function stream(source, options) {\r\n assertPatternsInput(source);\r\n const works = getWorks(source, stream_1.default, options);\r\n /**\r\n * The stream returned by the provider cannot work with an asynchronous iterator.\r\n * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams.\r\n * This affects performance (+25%). I don't see best solution right now.\r\n */\r\n return utils.stream.merge(works);\r\n }\r\n FastGlob.stream = stream;\r\n function generateTasks(source, options) {\r\n assertPatternsInput(source);\r\n const patterns = [].concat(source);\r\n const settings = new settings_1.default(options);\r\n return taskManager.generate(patterns, settings);\r\n }\r\n FastGlob.generateTasks = generateTasks;\r\n function isDynamicPattern(source, options) {\r\n assertPatternsInput(source);\r\n const settings = new settings_1.default(options);\r\n return utils.pattern.isDynamicPattern(source, settings);\r\n }\r\n FastGlob.isDynamicPattern = isDynamicPattern;\r\n function escapePath(source) {\r\n assertPatternsInput(source);\r\n return utils.path.escape(source);\r\n }\r\n FastGlob.escapePath = escapePath;\r\n})(FastGlob || (FastGlob = {}));\r\nfunction getWorks(source, _Provider, options) {\r\n const patterns = [].concat(source);\r\n const settings = new settings_1.default(options);\r\n const tasks = taskManager.generate(patterns, settings);\r\n const provider = new _Provider(settings);\r\n return tasks.map(provider.read, provider);\r\n}\r\nfunction assertPatternsInput(input) {\r\n const source = [].concat(input);\r\n const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item));\r\n if (!isValidSource) {\r\n throw new TypeError('Patterns must be a string (non empty) or an array of strings');\r\n }\r\n}\r\nmodule.exports = FastGlob;\r\n","'use strict';\n\nconst { EventEmitter } = require('events');\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst readdirp = require('readdirp');\nconst anymatch = require('anymatch').default;\nconst globParent = require('glob-parent');\nconst isGlob = require('is-glob');\nconst braces = require('braces');\nconst normalizePath = require('normalize-path');\n\nconst NodeFsHandler = require('./lib/nodefs-handler');\nconst FsEventsHandler = require('./lib/fsevents-handler');\nconst {\n EV_ALL,\n EV_READY,\n EV_ADD,\n EV_CHANGE,\n EV_UNLINK,\n EV_ADD_DIR,\n EV_UNLINK_DIR,\n EV_RAW,\n EV_ERROR,\n\n STR_CLOSE,\n STR_END,\n\n BACK_SLASH_RE,\n DOUBLE_SLASH_RE,\n SLASH_OR_BACK_SLASH_RE,\n DOT_RE,\n REPLACER_RE,\n\n SLASH,\n SLASH_SLASH,\n BRACE_START,\n BANG,\n ONE_DOT,\n TWO_DOTS,\n GLOBSTAR,\n SLASH_GLOBSTAR,\n ANYMATCH_OPTS,\n STRING_TYPE,\n FUNCTION_TYPE,\n EMPTY_STR,\n EMPTY_FN,\n\n isWindows,\n isMacos\n} = require('./lib/constants');\n\nconst stat = promisify(fs.stat);\nconst readdir = promisify(fs.readdir);\n\n/**\n * @typedef {String} Path\n * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName\n * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType\n */\n\n/**\n *\n * @typedef {Object} WatchHelpers\n * @property {Boolean} followSymlinks\n * @property {'stat'|'lstat'} statMethod\n * @property {Path} path\n * @property {Path} watchPath\n * @property {Function} entryPath\n * @property {Boolean} hasGlob\n * @property {Object} globFilter\n * @property {Function} filterPath\n * @property {Function} filterDir\n */\n\nconst arrify = (value = []) => Array.isArray(value) ? value : [value];\nconst flatten = (list, result = []) => {\n list.forEach(item => {\n if (Array.isArray(item)) {\n flatten(item, result);\n } else {\n result.push(item);\n }\n });\n return result;\n};\n\nconst unifyPaths = (paths_) => {\n /**\n * @type {Array}\n */\n const paths = flatten(arrify(paths_));\n if (!paths.every(p => typeof p === STRING_TYPE)) {\n throw new TypeError(`Non-string provided as watch path: ${paths}`);\n }\n return paths.map(normalizePathToUnix);\n};\n\n// If SLASH_SLASH occurs at the beginning of path, it is not replaced\n// because \"//StoragePC/DrivePool/Movies\" is a valid network path\nconst toUnix = (string) => {\n let str = string.replace(BACK_SLASH_RE, SLASH);\n let prepend = false;\n if (str.startsWith(SLASH_SLASH)) {\n prepend = true;\n }\n while (str.match(DOUBLE_SLASH_RE)) {\n str = str.replace(DOUBLE_SLASH_RE, SLASH);\n }\n if (prepend) {\n str = SLASH + str;\n }\n return str;\n};\n\n// Our version of upath.normalize\n// TODO: this is not equal to path-normalize module - investigate why\nconst normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path)));\n\nconst normalizeIgnored = (cwd = EMPTY_STR) => (path) => {\n if (typeof path !== STRING_TYPE) return path;\n return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path));\n};\n\nconst getAbsolutePath = (path, cwd) => {\n if (sysPath.isAbsolute(path)) {\n return path;\n }\n if (path.startsWith(BANG)) {\n return BANG + sysPath.join(cwd, path.slice(1));\n }\n return sysPath.join(cwd, path);\n};\n\nconst undef = (opts, key) => opts[key] === undefined;\n\n/**\n * Directory entry.\n * @property {Path} path\n * @property {Set} items\n */\nclass DirEntry {\n /**\n * @param {Path} dir\n * @param {Function} removeWatcher\n */\n constructor(dir, removeWatcher) {\n this.path = dir;\n this._removeWatcher = removeWatcher;\n /** @type {Set} */\n this.items = new Set();\n }\n\n add(item) {\n const {items} = this;\n if (!items) return;\n if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item);\n }\n\n async remove(item) {\n const {items} = this;\n if (!items) return;\n items.delete(item);\n if (items.size > 0) return;\n\n const dir = this.path;\n try {\n await readdir(dir);\n } catch (err) {\n if (this._removeWatcher) {\n this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir));\n }\n }\n }\n\n has(item) {\n const {items} = this;\n if (!items) return;\n return items.has(item);\n }\n\n /**\n * @returns {Array}\n */\n getChildren() {\n const {items} = this;\n if (!items) return;\n return [...items.values()];\n }\n\n dispose() {\n this.items.clear();\n delete this.path;\n delete this._removeWatcher;\n delete this.items;\n Object.freeze(this);\n }\n}\n\nconst STAT_METHOD_F = 'stat';\nconst STAT_METHOD_L = 'lstat';\nclass WatchHelper {\n constructor(path, watchPath, follow, fsw) {\n this.fsw = fsw;\n this.path = path = path.replace(REPLACER_RE, EMPTY_STR);\n this.watchPath = watchPath;\n this.fullWatchPath = sysPath.resolve(watchPath);\n this.hasGlob = watchPath !== path;\n /** @type {object|boolean} */\n if (path === EMPTY_STR) this.hasGlob = false;\n this.globSymlink = this.hasGlob && follow ? undefined : false;\n this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false;\n this.dirParts = this.getDirParts(path);\n this.dirParts.forEach((parts) => {\n if (parts.length > 1) parts.pop();\n });\n this.followSymlinks = follow;\n this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L;\n }\n\n checkGlobSymlink(entry) {\n // only need to resolve once\n // first entry should always have entry.parentDir === EMPTY_STR\n if (this.globSymlink === undefined) {\n this.globSymlink = entry.fullParentDir === this.fullWatchPath ?\n false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath};\n }\n\n if (this.globSymlink) {\n return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath);\n }\n\n return entry.fullPath;\n }\n\n entryPath(entry) {\n return sysPath.join(this.watchPath,\n sysPath.relative(this.watchPath, this.checkGlobSymlink(entry))\n );\n }\n\n filterPath(entry) {\n const {stats} = entry;\n if (stats && stats.isSymbolicLink()) return this.filterDir(entry);\n const resolvedPath = this.entryPath(entry);\n const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE ?\n this.globFilter(resolvedPath) : true;\n return matchesGlob &&\n this.fsw._isntIgnored(resolvedPath, stats) &&\n this.fsw._hasReadPermissions(stats);\n }\n\n getDirParts(path) {\n if (!this.hasGlob) return [];\n const parts = [];\n const expandedPath = path.includes(BRACE_START) ? braces.expand(path) : [path];\n expandedPath.forEach((path) => {\n parts.push(sysPath.relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE));\n });\n return parts;\n }\n\n filterDir(entry) {\n if (this.hasGlob) {\n const entryParts = this.getDirParts(this.checkGlobSymlink(entry));\n let globstar = false;\n this.unmatchedGlob = !this.dirParts.some((parts) => {\n return parts.every((part, i) => {\n if (part === GLOBSTAR) globstar = true;\n return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS);\n });\n });\n }\n return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats);\n }\n}\n\n/**\n * Watches files & directories for changes. Emitted events:\n * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error`\n *\n * new FSWatcher()\n * .add(directories)\n * .on('add', path => log('File', path, 'was added'))\n */\nclass FSWatcher extends EventEmitter {\n// Not indenting methods for history sake; for now.\nconstructor(_opts) {\n super();\n\n const opts = {};\n if (_opts) Object.assign(opts, _opts); // for frozen objects\n\n /** @type {Map} */\n this._watched = new Map();\n /** @type {Map} */\n this._closers = new Map();\n /** @type {Set} */\n this._ignoredPaths = new Set();\n\n /** @type {Map} */\n this._throttled = new Map();\n\n /** @type {Map} */\n this._symlinkPaths = new Map();\n\n this._streams = new Set();\n this.closed = false;\n\n // Set up default options.\n if (undef(opts, 'persistent')) opts.persistent = true;\n if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false;\n if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false;\n if (undef(opts, 'interval')) opts.interval = 100;\n if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300;\n if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false;\n opts.enableBinaryInterval = opts.binaryInterval !== opts.interval;\n\n // Enable fsevents on OS X when polling isn't explicitly enabled.\n if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling;\n\n // If we can't use fsevents, ensure the options reflect it's disabled.\n const canUseFsEvents = FsEventsHandler.canUse();\n if (!canUseFsEvents) opts.useFsEvents = false;\n\n // Use polling on Mac if not using fsevents.\n // Other platforms use non-polling fs_watch.\n if (undef(opts, 'usePolling') && !opts.useFsEvents) {\n opts.usePolling = isMacos;\n }\n\n // Global override (useful for end-developers that need to force polling for all\n // instances of chokidar, regardless of usage/dependency depth)\n const envPoll = process.env.CHOKIDAR_USEPOLLING;\n if (envPoll !== undefined) {\n const envLower = envPoll.toLowerCase();\n\n if (envLower === 'false' || envLower === '0') {\n opts.usePolling = false;\n } else if (envLower === 'true' || envLower === '1') {\n opts.usePolling = true;\n } else {\n opts.usePolling = !!envLower;\n }\n }\n const envInterval = process.env.CHOKIDAR_INTERVAL;\n if (envInterval) {\n opts.interval = Number.parseInt(envInterval, 10);\n }\n\n // Editor atomic write normalization enabled by default with fs.watch\n if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents;\n if (opts.atomic) this._pendingUnlinks = new Map();\n\n if (undef(opts, 'followSymlinks')) opts.followSymlinks = true;\n\n if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false;\n if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {};\n const awf = opts.awaitWriteFinish;\n if (awf) {\n if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000;\n if (!awf.pollInterval) awf.pollInterval = 100;\n this._pendingWrites = new Map();\n }\n if (opts.ignored) opts.ignored = arrify(opts.ignored);\n\n let readyCalls = 0;\n this._emitReady = () => {\n readyCalls++;\n if (readyCalls >= this._readyCount) {\n this._emitReady = EMPTY_FN;\n this._readyEmitted = true;\n // use process.nextTick to allow time for listener to be bound\n process.nextTick(() => this.emit(EV_READY));\n }\n };\n this._emitRaw = (...args) => this.emit(EV_RAW, ...args);\n this._readyEmitted = false;\n this.options = opts;\n\n // Initialize with proper watcher.\n if (opts.useFsEvents) {\n this._fsEventsHandler = new FsEventsHandler(this);\n } else {\n this._nodeFsHandler = new NodeFsHandler(this);\n }\n\n // You’re frozen when your heart’s not open.\n Object.freeze(opts);\n}\n\n// Public methods\n\n/**\n * Adds paths to be watched on an existing FSWatcher instance\n * @param {Path|Array} paths_\n * @param {String=} _origAdd private; for handling non-existent paths to be watched\n * @param {Boolean=} _internal private; indicates a non-user add\n * @returns {FSWatcher} for chaining\n */\nadd(paths_, _origAdd, _internal) {\n const {cwd, disableGlobbing} = this.options;\n this.closed = false;\n let paths = unifyPaths(paths_);\n if (cwd) {\n paths = paths.map((path) => {\n const absPath = getAbsolutePath(path, cwd);\n\n // Check `path` instead of `absPath` because the cwd portion can't be a glob\n if (disableGlobbing || !isGlob(path)) {\n return absPath;\n }\n return normalizePath(absPath);\n });\n }\n\n // set aside negated glob strings\n paths = paths.filter((path) => {\n if (path.startsWith(BANG)) {\n this._ignoredPaths.add(path.slice(1));\n return false;\n }\n\n // if a path is being added that was previously ignored, stop ignoring it\n this._ignoredPaths.delete(path);\n this._ignoredPaths.delete(path + SLASH_GLOBSTAR);\n\n // reset the cached userIgnored anymatch fn\n // to make ignoredPaths changes effective\n this._userIgnored = undefined;\n\n return true;\n });\n\n if (this.options.useFsEvents && this._fsEventsHandler) {\n if (!this._readyCount) this._readyCount = paths.length;\n if (this.options.persistent) this._readyCount *= 2;\n paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path));\n } else {\n if (!this._readyCount) this._readyCount = 0;\n this._readyCount += paths.length;\n Promise.all(\n paths.map(async path => {\n const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd);\n if (res) this._emitReady();\n return res;\n })\n ).then(results => {\n if (this.closed) return;\n results.filter(item => item).forEach(item => {\n this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item));\n });\n });\n }\n\n return this;\n}\n\n/**\n * Close watchers or start ignoring events from specified paths.\n * @param {Path|Array} paths_ - string or array of strings, file/directory paths and/or globs\n * @returns {FSWatcher} for chaining\n*/\nunwatch(paths_) {\n if (this.closed) return this;\n const paths = unifyPaths(paths_);\n const {cwd} = this.options;\n\n paths.forEach((path) => {\n // convert to absolute path unless relative path already matches\n if (!sysPath.isAbsolute(path) && !this._closers.has(path)) {\n if (cwd) path = sysPath.join(cwd, path);\n path = sysPath.resolve(path);\n }\n\n this._closePath(path);\n\n this._ignoredPaths.add(path);\n if (this._watched.has(path)) {\n this._ignoredPaths.add(path + SLASH_GLOBSTAR);\n }\n\n // reset the cached userIgnored anymatch fn\n // to make ignoredPaths changes effective\n this._userIgnored = undefined;\n });\n\n return this;\n}\n\n/**\n * Close watchers and remove all listeners from watched paths.\n * @returns {Promise}.\n*/\nclose() {\n if (this.closed) return this._closePromise;\n this.closed = true;\n\n // Memory management.\n this.removeAllListeners();\n const closers = [];\n this._closers.forEach(closerList => closerList.forEach(closer => {\n const promise = closer();\n if (promise instanceof Promise) closers.push(promise);\n }));\n this._streams.forEach(stream => stream.destroy());\n this._userIgnored = undefined;\n this._readyCount = 0;\n this._readyEmitted = false;\n this._watched.forEach(dirent => dirent.dispose());\n ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => {\n this[`_${key}`].clear();\n });\n\n this._closePromise = closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve();\n return this._closePromise;\n}\n\n/**\n * Expose list of watched paths\n * @returns {Object} for chaining\n*/\ngetWatched() {\n const watchList = {};\n this._watched.forEach((entry, dir) => {\n const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir;\n watchList[key || ONE_DOT] = entry.getChildren().sort();\n });\n return watchList;\n}\n\nemitWithAll(event, args) {\n this.emit(...args);\n if (event !== EV_ERROR) this.emit(EV_ALL, ...args);\n}\n\n// Common helpers\n// --------------\n\n/**\n * Normalize and emit events.\n * Calling _emit DOES NOT MEAN emit() would be called!\n * @param {EventName} event Type of event\n * @param {Path} path File or directory path\n * @param {*=} val1 arguments to be passed with event\n * @param {*=} val2\n * @param {*=} val3\n * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\nasync _emit(event, path, val1, val2, val3) {\n if (this.closed) return;\n\n const opts = this.options;\n if (isWindows) path = sysPath.normalize(path);\n if (opts.cwd) path = sysPath.relative(opts.cwd, path);\n /** @type Array */\n const args = [event, path];\n if (val3 !== undefined) args.push(val1, val2, val3);\n else if (val2 !== undefined) args.push(val1, val2);\n else if (val1 !== undefined) args.push(val1);\n\n const awf = opts.awaitWriteFinish;\n let pw;\n if (awf && (pw = this._pendingWrites.get(path))) {\n pw.lastChange = new Date();\n return this;\n }\n\n if (opts.atomic) {\n if (event === EV_UNLINK) {\n this._pendingUnlinks.set(path, args);\n setTimeout(() => {\n this._pendingUnlinks.forEach((entry, path) => {\n this.emit(...entry);\n this.emit(EV_ALL, ...entry);\n this._pendingUnlinks.delete(path);\n });\n }, typeof opts.atomic === 'number' ? opts.atomic : 100);\n return this;\n }\n if (event === EV_ADD && this._pendingUnlinks.has(path)) {\n event = args[0] = EV_CHANGE;\n this._pendingUnlinks.delete(path);\n }\n }\n\n if (awf && (event === EV_ADD || event === EV_CHANGE) && this._readyEmitted) {\n const awfEmit = (err, stats) => {\n if (err) {\n event = args[0] = EV_ERROR;\n args[1] = err;\n this.emitWithAll(event, args);\n } else if (stats) {\n // if stats doesn't exist the file must have been deleted\n if (args.length > 2) {\n args[2] = stats;\n } else {\n args.push(stats);\n }\n this.emitWithAll(event, args);\n }\n };\n\n this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit);\n return this;\n }\n\n if (event === EV_CHANGE) {\n const isThrottled = !this._throttle(EV_CHANGE, path, 50);\n if (isThrottled) return this;\n }\n\n if (opts.alwaysStat && val1 === undefined &&\n (event === EV_ADD || event === EV_ADD_DIR || event === EV_CHANGE)\n ) {\n const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path;\n let stats;\n try {\n stats = await stat(fullPath);\n } catch (err) {}\n // Suppress event when fs_stat fails, to avoid sending undefined 'stat'\n if (!stats || this.closed) return;\n args.push(stats);\n }\n this.emitWithAll(event, args);\n\n return this;\n}\n\n/**\n * Common handler for errors\n * @param {Error} error\n * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\n_handleError(error) {\n const code = error && error.code;\n if (error && code !== 'ENOENT' && code !== 'ENOTDIR' &&\n (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES'))\n ) {\n this.emit(EV_ERROR, error);\n }\n return error || this.closed;\n}\n\n/**\n * Helper utility for throttling\n * @param {ThrottleType} actionType type being throttled\n * @param {Path} path being acted upon\n * @param {Number} timeout duration of time to suppress duplicate actions\n * @returns {Object|false} tracking object or false if action should be suppressed\n */\n_throttle(actionType, path, timeout) {\n if (!this._throttled.has(actionType)) {\n this._throttled.set(actionType, new Map());\n }\n\n /** @type {Map} */\n const action = this._throttled.get(actionType);\n /** @type {Object} */\n const actionPath = action.get(path);\n\n if (actionPath) {\n actionPath.count++;\n return false;\n }\n\n let timeoutObject;\n const clear = () => {\n const item = action.get(path);\n const count = item ? item.count : 0;\n action.delete(path);\n clearTimeout(timeoutObject);\n if (item) clearTimeout(item.timeoutObject);\n return count;\n };\n timeoutObject = setTimeout(clear, timeout);\n const thr = {timeoutObject, clear, count: 0};\n action.set(path, thr);\n return thr;\n}\n\n_incrReadyCount() {\n return this._readyCount++;\n}\n\n/**\n * Awaits write operation to finish.\n * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback.\n * @param {Path} path being acted upon\n * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished\n * @param {EventName} event\n * @param {Function} awfEmit Callback to be called when ready for event to be emitted.\n */\n_awaitWriteFinish(path, threshold, event, awfEmit) {\n let timeoutHandler;\n\n let fullPath = path;\n if (this.options.cwd && !sysPath.isAbsolute(path)) {\n fullPath = sysPath.join(this.options.cwd, path);\n }\n\n const now = new Date();\n\n const awaitWriteFinish = (prevStat) => {\n fs.stat(fullPath, (err, curStat) => {\n if (err || !this._pendingWrites.has(path)) {\n if (err && err.code !== 'ENOENT') awfEmit(err);\n return;\n }\n\n const now = Number(new Date());\n\n if (prevStat && curStat.size !== prevStat.size) {\n this._pendingWrites.get(path).lastChange = now;\n }\n const pw = this._pendingWrites.get(path);\n const df = now - pw.lastChange;\n\n if (df >= threshold) {\n this._pendingWrites.delete(path);\n awfEmit(undefined, curStat);\n } else {\n timeoutHandler = setTimeout(\n awaitWriteFinish,\n this.options.awaitWriteFinish.pollInterval,\n curStat\n );\n }\n });\n };\n\n if (!this._pendingWrites.has(path)) {\n this._pendingWrites.set(path, {\n lastChange: now,\n cancelWait: () => {\n this._pendingWrites.delete(path);\n clearTimeout(timeoutHandler);\n return event;\n }\n });\n timeoutHandler = setTimeout(\n awaitWriteFinish,\n this.options.awaitWriteFinish.pollInterval\n );\n }\n}\n\n_getGlobIgnored() {\n return [...this._ignoredPaths.values()];\n}\n\n/**\n * Determines whether user has asked to ignore this path.\n * @param {Path} path filepath or dir\n * @param {fs.Stats=} stats result of fs.stat\n * @returns {Boolean}\n */\n_isIgnored(path, stats) {\n if (this.options.atomic && DOT_RE.test(path)) return true;\n if (!this._userIgnored) {\n const {cwd} = this.options;\n const ign = this.options.ignored;\n\n const ignored = ign && ign.map(normalizeIgnored(cwd));\n const paths = arrify(ignored)\n .filter((path) => typeof path === STRING_TYPE && !isGlob(path))\n .map((path) => path + SLASH_GLOBSTAR);\n const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths);\n this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS);\n }\n\n return this._userIgnored([path, stats]);\n}\n\n_isntIgnored(path, stat) {\n return !this._isIgnored(path, stat);\n}\n\n/**\n * Provides a set of common helpers and properties relating to symlink and glob handling.\n * @param {Path} path file, directory, or glob pattern being watched\n * @param {Number=} depth at any depth > 0, this isn't a glob\n * @returns {WatchHelper} object containing helpers for this path\n */\n_getWatchHelpers(path, depth) {\n const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path);\n const follow = this.options.followSymlinks;\n\n return new WatchHelper(path, watchPath, follow, this);\n}\n\n// Directory helpers\n// -----------------\n\n/**\n * Provides directory tracking objects\n * @param {String} directory path of the directory\n * @returns {DirEntry} the directory's tracking object\n */\n_getWatchedDir(directory) {\n if (!this._boundRemove) this._boundRemove = this._remove.bind(this);\n const dir = sysPath.resolve(directory);\n if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove));\n return this._watched.get(dir);\n}\n\n// File helpers\n// ------------\n\n/**\n * Check for read permissions.\n * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405\n * @param {fs.Stats} stats - object, result of fs_stat\n * @returns {Boolean} indicates whether the file can be read\n*/\n_hasReadPermissions(stats) {\n if (this.options.ignorePermissionErrors) return true;\n\n // stats.mode may be bigint\n const md = stats && Number.parseInt(stats.mode, 10);\n const st = md & 0o777;\n const it = Number.parseInt(st.toString(8)[0], 10);\n return Boolean(4 & it);\n}\n\n/**\n * Handles emitting unlink events for\n * files and directories, and via recursion, for\n * files and directories within directories that are unlinked\n * @param {String} directory within which the following item is located\n * @param {String} item base path of item/directory\n * @returns {void}\n*/\n_remove(directory, item, isDirectory) {\n // if what is being deleted is a directory, get that directory's paths\n // for recursive deleting and cleaning of watched object\n // if it is not a directory, nestedDirectoryChildren will be empty array\n const path = sysPath.join(directory, item);\n const fullPath = sysPath.resolve(path);\n isDirectory = isDirectory != null\n ? isDirectory\n : this._watched.has(path) || this._watched.has(fullPath);\n\n // prevent duplicate handling in case of arriving here nearly simultaneously\n // via multiple paths (such as _handleFile and _handleDir)\n if (!this._throttle('remove', path, 100)) return;\n\n // if the only watched file is removed, watch for its return\n if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) {\n this.add(directory, item, true);\n }\n\n // This will create a new entry in the watched object in either case\n // so we got to do the directory check beforehand\n const wp = this._getWatchedDir(path);\n const nestedDirectoryChildren = wp.getChildren();\n\n // Recursively remove children directories / files.\n nestedDirectoryChildren.forEach(nested => this._remove(path, nested));\n\n // Check if item was on the watched list and remove it\n const parent = this._getWatchedDir(directory);\n const wasTracked = parent.has(item);\n parent.remove(item);\n\n // Fixes issue #1042 -> Relative paths were detected and added as symlinks\n // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612),\n // but never removed from the map in case the path was deleted.\n // This leads to an incorrect state if the path was recreated:\n // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553\n if (this._symlinkPaths.has(fullPath)) {\n this._symlinkPaths.delete(fullPath);\n }\n\n // If we wait for this file to be fully written, cancel the wait.\n let relPath = path;\n if (this.options.cwd) relPath = sysPath.relative(this.options.cwd, path);\n if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) {\n const event = this._pendingWrites.get(relPath).cancelWait();\n if (event === EV_ADD) return;\n }\n\n // The Entry will either be a directory that just got removed\n // or a bogus entry to a file, in either case we have to remove it\n this._watched.delete(path);\n this._watched.delete(fullPath);\n const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK;\n if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path);\n\n // Avoid conflicts if we later create another file with the same name\n if (!this.options.useFsEvents) {\n this._closePath(path);\n }\n}\n\n/**\n * Closes all watchers for a path\n * @param {Path} path\n */\n_closePath(path) {\n this._closeFile(path)\n const dir = sysPath.dirname(path);\n this._getWatchedDir(dir).remove(sysPath.basename(path));\n}\n\n/**\n * Closes only file-specific watchers\n * @param {Path} path\n */\n_closeFile(path) {\n const closers = this._closers.get(path);\n if (!closers) return;\n closers.forEach(closer => closer());\n this._closers.delete(path);\n}\n\n/**\n *\n * @param {Path} path\n * @param {Function} closer\n */\n_addPathCloser(path, closer) {\n if (!closer) return;\n let list = this._closers.get(path);\n if (!list) {\n list = [];\n this._closers.set(path, list);\n }\n list.push(closer);\n}\n\n_readdirp(root, opts) {\n if (this.closed) return;\n const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts};\n let stream = readdirp(root, options);\n this._streams.add(stream);\n stream.once(STR_CLOSE, () => {\n stream = undefined;\n });\n stream.once(STR_END, () => {\n if (stream) {\n this._streams.delete(stream);\n stream = undefined;\n }\n });\n return stream;\n}\n\n}\n\n// Export FSWatcher class\nexports.FSWatcher = FSWatcher;\n\n/**\n * Instantiates watcher with paths to be tracked.\n * @param {String|Array} paths file/directory paths and/or globs\n * @param {Object=} options chokidar opts\n * @returns an instance of FSWatcher for chaining.\n */\nconst watch = (paths, options) => {\n const watcher = new FSWatcher(options);\n watcher.add(paths);\n return watcher;\n};\n\nexports.watch = watch;\n","'use strict';\n\nconst fs = require('fs');\nconst { Readable } = require('stream');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst picomatch = require('picomatch');\n\nconst readdir = promisify(fs.readdir);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\n/**\n * @typedef {Object} EntryInfo\n * @property {String} path\n * @property {String} fullPath\n * @property {fs.Stats=} stats\n * @property {fs.Dirent=} dirent\n * @property {String} basename\n */\n\nconst BANG = '!';\nconst NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP']);\nconst FILE_TYPE = 'files';\nconst DIR_TYPE = 'directories';\nconst FILE_DIR_TYPE = 'files_directories';\nconst EVERYTHING_TYPE = 'all';\nconst ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE];\n\nconst isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code);\n\nconst normalizeFilter = filter => {\n if (filter === undefined) return;\n if (typeof filter === 'function') return filter;\n\n if (typeof filter === 'string') {\n const glob = picomatch(filter.trim());\n return entry => glob(entry.basename);\n }\n\n if (Array.isArray(filter)) {\n const positive = [];\n const negative = [];\n for (const item of filter) {\n const trimmed = item.trim();\n if (trimmed.charAt(0) === BANG) {\n negative.push(picomatch(trimmed.slice(1)));\n } else {\n positive.push(picomatch(trimmed));\n }\n }\n\n if (negative.length > 0) {\n if (positive.length > 0) {\n return entry =>\n positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename));\n }\n return entry => !negative.some(f => f(entry.basename));\n }\n return entry => positive.some(f => f(entry.basename));\n }\n};\n\nclass ReaddirpStream extends Readable {\n static get defaultOptions() {\n return {\n root: '.',\n /* eslint-disable no-unused-vars */\n fileFilter: (path) => true,\n directoryFilter: (path) => true,\n /* eslint-enable no-unused-vars */\n type: FILE_TYPE,\n lstat: false,\n depth: 2147483648,\n alwaysStat: false\n };\n }\n\n constructor(options = {}) {\n super({\n objectMode: true,\n autoDestroy: true,\n highWaterMark: options.highWaterMark || 4096\n });\n const opts = { ...ReaddirpStream.defaultOptions, ...options };\n const { root, type } = opts;\n\n this._fileFilter = normalizeFilter(opts.fileFilter);\n this._directoryFilter = normalizeFilter(opts.directoryFilter);\n\n const statMethod = opts.lstat ? lstat : stat;\n // Use bigint stats if it's windows and stat() supports options (node 10+).\n if (process.platform === 'win32' && stat.length === 3) {\n this._stat = path => statMethod(path, { bigint: true });\n } else {\n this._stat = statMethod;\n }\n\n this._maxDepth = opts.depth;\n this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n this._wantsEverything = type === EVERYTHING_TYPE;\n this._root = sysPath.resolve(root);\n this._isDirent = ('Dirent' in fs) && !opts.alwaysStat;\n this._statsProp = this._isDirent ? 'dirent' : 'stats';\n this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent };\n\n // Launch stream with one parent, the root dir.\n this.parents = [this._exploreDir(root, 1)];\n this.reading = false;\n this.parent = undefined;\n }\n\n async _read(batch) {\n if (this.reading) return;\n this.reading = true;\n\n try {\n while (!this.destroyed && batch > 0) {\n const { path, depth, files = [] } = this.parent || {};\n\n if (files.length > 0) {\n const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path));\n for (const entry of await Promise.all(slice)) {\n if (this.destroyed) return;\n\n const entryType = await this._getEntryType(entry);\n if (entryType === 'directory' && this._directoryFilter(entry)) {\n if (depth <= this._maxDepth) {\n this.parents.push(this._exploreDir(entry.fullPath, depth + 1));\n }\n\n if (this._wantsDir) {\n this.push(entry);\n batch--;\n }\n } else if ((entryType === 'file' || this._includeAsFile(entry)) && this._fileFilter(entry)) {\n if (this._wantsFile) {\n this.push(entry);\n batch--;\n }\n }\n }\n } else {\n const parent = this.parents.pop();\n if (!parent) {\n this.push(null);\n break;\n }\n this.parent = await parent;\n if (this.destroyed) return;\n }\n }\n } catch (error) {\n this.destroy(error);\n } finally {\n this.reading = false;\n }\n }\n\n async _exploreDir(path, depth) {\n let files;\n try {\n files = await readdir(path, this._rdOptions);\n } catch (error) {\n this._onError(error);\n }\n return {files, depth, path};\n }\n\n async _formatEntry(dirent, path) {\n let entry;\n try {\n const basename = this._isDirent ? dirent.name : dirent;\n const fullPath = sysPath.resolve(sysPath.join(path, basename));\n entry = {path: sysPath.relative(this._root, fullPath), fullPath, basename};\n entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);\n } catch (err) {\n this._onError(err);\n }\n return entry;\n }\n\n _onError(err) {\n if (isNormalFlowError(err) && !this.destroyed) {\n this.emit('warn', err);\n } else {\n this.destroy(err);\n }\n }\n\n async _getEntryType(entry) {\n // entry may be undefined, because a warning or an error were emitted\n // and the statsProp is undefined\n const stats = entry && entry[this._statsProp];\n if (!stats) {\n return;\n }\n if (stats.isFile()) {\n return 'file';\n }\n if (stats.isDirectory()) {\n return 'directory';\n }\n if (stats && stats.isSymbolicLink()) {\n const full = entry.fullPath;\n try {\n const entryRealPath = await realpath(full);\n const entryRealPathStats = await lstat(entryRealPath);\n if (entryRealPathStats.isFile()) {\n return 'file';\n }\n if (entryRealPathStats.isDirectory()) {\n const len = entryRealPath.length;\n if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath.sep) {\n return this._onError(new Error(\n `Circular symlink detected: \"${full}\" points to \"${entryRealPath}\"`\n ));\n }\n return 'directory';\n }\n } catch (error) {\n this._onError(error);\n }\n }\n }\n\n _includeAsFile(entry) {\n const stats = entry && entry[this._statsProp];\n\n return stats && this._wantsEverything && !stats.isDirectory();\n }\n}\n\n/**\n * @typedef {Object} ReaddirpArguments\n * @property {Function=} fileFilter\n * @property {Function=} directoryFilter\n * @property {String=} type\n * @property {Number=} depth\n * @property {String=} root\n * @property {Boolean=} lstat\n * @property {Boolean=} bigint\n */\n\n/**\n * Main function which ends up calling readdirRec and reads all files and directories in given root recursively.\n * @param {String} root Root directory\n * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth\n */\nconst readdirp = (root, options = {}) => {\n let type = options.entryType || options.type;\n if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility\n if (type) options.type = type;\n if (!root) {\n throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)');\n } else if (typeof root !== 'string') {\n throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)');\n } else if (type && !ALL_TYPES.includes(type)) {\n throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`);\n }\n\n options.root = root;\n return new ReaddirpStream(options);\n};\n\nconst readdirpPromise = (root, options = {}) => {\n return new Promise((resolve, reject) => {\n const files = [];\n readdirp(root, options)\n .on('data', entry => files.push(entry))\n .on('end', () => resolve(files))\n .on('error', error => reject(error));\n });\n};\n\nreaddirp.promise = readdirpPromise;\nreaddirp.ReaddirpStream = ReaddirpStream;\nreaddirp.default = readdirp;\n\nmodule.exports = readdirp;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nconst picomatch = require('picomatch');\nconst normalizePath = require('normalize-path');\n\n/**\n * @typedef {(testString: string) => boolean} AnymatchFn\n * @typedef {string|RegExp|AnymatchFn} AnymatchPattern\n * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher\n */\nconst BANG = '!';\nconst DEFAULT_OPTIONS = {returnIndex: false};\nconst arrify = (item) => Array.isArray(item) ? item : [item];\n\n/**\n * @param {AnymatchPattern} matcher\n * @param {object} options\n * @returns {AnymatchFn}\n */\nconst createPattern = (matcher, options) => {\n if (typeof matcher === 'function') {\n return matcher;\n }\n if (typeof matcher === 'string') {\n const glob = picomatch(matcher, options);\n return (string) => matcher === string || glob(string);\n }\n if (matcher instanceof RegExp) {\n return (string) => matcher.test(string);\n }\n return (string) => false;\n};\n\n/**\n * @param {Array} patterns\n * @param {Array} negPatterns\n * @param {String|Array} args\n * @param {Boolean} returnIndex\n * @returns {boolean|number}\n */\nconst matchPatterns = (patterns, negPatterns, args, returnIndex) => {\n const isList = Array.isArray(args);\n const _path = isList ? args[0] : args;\n if (!isList && typeof _path !== 'string') {\n throw new TypeError('anymatch: second argument must be a string: got ' +\n Object.prototype.toString.call(_path))\n }\n const path = normalizePath(_path);\n\n for (let index = 0; index < negPatterns.length; index++) {\n const nglob = negPatterns[index];\n if (nglob(path)) {\n return returnIndex ? -1 : false;\n }\n }\n\n const applied = isList && [path].concat(args.slice(1));\n for (let index = 0; index < patterns.length; index++) {\n const pattern = patterns[index];\n if (isList ? pattern(...applied) : pattern(path)) {\n return returnIndex ? index : true;\n }\n }\n\n return returnIndex ? -1 : false;\n};\n\n/**\n * @param {AnymatchMatcher} matchers\n * @param {Array|string} testString\n * @param {object} options\n * @returns {boolean|number|Function}\n */\nconst anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => {\n if (matchers == null) {\n throw new TypeError('anymatch: specify first argument');\n }\n const opts = typeof options === 'boolean' ? {returnIndex: options} : options;\n const returnIndex = opts.returnIndex || false;\n\n // Early cache for matchers.\n const mtchers = arrify(matchers);\n const negatedGlobs = mtchers\n .filter(item => typeof item === 'string' && item.charAt(0) === BANG)\n .map(item => item.slice(1))\n .map(item => picomatch(item, opts));\n const patterns = mtchers\n .filter(item => typeof item !== 'string' || (typeof item === 'string' && item.charAt(0) !== BANG))\n .map(matcher => createPattern(matcher, opts));\n\n if (testString == null) {\n return (testString, ri = false) => {\n const returnIndex = typeof ri === 'boolean' ? ri : false;\n return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n }\n }\n\n return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n};\n\nanymatch.default = anymatch;\nmodule.exports = anymatch;\n","/*!\n * normalize-path \n *\n * Copyright (c) 2014-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nmodule.exports = function(path, stripTrailing) {\n if (typeof path !== 'string') {\n throw new TypeError('expected path to be a string');\n }\n\n if (path === '\\\\' || path === '/') return '/';\n\n var len = path.length;\n if (len <= 1) return path;\n\n // ensure that win32 namespaces has two leading slashes, so that the path is\n // handled properly by the win32 version of path.parse() after being normalized\n // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces\n var prefix = '';\n if (len > 4 && path[3] === '\\\\') {\n var ch = path[2];\n if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\\\\\') {\n path = path.slice(2);\n prefix = '//';\n }\n }\n\n var segs = path.split(/[/\\\\]+/);\n if (stripTrailing !== false && segs[segs.length - 1] === '') {\n segs.pop();\n }\n return prefix + segs.join('/');\n};\n","'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst isBinaryPath = require('is-binary-path');\nconst {\n isWindows,\n isLinux,\n EMPTY_FN,\n EMPTY_STR,\n KEY_LISTENERS,\n KEY_ERR,\n KEY_RAW,\n HANDLER_KEYS,\n EV_CHANGE,\n EV_ADD,\n EV_ADD_DIR,\n EV_ERROR,\n STR_DATA,\n STR_END,\n BRACE_START,\n STAR\n} = require('./constants');\n\nconst THROTTLE_MODE_WATCH = 'watch';\n\nconst open = promisify(fs.open);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst close = promisify(fs.close);\nconst fsrealpath = promisify(fs.realpath);\n\nconst statMethods = { lstat, stat };\n\n// TODO: emit errors properly. Example: EMFILE on Macos.\nconst foreach = (val, fn) => {\n if (val instanceof Set) {\n val.forEach(fn);\n } else {\n fn(val);\n }\n};\n\nconst addAndConvert = (main, prop, item) => {\n let container = main[prop];\n if (!(container instanceof Set)) {\n main[prop] = container = new Set([container]);\n }\n container.add(item);\n};\n\nconst clearItem = cont => key => {\n const set = cont[key];\n if (set instanceof Set) {\n set.clear();\n } else {\n delete cont[key];\n }\n};\n\nconst delFromSet = (main, prop, item) => {\n const container = main[prop];\n if (container instanceof Set) {\n container.delete(item);\n } else if (container === item) {\n delete main[prop];\n }\n};\n\nconst isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val;\n\n/**\n * @typedef {String} Path\n */\n\n// fs_watch helpers\n\n// object to hold per-process fs_watch instances\n// (may be shared across chokidar FSWatcher instances)\n\n/**\n * @typedef {Object} FsWatchContainer\n * @property {Set} listeners\n * @property {Set} errHandlers\n * @property {Set} rawEmitters\n * @property {fs.FSWatcher=} watcher\n * @property {Boolean=} watcherUnusable\n */\n\n/**\n * @type {Map}\n */\nconst FsWatchInstances = new Map();\n\n/**\n * Instantiates the fs_watch interface\n * @param {String} path to be watched\n * @param {Object} options to be passed to fs_watch\n * @param {Function} listener main event handler\n * @param {Function} errHandler emits info about errors\n * @param {Function} emitRaw emits raw event data\n * @returns {fs.FSWatcher} new fsevents instance\n */\nfunction createFsWatchInstance(path, options, listener, errHandler, emitRaw) {\n const handleEvent = (rawEvent, evPath) => {\n listener(path);\n emitRaw(rawEvent, evPath, {watchedPath: path});\n\n // emit based on events occurring for files from a directory's watcher in\n // case the file's watcher misses it (and rely on throttling to de-dupe)\n if (evPath && path !== evPath) {\n fsWatchBroadcast(\n sysPath.resolve(path, evPath), KEY_LISTENERS, sysPath.join(path, evPath)\n );\n }\n };\n try {\n return fs.watch(path, options, handleEvent);\n } catch (error) {\n errHandler(error);\n }\n}\n\n/**\n * Helper for passing fs_watch event data to a collection of listeners\n * @param {Path} fullPath absolute path bound to fs_watch instance\n * @param {String} type listener type\n * @param {*=} val1 arguments to be passed to listeners\n * @param {*=} val2\n * @param {*=} val3\n */\nconst fsWatchBroadcast = (fullPath, type, val1, val2, val3) => {\n const cont = FsWatchInstances.get(fullPath);\n if (!cont) return;\n foreach(cont[type], (listener) => {\n listener(val1, val2, val3);\n });\n};\n\n/**\n * Instantiates the fs_watch interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path\n * @param {String} fullPath absolute path\n * @param {Object} options to be passed to fs_watch\n * @param {Object} handlers container for event listener functions\n */\nconst setFsWatchListener = (path, fullPath, options, handlers) => {\n const {listener, errHandler, rawEmitter} = handlers;\n let cont = FsWatchInstances.get(fullPath);\n\n /** @type {fs.FSWatcher=} */\n let watcher;\n if (!options.persistent) {\n watcher = createFsWatchInstance(\n path, options, listener, errHandler, rawEmitter\n );\n return watcher.close.bind(watcher);\n }\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_ERR, errHandler);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n } else {\n watcher = createFsWatchInstance(\n path,\n options,\n fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS),\n errHandler, // no need to use broadcast here\n fsWatchBroadcast.bind(null, fullPath, KEY_RAW)\n );\n if (!watcher) return;\n watcher.on(EV_ERROR, async (error) => {\n const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR);\n cont.watcherUnusable = true; // documented since Node 10.4.1\n // Workaround for https://github.com/joyent/node/issues/4337\n if (isWindows && error.code === 'EPERM') {\n try {\n const fd = await open(path, 'r');\n await close(fd);\n broadcastErr(error);\n } catch (err) {}\n } else {\n broadcastErr(error);\n }\n });\n cont = {\n listeners: listener,\n errHandlers: errHandler,\n rawEmitters: rawEmitter,\n watcher\n };\n FsWatchInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n\n // removes this instance's listeners and closes the underlying fs_watch\n // instance if there are no more listeners left\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_ERR, errHandler);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n // Check to protect against issue gh-730.\n // if (cont.watcherUnusable) {\n cont.watcher.close();\n // }\n FsWatchInstances.delete(fullPath);\n HANDLER_KEYS.forEach(clearItem(cont));\n cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n\n// fs_watchFile helpers\n\n// object to hold per-process fs_watchFile instances\n// (may be shared across chokidar FSWatcher instances)\nconst FsWatchFileInstances = new Map();\n\n/**\n * Instantiates the fs_watchFile interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path to be watched\n * @param {String} fullPath absolute path\n * @param {Object} options options to be passed to fs_watchFile\n * @param {Object} handlers container for event listener functions\n * @returns {Function} closer\n */\nconst setFsWatchFileListener = (path, fullPath, options, handlers) => {\n const {listener, rawEmitter} = handlers;\n let cont = FsWatchFileInstances.get(fullPath);\n\n /* eslint-disable no-unused-vars, prefer-destructuring */\n let listeners = new Set();\n let rawEmitters = new Set();\n\n const copts = cont && cont.options;\n if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) {\n // \"Upgrade\" the watcher to persistence or a quicker interval.\n // This creates some unlikely edge case issues if the user mixes\n // settings in a very weird way, but solving for those cases\n // doesn't seem worthwhile for the added complexity.\n listeners = cont.listeners;\n rawEmitters = cont.rawEmitters;\n fs.unwatchFile(fullPath);\n cont = undefined;\n }\n\n /* eslint-enable no-unused-vars, prefer-destructuring */\n\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n } else {\n // TODO\n // listeners.add(listener);\n // rawEmitters.add(rawEmitter);\n cont = {\n listeners: listener,\n rawEmitters: rawEmitter,\n options,\n watcher: fs.watchFile(fullPath, options, (curr, prev) => {\n foreach(cont.rawEmitters, (rawEmitter) => {\n rawEmitter(EV_CHANGE, fullPath, {curr, prev});\n });\n const currmtime = curr.mtimeMs;\n if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) {\n foreach(cont.listeners, (listener) => listener(path, curr));\n }\n })\n };\n FsWatchFileInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n\n // Removes this instance's listeners and closes the underlying fs_watchFile\n // instance if there are no more listeners left.\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n FsWatchFileInstances.delete(fullPath);\n fs.unwatchFile(fullPath);\n cont.options = cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n\n/**\n * @mixin\n */\nclass NodeFsHandler {\n\n/**\n * @param {import(\"../index\").FSWatcher} fsW\n */\nconstructor(fsW) {\n this.fsw = fsW;\n this._boundHandleError = (error) => fsW._handleError(error);\n}\n\n/**\n * Watch file for changes with fs_watchFile or fs_watch.\n * @param {String} path to file or dir\n * @param {Function} listener on fs change\n * @returns {Function} closer for the watcher instance\n */\n_watchWithNodeFs(path, listener) {\n const opts = this.fsw.options;\n const directory = sysPath.dirname(path);\n const basename = sysPath.basename(path);\n const parent = this.fsw._getWatchedDir(directory);\n parent.add(basename);\n const absolutePath = sysPath.resolve(path);\n const options = {persistent: opts.persistent};\n if (!listener) listener = EMPTY_FN;\n\n let closer;\n if (opts.usePolling) {\n options.interval = opts.enableBinaryInterval && isBinaryPath(basename) ?\n opts.binaryInterval : opts.interval;\n closer = setFsWatchFileListener(path, absolutePath, options, {\n listener,\n rawEmitter: this.fsw._emitRaw\n });\n } else {\n closer = setFsWatchListener(path, absolutePath, options, {\n listener,\n errHandler: this._boundHandleError,\n rawEmitter: this.fsw._emitRaw\n });\n }\n return closer;\n}\n\n/**\n * Watch a file and emit add event if warranted.\n * @param {Path} file Path\n * @param {fs.Stats} stats result of fs_stat\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @returns {Function} closer for the watcher instance\n */\n_handleFile(file, stats, initialAdd) {\n if (this.fsw.closed) {\n return;\n }\n const dirname = sysPath.dirname(file);\n const basename = sysPath.basename(file);\n const parent = this.fsw._getWatchedDir(dirname);\n // stats is always present\n let prevStats = stats;\n\n // if the file is already being watched, do nothing\n if (parent.has(basename)) return;\n\n const listener = async (path, newStats) => {\n if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return;\n if (!newStats || newStats.mtimeMs === 0) {\n try {\n const newStats = await stat(file);\n if (this.fsw.closed) return;\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV_CHANGE, file, newStats);\n }\n if (isLinux && prevStats.ino !== newStats.ino) {\n this.fsw._closeFile(path)\n prevStats = newStats;\n this.fsw._addPathCloser(path, this._watchWithNodeFs(file, listener));\n } else {\n prevStats = newStats;\n }\n } catch (error) {\n // Fix issues where mtime is null but file is still present\n this.fsw._remove(dirname, basename);\n }\n // add is about to be emitted if file not already tracked in parent\n } else if (parent.has(basename)) {\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV_CHANGE, file, newStats);\n }\n prevStats = newStats;\n }\n }\n // kick off the watcher\n const closer = this._watchWithNodeFs(file, listener);\n\n // emit an add event if we're supposed to\n if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) {\n if (!this.fsw._throttle(EV_ADD, file, 0)) return;\n this.fsw._emit(EV_ADD, file, stats);\n }\n\n return closer;\n}\n\n/**\n * Handle symlinks encountered while reading a dir.\n * @param {Object} entry returned by readdirp\n * @param {String} directory path of dir being read\n * @param {String} path of this item\n * @param {String} item basename of this item\n * @returns {Promise} true if no more processing is needed for this entry.\n */\nasync _handleSymlink(entry, directory, path, item) {\n if (this.fsw.closed) {\n return;\n }\n const full = entry.fullPath;\n const dir = this.fsw._getWatchedDir(directory);\n\n if (!this.fsw.options.followSymlinks) {\n // watch symlink directly (don't follow) and detect changes\n this.fsw._incrReadyCount();\n const linkPath = await fsrealpath(path);\n if (this.fsw.closed) return;\n if (dir.has(item)) {\n if (this.fsw._symlinkPaths.get(full) !== linkPath) {\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV_CHANGE, path, entry.stats);\n }\n } else {\n dir.add(item);\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV_ADD, path, entry.stats);\n }\n this.fsw._emitReady();\n return true;\n }\n\n // don't follow the same symlink more than once\n if (this.fsw._symlinkPaths.has(full)) {\n return true;\n }\n\n this.fsw._symlinkPaths.set(full, true);\n}\n\n_handleRead(directory, initialAdd, wh, target, dir, depth, throttler) {\n // Normalize the directory name on Windows\n directory = sysPath.join(directory, EMPTY_STR);\n\n if (!wh.hasGlob) {\n throttler = this.fsw._throttle('readdir', directory, 1000);\n if (!throttler) return;\n }\n\n const previous = this.fsw._getWatchedDir(wh.path);\n const current = new Set();\n\n let stream = this.fsw._readdirp(directory, {\n fileFilter: entry => wh.filterPath(entry),\n directoryFilter: entry => wh.filterDir(entry),\n depth: 0\n }).on(STR_DATA, async (entry) => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const item = entry.path;\n let path = sysPath.join(directory, item);\n current.add(item);\n\n if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path, item)) {\n return;\n }\n\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n // Files that present in current directory snapshot\n // but absent in previous are added to watch list and\n // emit `add` event.\n if (item === target || !target && !previous.has(item)) {\n this.fsw._incrReadyCount();\n\n // ensure relativeness of path is preserved in case of watcher reuse\n path = sysPath.join(dir, sysPath.relative(dir, path));\n\n this._addToNodeFs(path, initialAdd, wh, depth + 1);\n }\n }).on(EV_ERROR, this._boundHandleError);\n\n return new Promise(resolve =>\n stream.once(STR_END, () => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const wasThrottled = throttler ? throttler.clear() : false;\n\n resolve();\n\n // Files that absent in current directory snapshot\n // but present in previous emit `remove` event\n // and are removed from @watched[directory].\n previous.getChildren().filter((item) => {\n return item !== directory &&\n !current.has(item) &&\n // in case of intersecting globs;\n // a path may have been filtered out of this readdir, but\n // shouldn't be removed because it matches a different glob\n (!wh.hasGlob || wh.filterPath({\n fullPath: sysPath.resolve(directory, item)\n }));\n }).forEach((item) => {\n this.fsw._remove(directory, item);\n });\n\n stream = undefined;\n\n // one more time for any missed in case changes came in extremely quickly\n if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler);\n })\n );\n}\n\n/**\n * Read directory to add / remove files from `@watched` list and re-read it on change.\n * @param {String} dir fs path\n * @param {fs.Stats} stats\n * @param {Boolean} initialAdd\n * @param {Number} depth relative to user-supplied path\n * @param {String} target child path targeted for watch\n * @param {Object} wh Common watch helpers for this path\n * @param {String} realpath\n * @returns {Promise} closer for the watcher instance.\n */\nasync _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) {\n const parentDir = this.fsw._getWatchedDir(sysPath.dirname(dir));\n const tracked = parentDir.has(sysPath.basename(dir));\n if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) {\n if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR, dir, stats);\n }\n\n // ensure dir is tracked (harmless if redundant)\n parentDir.add(sysPath.basename(dir));\n this.fsw._getWatchedDir(dir);\n let throttler;\n let closer;\n\n const oDepth = this.fsw.options.depth;\n if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) {\n if (!target) {\n await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler);\n if (this.fsw.closed) return;\n }\n\n closer = this._watchWithNodeFs(dir, (dirPath, stats) => {\n // if current directory is removed, do nothing\n if (stats && stats.mtimeMs === 0) return;\n\n this._handleRead(dirPath, false, wh, target, dir, depth, throttler);\n });\n }\n return closer;\n}\n\n/**\n * Handle added file, directory, or glob pattern.\n * Delegates call to _handleFile / _handleDir after checks.\n * @param {String} path to file or ir\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @param {Object} priorWh depth relative to user-supplied path\n * @param {Number} depth Child path actually targeted for watch\n * @param {String=} target Child path actually targeted for watch\n * @returns {Promise}\n */\nasync _addToNodeFs(path, initialAdd, priorWh, depth, target) {\n const ready = this.fsw._emitReady;\n if (this.fsw._isIgnored(path) || this.fsw.closed) {\n ready();\n return false;\n }\n\n const wh = this.fsw._getWatchHelpers(path, depth);\n if (!wh.hasGlob && priorWh) {\n wh.hasGlob = priorWh.hasGlob;\n wh.globFilter = priorWh.globFilter;\n wh.filterPath = entry => priorWh.filterPath(entry);\n wh.filterDir = entry => priorWh.filterDir(entry);\n }\n\n // evaluate what is at the path we're being asked to watch\n try {\n const stats = await statMethods[wh.statMethod](wh.watchPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(wh.watchPath, stats)) {\n ready();\n return false;\n }\n\n const follow = this.fsw.options.followSymlinks && !path.includes(STAR) && !path.includes(BRACE_START);\n let closer;\n if (stats.isDirectory()) {\n const absPath = sysPath.resolve(path);\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed) return;\n closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath);\n if (this.fsw.closed) return;\n // preserve this symlink's target path\n if (absPath !== targetPath && targetPath !== undefined) {\n this.fsw._symlinkPaths.set(absPath, targetPath);\n }\n } else if (stats.isSymbolicLink()) {\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed) return;\n const parent = sysPath.dirname(wh.watchPath);\n this.fsw._getWatchedDir(parent).add(wh.watchPath);\n this.fsw._emit(EV_ADD, wh.watchPath, stats);\n closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath);\n if (this.fsw.closed) return;\n\n // preserve this symlink's target path\n if (targetPath !== undefined) {\n this.fsw._symlinkPaths.set(sysPath.resolve(path), targetPath);\n }\n } else {\n closer = this._handleFile(wh.watchPath, stats, initialAdd);\n }\n ready();\n\n this.fsw._addPathCloser(path, closer);\n return false;\n\n } catch (error) {\n if (this.fsw._handleError(error)) {\n ready();\n return path;\n }\n }\n}\n\n}\n\nmodule.exports = NodeFsHandler;\n","'use strict';\nconst path = require('path');\nconst binaryExtensions = require('binary-extensions');\n\nconst extensions = new Set(binaryExtensions);\n\nmodule.exports = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase());\n","[\n\t\"3dm\",\n\t\"3ds\",\n\t\"3g2\",\n\t\"3gp\",\n\t\"7z\",\n\t\"a\",\n\t\"aac\",\n\t\"adp\",\n\t\"ai\",\n\t\"aif\",\n\t\"aiff\",\n\t\"alz\",\n\t\"ape\",\n\t\"apk\",\n\t\"appimage\",\n\t\"ar\",\n\t\"arj\",\n\t\"asf\",\n\t\"au\",\n\t\"avi\",\n\t\"bak\",\n\t\"baml\",\n\t\"bh\",\n\t\"bin\",\n\t\"bk\",\n\t\"bmp\",\n\t\"btif\",\n\t\"bz2\",\n\t\"bzip2\",\n\t\"cab\",\n\t\"caf\",\n\t\"cgm\",\n\t\"class\",\n\t\"cmx\",\n\t\"cpio\",\n\t\"cr2\",\n\t\"cur\",\n\t\"dat\",\n\t\"dcm\",\n\t\"deb\",\n\t\"dex\",\n\t\"djvu\",\n\t\"dll\",\n\t\"dmg\",\n\t\"dng\",\n\t\"doc\",\n\t\"docm\",\n\t\"docx\",\n\t\"dot\",\n\t\"dotm\",\n\t\"dra\",\n\t\"DS_Store\",\n\t\"dsk\",\n\t\"dts\",\n\t\"dtshd\",\n\t\"dvb\",\n\t\"dwg\",\n\t\"dxf\",\n\t\"ecelp4800\",\n\t\"ecelp7470\",\n\t\"ecelp9600\",\n\t\"egg\",\n\t\"eol\",\n\t\"eot\",\n\t\"epub\",\n\t\"exe\",\n\t\"f4v\",\n\t\"fbs\",\n\t\"fh\",\n\t\"fla\",\n\t\"flac\",\n\t\"flatpak\",\n\t\"fli\",\n\t\"flv\",\n\t\"fpx\",\n\t\"fst\",\n\t\"fvt\",\n\t\"g3\",\n\t\"gh\",\n\t\"gif\",\n\t\"graffle\",\n\t\"gz\",\n\t\"gzip\",\n\t\"h261\",\n\t\"h263\",\n\t\"h264\",\n\t\"icns\",\n\t\"ico\",\n\t\"ief\",\n\t\"img\",\n\t\"ipa\",\n\t\"iso\",\n\t\"jar\",\n\t\"jpeg\",\n\t\"jpg\",\n\t\"jpgv\",\n\t\"jpm\",\n\t\"jxr\",\n\t\"key\",\n\t\"ktx\",\n\t\"lha\",\n\t\"lib\",\n\t\"lvp\",\n\t\"lz\",\n\t\"lzh\",\n\t\"lzma\",\n\t\"lzo\",\n\t\"m3u\",\n\t\"m4a\",\n\t\"m4v\",\n\t\"mar\",\n\t\"mdi\",\n\t\"mht\",\n\t\"mid\",\n\t\"midi\",\n\t\"mj2\",\n\t\"mka\",\n\t\"mkv\",\n\t\"mmr\",\n\t\"mng\",\n\t\"mobi\",\n\t\"mov\",\n\t\"movie\",\n\t\"mp3\",\n\t\"mp4\",\n\t\"mp4a\",\n\t\"mpeg\",\n\t\"mpg\",\n\t\"mpga\",\n\t\"mxu\",\n\t\"nef\",\n\t\"npx\",\n\t\"numbers\",\n\t\"nupkg\",\n\t\"o\",\n\t\"odp\",\n\t\"ods\",\n\t\"odt\",\n\t\"oga\",\n\t\"ogg\",\n\t\"ogv\",\n\t\"otf\",\n\t\"ott\",\n\t\"pages\",\n\t\"pbm\",\n\t\"pcx\",\n\t\"pdb\",\n\t\"pdf\",\n\t\"pea\",\n\t\"pgm\",\n\t\"pic\",\n\t\"png\",\n\t\"pnm\",\n\t\"pot\",\n\t\"potm\",\n\t\"potx\",\n\t\"ppa\",\n\t\"ppam\",\n\t\"ppm\",\n\t\"pps\",\n\t\"ppsm\",\n\t\"ppsx\",\n\t\"ppt\",\n\t\"pptm\",\n\t\"pptx\",\n\t\"psd\",\n\t\"pya\",\n\t\"pyc\",\n\t\"pyo\",\n\t\"pyv\",\n\t\"qt\",\n\t\"rar\",\n\t\"ras\",\n\t\"raw\",\n\t\"resources\",\n\t\"rgb\",\n\t\"rip\",\n\t\"rlc\",\n\t\"rmf\",\n\t\"rmvb\",\n\t\"rpm\",\n\t\"rtf\",\n\t\"rz\",\n\t\"s3m\",\n\t\"s7z\",\n\t\"scpt\",\n\t\"sgi\",\n\t\"shar\",\n\t\"snap\",\n\t\"sil\",\n\t\"sketch\",\n\t\"slk\",\n\t\"smv\",\n\t\"snk\",\n\t\"so\",\n\t\"stl\",\n\t\"suo\",\n\t\"sub\",\n\t\"swf\",\n\t\"tar\",\n\t\"tbz\",\n\t\"tbz2\",\n\t\"tga\",\n\t\"tgz\",\n\t\"thmx\",\n\t\"tif\",\n\t\"tiff\",\n\t\"tlz\",\n\t\"ttc\",\n\t\"ttf\",\n\t\"txz\",\n\t\"udf\",\n\t\"uvh\",\n\t\"uvi\",\n\t\"uvm\",\n\t\"uvp\",\n\t\"uvs\",\n\t\"uvu\",\n\t\"viv\",\n\t\"vob\",\n\t\"war\",\n\t\"wav\",\n\t\"wax\",\n\t\"wbmp\",\n\t\"wdp\",\n\t\"weba\",\n\t\"webm\",\n\t\"webp\",\n\t\"whl\",\n\t\"wim\",\n\t\"wm\",\n\t\"wma\",\n\t\"wmv\",\n\t\"wmx\",\n\t\"woff\",\n\t\"woff2\",\n\t\"wrm\",\n\t\"wvx\",\n\t\"xbm\",\n\t\"xif\",\n\t\"xla\",\n\t\"xlam\",\n\t\"xls\",\n\t\"xlsb\",\n\t\"xlsm\",\n\t\"xlsx\",\n\t\"xlt\",\n\t\"xltm\",\n\t\"xltx\",\n\t\"xm\",\n\t\"xmind\",\n\t\"xpi\",\n\t\"xpm\",\n\t\"xwd\",\n\t\"xz\",\n\t\"z\",\n\t\"zip\",\n\t\"zipx\"\n]\n","'use strict';\n\nconst {sep} = require('path');\nconst {platform} = process;\n\nexports.EV_ALL = 'all';\nexports.EV_READY = 'ready';\nexports.EV_ADD = 'add';\nexports.EV_CHANGE = 'change';\nexports.EV_ADD_DIR = 'addDir';\nexports.EV_UNLINK = 'unlink';\nexports.EV_UNLINK_DIR = 'unlinkDir';\nexports.EV_RAW = 'raw';\nexports.EV_ERROR = 'error';\n\nexports.STR_DATA = 'data';\nexports.STR_END = 'end';\nexports.STR_CLOSE = 'close';\n\nexports.FSEVENT_CREATED = 'created';\nexports.FSEVENT_MODIFIED = 'modified';\nexports.FSEVENT_DELETED = 'deleted';\nexports.FSEVENT_MOVED = 'moved';\nexports.FSEVENT_CLONED = 'cloned';\nexports.FSEVENT_UNKNOWN = 'unknown';\nexports.FSEVENT_TYPE_FILE = 'file';\nexports.FSEVENT_TYPE_DIRECTORY = 'directory';\nexports.FSEVENT_TYPE_SYMLINK = 'symlink';\n\nexports.KEY_LISTENERS = 'listeners';\nexports.KEY_ERR = 'errHandlers';\nexports.KEY_RAW = 'rawEmitters';\nexports.HANDLER_KEYS = [exports.KEY_LISTENERS, exports.KEY_ERR, exports.KEY_RAW];\n\nexports.DOT_SLASH = `.${sep}`;\n\nexports.BACK_SLASH_RE = /\\\\/g;\nexports.DOUBLE_SLASH_RE = /\\/\\//;\nexports.SLASH_OR_BACK_SLASH_RE = /[/\\\\]/;\nexports.DOT_RE = /\\..*\\.(sw[px])$|~$|\\.subl.*\\.tmp/;\nexports.REPLACER_RE = /^\\.[/\\\\]/;\n\nexports.SLASH = '/';\nexports.SLASH_SLASH = '//';\nexports.BRACE_START = '{';\nexports.BANG = '!';\nexports.ONE_DOT = '.';\nexports.TWO_DOTS = '..';\nexports.STAR = '*';\nexports.GLOBSTAR = '**';\nexports.ROOT_GLOBSTAR = '/**/*';\nexports.SLASH_GLOBSTAR = '/**';\nexports.DIR_SUFFIX = 'Dir';\nexports.ANYMATCH_OPTS = {dot: true};\nexports.STRING_TYPE = 'string';\nexports.FUNCTION_TYPE = 'function';\nexports.EMPTY_STR = '';\nexports.EMPTY_FN = () => {};\nexports.IDENTITY_FN = val => val;\n\nexports.isWindows = platform === 'win32';\nexports.isMacos = platform === 'darwin';\nexports.isLinux = platform === 'linux';\n","'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\n\nlet fsevents;\ntry {\n fsevents = require('fsevents');\n} catch (error) {\n if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error);\n}\n\nif (fsevents) {\n // TODO: real check\n const mtch = process.version.match(/v(\\d+)\\.(\\d+)/);\n if (mtch && mtch[1] && mtch[2]) {\n const maj = Number.parseInt(mtch[1], 10);\n const min = Number.parseInt(mtch[2], 10);\n if (maj === 8 && min < 16) {\n fsevents = undefined;\n }\n }\n}\n\nconst {\n EV_ADD,\n EV_CHANGE,\n EV_ADD_DIR,\n EV_UNLINK,\n EV_ERROR,\n STR_DATA,\n STR_END,\n FSEVENT_CREATED,\n FSEVENT_MODIFIED,\n FSEVENT_DELETED,\n FSEVENT_MOVED,\n // FSEVENT_CLONED,\n FSEVENT_UNKNOWN,\n FSEVENT_TYPE_FILE,\n FSEVENT_TYPE_DIRECTORY,\n FSEVENT_TYPE_SYMLINK,\n\n ROOT_GLOBSTAR,\n DIR_SUFFIX,\n DOT_SLASH,\n FUNCTION_TYPE,\n EMPTY_FN,\n IDENTITY_FN\n} = require('./constants');\n\nconst Depth = (value) => isNaN(value) ? {} : {depth: value};\n\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\nconst statMethods = { stat, lstat };\n\n/**\n * @typedef {String} Path\n */\n\n/**\n * @typedef {Object} FsEventsWatchContainer\n * @property {Set} listeners\n * @property {Function} rawEmitter\n * @property {{stop: Function}} watcher\n */\n\n// fsevents instance helper functions\n/**\n * Object to hold per-process fsevents instances (may be shared across chokidar FSWatcher instances)\n * @type {Map}\n */\nconst FSEventsWatchers = new Map();\n\n// Threshold of duplicate path prefixes at which to start\n// consolidating going forward\nconst consolidateThreshhold = 10;\n\nconst wrongEventFlags = new Set([\n 69888, 70400, 71424, 72704, 73472, 131328, 131840, 262912\n]);\n\n/**\n * Instantiates the fsevents interface\n * @param {Path} path path to be watched\n * @param {Function} callback called when fsevents is bound and ready\n * @returns {{stop: Function}} new fsevents instance\n */\nconst createFSEventsInstance = (path, callback) => {\n const stop = fsevents.watch(path, callback);\n return {stop};\n};\n\n/**\n * Instantiates the fsevents interface or binds listeners to an existing one covering\n * the same file tree.\n * @param {Path} path - to be watched\n * @param {Path} realPath - real path for symlinks\n * @param {Function} listener - called when fsevents emits events\n * @param {Function} rawEmitter - passes data to listeners of the 'raw' event\n * @returns {Function} closer\n */\nfunction setFSEventsListener(path, realPath, listener, rawEmitter) {\n let watchPath = sysPath.extname(path) ? sysPath.dirname(path) : path;\n const parentPath = sysPath.dirname(watchPath);\n let cont = FSEventsWatchers.get(watchPath);\n\n // If we've accumulated a substantial number of paths that\n // could have been consolidated by watching one directory\n // above the current one, create a watcher on the parent\n // path instead, so that we do consolidate going forward.\n if (couldConsolidate(parentPath)) {\n watchPath = parentPath;\n }\n\n const resolvedPath = sysPath.resolve(path);\n const hasSymlink = resolvedPath !== realPath;\n\n const filteredListener = (fullPath, flags, info) => {\n if (hasSymlink) fullPath = fullPath.replace(realPath, resolvedPath);\n if (\n fullPath === resolvedPath ||\n !fullPath.indexOf(resolvedPath + sysPath.sep)\n ) listener(fullPath, flags, info);\n };\n\n // check if there is already a watcher on a parent path\n // modifies `watchPath` to the parent path when it finds a match\n let watchedParent = false;\n for (const watchedPath of FSEventsWatchers.keys()) {\n if (realPath.indexOf(sysPath.resolve(watchedPath) + sysPath.sep) === 0) {\n watchPath = watchedPath;\n cont = FSEventsWatchers.get(watchPath);\n watchedParent = true;\n break;\n }\n }\n\n if (cont || watchedParent) {\n cont.listeners.add(filteredListener);\n } else {\n cont = {\n listeners: new Set([filteredListener]),\n rawEmitter,\n watcher: createFSEventsInstance(watchPath, (fullPath, flags) => {\n if (!cont.listeners.size) return;\n const info = fsevents.getInfo(fullPath, flags);\n cont.listeners.forEach(list => {\n list(fullPath, flags, info);\n });\n\n cont.rawEmitter(info.event, fullPath, info);\n })\n };\n FSEventsWatchers.set(watchPath, cont);\n }\n\n // removes this instance's listeners and closes the underlying fsevents\n // instance if there are no more listeners left\n return () => {\n const lst = cont.listeners;\n\n lst.delete(filteredListener);\n if (!lst.size) {\n FSEventsWatchers.delete(watchPath);\n if (cont.watcher) return cont.watcher.stop().then(() => {\n cont.rawEmitter = cont.watcher = undefined;\n Object.freeze(cont);\n });\n }\n };\n}\n\n// Decide whether or not we should start a new higher-level\n// parent watcher\nconst couldConsolidate = (path) => {\n let count = 0;\n for (const watchPath of FSEventsWatchers.keys()) {\n if (watchPath.indexOf(path) === 0) {\n count++;\n if (count >= consolidateThreshhold) {\n return true;\n }\n }\n }\n\n return false;\n};\n\n// returns boolean indicating whether fsevents can be used\nconst canUse = () => fsevents && FSEventsWatchers.size < 128;\n\n// determines subdirectory traversal levels from root to path\nconst calcDepth = (path, root) => {\n let i = 0;\n while (!path.indexOf(root) && (path = sysPath.dirname(path)) !== root) i++;\n return i;\n};\n\n// returns boolean indicating whether the fsevents' event info has the same type\n// as the one returned by fs.stat\nconst sameTypes = (info, stats) => (\n info.type === FSEVENT_TYPE_DIRECTORY && stats.isDirectory() ||\n info.type === FSEVENT_TYPE_SYMLINK && stats.isSymbolicLink() ||\n info.type === FSEVENT_TYPE_FILE && stats.isFile()\n)\n\n/**\n * @mixin\n */\nclass FsEventsHandler {\n\n/**\n * @param {import('../index').FSWatcher} fsw\n */\nconstructor(fsw) {\n this.fsw = fsw;\n}\ncheckIgnored(path, stats) {\n const ipaths = this.fsw._ignoredPaths;\n if (this.fsw._isIgnored(path, stats)) {\n ipaths.add(path);\n if (stats && stats.isDirectory()) {\n ipaths.add(path + ROOT_GLOBSTAR);\n }\n return true;\n }\n\n ipaths.delete(path);\n ipaths.delete(path + ROOT_GLOBSTAR);\n}\n\naddOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n const event = watchedDir.has(item) ? EV_CHANGE : EV_ADD;\n this.handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n}\n\nasync checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n try {\n const stats = await stat(path)\n if (this.fsw.closed) return;\n if (sameTypes(info, stats)) {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } catch (error) {\n if (error.code === 'EACCES') {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n }\n}\n\nhandleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n if (this.fsw.closed || this.checkIgnored(path)) return;\n\n if (event === EV_UNLINK) {\n const isDirectory = info.type === FSEVENT_TYPE_DIRECTORY\n // suppress unlink events on never before seen files\n if (isDirectory || watchedDir.has(item)) {\n this.fsw._remove(parent, item, isDirectory);\n }\n } else {\n if (event === EV_ADD) {\n // track new directories\n if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path);\n\n if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) {\n // push symlinks back to the top of the stack to get handled\n const curDepth = opts.depth === undefined ?\n undefined : calcDepth(fullPath, realPath) + 1;\n return this._addToFsEvents(path, false, true, curDepth);\n }\n\n // track new paths\n // (other than symlinks being followed, which will be tracked soon)\n this.fsw._getWatchedDir(parent).add(item);\n }\n /**\n * @type {'add'|'addDir'|'unlink'|'unlinkDir'}\n */\n const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event;\n this.fsw._emit(eventName, path);\n if (eventName === EV_ADD_DIR) this._addToFsEvents(path, false, true);\n }\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} watchPath - file/dir path to be watched with fsevents\n * @param {String} realPath - real path (in case of symlinks)\n * @param {Function} transform - path transformer\n * @param {Function} globFilter - path filter in case a glob pattern was provided\n * @returns {Function} closer for the watcher instance\n*/\n_watchWithFsEvents(watchPath, realPath, transform, globFilter) {\n if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return;\n const opts = this.fsw.options;\n const watchCallback = async (fullPath, flags, info) => {\n if (this.fsw.closed) return;\n if (\n opts.depth !== undefined &&\n calcDepth(fullPath, realPath) > opts.depth\n ) return;\n const path = transform(sysPath.join(\n watchPath, sysPath.relative(watchPath, fullPath)\n ));\n if (globFilter && !globFilter(path)) return;\n // ensure directories are tracked\n const parent = sysPath.dirname(path);\n const item = sysPath.basename(path);\n const watchedDir = this.fsw._getWatchedDir(\n info.type === FSEVENT_TYPE_DIRECTORY ? path : parent\n );\n\n // correct for wrong events emitted\n if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) {\n if (typeof opts.ignored === FUNCTION_TYPE) {\n let stats;\n try {\n stats = await stat(path);\n } catch (error) {}\n if (this.fsw.closed) return;\n if (this.checkIgnored(path, stats)) return;\n if (sameTypes(info, stats)) {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } else {\n this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } else {\n switch (info.event) {\n case FSEVENT_CREATED:\n case FSEVENT_MODIFIED:\n return this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n case FSEVENT_DELETED:\n case FSEVENT_MOVED:\n return this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n }\n };\n\n const closer = setFSEventsListener(\n watchPath,\n realPath,\n watchCallback,\n this.fsw._emitRaw\n );\n\n this.fsw._emitReady();\n return closer;\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} linkPath path to symlink\n * @param {String} fullPath absolute path to the symlink\n * @param {Function} transform pre-existing path transformer\n * @param {Number} curDepth level of subdirectories traversed to where symlink is\n * @returns {Promise}\n */\nasync _handleFsEventsSymlink(linkPath, fullPath, transform, curDepth) {\n // don't follow the same symlink more than once\n if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath)) return;\n\n this.fsw._symlinkPaths.set(fullPath, true);\n this.fsw._incrReadyCount();\n\n try {\n const linkTarget = await realpath(linkPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(linkTarget)) {\n return this.fsw._emitReady();\n }\n\n this.fsw._incrReadyCount();\n\n // add the linkTarget for watching with a wrapper for transform\n // that causes emitted paths to incorporate the link's path\n this._addToFsEvents(linkTarget || linkPath, (path) => {\n let aliasedPath = linkPath;\n if (linkTarget && linkTarget !== DOT_SLASH) {\n aliasedPath = path.replace(linkTarget, linkPath);\n } else if (path !== DOT_SLASH) {\n aliasedPath = sysPath.join(linkPath, path);\n }\n return transform(aliasedPath);\n }, false, curDepth);\n } catch(error) {\n if (this.fsw._handleError(error)) {\n return this.fsw._emitReady();\n }\n }\n}\n\n/**\n *\n * @param {Path} newPath\n * @param {fs.Stats} stats\n */\nemitAdd(newPath, stats, processPath, opts, forceAdd) {\n const pp = processPath(newPath);\n const isDir = stats.isDirectory();\n const dirObj = this.fsw._getWatchedDir(sysPath.dirname(pp));\n const base = sysPath.basename(pp);\n\n // ensure empty dirs get tracked\n if (isDir) this.fsw._getWatchedDir(pp);\n if (dirObj.has(base)) return;\n dirObj.add(base);\n\n if (!opts.ignoreInitial || forceAdd === true) {\n this.fsw._emit(isDir ? EV_ADD_DIR : EV_ADD, pp, stats);\n }\n}\n\ninitWatch(realPath, path, wh, processPath) {\n if (this.fsw.closed) return;\n const closer = this._watchWithFsEvents(\n wh.watchPath,\n sysPath.resolve(realPath || wh.watchPath),\n processPath,\n wh.globFilter\n );\n this.fsw._addPathCloser(path, closer);\n}\n\n/**\n * Handle added path with fsevents\n * @param {String} path file/dir path or glob pattern\n * @param {Function|Boolean=} transform converts working path to what the user expects\n * @param {Boolean=} forceAdd ensure add is emitted\n * @param {Number=} priorDepth Level of subdirectories already traversed.\n * @returns {Promise}\n */\nasync _addToFsEvents(path, transform, forceAdd, priorDepth) {\n if (this.fsw.closed) {\n return;\n }\n const opts = this.fsw.options;\n const processPath = typeof transform === FUNCTION_TYPE ? transform : IDENTITY_FN;\n\n const wh = this.fsw._getWatchHelpers(path);\n\n // evaluate what is at the path we're being asked to watch\n try {\n const stats = await statMethods[wh.statMethod](wh.watchPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(wh.watchPath, stats)) {\n throw null;\n }\n if (stats.isDirectory()) {\n // emit addDir unless this is a glob parent\n if (!wh.globFilter) this.emitAdd(processPath(path), stats, processPath, opts, forceAdd);\n\n // don't recurse further if it would exceed depth setting\n if (priorDepth && priorDepth > opts.depth) return;\n\n // scan the contents of the dir\n this.fsw._readdirp(wh.watchPath, {\n fileFilter: entry => wh.filterPath(entry),\n directoryFilter: entry => wh.filterDir(entry),\n ...Depth(opts.depth - (priorDepth || 0))\n }).on(STR_DATA, (entry) => {\n // need to check filterPath on dirs b/c filterDir is less restrictive\n if (this.fsw.closed) {\n return;\n }\n if (entry.stats.isDirectory() && !wh.filterPath(entry)) return;\n\n const joinedPath = sysPath.join(wh.watchPath, entry.path);\n const {fullPath} = entry;\n\n if (wh.followSymlinks && entry.stats.isSymbolicLink()) {\n // preserve the current depth here since it can't be derived from\n // real paths past the symlink\n const curDepth = opts.depth === undefined ?\n undefined : calcDepth(joinedPath, sysPath.resolve(wh.watchPath)) + 1;\n\n this._handleFsEventsSymlink(joinedPath, fullPath, processPath, curDepth);\n } else {\n this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd);\n }\n }).on(EV_ERROR, EMPTY_FN).on(STR_END, () => {\n this.fsw._emitReady();\n });\n } else {\n this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd);\n this.fsw._emitReady();\n }\n } catch (error) {\n if (!error || this.fsw._handleError(error)) {\n // TODO: Strange thing: \"should not choke on an ignored watch path\" will be failed without 2 ready calls -__-\n this.fsw._emitReady();\n this.fsw._emitReady();\n }\n }\n\n if (opts.persistent && forceAdd !== true) {\n if (typeof transform === FUNCTION_TYPE) {\n // realpath has already been resolved\n this.initWatch(undefined, path, wh, processPath);\n } else {\n let realPath;\n try {\n realPath = await realpath(wh.watchPath);\n } catch (e) {}\n this.initWatch(realPath, path, wh, processPath);\n }\n }\n}\n\n}\n\nmodule.exports = FsEventsHandler;\nmodule.exports.canUse = canUse;\n","\"use babel\"\n\nconst javascriptPrefixes = [\n \"import\\\\s+.*?from\\\\s+['\\\"]\", // import foo from './foo'\n \"import\\\\s+['\\\"]\", // import './foo'\n \"require\\\\(['\\\"]\", // require('./foo')\n \"define\\\\(\\\\[?['\\\"]\", // define(['./foo']) or define('./foo')\n]\n\nconst javascriptExtensions = [\"js\", \"jsx\", \"ts\", \"tsx\", \"coffee\", \"json\"]\n\n// no index replacement\nconst javascriptReplaceOnInsert = [\n [\"\\\\.jsx?$\", \"\"],\n [\"\\\\.ts$\", \"\"],\n [\"\\\\.coffee$\", \"\"],\n]\n\n// with index replacement\nconst javascriptWithIndexReplaceOnInsert = [\n [\"([\\\\/]?index)?\\\\.jsx?$\", \"\"],\n [\"([\\\\/]?index)?\\\\.ts$\", \"\"],\n [\"([\\\\/]?index)?\\\\.coffee$\", \"\"],\n]\n\nexport const DefaultScopes = [\n {\n scopes: [\n \"source.js\",\n \"source.js.jsx\",\n \"source.coffee\",\n \"source.coffee.jsx\",\n \"source.ts\",\n \"source.tsx\",\n \"javascript\",\n \"source.flow\",\n ],\n prefixes: javascriptPrefixes,\n extensions: javascriptExtensions,\n relative: true,\n replaceOnInsert: javascriptWithIndexReplaceOnInsert,\n },\n {\n scopes: [\"text.html.vue\"],\n prefixes: javascriptPrefixes,\n extensions: javascriptExtensions.concat(\"vue\"),\n relative: true,\n replaceOnInsert: javascriptReplaceOnInsert,\n },\n {\n scopes: [\"text.html.vue\"],\n prefixes: [\n \"@import[\\\\(|\\\\s+]?['\\\"]\", // @import 'foo' or @import('foo')\n ],\n extensions: [\"css\", \"sass\", \"scss\", \"less\", \"styl\"],\n relative: true,\n replaceOnInsert: [\n [\"(/)?_([^/]*?)$\", \"$1$2\"], // dir1/_dir2/_file.sass => dir1/_dir2/file.sass\n ],\n },\n {\n scopes: [\"source.coffee\", \"source.coffee.jsx\"],\n prefixes: [\n \"require\\\\s+['\\\"]\", // require './foo'\n \"define\\\\s+\\\\[?['\\\"]\", // define(['./foo']) or define('./foo')\n ],\n extensions: javascriptExtensions,\n relative: true,\n replaceOnInsert: javascriptReplaceOnInsert,\n },\n {\n scopes: [\"source.php\"],\n prefixes: [\n \"require_once\\\\(['\\\"]\", // require_once('foo.php')\n \"include\\\\(['\\\"]\", // include('./foo.php')\n ],\n extensions: [\"php\"],\n relative: true,\n },\n {\n scopes: [\"source.sass\", \"source.css.scss\", \"source.css.less\", \"source.stylus\"],\n prefixes: [\n \"@import[\\\\(|\\\\s+]?['\\\"]\", // @import 'foo' or @import('foo')\n ],\n extensions: [\"sass\", \"scss\", \"css\"],\n relative: true,\n replaceOnInsert: [\n [\"(/)?_([^/]*?)$\", \"$1$2\"], // dir1/_dir2/_file.sass => dir1/_dir2/file.sass\n ],\n },\n {\n scopes: [\"source.css\"],\n prefixes: [\n \"@import\\\\s+['\\\"]?\", // @import 'foo.css'\n \"@import\\\\s+url\\\\(['\\\"]?\", // @import url('foo.css')\n ],\n extensions: [\"css\"],\n relative: true,\n },\n {\n scopes: [\"source.css\", \"source.sass\", \"source.css.less\", \"source.css.scss\", \"source.stylus\"],\n prefixes: [\"url\\\\(['\\\"]?\"],\n extensions: [\"png\", \"gif\", \"jpeg\", \"jpg\", \"woff\", \"woff2\", \"ttf\", \"svg\", \"otf\"],\n relative: true,\n },\n {\n scopes: [\"source.c\", \"source.cpp\"],\n prefixes: [\"^\\\\s*#include\\\\s+['\\\"]\"],\n extensions: [\"h\", \"hpp\"],\n relative: true,\n includeCurrentDirectory: false,\n },\n {\n scopes: [\"source.lua\"],\n prefixes: [\"require[\\\\s+|\\\\(]['\\\"]\"],\n extensions: [\"lua\"],\n relative: true,\n includeCurrentDirectory: false,\n replaceOnInsert: [\n [\"\\\\/\", \".\"],\n [\"\\\\\\\\\", \".\"],\n [\"\\\\.lua$\", \"\"],\n ],\n },\n {\n scopes: [\"source.ruby\"],\n prefixes: [\"^\\\\s*require[\\\\s+|\\\\(]['\\\"]\"],\n extensions: [\"rb\"],\n relative: true,\n includeCurrentDirectory: false,\n replaceOnInsert: [[\"\\\\.rb$\", \"\"]],\n },\n {\n scopes: [\"source.python\"],\n prefixes: [\"^\\\\s*from\\\\s+\", \"^\\\\s*import\\\\s+\"],\n extensions: [\"py\"],\n relative: true,\n includeCurrentDirectory: false,\n replaceOnInsert: [\n [\"\\\\/\", \".\"],\n [\"\\\\\\\\\", \".\"],\n [\"\\\\.py$\", \"\"],\n ],\n },\n]\n"],"names":["$parcel$export","e","n","v","Object","defineProperty","get","enumerable","$parcel$missingModule","name","err","Error","code","$parcel$global","globalThis","self","window","global","subscriptions","add","atom","commands","autocomplete-paths:rebuild-cache","_rebuildCache","forEach","cacheOption","config","observe","_provider","_pathsCache","updateConfig","scopeOptions","key","OptionScopes","push","scopeOption","reloadScopes","_statusBarInterval","clearInterval","dispose","_statusBarTile","destroy","statusBar","_statusBar","_displayStatusBarItemOnConsumption","_displayStatusBarTile","enableHtmlSupport","scopes","prefixes","extensions","relative","normalizeSlashes","type","description","default","maxFileCount","suggestionPriority","ignoredNames","ignoreSubmodules","ignoredPatterns","items","ignoreBuiltinScopes","properties","replaceOnInsert","keys","i","len","length","a","$4f98dcf3c1c9e6d326d487da110886a3$var$_events","_events","$4f98dcf3c1c9e6d326d487da110886a3$var$_path","$4f98dcf3c1c9e6d326d487da110886a3$var$_interopRequireDefault","_path2","value","root","Function","ArrayProto","Array","prototype","ObjProto","SymbolProto","Symbol","slice","toString","hasOwnProperty","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","isArray","nativeKeys","nativeCreate","create","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","Math","pow","restArguments","func","startIndex","max","arguments","rest","index","call","this","args","apply","isObject","obj","isNull","isUndefined","isBoolean","$4766d843fd37944fe6c40ebbaa7aaf5e$export$toString","isElement","nodeType","tagTester","tag","$530580268565aa9d3424fd2ef51901ea$export$default","isFunction","nodelist","$4766d843fd37944fe6c40ebbaa7aaf5e$export$root","document","childNodes","Int8Array","hasStringTagBug","$4766d843fd37944fe6c40ebbaa7aaf5e$export$supportsDataView","$757eee250db3ce2336c60aa91cc78956$export$default","isIE11","Map","isDataView","$4d72093464ae2487da1a1b0e7fdf8340$export$hasStringTagBug","$c4e8fa99aa95727b16a1ee8bde743672$export$default","getInt8","$1e41bcd793e643e4734c6f6ee2b4e9d8$export$default","buffer","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nativeIsArray","has","$4766d843fd37944fe6c40ebbaa7aaf5e$export$hasOwnProperty","isArguments","$2f33ee2e9052562efdc3a1ced95b6675$export$default","$b42014b70606b5e7de8aa1c63831b7d4$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$_isFinite","parseFloat","$0751ff01da0b092ac4f23f0c2d71a871$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$_isNaN","constant","createSizePropertyCheck","getSizeProperty","collection","sizeProperty","$4766d843fd37944fe6c40ebbaa7aaf5e$export$MAX_ARRAY_INDEX","shallowProperty","$082c72be95656a779fbb5fe4e4e2d893$export$default","$ce21aa60db694058381b6f594885f095$export$default","$9dc8a679e9e58bead4d368991930ccfa$export$default","typedArrayPattern","$4766d843fd37944fe6c40ebbaa7aaf5e$export$supportsArrayBuffer","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nativeIsView","$6c17244ad683b04e8fe7911905aa629a$export$default","$4113367773109491f566fca99083a621$export$default","test","$965ec70e7f224c7d3cfeca678df8bf3e$export$default","collectNonEnumProps","hash","l","contains","emulatedSet","nonEnumIdx","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nonEnumerableProps","constructor","proto","$4766d843fd37944fe6c40ebbaa7aaf5e$export$ObjProto","prop","$18c823376c5830042afa2859bd10a376$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nativeKeys","$4766d843fd37944fe6c40ebbaa7aaf5e$export$hasEnumBug","$83a1753c83f462cddba24ea36ce47496$export$default","isEmpty","$0d046df52324e1b31f2024707819811f$export$default","$4f93bbf2818679c73ac8dbfc977a7a07$export$default","$128563f5bdf8568546aad66b0e9169f2$export$default","$8ae27713e37a9c29d5e79c3d5918a77d$export$default","$3b05cdb343fae09a39046f51e776f0f0$export$default","isMatch","object","attrs","_keys","_","_wrapped","toBufferView","bufferSource","Uint8Array","byteOffset","VERSION","valueOf","toJSON","String","eq","b","aStack","bStack","deepEq","$f779cc76c1a1d6ad15d73b1a79679140$export$default","className","$4766d843fd37944fe6c40ebbaa7aaf5e$export$SymbolProto","$971933d1c47513fb09b37a92d0a37dbd$export$default","areArrays","$018820d0be3c8c64b8cf72f8b1d41946$export$default","aCtor","bCtor","pop","isEqual","allKeys","ie11fingerprint","methods","$d18db0082fe578da6811f391a71bf9b3$export$default","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","concat","setMethods","$4d72093464ae2487da1a1b0e7fdf8340$export$isIE11","$4ea201dde15b569ef673f8a94185c9b5$export$ie11fingerprint","$4ea201dde15b569ef673f8a94185c9b5$export$mapMethods","$4ea201dde15b569ef673f8a94185c9b5$export$weakMapMethods","$4ea201dde15b569ef673f8a94185c9b5$export$setMethods","values","pairs","invert","result","functions","names","sort","createAssigner","keysFunc","defaults","source","$104b4b6ceacd5903ac1c231fdc18e77a$export$default","baseCreate","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nativeCreate","Ctor","props","$2d00069fd8855ccba361fc012741c4c3$export$default","$8902de5b7a4210ae0d0d775a026129d7$export$default","clone","$2540be424c2a69d381c5f70544f42e3b$export$default","tap","interceptor","toPath","path","deepGet","defaultValue","$8018f0169c896f324d83872c991189a8$export$default","$4697741704e109ca4281e66ccaaa7ae4$export$default","$4ee2499b95037586386133e246ec0fe0$export$default","identity","matcher","$9fccc268a09f4fec9ea6784b21d8dedf$export$default","property","optimizeCb","context","argCount","accumulator","baseIteratee","$ab4f4e78340911fc2a1a827c5a582123$export$default","$d61e122df0949dd2864622a1afa3353e$export$default","$d81d08287b5f54859f4a192b71e2f8c4$export$default","$625186f364fd8dc137aa7807e64a2598$export$default","iteratee","$56307bb362f4dd86a06da23445054ab2$export$default","Infinity","cb","$c4e069c32a82fd2a5c5d04e4bcea7338$export$default","mapObject","$b957eed69440ebd3c9b1d78a45604fbd$export$default","results","currentKey","noop","propertyOf","$a500a6f010799ff9a7df787fa369084d$export$default","$ef85fb07de2211bf1f69fdcf77142185$export$default","times","accum","random","min","floor","Date","now","getTime","createEscaper","map","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","replace","&","<",">","\"","'","`","$47064242fb35d600bf21bb30548f9a9a$export$default","$f6155021e9f5ee75ffc79bef4b5cc562$export$default","$0bda26bf29d027de42adeb7830ed6529$export$default","templateSettings","evaluate","interpolate","escape","noMatch","escapes","\\","\r","\n","
","
","escapeRegExp","escapeChar","bareIdentifier","template","text","settings","oldSettings","$6872dbda78546da4704142c0c1df0ab2$export$default","offset","render","argument","variable","data","fallback","idCounter","uniqueId","prefix","id","chain","instance","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","$35cdaa6c87f6f54da4099aed660c7c22$export$default","boundArgs","placeholder","bound","position","$3228f02b676421780262a9bad058fb4c$export$default","TypeError","callArgs","flatten","input","depth","strict","output","idx","$be963c66310a07e4f4a13bd72d66d422$export$default","j","$5376fd82b55f3d24b981e8133bb55b68$export$default","$29292758879b03a0a46ea42800ca319c$export$default","memoize","hasher","cache","address","wait","setTimeout","$c5adee6e70396da0cc5875e9971e75de$export$default","$bc8c6214d737143531239ad25c501ffa$export$default","throttle","options","timeout","previous","later","leading","$eac143eb91b5babdee1b370bb2c48eca$export$default","throttled","_now","remaining","clearTimeout","trailing","cancel","debounce","immediate","passed","debounced","_args","wrap","wrapper","negate","predicate","compose","start","after","before","memo","$e34233ca0155abee01d5ca703ca59f2b$export$default","findKey","createPredicateIndexFinder","dir","array","$fbeb2a8ea83484c4fd41059810f81f2e$export$default","sortedIndex","low","high","mid","createIndexFinder","predicateFind","item","$4766d843fd37944fe6c40ebbaa7aaf5e$export$slice","$befc48520aa876d23cbcdfac862f5e5d$export$default","$c34d2514ffaee6c8d94d7f90aefb6a79$export$default","$5f6e130ef32c78852d617a03558bf4de$export$default","$08e864e25049f3fbd1dd4da7573584a0$export$default","$1d68220bec29d2d07f4928f9efe9a21e$export$default","find","$f4841c265232f176f5b6412afdb2be28$export$default","findWhere","$4e5b5c936dd0a480756133fc91e7f7b7$export$default","each","createReduce","reducer","initial","$02726a623a56a34cef551b2a009d3655$export$default","filter","$7ed9d08b1d8a9f5c63b441713d41f49a$export$default","list","reject","$d6f5e572792112b325b6c053862c316e$export$default","$8b9856ac48da8f63d1bbbfe4a5ef3268$export$default","every","some","fromIndex","guard","$f681841d2b8e02af48e523aa580f5cfa$export$default","$8ccce14a819088ce821a57479a2bd5b9$export$default","contextPath","$78faf640e937a6e0770c1dd6466db445$export$default","method","pluck","where","computed","lastComputed","sample","$2ef5063b6781c2c4fb9e84a1bbfb26b7$export$default","$19545121514a4ceec6f88f1c8e50e575$export$default","last","rand","temp","shuffle","$bbdb4d1d845f834524cc934bb966533d$export$default","sortBy","$54b924e9241a3937b7bf2ca45bb7e807$export$default","criteria","left","right","group","behavior","partition","$e94ff483595449ce238a566adc2a9a37$export$default","pass","reStrSymbol","toArray","size","keyInObj","$76a0fa0ca02a03f593de412afa88dae2$export$default","$ab487a3703a4adc687138807f1fdbdbe$export$default","$9adde3d234d1237d4e95739371a10a23$export$default","first","$e99ab7c589dceb0edc58e310af54c882$export$default","$8c85ae5c50d0dc205834f4cc8454a8df$export$default","compact","Boolean","otherArrays","$46923c265235028bf503d20f975dc959$export$default","uniq","isSorted","$e3a08816e2c3cdac5a0514eaab1eeb4d$export$default","seen","arrays","$a2bc623c109ef8d6a885afe344c4b8c1$export$default","intersection","argsLength","unzip","$3bec954eabc457cb62116031cb235e37$export$default","$af75977507aff8933bffef565e4ee112$export$default","range","stop","step","ceil","chunk","count","chainResult","mixin","$fcebd106c8e4d33ef1435c1fa5d33be6$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$push","$0a2e0b4c3f16213b5041641f42b3644c$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$ArrayProto","dest","$b7eed12b70c12bb159736912ae43341b$export$default","$b41c17ef6dc9c02f08a4b1fcd727bea6$exports","$4f98dcf3c1c9e6d326d487da110886a3$var$_slash","isExtendedLengthPath","hasNonAscii","$fa15ed738edc607bff6e414ee1228faf$var$_events","$94f1d08a4a84a8c311c1f201dc9caab3$exports","minimatch","Minimatch","sep","er","GLOBSTAR","$5e1c6d569f37099081111fea8b1350af$exports","xs","fn","res","x","balanced","str","maybeMatch","r","end","pre","body","post","reg","m","begs","beg","ai","indexOf","bi","$d2ff992d4b3847eaa4295f2dce291d6e$exports","$c5ba3e561919a5724e211288e888a239$exports","substr","expand","split","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","numeric","parseInt","charCodeAt","parseCommaParts","parts","p","postParts","shift","embrace","isPadded","el","lte","y","gte","isTop","expansions","isNumericSequence","isAlphaSequence","isSequence","isOptions","N","width","incr","abs","pad","c","fromCharCode","need","z","k","expansion","plTypes","!","open","close","?","+","*","@","reSpecials","reduce","set","slashSplit","ext","t","pattern","nocomment","charAt","trim","regexp","comment","empty","make","braceExpand","nobrace","def","orig","debug","_made","parseNegate","globSet","console","error","globParts","s","si","parse","negateOffset","nonegate","isSub","noglobstar","stateChar","re","hasMagic","nocase","escaping","patternListStack","negativeLists","inClass","reClassStart","classStart","patternStart","dot","clearStateChar","qmark","noext","reStart","pl","reEnd","cs","substring","sp","SUBPARSE","tail","$1","$2","addPatternStart","nl","nlBefore","nlFirst","nlLast","nlAfter","openParensBefore","cleanAfter","dollar","globUnescape","flags","regExp","_glob","_src","makeRe","twoStar","regExpEscape","ex","mm","f","nonull","filename","file","matchBase","matchOne","flipNegate","fi","pi","fl","hit","fr","pr","swallowee","toLowerCase","$fa15ed738edc607bff6e414ee1228faf$var$_minimatch","$fa15ed738edc607bff6e414ee1228faf$var$_interopRequireDefault","$fa15ed738edc607bff6e414ee1228faf$var$_atom","_atom","$fa15ed738edc607bff6e414ee1228faf$var$_path","arr1","arr2","merge","unique","$f4fbba484e338d4cc479dcb545e6ede1$var$_child_process","_child_process","$f4fbba484e338d4cc479dcb545e6ede1$var$_buffer","_buffer","_util","promisify","execRaw","arr","Set","constants","MAX_STRING_LENGTH","$eb6451db26f7209cf3471689426ebccd$exports","_fs","{","(","[","o","u","exec","exports","raw","readFile","stat","promises","normalize","g","async","h","OTHER","startsWith","DIRECTORY","endsWith","FILE","isDirectory","isFile","$eb6451db26f7209cf3471689426ebccd$export$globifyDirectory","globifyDirectory","$eb6451db26f7209cf3471689426ebccd$export$globifyGitIgnore","globifyGitIgnore","$eb6451db26f7209cf3471689426ebccd$export$globifyGitIgnoreFile","globifyGitIgnoreFile","$eb6451db26f7209cf3471689426ebccd$export$globifyPath","process","cwd","globifyPath","$eb6451db26f7209cf3471689426ebccd$export$posixifyPath","posixifyPath","$eb6451db26f7209cf3471689426ebccd$export$posixifyPathNormalized","posixifyPathNormalized","$b56ba0897d13f41cd51499a721c56b78$exports","generate","$b56ba0897d13f41cd51499a721c56b78$export$generate","convertPatternsToTasks","$b56ba0897d13f41cd51499a721c56b78$export$convertPatternsToTasks","getPositivePatterns","$b56ba0897d13f41cd51499a721c56b78$export$getPositivePatterns","getNegativePatternsAsPositive","$b56ba0897d13f41cd51499a721c56b78$export$getNegativePatternsAsPositive","groupPatternsByBaseDirectory","$b56ba0897d13f41cd51499a721c56b78$export$groupPatternsByBaseDirectory","convertPatternGroupsToTasks","$b56ba0897d13f41cd51499a721c56b78$export$convertPatternGroupsToTasks","convertPatternGroupToTask","$b56ba0897d13f41cd51499a721c56b78$export$convertPatternGroupToTask","$422804cb8a651aa6acba0ac7e3785dc6$exports","$422804cb8a651aa6acba0ac7e3785dc6$export$array","errno","$422804cb8a651aa6acba0ac7e3785dc6$export$errno","fs","$422804cb8a651aa6acba0ac7e3785dc6$export$fs","$422804cb8a651aa6acba0ac7e3785dc6$export$path","$422804cb8a651aa6acba0ac7e3785dc6$export$pattern","stream","$422804cb8a651aa6acba0ac7e3785dc6$export$stream","$422804cb8a651aa6acba0ac7e3785dc6$export$string","$91f583c15909e1ccdadbaf9bc51c6127$exports","$91f583c15909e1ccdadbaf9bc51c6127$export$flatten","splitWhen","$91f583c15909e1ccdadbaf9bc51c6127$export$splitWhen","groupIndex","$93874595d176bf29bfc3a9b922d2d4ff$exports","isEnoentCodeError","$93874595d176bf29bfc3a9b922d2d4ff$export$isEnoentCodeError","$455498c2b58a70fafa5a615bba0f0fb7$exports","createDirentFromStats","$455498c2b58a70fafa5a615bba0f0fb7$export$createDirentFromStats","DirentFromStats","stats","isBlockDevice","bind","isCharacterDevice","isFIFO","isSocket","isSymbolicLink","$f5f5eda539478a6d918ab7b348725789$exports","unixify","$f5f5eda539478a6d918ab7b348725789$export$unixify","makeAbsolute","$f5f5eda539478a6d918ab7b348725789$export$makeAbsolute","$f5f5eda539478a6d918ab7b348725789$export$escape","removeLeadingDotSegment","$f5f5eda539478a6d918ab7b348725789$export$removeLeadingDotSegment","UNESCAPED_GLOB_SYMBOLS_RE","filepath","resolve","entry","secondCharactery","$f0f3d808071f63337f37da8160be0d3f$exports","isStaticPattern","$f0f3d808071f63337f37da8160be0d3f$export$isStaticPattern","isDynamicPattern","$f0f3d808071f63337f37da8160be0d3f$export$isDynamicPattern","convertToPositivePattern","$f0f3d808071f63337f37da8160be0d3f$export$convertToPositivePattern","convertToNegativePattern","$f0f3d808071f63337f37da8160be0d3f$export$convertToNegativePattern","isNegativePattern","$f0f3d808071f63337f37da8160be0d3f$export$isNegativePattern","isPositivePattern","$f0f3d808071f63337f37da8160be0d3f$export$isPositivePattern","getNegativePatterns","$f0f3d808071f63337f37da8160be0d3f$export$getNegativePatterns","$f0f3d808071f63337f37da8160be0d3f$export$getPositivePatterns","getBaseDirectory","$f0f3d808071f63337f37da8160be0d3f$export$getBaseDirectory","hasGlobStar","$f0f3d808071f63337f37da8160be0d3f$export$hasGlobStar","endsWithSlashGlobStar","$f0f3d808071f63337f37da8160be0d3f$export$endsWithSlashGlobStar","isAffectDepthOfReadingPattern","$f0f3d808071f63337f37da8160be0d3f$export$isAffectDepthOfReadingPattern","expandPatternsWithBraceExpansion","$f0f3d808071f63337f37da8160be0d3f$export$expandPatternsWithBraceExpansion","expandBraceExpansion","$f0f3d808071f63337f37da8160be0d3f$export$expandBraceExpansion","getPatternParts","$f0f3d808071f63337f37da8160be0d3f$export$getPatternParts","$f0f3d808071f63337f37da8160be0d3f$export$makeRe","convertPatternsToRe","$f0f3d808071f63337f37da8160be0d3f$export$convertPatternsToRe","matchAny","$f0f3d808071f63337f37da8160be0d3f$export$matchAny","$d2ddf728bc1d253a698155c4263853ec$exports","chars","strictRegex","relaxedRegex","$5aad54ce2053ff01913dccb4f07fd55c$exports","regex","pathPosixDirname","posix","dirname","isWin32","_os","platform","backslash","enclosure","globby","escaped","$107d7de280ab69882848c42370ab9741$exports","opts","assign","flipBackslashes","util","num","Number","isInteger","block","invalid","commas","ranges","nodes","acc","node","flat","ele","$1e8b6070e1240c880554363b46d3fed7$exports","ast","stringify","parent","invalidBlock","escapeInvalid","$a60c24b13b89c4d0c490303e65b46fb5$export$isInvalidBrace","invalidNode","$a60c24b13b89c4d0c490303e65b46fb5$export$isOpenOrClose","child","$816bff67e45ad0133289504628da3d9a$exports","toRegexRange","relaxZeros","strictZeros","cacheKey","shorthand","capture","hasPadding","state","positives","negatives","maxLen","splitToPatterns","neg","pos","onlyNegative","filterPatterns","onlyPositive","intersected","collatePatterns","rangeToPattern","digits","zipped","zip","startDigit","stopDigit","toCharacterClass","tok","prev","nines","zeros","countNines","stops","countZeros","compare","splitToRanges","tokens","padZeros","toQuantifier","comparison","val","repeat","integer","diff","relax","clearCache","$6d6653f07a5df1bec4f49ea73e086fb7$exports","isValidValue","isNumber","maxLength","toNumber","dash","padStart","toMaxLen","negative","toRange","isNumbers","toRegex","rangeError","RangeError","inspect","invalidRange","strictRanges","fillNumbers","descending","startString","endString","stepString","padded","format","transform","toSequence","fill","fillLetters","invalidStep","$8a115514cdcc2d344e3c6e4194b9bce0$exports","$8fc16ef203be5a0514807a93b6777563$exports","walk","isOpen","isClose","$a60c24b13b89c4d0c490303e65b46fb5$export$reduce","append","queue","stash","enclose","$a60c24b13b89c4d0c490303e65b46fb5$export$flatten","$98c28db8c364ac8fc1a0f2f695f25755$exports","rangeLimit","q","limit","$a60c24b13b89c4d0c490303e65b46fb5$export$isInteger","$a60c24b13b89c4d0c490303e65b46fb5$export$exceedsLimit","$a60c24b13b89c4d0c490303e65b46fb5$export$encloseBrace","$22131639b2616d9722fac2c6e041c38d$exports","MAX_LENGTH","CHAR_0","CHAR_9","CHAR_UPPERCASE_A","CHAR_LOWERCASE_A","CHAR_UPPERCASE_Z","CHAR_LOWERCASE_Z","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_ASTERISK","CHAR_AMPERSAND","CHAR_AT","CHAR_BACKSLASH","CHAR_BACKTICK","CHAR_CARRIAGE_RETURN","CHAR_CIRCUMFLEX_ACCENT","CHAR_COLON","CHAR_COMMA","CHAR_DOLLAR","CHAR_DOT","CHAR_DOUBLE_QUOTE","CHAR_EQUAL","CHAR_EXCLAMATION_MARK","CHAR_FORM_FEED","CHAR_FORWARD_SLASH","CHAR_HASH","CHAR_HYPHEN_MINUS","CHAR_LEFT_ANGLE_BRACKET","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_LINE_FEED","CHAR_NO_BREAK_SPACE","CHAR_PERCENT","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_ANGLE_BRACKET","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_SQUARE_BRACKET","CHAR_SEMICOLON","CHAR_SINGLE_QUOTE","CHAR_SPACE","CHAR_TAB","CHAR_UNDERSCORE","CHAR_VERTICAL_LINE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","$10df006dd7c479e8b1fbaf07a5e6ef6d$exports","SyntaxError","stack","brackets","advance","siblings","next","keepQuotes","keepEscaping","splice","braces","nodupes","compile","noempty","$f7e75fe2d5891a3845c8cdcf400928b9$exports","win32","POSIX_CHARS","DOT_LITERAL","PLUS_LITERAL","QMARK_LITERAL","SLASH_LITERAL","ONE_CHAR","QMARK","END_ANCHOR","DOTS_SLASH","NO_DOT","NO_DOTS","NO_DOT_SLASH","NO_DOTS_SLASH","QMARK_NO_DOT","STAR","START_ANCHOR","WINDOWS_CHARS","$2aa45786d7b1a24460688dafa7cd10c1$exports","POSIX_REGEX_SOURCE","alnum","alpha","ascii","blank","cntrl","digit","graph","lower","print","punct","space","upper","word","xdigit","REGEX_BACKSLASH","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REGEX_SPECIAL_CHARS_GLOBAL","REGEX_REMOVE_BACKSLASH","REPLACEMENTS","***","**/**","**/**/**","CHAR_BACKWARD_SLASH","CHAR_GRAVE_ACCENT","SEP","extglobChars","globChars","segs","version","windows","char","lastIdx","lastIndexOf","$ebaa6f4c338ac819d1935e6e1a148c35$export$escapeLast","isPathSeparator","token","isPrefix","isGlobstar","$792e04290caab34ee0f413c5302f1daa$exports","scanToEnd","slashes","lastIndex","isBrace","isBracket","isGlob","isExtglob","braceEscaped","backslashes","negated","finished","eos","noparen","base","glob","unescape","$ebaa6f4c338ac819d1935e6e1a148c35$export$removeBackslashes","maxDepth","prevIndex","expandRange","$ebaa6f4c338ac819d1935e6e1a148c35$export$escapeRegex","syntaxError","bos","prepend","$ebaa6f4c338ac819d1935e6e1a148c35$export$isWindows","PLATFORM_CHARS","EXTGLOB_CHARS","globstar","nodot","qmarkNoDot","star","bash","noextglob","consumed","backtrack","parens","quotes","$ebaa6f4c338ac819d1935e6e1a148c35$export$removePrefix","extglobs","peek","consume","increment","decrement","extglob","inner","extglobOpen","conditions","extglobClose","extglobStar","includes","negatedExtglob","fastpaths","esc","$ebaa6f4c338ac819d1935e6e1a148c35$export$wrapOutput","strictBrackets","nobracket","prevValue","literalBrackets","outputIndex","tokensIndex","brace","dots","unshift","comma","out","toks","$ebaa6f4c338ac819d1935e6e1a148c35$export$supportsLookbehinds","prior","isStart","afterStar","strictSlashes","suffix","slashDot","$6e8d8166959b5ff3d661dc0055efdd9f$exports","picomatch","returnState","fns","isState","compileRe","isIgnored","ignore","ignoreOpts","onMatch","onResult","returnObject","onIgnore","$ebaa6f4c338ac819d1935e6e1a148c35$export$toPosixSlashes","basename","patterns","scan","parsed","returnOutput","undefined","$fc5ef10ca8dd1fe38db1d11fc62fe19f$exports","isEmptyString","micromatch","omit","keep","matched","delete","matches","failglob","nullglob","any","not","matchKeys","all","$f2329f365247f210b8156a3719658264$exports","COMMON_GLOB_SYMBOLS_RE","REGEX_CHARACTER_CLASS_SYMBOLS_RE","REGEX_GROUP_SYMBOLS_RE","GLOB_EXTENSION_SYMBOLS_RE","BRACE_EXPANSIONS_SYMBOLS_RE","caseSensitiveMatch","braceExpansion","patternsRe","patternRe","$1c4725cc0eec0ba2a9cab82dca5d79b3$exports","$1c4725cc0eec0ba2a9cab82dca5d79b3$export$merge","PassThrough","_stream","pauseStreams","streams","_readableState","pipe","pause","propagateCloseEventToSources","emit","$1ba7229c5942e8d4c054a45f1010e685$exports","streamsQueue","merging","doEnd","doPipeError","pipeError","objectMode","highWaterMark","mergedStream","addStream","mergeStream","nextTick","endStream","pipesCount","onend","removeListener","onerror","endEmitted","on","resume","setMaxListeners","once","$8d649816915867a8dfedf6898a9b2196$exports","isString","$8d649816915867a8dfedf6898a9b2196$export$isString","$8d649816915867a8dfedf6898a9b2196$export$isEmpty","positivePatterns","negativePatterns","staticPatterns","dynamicPatterns","staticTasks","dynamicTasks","positive","dynamic","positivePatternsGroup","$677e1f9ecd1673837491374705f546dd$exports","$c3e3e08b60e55625cd4e631817b89d50$exports","stream_1","$8bc05361d389b6be72b3fadae5d2c556$exports","Settings","$8bc05361d389b6be72b3fadae5d2c556$export$Settings","$8bc05361d389b6be72b3fadae5d2c556$export$stat","statSync","$8bc05361d389b6be72b3fadae5d2c556$export$statSync","$c757a2be40f3f48082549c06e4547542$exports","callFailureCallback","callback","callSuccessCallback","read","$c757a2be40f3f48082549c06e4547542$export$read","lstat","lstatError","followSymbolicLink","statError","throwErrorOnBrokenSymbolicLink","markSymbolicLink","$97b5151977b7dc49adf88b0dc34f7308$exports","$97b5151977b7dc49adf88b0dc34f7308$export$read","lstatSync","$19677b2ad3509b94009ff08f0946ce90$exports","$b5f0fa6cf50d6601b5ee3d943652391c$exports","FILE_SYSTEM_ADAPTER","$b5f0fa6cf50d6601b5ee3d943652391c$export$FILE_SYSTEM_ADAPTER","createFileSystemAdapter","$b5f0fa6cf50d6601b5ee3d943652391c$export$createFileSystemAdapter","fsMethods","_options","_getValue","option","$19677b2ad3509b94009ff08f0946ce90$export$default","optionsOrSettingsOrCallback","getSettings","settingsOrOptions","optionsOrSettings","$eceae383f01b15ff1b6fce0fa9f8d97d$exports","$eceae383f01b15ff1b6fce0fa9f8d97d$export$walk","walkSync","$eceae383f01b15ff1b6fce0fa9f8d97d$export$walkSync","walkStream","$eceae383f01b15ff1b6fce0fa9f8d97d$export$walkStream","$eceae383f01b15ff1b6fce0fa9f8d97d$export$Settings","$c6d3aff5b0a5966bf30792563b3a0384$exports","$2c1da33ebca0bd837fc7dcf17c42be81$exports","events_1","$e940d7682608bb6ab0d351114f165b6d$exports","scandir","$e940d7682608bb6ab0d351114f165b6d$export$scandir","scandirSync","$e940d7682608bb6ab0d351114f165b6d$export$scandirSync","$e940d7682608bb6ab0d351114f165b6d$export$Settings","$314ec937a4d965a0890bab57635345d3$exports","$314ec937a4d965a0890bab57635345d3$export$read","readdirWithFileTypes","$314ec937a4d965a0890bab57635345d3$export$readdirWithFileTypes","readdir","$314ec937a4d965a0890bab57635345d3$export$readdir","$ee705190b72702064369939585ddf174$exports","tasks","pending","isSync","done","$9abdb09d41774389792d67d69b4fe3ff$exports","task","promise","queueMicrotask","Promise","then","catch","$dad7fc182206763d2004f78578778508$exports","IS_SUPPORT_READDIR_WITH_FILE_TYPES","$dad7fc182206763d2004f78578778508$export$IS_SUPPORT_READDIR_WITH_FILE_TYPES","NODE_PROCESS_VERSION_PARTS","versions","MAJOR_VERSION","MINOR_VERSION","$d544a5a010663f653d340b184986120a$exports","$d544a5a010663f653d340b184986120a$export$fs","$ccd93f79daa6be19a6748935356dbb79$exports","$ccd93f79daa6be19a6748935356dbb79$export$createDirentFromStats","$6658770e654f379eb538a3f81ba91751$exports","joinPathSegments","$6658770e654f379eb538a3f81ba91751$export$joinPathSegments","separator","directory","withFileTypes","readdirError","dirents","entries","dirent","pathSegmentSeparator","followSymbolicLinks","makeRplTaskEntry","rplError","rplEntries","filepaths","fsStatSettings","$01ea633ddab34ae6965f3c2bf6c0fdf7$exports","$01ea633ddab34ae6965f3c2bf6c0fdf7$export$read","$01ea633ddab34ae6965f3c2bf6c0fdf7$export$readdirWithFileTypes","$01ea633ddab34ae6965f3c2bf6c0fdf7$export$readdir","readdirSync","entryPath","$2178ef4714438fffd03a80cd32cc1efc$exports","$b473c9fa0fefad548831ab1e8171c472$exports","$b473c9fa0fefad548831ab1e8171c472$export$FILE_SYSTEM_ADAPTER","$b473c9fa0fefad548831ab1e8171c472$export$createFileSystemAdapter","$2178ef4714438fffd03a80cd32cc1efc$export$default","fastqueue","worker","concurrency","$2cb7890bd90df65b7917472cc3d070d2$exports","Task","queueHead","queueTail","_running","errorHandler","current","release","paused","saturated","worked","drain","running","idle","counter","getQueue","kill","killAndDrain","handler","holder","Constructor","head","arg","pushCb","unshiftCb","$553e79dfd0e4ab7c0f7f9af852602d0d$exports","$553e79dfd0e4ab7c0f7f9af852602d0d$export$promise","$28ccf74058ee42aa9a9cec32fb934bd7$exports","isFatalError","$28ccf74058ee42aa9a9cec32fb934bd7$export$isFatalError","isAppliedFilter","$28ccf74058ee42aa9a9cec32fb934bd7$export$isAppliedFilter","replacePathSegmentSeparator","$28ccf74058ee42aa9a9cec32fb934bd7$export$replacePathSegmentSeparator","$28ccf74058ee42aa9a9cec32fb934bd7$export$joinPathSegments","errorFilter","$bc0bb7d1dd6380f5e8c286e7a6e9815d$exports","_root","_settings","$bc0bb7d1dd6380f5e8c286e7a6e9815d$export$default","AsyncReader","super","_scandir","_emitter","EventEmitter","_queue","_worker","_isFatalError","_isDestroyed","setImmediate","_pushToQueue","basePath","isDestroyed","onEntry","onError","onEnd","queueItem","_handleError","fsScandirSettings","_handleEntry","fullpath","entryFilter","_emitEntry","deepFilter","$2c1da33ebca0bd837fc7dcf17c42be81$export$default","_reader","_storage","$c6d3aff5b0a5966bf30792563b3a0384$export$default","$26be4b79794f6d80679cb8a25362498f$exports","Readable","$26be4b79794f6d80679cb8a25362498f$export$default","$e5f6e8e612b06ed892409b430c8501ee$exports","$862a344797f6c1c72b54b76336d38abc$exports","SyncReader","_handleQueue","_handleDirectory","_pushToStorage","$862a344797f6c1c72b54b76336d38abc$export$default","$e5f6e8e612b06ed892409b430c8501ee$export$default","$3c25873d4160a8eacbf3af0cf040b718$exports","$3c25873d4160a8eacbf3af0cf040b718$export$default","$da952f7f027e09e1d041fa364119e728$exports","_fsStatSettings","_getFullEntryPath","_makeEntry","suppressErrors","$da952f7f027e09e1d041fa364119e728$export$default","ReaderStream","_walkStream","_stat","static","_write","_enc","_getEntry","write","_getStat","$c3e3e08b60e55625cd4e631817b89d50$export$default","$d315fb9167b993f8afd07ce80b5b4d50$exports","$6fb777a4248090afc927d654da80432d$exports","$f52404b5656f6ca38bf54f7e0d7562ff$exports","$a84da9eb5f7db2806540bcfd25d29295$exports","_patterns","_micromatchOptions","_fillStorage","segments","_getPatternSegments","sections","_splitSegmentsIntoSections","complete","part","segment","$a84da9eb5f7db2806540bcfd25d29295$export$default","PartialMatcher","levels","info","section","$f52404b5656f6ca38bf54f7e0d7562ff$export$default","getFilter","_getMatcher","negativeRe","_getNegativePatternsRe","_filter","affectDepthOfReadingPatterns","_isSkippedByDeep","_isSkippedSymbolicLink","_isSkippedByPositivePatterns","_isSkippedByNegativePatterns","deep","_getEntryLevel","entryPathDepth","baseNameMatch","$6fb777a4248090afc927d654da80432d$export$default","$b3e746e92b1737cb08f1292865d58230$exports","positiveRe","_isDuplicateEntry","_onlyFileFilter","_onlyDirectoryFilter","_isSkippedByAbsoluteNegativePatterns","isMatched","_isMatchToPatterns","_createIndexRecord","onlyFiles","onlyDirectories","absolute","$b3e746e92b1737cb08f1292865d58230$export$default","$368d0b7e1e0205e704c7318f9975b611$exports","_isNonFatalError","$368d0b7e1e0205e704c7318f9975b611$export$default","$18cfe2da09606ed5942660f61e639ba3$exports","getTransformer","_transform","markDirectories","$18cfe2da09606ed5942660f61e639ba3$export$default","_getMicromatchOptions","entryTransformer","_getRootDirectory","_getReaderOptions","$d315fb9167b993f8afd07ce80b5b4d50$export$default","ProviderAsync","api","$677e1f9ecd1673837491374705f546dd$export$default","$830d12722898172b5cedb0edbe76ea36$exports","ProviderStream","destination","$830d12722898172b5cedb0edbe76ea36$export$default","$27ad7a9b24a00373e965e24243868ccf$exports","$664d9e7b85bb79c5eccce16646452ba6$exports","ReaderSync","_walkSync","_statSync","$664d9e7b85bb79c5eccce16646452ba6$export$default","ProviderSync","$27ad7a9b24a00373e965e24243868ccf$export$default","$806ac1c6f72abd60a35a06af79845a5d$exports","DEFAULT_FILE_SYSTEM_ADAPTER","$806ac1c6f72abd60a35a06af79845a5d$export$DEFAULT_FILE_SYSTEM_ADAPTER","os","CPU_COUNT","cpus","FastGlob","_getFileSystemMethods","assertPatternsInput","works","getWorks","_Provider","provider","$806ac1c6f72abd60a35a06af79845a5d$export$default","sync","generateTasks","escapePath","$fa15ed738edc607bff6e414ee1228faf$var$_fastGlob","sysPath","realpath","NORMAL_FLOW_ERRORS","FILE_TYPE","DIR_TYPE","FILE_DIR_TYPE","EVERYTHING_TYPE","ALL_TYPES","normalizeFilter","trimmed","ReaddirpStream","defaultOptions","fileFilter","directoryFilter","alwaysStat","autoDestroy","_fileFilter","_directoryFilter","statMethod","bigint","_maxDepth","_wantsDir","_wantsFile","_wantsEverything","_isDirent","_statsProp","_rdOptions","encoding","parents","_exploreDir","reading","[object Object]","batch","destroyed","files","_formatEntry","entryType","_getEntryType","fullPath","_includeAsFile","_onError","full","entryRealPath","entryRealPathStats","readdirp","$ca2f5dac767861320668accf6d4b1e70$exports","$bf37ad29abbcf103c358641a77b0e0f6$exports","$ad5394e8af4b9d7be86d4aaa529d2093$exports","stripTrailing","ch","DEFAULT_OPTIONS","returnIndex","matchPatterns","negPatterns","isList","_path","nglob","applied","anymatch","matchers","testString","mtchers","negatedGlobs","createPattern","ri","$9a6725cc51f237c59bd2dde101a7e043$exports","JSON","$f679af930e9349262225e182daa7fd86$exports","filePath","extname","fsrealpath","statMethods","foreach","addAndConvert","main","container","delFromSet","isEmptySet","FsWatchInstances","createFsWatchInstance","listener","errHandler","emitRaw","handleEvent","rawEvent","evPath","watchedPath","fsWatchBroadcast","watch","val1","val2","val3","cont","setFsWatchListener","handlers","rawEmitter","watcher","persistent","broadcastErr","watcherUnusable","$8cbc3845e0a0b879f092531808396835$export$isWindows","fd","listeners","errHandlers","rawEmitters","$8cbc3845e0a0b879f092531808396835$export$HANDLER_KEYS","clear","clearItem","freeze","FsWatchFileInstances","$9ee9127d63637f961c4ff451ce8a7aa4$exports","fsW","fsw","_boundHandleError","_watchWithNodeFs","_getWatchedDir","absolutePath","closer","$8cbc3845e0a0b879f092531808396835$export$EMPTY_FN","usePolling","interval","enableBinaryInterval","binaryInterval","copts","unwatchFile","watchFile","curr","currmtime","mtimeMs","setFsWatchFileListener","_emitRaw","_handleFile","initialAdd","closed","prevStats","newStats","_throttle","at","atimeMs","mt","_emit","$8cbc3845e0a0b879f092531808396835$export$isLinux","ino","_closeFile","_addPathCloser","_remove","ignoreInitial","_isntIgnored","followSymlinks","_incrReadyCount","linkPath","_symlinkPaths","_emitReady","_handleRead","wh","target","throttler","hasGlob","_readdirp","filterPath","filterDir","_handleSymlink","_addToNodeFs","wasThrottled","getChildren","parentDir","tracked","globFilter","oDepth","dirPath","priorWh","ready","_isIgnored","_getWatchHelpers","watchPath","follow","absPath","targetPath","_handleDir","fsevents","env","CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR","mtch","maj","FSEventsWatchers","wrongEventFlags","createFSEventsInstance","couldConsolidate","calcDepth","sameTypes","$ac251d5e34947b0caba198911f769a5d$exports","checkIgnored","ipaths","_ignoredPaths","addOrChange","realPath","watchedDir","event","curDepth","_addToFsEvents","eventName","_watchWithFsEvents","parentPath","resolvedPath","hasSymlink","filteredListener","watchedParent","getInfo","lst","setFSEventsListener","ignored","checkExists","linkTarget","aliasedPath","$8cbc3845e0a0b879f092531808396835$export$DOT_SLASH","emitAdd","newPath","processPath","forceAdd","pp","isDir","dirObj","initWatch","priorDepth","$8cbc3845e0a0b879f092531808396835$export$IDENTITY_FN","joinedPath","_handleFsEventsSymlink","canUse","$ac251d5e34947b0caba198911f769a5d$export$canUse","arrify","unifyPaths","paths_","paths","normalizePathToUnix","toUnix","$8cbc3845e0a0b879f092531808396835$export$BACK_SLASH_RE","$8cbc3845e0a0b879f092531808396835$export$DOUBLE_SLASH_RE","normalizeIgnored","isAbsolute","undef","DirEntry","removeWatcher","_removeWatcher","WatchHelper","$8cbc3845e0a0b879f092531808396835$export$REPLACER_RE","fullWatchPath","globSymlink","$8cbc3845e0a0b879f092531808396835$export$ANYMATCH_OPTS","dirParts","getDirParts","checkGlobSymlink","fullParentDir","_hasReadPermissions","$8cbc3845e0a0b879f092531808396835$export$SLASH_OR_BACK_SLASH_RE","entryParts","unmatchedGlob","FSWatcher","_opts","_watched","_closers","_throttled","_streams","ignorePermissionErrors","disableGlobbing","useFsEvents","$8cbc3845e0a0b879f092531808396835$export$isMacos","envPoll","CHOKIDAR_USEPOLLING","envLower","envInterval","CHOKIDAR_INTERVAL","atomic","_pendingUnlinks","awaitWriteFinish","awf","stabilityThreshold","pollInterval","_pendingWrites","readyCalls","_readyCount","_readyEmitted","_fsEventsHandler","_nodeFsHandler","_origAdd","_internal","getAbsolutePath","_userIgnored","unwatch","_closePath","_closePromise","removeAllListeners","closers","closerList","getWatched","watchList","emitWithAll","pw","lastChange","awfEmit","_awaitWriteFinish","actionType","action","actionPath","timeoutObject","thr","threshold","timeoutHandler","prevStat","curStat","cancelWait","_getGlobIgnored","$8cbc3845e0a0b879f092531808396835$export$DOT_RE","ign","_boundRemove","st","mode","it","nested","wasTracked","remove","relPath","$5fc730f58802e221fd46116902978493$exports","$5fc730f58802e221fd46116902978493$export$FSWatcher","$5fc730f58802e221fd46116902978493$export$watch","$fa15ed738edc607bff6e414ee1228faf$var$chokidar","$fa15ed738edc607bff6e414ee1228faf$var$_interopRequireWildcard","PathsCache","rebuildCacheBound","rebuildCache","_projectChangeWatcher","project","onDidChangePaths","_onDidChangeFilesBound","_onDidChangeFiles","_projectWatcher","onDidChangeFiles","_repositories","_filePathsByProjectDirectory","_filePathsByDirectory","_fileWatchersByDirectory","_allIgnoredGlobByDirectory","excludeVcsIgnoredPaths","shouldIgnoredNames","_cancelled","_cacheProjectPathsAndRepositories","_cachePaths","_addWatchers","getFilePathsForProjectDirectory","projectDirectory","relativeToPath","filePaths","isPackageDispose","_isPathIgnored","repository","isIgnoredSubmodule","isSubmodule","isPathIgnored","ignoredName","ignoredPattern","_projectDirectories","getDirectories","projectNum","repositoriesP","repositoryForDirectory","repositories","_addWatcherForDirectory","projectPath","getPath","warn","$f4fbba484e338d4cc479dcb545e6ede1$exports","dedent","chokidar","addedFile","onAddFile","removedFile","onRemoveFile","addedDir","onAddDir","removedDir","onRemoveDir","fileIndex","_cachePathsForDirectoryWithGlob","Directory","_removeFilePathsForDirectory","_cleanWatchersForDirectory","_cachePathsForDirectory","otherDirectory","events","oldPath","pd","directoryPath","_cachePathsWithGlob","_cachePathsWithAtom","_cachePathsForDirectoryWithAtom","patternsNum","globEntries","iEntry","globifyOutput","rootDirectory","ignoredPatternsGlob","gitignoreFiles","gitignoreFile","_getDirectoryGitIgnoreGlob","_getIgnoredPatternsGlob","_getAllGitIgnoreGlob","directoryGlob","allIgnoredGlob","_getAllIgnoredGlob","_getDirectoryEntries","directories","File","filePathsArray","notifications","addError","dismissable","union","$4f98dcf3c1c9e6d326d487da110886a3$var$_pathsCache","$4f98dcf3c1c9e6d326d487da110886a3$var$_zadeh","_zadeh","javascriptPrefixes","javascriptExtensions","javascriptReplaceOnInsert","includeCurrentDirectory","PathsProvider","_isReady","_onRebuildCache","_onRebuildCacheDone","_scopes","DefaultScopes","_getSuggestionsForScope","scope","request","pathPrefix","_getLineTextForRequest","trailingSlashPresent","directoryGiven","parsedPathPrefix","editor","getBuffer","_getProjectDirectory","currentDirectory","requestedDirectoryPath","fuzzyMatcher","pth","maxResults","suggestions","pathName","projectRelativePath","relativizePath","displayText","relativePath","from","to","distanceToFile","replacementPrefix","iconHTML","score","suggestionsCount","maxDistance","_scopeMatchesRequest","$f9e106c2e1e1ccc57480ff8b927bda19$export$default","isReady","fileCount","accumulated","sourceScopes","$228fb12415c5bb7e75d32ba8bde9e7be$export$default","scopeDescriptor","getScopesArray","line","lineMatch","bufferPosition","getTextInRange","row","selector","inclusionPriority","$03598ba88244fec3d8d0cb2db73afc9c$var$_pathsProvider","$4f98dcf3c1c9e6d326d487da110886a3$exports","CompositeDisposable","_statusBarElement","createElement","innerHTML","addRightTile","priority","getProvider","setInterval","$097275b90bf2ee3fa89a64190f90301a$export$default"],"version":3,"file":"autocomplete-paths.js.map"} \ No newline at end of file diff --git a/package.json b/package.json index 4c1a5c4..7c88c27 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "autocomplete-paths", "main": "./dist/autocomplete-paths.js", - "version": "2.15.1", + "version": "2.15.2", "description": "Adds path autocompletion to autocomplete+", "repository": "https://github.com/atom-community/autocomplete-paths", "license": "MIT",