From 95136ea99c37cc183484a078caa1b1941ada0f2f Mon Sep 17 00:00:00 2001 From: Mark Skelton Date: Sun, 29 Aug 2021 16:48:32 -0500 Subject: [PATCH] Fix private packages (#28) * Move tests around * Update snap * Finish spec * Error when dependency package is not published Fixes #19 * Only skip private packages * Update command comment --- bundles/@yarnpkg/plugin-outdated.js | 2 +- src/OutdatedCommand.ts | 7 +++++++ test/specs/outdated.spec.ts | 20 +++++++++++++++++++ .../outdated.spec.ts-snapshots/private.txt | 8 ++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 test/specs/outdated.spec.ts-snapshots/private.txt diff --git a/bundles/@yarnpkg/plugin-outdated.js b/bundles/@yarnpkg/plugin-outdated.js index 51b1837..b2705eb 100644 --- a/bundles/@yarnpkg/plugin-outdated.js +++ b/bundles/@yarnpkg/plugin-outdated.js @@ -5,7 +5,7 @@ name: "@yarnpkg/plugin-outdated", factory: function (require) { var plugin=(()=>{var Rr=Object.create,de=Object.defineProperty,Ar=Object.defineProperties,yr=Object.getOwnPropertyDescriptor,mr=Object.getOwnPropertyDescriptors,Cr=Object.getOwnPropertyNames,Ve=Object.getOwnPropertySymbols,_r=Object.getPrototypeOf,Ye=Object.prototype.hasOwnProperty,Er=Object.prototype.propertyIsEnumerable;var Je=(e,t,r)=>t in e?de(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,k=(e,t)=>{for(var r in t||(t={}))Ye.call(t,r)&&Je(e,r,t[r]);if(Ve)for(var r of Ve(t))Er.call(t,r)&&Je(e,r,t[r]);return e},j=(e,t)=>Ar(e,mr(t)),xr=e=>de(e,"__esModule",{value:!0});var Z=e=>{if(typeof require!="undefined")return require(e);throw new Error('Dynamic require of "'+e+'" is not supported')};var U=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),br=(e,t)=>{for(var r in t)de(e,r,{get:t[r],enumerable:!0})},Sr=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Cr(t))!Ye.call(e,n)&&n!=="default"&&de(e,n,{get:()=>t[n],enumerable:!(r=yr(t,n))||r.enumerable});return e},ie=e=>Sr(xr(de(e!=null?Rr(_r(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var Se=U(V=>{"use strict";V.isInteger=e=>typeof e=="number"?Number.isInteger(e):typeof e=="string"&&e.trim()!==""?Number.isInteger(Number(e)):!1;V.find=(e,t)=>e.nodes.find(r=>r.type===t);V.exceedsLimit=(e,t,r=1,n)=>n===!1||!V.isInteger(e)||!V.isInteger(t)?!1:(Number(t)-Number(e))/Number(r)>=n;V.escapeNode=(e,t=0,r)=>{let n=e.nodes[t];!n||(r&&n.type===r||n.type==="open"||n.type==="close")&&n.escaped!==!0&&(n.value="\\"+n.value,n.escaped=!0)};V.encloseBrace=e=>e.type!=="brace"?!1:e.commas>>0+e.ranges>>0==0?(e.invalid=!0,!0):!1;V.isInvalidBrace=e=>e.type!=="brace"?!1:e.invalid===!0||e.dollar?!0:e.commas>>0+e.ranges>>0==0||e.open!==!0||e.close!==!0?(e.invalid=!0,!0):!1;V.isOpenOrClose=e=>e.type==="open"||e.type==="close"?!0:e.open===!0||e.close===!0;V.reduce=e=>e.reduce((t,r)=>(r.type==="text"&&t.push(r.value),r.type==="range"&&(r.type="text"),t),[]);V.flatten=(...e)=>{let t=[],r=n=>{for(let s=0;s{"use strict";var et=Se();tt.exports=(e,t={})=>{let r=(n,s={})=>{let a=t.escapeInvalid&&et.isInvalidBrace(s),o=n.invalid===!0&&t.escapeInvalid===!0,i="";if(n.value)return(a||o)&&et.isOpenOrClose(n)?"\\"+n.value:n.value;if(n.value)return n.value;if(n.nodes)for(let g of n.nodes)i+=r(g);return i};return r(e)}});var nt=U((Zn,rt)=>{"use strict";rt.exports=function(e){return typeof e=="number"?e-e==0:typeof e=="string"&&e.trim()!==""?Number.isFinite?Number.isFinite(+e):isFinite(+e):!1}});var ft=U((Vn,pt)=>{"use strict";var st=nt(),ce=(e,t,r)=>{if(st(e)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(t===void 0||e===t)return String(e);if(st(t)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let n=k({relaxZeros:!0},r);typeof n.strictZeros=="boolean"&&(n.relaxZeros=n.strictZeros===!1);let s=String(n.relaxZeros),a=String(n.shorthand),o=String(n.capture),i=String(n.wrap),g=e+":"+t+"="+s+a+o+i;if(ce.cache.hasOwnProperty(g))return ce.cache[g].result;let R=Math.min(e,t),f=Math.max(e,t);if(Math.abs(R-f)===1){let y=e+"|"+t;return n.capture?`(${y})`:n.wrap===!1?y:`(?:${y})`}let A=lt(e)||lt(t),p={min:e,max:t,a:R,b:f},H=[],m=[];if(A&&(p.isPadded=A,p.maxLen=String(p.max).length),R<0){let y=f<0?Math.abs(f):1;m=at(y,Math.abs(R),p,n),R=p.a=0}return f>=0&&(H=at(R,f,p,n)),p.negatives=m,p.positives=H,p.result=Hr(m,H,n),n.capture===!0?p.result=`(${p.result})`:n.wrap!==!1&&H.length+m.length>1&&(p.result=`(?:${p.result})`),ce.cache[g]=p,p.result};function Hr(e,t,r){let n=ke(e,t,"-",!1,r)||[],s=ke(t,e,"",!1,r)||[],a=ke(e,t,"-?",!0,r)||[];return n.concat(a).concat(s).join("|")}function wr(e,t){let r=1,n=1,s=it(e,r),a=new Set([t]);for(;e<=s&&s<=t;)a.add(s),r+=1,s=it(e,r);for(s=ut(t+1,n)-1;e1&&i.count.pop(),i.count.push(f.count[0]),i.string=i.pattern+ct(i.count),o=R+1;continue}r.isPadded&&(A=Or(R,r,n)),f.string=A+f.pattern+ct(f.count),a.push(f),o=R+1,i=f}return a}function ke(e,t,r,n,s){let a=[];for(let o of e){let{string:i}=o;!n&&!ot(t,"string",i)&&a.push(r+i),n&&ot(t,"string",i)&&a.push(r+i)}return a}function Tr(e,t){let r=[];for(let n=0;nt?1:t>e?-1:0}function ot(e,t,r){return e.some(n=>n[t]===r)}function it(e,t){return Number(String(e).slice(0,-t)+"9".repeat(t))}function ut(e,t){return e-e%Math.pow(10,t)}function ct(e){let[t=0,r=""]=e;return r||t>1?`{${t+(r?","+r:"")}}`:""}function Lr(e,t,r){return`[${e}${t-e==1?"":"-"}${t}]`}function lt(e){return/^-?(0+)\d/.test(e)}function Or(e,t,r){if(!t.isPadded)return e;let n=Math.abs(t.maxLen-String(e).length),s=r.relaxZeros!==!1;switch(n){case 0:return"";case 1:return s?"0?":"0";case 2:return s?"0{0,2}":"00";default:return s?`0{0,${n}}`:`0{${n}}`}}ce.cache={};ce.clearCache=()=>ce.cache={};pt.exports=ce});var Pe=U((Yn,Ct)=>{"use strict";var kr=Z("util"),ht=ft(),gt=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Nr=e=>t=>e===!0?Number(t):String(t),Ne=e=>typeof e=="number"||typeof e=="string"&&e!=="",Re=e=>Number.isInteger(+e),Ie=e=>{let t=`${e}`,r=-1;if(t[0]==="-"&&(t=t.slice(1)),t==="0")return!1;for(;t[++r]==="0";);return r>0},Ir=(e,t,r)=>typeof e=="string"||typeof t=="string"?!0:r.stringify===!0,Pr=(e,t,r)=>{if(t>0){let n=e[0]==="-"?"-":"";n&&(e=e.slice(1)),e=n+e.padStart(n?t-1:t,"0")}return r===!1?String(e):e},dt=(e,t)=>{let r=e[0]==="-"?"-":"";for(r&&(e=e.slice(1),t--);e.length{e.negatives.sort((o,i)=>oi?1:0),e.positives.sort((o,i)=>oi?1:0);let r=t.capture?"":"?:",n="",s="",a;return e.positives.length&&(n=e.positives.join("|")),e.negatives.length&&(s=`-(${r}${e.negatives.join("|")})`),n&&s?a=`${n}|${s}`:a=n||s,t.wrap?`(${r}${a})`:a},Rt=(e,t,r,n)=>{if(r)return ht(e,t,k({wrap:!1},n));let s=String.fromCharCode(e);if(e===t)return s;let a=String.fromCharCode(t);return`[${s}-${a}]`},At=(e,t,r)=>{if(Array.isArray(e)){let n=r.wrap===!0,s=r.capture?"":"?:";return n?`(${s}${e.join("|")})`:e.join("|")}return ht(e,t,r)},yt=(...e)=>new RangeError("Invalid range arguments: "+kr.inspect(...e)),mt=(e,t,r)=>{if(r.strictRanges===!0)throw yt([e,t]);return[]},Mr=(e,t)=>{if(t.strictRanges===!0)throw new TypeError(`Expected step "${e}" to be a number`);return[]},Br=(e,t,r=1,n={})=>{let s=Number(e),a=Number(t);if(!Number.isInteger(s)||!Number.isInteger(a)){if(n.strictRanges===!0)throw yt([e,t]);return[]}s===0&&(s=0),a===0&&(a=0);let o=s>a,i=String(e),g=String(t),R=String(r);r=Math.max(Math.abs(r),1);let f=Ie(i)||Ie(g)||Ie(R),A=f?Math.max(i.length,g.length,R.length):0,p=f===!1&&Ir(e,t,n)===!1,H=n.transform||Nr(p);if(n.toRegex&&r===1)return Rt(dt(e,A),dt(t,A),!0,n);let m={negatives:[],positives:[]},y=O=>m[O<0?"negatives":"positives"].push(Math.abs(O)),_=[],b=0;for(;o?s>=a:s<=a;)n.toRegex===!0&&r>1?y(s):_.push(Pr(H(s,b),A,p)),s=o?s-r:s+r,b++;return n.toRegex===!0?r>1?Dr(m,n):At(_,null,k({wrap:!1},n)):_},Ur=(e,t,r=1,n={})=>{if(!Re(e)&&e.length>1||!Re(t)&&t.length>1)return mt(e,t,n);let s=n.transform||(p=>String.fromCharCode(p)),a=`${e}`.charCodeAt(0),o=`${t}`.charCodeAt(0),i=a>o,g=Math.min(a,o),R=Math.max(a,o);if(n.toRegex&&r===1)return Rt(g,R,!1,n);let f=[],A=0;for(;i?a>=o:a<=o;)f.push(s(a,A)),a=i?a-r:a+r,A++;return n.toRegex===!0?At(f,null,{wrap:!1,options:n}):f},we=(e,t,r,n={})=>{if(t==null&&Ne(e))return[e];if(!Ne(e)||!Ne(t))return mt(e,t,n);if(typeof r=="function")return we(e,t,1,{transform:r});if(gt(r))return we(e,t,0,r);let s=k({},n);return s.capture===!0&&(s.wrap=!0),r=r||s.step||1,Re(r)?Re(e)&&Re(t)?Br(e,t,r,s):Ur(e,t,Math.max(Math.abs(r),1),s):r!=null&&!gt(r)?Mr(r,s):we(e,t,1,r)};Ct.exports=we});var xt=U((Jn,Et)=>{"use strict";var Gr=Pe(),_t=Se(),Fr=(e,t={})=>{let r=(n,s={})=>{let a=_t.isInvalidBrace(s),o=n.invalid===!0&&t.escapeInvalid===!0,i=a===!0||o===!0,g=t.escapeInvalid===!0?"\\":"",R="";if(n.isOpen===!0||n.isClose===!0)return g+n.value;if(n.type==="open")return i?g+n.value:"(";if(n.type==="close")return i?g+n.value:")";if(n.type==="comma")return n.prev.type==="comma"?"":i?n.value:"|";if(n.value)return n.value;if(n.nodes&&n.ranges>0){let f=_t.reduce(n.nodes),A=Gr(...f,j(k({},t),{wrap:!1,toRegex:!0}));if(A.length!==0)return f.length>1&&A.length>1?`(${A})`:A}if(n.nodes)for(let f of n.nodes)R+=r(f,n);return R};return r(e)};Et.exports=Fr});var Ht=U((es,St)=>{"use strict";var Kr=Pe(),bt=He(),pe=Se(),le=(e="",t="",r=!1)=>{let n=[];if(e=[].concat(e),t=[].concat(t),!t.length)return e;if(!e.length)return r?pe.flatten(t).map(s=>`{${s}}`):t;for(let s of e)if(Array.isArray(s))for(let a of s)n.push(le(a,t,r));else for(let a of t)r===!0&&typeof a=="string"&&(a=`{${a}}`),n.push(Array.isArray(a)?le(s,a,r):s+a);return pe.flatten(n)},qr=(e,t={})=>{let r=t.rangeLimit===void 0?1e3:t.rangeLimit,n=(s,a={})=>{s.queue=[];let o=a,i=a.queue;for(;o.type!=="brace"&&o.type!=="root"&&o.parent;)o=o.parent,i=o.queue;if(s.invalid||s.dollar){i.push(le(i.pop(),bt(s,t)));return}if(s.type==="brace"&&s.invalid!==!0&&s.nodes.length===2){i.push(le(i.pop(),["{}"]));return}if(s.nodes&&s.ranges>0){let A=pe.reduce(s.nodes);if(pe.exceedsLimit(...A,t.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let p=Kr(...A,t);p.length===0&&(p=bt(s,t)),i.push(le(i.pop(),p)),s.nodes=[];return}let g=pe.encloseBrace(s),R=s.queue,f=s;for(;f.type!=="brace"&&f.type!=="root"&&f.parent;)f=f.parent,R=f.queue;for(let A=0;A{"use strict";wt.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",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:"\xA0",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:"\uFEFF"}});var kt=U((rs,Ot)=>{"use strict";var jr=He(),{MAX_LENGTH:Tt,CHAR_BACKSLASH:De,CHAR_BACKTICK:Wr,CHAR_COMMA:Qr,CHAR_DOT:Xr,CHAR_LEFT_PARENTHESES:zr,CHAR_RIGHT_PARENTHESES:Zr,CHAR_LEFT_CURLY_BRACE:Vr,CHAR_RIGHT_CURLY_BRACE:Yr,CHAR_LEFT_SQUARE_BRACKET:$t,CHAR_RIGHT_SQUARE_BRACKET:Lt,CHAR_DOUBLE_QUOTE:Jr,CHAR_SINGLE_QUOTE:en,CHAR_NO_BREAK_SPACE:tn,CHAR_ZERO_WIDTH_NOBREAK_SPACE:rn}=vt(),nn=(e,t={})=>{if(typeof e!="string")throw new TypeError("Expected a string");let r=t||{},n=typeof r.maxLength=="number"?Math.min(Tt,r.maxLength):Tt;if(e.length>n)throw new SyntaxError(`Input length (${e.length}), exceeds max characters (${n})`);let s={type:"root",input:e,nodes:[]},a=[s],o=s,i=s,g=0,R=e.length,f=0,A=0,p,H={},m=()=>e[f++],y=_=>{if(_.type==="text"&&i.type==="dot"&&(i.type="text"),i&&i.type==="text"&&_.type==="text"){i.value+=_.value;return}return o.nodes.push(_),_.parent=o,_.prev=i,i=_,_};for(y({type:"bos"});f0){if(o.ranges>0){o.ranges=0;let _=o.nodes.shift();o.nodes=[_,{type:"text",value:jr(o)}]}y({type:"comma",value:p}),o.commas++;continue}if(p===Xr&&A>0&&o.commas===0){let _=o.nodes;if(A===0||_.length===0){y({type:"text",value:p});continue}if(i.type==="dot"){if(o.range=[],i.value+=p,i.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,i.type="text";continue}o.ranges++,o.args=[];continue}if(i.type==="range"){_.pop();let b=_[_.length-1];b.value+=i.value+p,i=b,o.ranges--;continue}y({type:"dot",value:p});continue}y({type:"text",value:p})}do if(o=a.pop(),o.type!=="root"){o.nodes.forEach(O=>{O.nodes||(O.type==="open"&&(O.isOpen=!0),O.type==="close"&&(O.isClose=!0),O.nodes||(O.type="text"),O.invalid=!0)});let _=a[a.length-1],b=_.nodes.indexOf(o);_.nodes.splice(b,1,...o.nodes)}while(a.length>0);return y({type:"eos"}),s};Ot.exports=nn});var Pt=U((ns,It)=>{"use strict";var Nt=He(),sn=xt(),an=Ht(),on=kt(),X=(e,t={})=>{let r=[];if(Array.isArray(e))for(let n of e){let s=X.create(n,t);Array.isArray(s)?r.push(...s):r.push(s)}else r=[].concat(X.create(e,t));return t&&t.expand===!0&&t.nodupes===!0&&(r=[...new Set(r)]),r};X.parse=(e,t={})=>on(e,t);X.stringify=(e,t={})=>typeof e=="string"?Nt(X.parse(e,t),t):Nt(e,t);X.compile=(e,t={})=>(typeof e=="string"&&(e=X.parse(e,t)),sn(e,t));X.expand=(e,t={})=>{typeof e=="string"&&(e=X.parse(e,t));let r=an(e,t);return t.noempty===!0&&(r=r.filter(Boolean)),t.nodupes===!0&&(r=[...new Set(r)]),r};X.create=(e,t={})=>e===""||e.length<3?[e]:t.expand!==!0?X.compile(e,t):X.expand(e,t);It.exports=X});var Ae=U((ss,Gt)=>{"use strict";var un=Z("path"),te="\\\\/",Dt=`[^${te}]`,se="\\.",cn="\\+",ln="\\?",ve="\\/",pn="(?=.)",Mt="[^/]",Me=`(?:${ve}|$)`,Bt=`(?:^|${ve})`,Be=`${se}{1,2}${Me}`,fn=`(?!${se})`,hn=`(?!${Bt}${Be})`,gn=`(?!${se}{0,1}${Me})`,dn=`(?!${Be})`,Rn=`[^.${ve}]`,An=`${Mt}*?`,Ut={DOT_LITERAL:se,PLUS_LITERAL:cn,QMARK_LITERAL:ln,SLASH_LITERAL:ve,ONE_CHAR:pn,QMARK:Mt,END_ANCHOR:Me,DOTS_SLASH:Be,NO_DOT:fn,NO_DOTS:hn,NO_DOT_SLASH:gn,NO_DOTS_SLASH:dn,QMARK_NO_DOT:Rn,STAR:An,START_ANCHOR:Bt},yn=j(k({},Ut),{SLASH_LITERAL:`[${te}]`,QMARK:Dt,STAR:`${Dt}*?`,DOTS_SLASH:`${se}{1,2}(?:[${te}]|$)`,NO_DOT:`(?!${se})`,NO_DOTS:`(?!(?:^|[${te}])${se}{1,2}(?:[${te}]|$))`,NO_DOT_SLASH:`(?!${se}{0,1}(?:[${te}]|$))`,NO_DOTS_SLASH:`(?!${se}{1,2}(?:[${te}]|$))`,QMARK_NO_DOT:`[^.${te}]`,START_ANCHOR:`(?:^|[${te}])`,END_ANCHOR:`(?:[${te}]|$)`}),mn={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"};Gt.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:mn,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:un.sep,extglobChars(e){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${e.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(e){return e===!0?yn:Ut}}});var ye=U(W=>{"use strict";var Cn=Z("path"),_n=process.platform==="win32",{REGEX_BACKSLASH:En,REGEX_REMOVE_BACKSLASH:xn,REGEX_SPECIAL_CHARS:bn,REGEX_SPECIAL_CHARS_GLOBAL:Sn}=Ae();W.isObject=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);W.hasRegexChars=e=>bn.test(e);W.isRegexChar=e=>e.length===1&&W.hasRegexChars(e);W.escapeRegex=e=>e.replace(Sn,"\\$1");W.toPosixSlashes=e=>e.replace(En,"/");W.removeBackslashes=e=>e.replace(xn,t=>t==="\\"?"":t);W.supportsLookbehinds=()=>{let e=process.version.slice(1).split(".").map(Number);return e.length===3&&e[0]>=9||e[0]===8&&e[1]>=10};W.isWindows=e=>e&&typeof e.windows=="boolean"?e.windows:_n===!0||Cn.sep==="\\";W.escapeLast=(e,t,r)=>{let n=e.lastIndexOf(t,r);return n===-1?e:e[n-1]==="\\"?W.escapeLast(e,t,n-1):`${e.slice(0,n)}\\${e.slice(n)}`};W.removePrefix=(e,t={})=>{let r=e;return r.startsWith("./")&&(r=r.slice(2),t.prefix="./"),r};W.wrapOutput=(e,t={},r={})=>{let n=r.contains?"":"^",s=r.contains?"":"$",a=`${n}(?:${e})${s}`;return t.negated===!0&&(a=`(?:^(?!${a}).*$)`),a}});var zt=U((os,Xt)=>{"use strict";var Ft=ye(),{CHAR_ASTERISK:Ue,CHAR_AT:Hn,CHAR_BACKWARD_SLASH:me,CHAR_COMMA:wn,CHAR_DOT:Ge,CHAR_EXCLAMATION_MARK:Fe,CHAR_FORWARD_SLASH:Kt,CHAR_LEFT_CURLY_BRACE:Ke,CHAR_LEFT_PARENTHESES:qe,CHAR_LEFT_SQUARE_BRACKET:vn,CHAR_PLUS:Tn,CHAR_QUESTION_MARK:qt,CHAR_RIGHT_CURLY_BRACE:$n,CHAR_RIGHT_PARENTHESES:jt,CHAR_RIGHT_SQUARE_BRACKET:Ln}=Ae(),Wt=e=>e===Kt||e===me,Qt=e=>{e.isPrefix!==!0&&(e.depth=e.isGlobstar?Infinity:1)},On=(e,t)=>{let r=t||{},n=e.length-1,s=r.parts===!0||r.scanToEnd===!0,a=[],o=[],i=[],g=e,R=-1,f=0,A=0,p=!1,H=!1,m=!1,y=!1,_=!1,b=!1,O=!1,N=!1,Y=!1,G=!1,ae=0,F,C,w={value:"",depth:0,isGlob:!1},B=()=>R>=n,l=()=>g.charCodeAt(R+1),$=()=>(F=C,g.charCodeAt(++R));for(;R0&&(oe=g.slice(0,f),g=g.slice(f),A-=f),v&&m===!0&&A>0?(v=g.slice(0,A),u=g.slice(A)):m===!0?(v="",u=g):v=g,v&&v!==""&&v!=="/"&&v!==g&&Wt(v.charCodeAt(v.length-1))&&(v=v.slice(0,-1)),r.unescape===!0&&(u&&(u=Ft.removeBackslashes(u)),v&&O===!0&&(v=Ft.removeBackslashes(v)));let c={prefix:oe,input:e,start:f,base:v,glob:u,isBrace:p,isBracket:H,isGlob:m,isExtglob:y,isGlobstar:_,negated:N,negatedExtglob:Y};if(r.tokens===!0&&(c.maxDepth=0,Wt(C)||o.push(w),c.tokens=o),r.parts===!0||r.tokens===!0){let K;for(let S=0;S{"use strict";var Te=Ae(),z=ye(),{MAX_LENGTH:$e,POSIX_REGEX_SOURCE:kn,REGEX_NON_SPECIAL_CHARS:Nn,REGEX_SPECIAL_CHARS_BACKREF:In,REPLACEMENTS:Zt}=Te,Pn=(e,t)=>{if(typeof t.expandRange=="function")return t.expandRange(...e,t);e.sort();let r=`[${e.join("-")}]`;try{new RegExp(r)}catch(n){return e.map(s=>z.escapeRegex(s)).join("..")}return r},fe=(e,t)=>`Missing ${e}: "${t}" - use "\\\\${t}" to match literal characters`,Vt=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");e=Zt[e]||e;let r=k({},t),n=typeof r.maxLength=="number"?Math.min($e,r.maxLength):$e,s=e.length;if(s>n)throw new SyntaxError(`Input length: ${s}, exceeds maximum allowed length: ${n}`);let a={type:"bos",value:"",output:r.prepend||""},o=[a],i=r.capture?"":"?:",g=z.isWindows(t),R=Te.globChars(g),f=Te.extglobChars(R),{DOT_LITERAL:A,PLUS_LITERAL:p,SLASH_LITERAL:H,ONE_CHAR:m,DOTS_SLASH:y,NO_DOT:_,NO_DOT_SLASH:b,NO_DOTS_SLASH:O,QMARK:N,QMARK_NO_DOT:Y,STAR:G,START_ANCHOR:ae}=R,F=d=>`(${i}(?:(?!${ae}${d.dot?y:A}).)*?)`,C=r.dot?"":_,w=r.dot?N:Y,B=r.bash===!0?F(r):G;r.capture&&(B=`(${B})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let l={input:e,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};e=z.removePrefix(e,l),s=e.length;let $=[],v=[],oe=[],u=a,c,K=()=>l.index===s-1,S=l.peek=(d=1)=>e[l.index+d],J=l.advance=()=>e[++l.index]||"",ee=()=>e.slice(l.index+1),Q=(d="",T=0)=>{l.consumed+=d,l.index+=T},_e=d=>{l.output+=d.output!=null?d.output:d.value,Q(d.value)},gr=()=>{let d=1;for(;S()==="!"&&(S(2)!=="("||S(3)==="?");)J(),l.start++,d++;return d%2==0?!1:(l.negated=!0,l.start++,!0)},Ee=d=>{l[d]++,oe.push(d)},ue=d=>{l[d]--,oe.pop()},x=d=>{if(u.type==="globstar"){let T=l.braces>0&&(d.type==="comma"||d.type==="brace"),h=d.extglob===!0||$.length&&(d.type==="pipe"||d.type==="paren");d.type!=="slash"&&d.type!=="paren"&&!T&&!h&&(l.output=l.output.slice(0,-u.output.length),u.type="star",u.value="*",u.output=B,l.output+=u.output)}if($.length&&d.type!=="paren"&&($[$.length-1].inner+=d.value),(d.value||d.output)&&_e(d),u&&u.type==="text"&&d.type==="text"){u.value+=d.value,u.output=(u.output||"")+d.value;return}d.prev=u,o.push(d),u=d},xe=(d,T)=>{let h=j(k({},f[T]),{conditions:1,inner:""});h.prev=u,h.parens=l.parens,h.output=l.output;let E=(r.capture?"(":"")+h.open;Ee("parens"),x({type:d,value:T,output:l.output?"":m}),x({type:"paren",extglob:!0,value:J(),output:E}),$.push(h)},dr=d=>{let T=d.close+(r.capture?")":""),h;if(d.type==="negate"){let E=B;d.inner&&d.inner.length>1&&d.inner.includes("/")&&(E=F(r)),(E!==B||K()||/^\)+$/.test(ee()))&&(T=d.close=`)$))${E}`),d.inner.includes("*")&&(h=ee())&&/^\.[^\\/.]+$/.test(h)&&(T=d.close=`)${h})${E})`),d.prev.type==="bos"&&(l.negatedExtglob=!0)}x({type:"paren",extglob:!0,value:c,output:T}),ue("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(e)){let d=!1,T=e.replace(In,(h,E,I,q,M,Oe)=>q==="\\"?(d=!0,h):q==="?"?E?E+q+(M?N.repeat(M.length):""):Oe===0?w+(M?N.repeat(M.length):""):N.repeat(I.length):q==="."?A.repeat(I.length):q==="*"?E?E+q+(M?B:""):B:E?h:`\\${h}`);return d===!0&&(r.unescape===!0?T=T.replace(/\\/g,""):T=T.replace(/\\+/g,h=>h.length%2==0?"\\\\":h?"\\":"")),T===e&&r.contains===!0?(l.output=e,l):(l.output=z.wrapOutput(T,l,t),l)}for(;!K();){if(c=J(),c==="\0")continue;if(c==="\\"){let h=S();if(h==="/"&&r.bash!==!0||h==="."||h===";")continue;if(!h){c+="\\",x({type:"text",value:c});continue}let E=/^\\+/.exec(ee()),I=0;if(E&&E[0].length>2&&(I=E[0].length,l.index+=I,I%2!=0&&(c+="\\")),r.unescape===!0?c=J():c+=J(),l.brackets===0){x({type:"text",value:c});continue}}if(l.brackets>0&&(c!=="]"||u.value==="["||u.value==="[^")){if(r.posix!==!1&&c===":"){let h=u.value.slice(1);if(h.includes("[")&&(u.posix=!0,h.includes(":"))){let E=u.value.lastIndexOf("["),I=u.value.slice(0,E),q=u.value.slice(E+2),M=kn[q];if(M){u.value=I+M,l.backtrack=!0,J(),!a.output&&o.indexOf(u)===1&&(a.output=m);continue}}}(c==="["&&S()!==":"||c==="-"&&S()==="]")&&(c=`\\${c}`),c==="]"&&(u.value==="["||u.value==="[^")&&(c=`\\${c}`),r.posix===!0&&c==="!"&&u.value==="["&&(c="^"),u.value+=c,_e({value:c});continue}if(l.quotes===1&&c!=='"'){c=z.escapeRegex(c),u.value+=c,_e({value:c});continue}if(c==='"'){l.quotes=l.quotes===1?0:1,r.keepQuotes===!0&&x({type:"text",value:c});continue}if(c==="("){Ee("parens"),x({type:"paren",value:c});continue}if(c===")"){if(l.parens===0&&r.strictBrackets===!0)throw new SyntaxError(fe("opening","("));let h=$[$.length-1];if(h&&l.parens===h.parens+1){dr($.pop());continue}x({type:"paren",value:c,output:l.parens?")":"\\)"}),ue("parens");continue}if(c==="["){if(r.nobracket===!0||!ee().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(fe("closing","]"));c=`\\${c}`}else Ee("brackets");x({type:"bracket",value:c});continue}if(c==="]"){if(r.nobracket===!0||u&&u.type==="bracket"&&u.value.length===1){x({type:"text",value:c,output:`\\${c}`});continue}if(l.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(fe("opening","["));x({type:"text",value:c,output:`\\${c}`});continue}ue("brackets");let h=u.value.slice(1);if(u.posix!==!0&&h[0]==="^"&&!h.includes("/")&&(c=`/${c}`),u.value+=c,_e({value:c}),r.literalBrackets===!1||z.hasRegexChars(h))continue;let E=z.escapeRegex(u.value);if(l.output=l.output.slice(0,-u.value.length),r.literalBrackets===!0){l.output+=E,u.value=E;continue}u.value=`(${i}${E}|${u.value})`,l.output+=u.value;continue}if(c==="{"&&r.nobrace!==!0){Ee("braces");let h={type:"brace",value:c,output:"(",outputIndex:l.output.length,tokensIndex:l.tokens.length};v.push(h),x(h);continue}if(c==="}"){let h=v[v.length-1];if(r.nobrace===!0||!h){x({type:"text",value:c,output:c});continue}let E=")";if(h.dots===!0){let I=o.slice(),q=[];for(let M=I.length-1;M>=0&&(o.pop(),I[M].type!=="brace");M--)I[M].type!=="dots"&&q.unshift(I[M].value);E=Pn(q,r),l.backtrack=!0}if(h.comma!==!0&&h.dots!==!0){let I=l.output.slice(0,h.outputIndex),q=l.tokens.slice(h.tokensIndex);h.value=h.output="\\{",c=E="\\}",l.output=I;for(let M of q)l.output+=M.output||M.value}x({type:"brace",value:c,output:E}),ue("braces"),v.pop();continue}if(c==="|"){$.length>0&&$[$.length-1].conditions++,x({type:"text",value:c});continue}if(c===","){let h=c,E=v[v.length-1];E&&oe[oe.length-1]==="braces"&&(E.comma=!0,h="|"),x({type:"comma",value:c,output:h});continue}if(c==="/"){if(u.type==="dot"&&l.index===l.start+1){l.start=l.index+1,l.consumed="",l.output="",o.pop(),u=a;continue}x({type:"slash",value:c,output:H});continue}if(c==="."){if(l.braces>0&&u.type==="dot"){u.value==="."&&(u.output=A);let h=v[v.length-1];u.type="dots",u.output+=c,u.value+=c,h.dots=!0;continue}if(l.braces+l.parens===0&&u.type!=="bos"&&u.type!=="slash"){x({type:"text",value:c,output:A});continue}x({type:"dot",value:c,output:A});continue}if(c==="?"){if(!(u&&u.value==="(")&&r.noextglob!==!0&&S()==="("&&S(2)!=="?"){xe("qmark",c);continue}if(u&&u.type==="paren"){let E=S(),I=c;if(E==="<"&&!z.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(u.value==="("&&!/[!=<:]/.test(E)||E==="<"&&!/<([!=]|\w+>)/.test(ee()))&&(I=`\\${c}`),x({type:"text",value:c,output:I});continue}if(r.dot!==!0&&(u.type==="slash"||u.type==="bos")){x({type:"qmark",value:c,output:Y});continue}x({type:"qmark",value:c,output:N});continue}if(c==="!"){if(r.noextglob!==!0&&S()==="("&&(S(2)!=="?"||!/[!=<:]/.test(S(3)))){xe("negate",c);continue}if(r.nonegate!==!0&&l.index===0){gr();continue}}if(c==="+"){if(r.noextglob!==!0&&S()==="("&&S(2)!=="?"){xe("plus",c);continue}if(u&&u.value==="("||r.regex===!1){x({type:"plus",value:c,output:p});continue}if(u&&(u.type==="bracket"||u.type==="paren"||u.type==="brace")||l.parens>0){x({type:"plus",value:c});continue}x({type:"plus",value:p});continue}if(c==="@"){if(r.noextglob!==!0&&S()==="("&&S(2)!=="?"){x({type:"at",extglob:!0,value:c,output:""});continue}x({type:"text",value:c});continue}if(c!=="*"){(c==="$"||c==="^")&&(c=`\\${c}`);let h=Nn.exec(ee());h&&(c+=h[0],l.index+=h[0].length),x({type:"text",value:c});continue}if(u&&(u.type==="globstar"||u.star===!0)){u.type="star",u.star=!0,u.value+=c,u.output=B,l.backtrack=!0,l.globstar=!0,Q(c);continue}let d=ee();if(r.noextglob!==!0&&/^\([^?]/.test(d)){xe("star",c);continue}if(u.type==="star"){if(r.noglobstar===!0){Q(c);continue}let h=u.prev,E=h.prev,I=h.type==="slash"||h.type==="bos",q=E&&(E.type==="star"||E.type==="globstar");if(r.bash===!0&&(!I||d[0]&&d[0]!=="/")){x({type:"star",value:c,output:""});continue}let M=l.braces>0&&(h.type==="comma"||h.type==="brace"),Oe=$.length&&(h.type==="pipe"||h.type==="paren");if(!I&&h.type!=="paren"&&!M&&!Oe){x({type:"star",value:c,output:""});continue}for(;d.slice(0,3)==="/**";){let be=e[l.index+4];if(be&&be!=="/")break;d=d.slice(3),Q("/**",3)}if(h.type==="bos"&&K()){u.type="globstar",u.value+=c,u.output=F(r),l.output=u.output,l.globstar=!0,Q(c);continue}if(h.type==="slash"&&h.prev.type!=="bos"&&!q&&K()){l.output=l.output.slice(0,-(h.output+u.output).length),h.output=`(?:${h.output}`,u.type="globstar",u.output=F(r)+(r.strictSlashes?")":"|$)"),u.value+=c,l.globstar=!0,l.output+=h.output+u.output,Q(c);continue}if(h.type==="slash"&&h.prev.type!=="bos"&&d[0]==="/"){let be=d[1]!==void 0?"|$":"";l.output=l.output.slice(0,-(h.output+u.output).length),h.output=`(?:${h.output}`,u.type="globstar",u.output=`${F(r)}${H}|${H}${be})`,u.value+=c,l.output+=h.output+u.output,l.globstar=!0,Q(c+J()),x({type:"slash",value:"/",output:""});continue}if(h.type==="bos"&&d[0]==="/"){u.type="globstar",u.value+=c,u.output=`(?:^|${H}|${F(r)}${H})`,l.output=u.output,l.globstar=!0,Q(c+J()),x({type:"slash",value:"/",output:""});continue}l.output=l.output.slice(0,-u.output.length),u.type="globstar",u.output=F(r),u.value+=c,l.output+=u.output,l.globstar=!0,Q(c);continue}let T={type:"star",value:c,output:B};if(r.bash===!0){T.output=".*?",(u.type==="bos"||u.type==="slash")&&(T.output=C+T.output),x(T);continue}if(u&&(u.type==="bracket"||u.type==="paren")&&r.regex===!0){T.output=c,x(T);continue}(l.index===l.start||u.type==="slash"||u.type==="dot")&&(u.type==="dot"?(l.output+=b,u.output+=b):r.dot===!0?(l.output+=O,u.output+=O):(l.output+=C,u.output+=C),S()!=="*"&&(l.output+=m,u.output+=m)),x(T)}for(;l.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(fe("closing","]"));l.output=z.escapeLast(l.output,"["),ue("brackets")}for(;l.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(fe("closing",")"));l.output=z.escapeLast(l.output,"("),ue("parens")}for(;l.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(fe("closing","}"));l.output=z.escapeLast(l.output,"{"),ue("braces")}if(r.strictSlashes!==!0&&(u.type==="star"||u.type==="bracket")&&x({type:"maybe_slash",value:"",output:`${H}?`}),l.backtrack===!0){l.output="";for(let d of l.tokens)l.output+=d.output!=null?d.output:d.value,d.suffix&&(l.output+=d.suffix)}return l};Vt.fastpaths=(e,t)=>{let r=k({},t),n=typeof r.maxLength=="number"?Math.min($e,r.maxLength):$e,s=e.length;if(s>n)throw new SyntaxError(`Input length: ${s}, exceeds maximum allowed length: ${n}`);e=Zt[e]||e;let a=z.isWindows(t),{DOT_LITERAL:o,SLASH_LITERAL:i,ONE_CHAR:g,DOTS_SLASH:R,NO_DOT:f,NO_DOTS:A,NO_DOTS_SLASH:p,STAR:H,START_ANCHOR:m}=Te.globChars(a),y=r.dot?A:f,_=r.dot?p:f,b=r.capture?"":"?:",O={negated:!1,prefix:""},N=r.bash===!0?".*?":H;r.capture&&(N=`(${N})`);let Y=C=>C.noglobstar===!0?N:`(${b}(?:(?!${m}${C.dot?R:o}).)*?)`,G=C=>{switch(C){case"*":return`${y}${g}${N}`;case".*":return`${o}${g}${N}`;case"*.*":return`${y}${N}${o}${g}${N}`;case"*/*":return`${y}${N}${i}${g}${_}${N}`;case"**":return y+Y(r);case"**/*":return`(?:${y}${Y(r)}${i})?${_}${g}${N}`;case"**/*.*":return`(?:${y}${Y(r)}${i})?${_}${N}${o}${g}${N}`;case"**/.*":return`(?:${y}${Y(r)}${i})?${o}${g}${N}`;default:{let w=/^(.*?)\.(\w+)$/.exec(C);if(!w)return;let B=G(w[1]);return B?B+o+w[2]:void 0}}},ae=z.removePrefix(e,O),F=G(ae);return F&&r.strictSlashes!==!0&&(F+=`${i}?`),F};Yt.exports=Vt});var tr=U((us,er)=>{"use strict";var Dn=Z("path"),Mn=zt(),je=Jt(),We=ye(),Bn=Ae(),Un=e=>e&&typeof e=="object"&&!Array.isArray(e),P=(e,t,r=!1)=>{if(Array.isArray(e)){let f=e.map(p=>P(p,t,r));return p=>{for(let H of f){let m=H(p);if(m)return m}return!1}}let n=Un(e)&&e.tokens&&e.input;if(e===""||typeof e!="string"&&!n)throw new TypeError("Expected pattern to be a non-empty string");let s=t||{},a=We.isWindows(t),o=n?P.compileRe(e,t):P.makeRe(e,t,!1,!0),i=o.state;delete o.state;let g=()=>!1;if(s.ignore){let f=j(k({},t),{ignore:null,onMatch:null,onResult:null});g=P(s.ignore,f,r)}let R=(f,A=!1)=>{let{isMatch:p,match:H,output:m}=P.test(f,o,t,{glob:e,posix:a}),y={glob:e,state:i,regex:o,posix:a,input:f,output:m,match:H,isMatch:p};return typeof s.onResult=="function"&&s.onResult(y),p===!1?(y.isMatch=!1,A?y:!1):g(f)?(typeof s.onIgnore=="function"&&s.onIgnore(y),y.isMatch=!1,A?y:!1):(typeof s.onMatch=="function"&&s.onMatch(y),A?y:!0)};return r&&(R.state=i),R};P.test=(e,t,r,{glob:n,posix:s}={})=>{if(typeof e!="string")throw new TypeError("Expected input to be a string");if(e==="")return{isMatch:!1,output:""};let a=r||{},o=a.format||(s?We.toPosixSlashes:null),i=e===n,g=i&&o?o(e):e;return i===!1&&(g=o?o(e):e,i=g===n),(i===!1||a.capture===!0)&&(a.matchBase===!0||a.basename===!0?i=P.matchBase(e,t,r,s):i=t.exec(g)),{isMatch:Boolean(i),match:i,output:g}};P.matchBase=(e,t,r,n=We.isWindows(r))=>(t instanceof RegExp?t:P.makeRe(t,r)).test(Dn.basename(e));P.isMatch=(e,t,r)=>P(t,r)(e);P.parse=(e,t)=>Array.isArray(e)?e.map(r=>P.parse(r,t)):je(e,j(k({},t),{fastpaths:!1}));P.scan=(e,t)=>Mn(e,t);P.compileRe=(e,t,r=!1,n=!1)=>{if(r===!0)return e.output;let s=t||{},a=s.contains?"":"^",o=s.contains?"":"$",i=`${a}(?:${e.output})${o}`;e&&e.negated===!0&&(i=`^(?!${i}).*$`);let g=P.toRegex(i,t);return n===!0&&(g.state=e),g};P.makeRe=(e,t={},r=!1,n=!1)=>{if(!e||typeof e!="string")throw new TypeError("Expected a non-empty string");let s={negated:!1,fastpaths:!0};return t.fastpaths!==!1&&(e[0]==="."||e[0]==="*")&&(s.output=je.fastpaths(e,t)),s.output||(s=je(e,t)),P.compileRe(s,t,r,n)};P.toRegex=(e,t)=>{try{let r=t||{};return new RegExp(e,r.flags||(r.nocase?"i":""))}catch(r){if(t&&t.debug===!0)throw r;return/$^/}};P.constants=Bn;er.exports=P});var nr=U((cs,rr)=>{"use strict";rr.exports=tr()});var ur=U((ls,ir)=>{"use strict";var sr=Z("util"),ar=Pt(),re=nr(),Qe=ye(),or=e=>e===""||e==="./",L=(e,t,r)=>{t=[].concat(t),e=[].concat(e);let n=new Set,s=new Set,a=new Set,o=0,i=f=>{a.add(f.output),r&&r.onResult&&r.onResult(f)};for(let f=0;f!n.has(f));if(r&&R.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${t.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?t.map(f=>f.replace(/\\/g,"")):t}return R};L.match=L;L.matcher=(e,t)=>re(e,t);L.isMatch=(e,t,r)=>re(t,r)(e);L.any=L.isMatch;L.not=(e,t,r={})=>{t=[].concat(t).map(String);let n=new Set,s=[],a=i=>{r.onResult&&r.onResult(i),s.push(i.output)},o=L(e,t,j(k({},r),{onResult:a}));for(let i of s)o.includes(i)||n.add(i);return[...n]};L.contains=(e,t,r)=>{if(typeof e!="string")throw new TypeError(`Expected a string: "${sr.inspect(e)}"`);if(Array.isArray(t))return t.some(n=>L.contains(e,n,r));if(typeof t=="string"){if(or(e)||or(t))return!1;if(e.includes(t)||e.startsWith("./")&&e.slice(2).includes(t))return!0}return L.isMatch(e,t,j(k({},r),{contains:!0}))};L.matchKeys=(e,t,r)=>{if(!Qe.isObject(e))throw new TypeError("Expected the first argument to be an object");let n=L(Object.keys(e),t,r),s={};for(let a of n)s[a]=e[a];return s};L.some=(e,t,r)=>{let n=[].concat(e);for(let s of[].concat(t)){let a=re(String(s),r);if(n.some(o=>a(o)))return!0}return!1};L.every=(e,t,r)=>{let n=[].concat(e);for(let s of[].concat(t)){let a=re(String(s),r);if(!n.every(o=>a(o)))return!1}return!0};L.all=(e,t,r)=>{if(typeof e!="string")throw new TypeError(`Expected a string: "${sr.inspect(e)}"`);return[].concat(t).every(n=>re(n,r)(e))};L.capture=(e,t,r)=>{let n=Qe.isWindows(r),a=re.makeRe(String(e),j(k({},r),{capture:!0})).exec(n?Qe.toPosixSlashes(t):t);if(a)return a.slice(1).map(o=>o===void 0?"":o)};L.makeRe=(...e)=>re.makeRe(...e);L.scan=(...e)=>re.scan(...e);L.parse=(e,t)=>{let r=[];for(let n of[].concat(e||[]))for(let s of ar(String(n),t))r.push(re.parse(s,t));return r};L.braces=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");return t&&t.nobrace===!0||!/\{.*\}/.test(e)?[e]:ar(e,t)};L.braceExpand=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");return L.braces(e,j(k({},t),{expand:!0}))};ir.exports=L});var Wn={};br(Wn,{default:()=>jn});var Le=ie(Z("@yarnpkg/cli")),D=ie(Z("@yarnpkg/core")),ne=ie(Z("clipanion")),hr=ie(ur());var he=ie(Z("@yarnpkg/core")),pr=ie(Z("@yarnpkg/plugin-essentials"));var cr=Boolean;function Gn(e){var s;let[t,r,n]=(s=e.match(/(github|bitbucket|gitlab):(.+)/))!=null?s:[];return r?`https://${r}.${r==="bitbucket"?"org":"com"}/${n}`:`https://github.com/${e}`}function lr(e){let{homepage:t,repository:r}=e.raw;return t||(typeof r=="string"?Gn(r):r==null?void 0:r.url)}var Xe=class{constructor(t,r,n,s){this.configuration=t;this.project=r;this.workspace=n;this.cache=s}async fetch({pkg:t,range:r,url:n}){let s=pr.suggestUtils.fetchDescriptorFrom(t,r,{cache:this.cache,preserveModifier:!1,project:this.project,workspace:this.workspace}),a=n?this.fetchURL(t):Promise.resolve(void 0),[o,i]=await Promise.all([s,a]);if(!o){let g=he.structUtils.prettyIdent(this.configuration,t);throw new Error(`Could not fetch candidate for ${g}.`)}return{url:i,version:o.range}}async fetchURL(t){var a;let r=this.configuration.makeFetcher(),n=await r.fetch(t,{cache:this.cache,checksums:this.project.storedChecksums,fetcher:r,project:this.project,report:new he.ThrowReport,skipIntegrityCheck:!0}),s;try{s=await he.Manifest.find(n.prefixPath,{baseFs:n.packageFs})}finally{(a=n.releaseFs)==null||a.call(n)}return lr(s)}};var ge=ie(Z("@yarnpkg/core")),ze=ie(Z("semver")),Fn=/^([0-9]+\.)([0-9]+\.)(.+)$/,Kn=["name","current","latest","workspace","type","url"],Ze=class{constructor(t,r,n,s){this.report=t;this.configuration=r;this.dependencies=n;this.extraColumns=s;this.sizes=null;this.headers={current:"Current",latest:"Latest",name:"Package",type:"Package Type",url:"URL",workspace:"Workspace"}}print(){this.sizes=this.getColumnSizes(),this.printHeader(),this.dependencies.forEach(t=>{var n,s;let r=this.getDiffColor(t);this.printRow({current:t.current.padEnd(this.sizes.current),latest:this.formatVersion(t,"latest",r),name:this.applyColor(t.name.padEnd(this.sizes.name),r),type:t.type.padEnd(this.sizes.type),url:(n=t.url)==null?void 0:n.padEnd(this.sizes.url),workspace:(s=t.workspace)==null?void 0:s.padEnd(this.sizes.workspace)})})}applyColor(t,r){return ge.formatUtils.pretty(this.configuration,t,r)}formatVersion(t,r,n){let s=t[r].padEnd(this.sizes[r]),a=s.match(Fn);if(!a)return s;let o=["red","yellow","green"].indexOf(n)+1,i=a.slice(1,o).join(""),g=a.slice(o).join("");return i+ge.formatUtils.pretty(this.configuration,this.applyColor(g,n),"bold")}getDiffColor(t){let r=ze.coerce(t.current),n=ze.coerce(t.latest);return n.major>r.major?"red":n.minor>r.minor?"yellow":"green"}getColumnSizes(){let t={current:this.headers.current.length,latest:this.headers.latest.length,name:this.headers.name.length,type:this.headers.type.length,url:this.headers.url.length,workspace:this.headers.workspace.length};for(let r of this.dependencies)for(let[n,s]of Object.entries(r)){let a=t[n],o=(s||"").length;t[n]=a>o?a:o}return t}formatColumnHeader(t){return ge.formatUtils.pretty(this.configuration,this.headers[t].padEnd(this.sizes[t]),"bold")}printHeader(){this.printRow({current:this.formatColumnHeader("current"),latest:this.formatColumnHeader("latest"),name:this.formatColumnHeader("name"),type:this.formatColumnHeader("type"),url:this.formatColumnHeader("url"),workspace:this.formatColumnHeader("workspace")})}printRow(t){let r=Kn.filter(n=>{var s;return(s=this.extraColumns[n])!=null?s:!0}).map(n=>t[n]).join(" ").trim();this.report.reportInfo(ge.MessageName.UNNAMED,r)}};var fr=["dependencies","devDependencies"];var Ce=class extends Le.BaseCommand{constructor(){super(...arguments);this.patterns=ne.Option.Rest();this.all=ne.Option.Boolean("-a,--all",!1,{description:"Include outdated dependencies from all workspaces"});this.check=ne.Option.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when outdated dependencies are found"});this.url=ne.Option.Boolean("--url",!1,{description:"Include the homepage URL of each package in the output"});this.json=ne.Option.Boolean("--json",!1,{description:"Format the output as JSON"})}async execute(){let{cache:t,configuration:r,project:n,workspace:s}=await this.loadProject(),a=new Xe(r,n,s,t),o=this.getWorkspaces(n,s),i=this.getDependencies(r,o);if(this.json){let R=await this.getOutdatedDependencies(a,i);this.context.stdout.write(JSON.stringify(R)+` -`);return}return(await D.StreamReport.start({configuration:r,stdout:this.context.stdout},async R=>{await this.checkOutdatedDependencies(r,i,a,R)})).exitCode()}async checkOutdatedDependencies(t,r,n,s){let a=null;await s.startTimerPromise("Checking for outdated dependencies",async()=>{let o=r.length,i=D.StreamReport.progressViaCounter(o);s.reportProgress(i),a=await this.getOutdatedDependencies(n,r,i)}),s.reportSeparator(),a.length?(new Ze(s,t,a,{url:this.url,workspace:this.all}).print(),s.reportSeparator(),this.printOutdatedCount(s,a.length)):this.printUpToDate(t,s)}async loadProject(){let t=await D.Configuration.find(this.context.cwd,this.context.plugins),[r,{project:n,workspace:s}]=await Promise.all([D.Cache.find(t),D.Project.find(t,this.context.cwd)]);if(await n.restoreInstallState(),!s)throw new Le.WorkspaceRequiredError(n.cwd,this.context.cwd);return{cache:r,configuration:t,project:n,workspace:s}}getWorkspaces(t,r){return this.all?t.workspaces:[r]}getDependencies(t,r){let n=[];for(let a of r){let{anchoredLocator:o,project:i}=a,g=i.storedPackages.get(o.locatorHash);g||this.throw(t,o);for(let R of fr)for(let f of a.manifest[R].values()){let A=g.dependencies.get(f.identHash);A||this.throw(t,f);let p=i.storedResolutions.get(A.descriptorHash);p||this.throw(t,A);let H=i.storedPackages.get(p);H||this.throw(t,A),n.push({dependencyType:R,name:D.structUtils.stringifyIdent(H),pkg:H,workspace:a})}}if(!this.patterns.length)return n;let s=n.filter(({name:a})=>hr.isMatch(a,this.patterns));if(!s.length)throw new ne.UsageError(`Pattern ${D.formatUtils.prettyList(t,this.patterns,D.FormatType.CODE)} doesn't match any packages referenced by any workspace`);return s}throw(t,r){let n=D.structUtils.prettyIdent(t,r);throw new Error(`Package for ${n} not found in the project`)}async getOutdatedDependencies(t,r,n){let s=r.map(async({dependencyType:a,name:o,pkg:i,workspace:g})=>{let{url:R,version:f}=await t.fetch({pkg:i,range:"latest",url:this.url});if(n==null||n.tick(),i.version!==f)return{current:i.version,latest:f,name:o,type:a,url:R,workspace:this.all?this.getWorkspaceName(g):void 0}});return(await Promise.all(s)).filter(cr).sort((a,o)=>a.name.localeCompare(o.name))}getWorkspaceName(t){return t.manifest.name?D.structUtils.stringifyIdent(t.manifest.name):t.computeCandidateName()}printOutdatedCount(t,r){let n=[D.MessageName.UNNAMED,r===1?"1 dependency is out of date":`${r} dependencies are out of date`];this.check?t.reportError(...n):t.reportWarning(...n)}printUpToDate(t,r){let n="\u2728 All your dependencies are up to date!";r.reportInfo(D.MessageName.UNNAMED,D.formatUtils.pretty(t,n,"green"))}};Ce.paths=[["outdated"]],Ce.usage=ne.Command.Usage({description:"view outdated dependencies",details:` +`);return}return(await D.StreamReport.start({configuration:r,stdout:this.context.stdout},async R=>{await this.checkOutdatedDependencies(r,i,a,R)})).exitCode()}async checkOutdatedDependencies(t,r,n,s){let a=null;await s.startTimerPromise("Checking for outdated dependencies",async()=>{let o=r.length,i=D.StreamReport.progressViaCounter(o);s.reportProgress(i),a=await this.getOutdatedDependencies(n,r,i)}),s.reportSeparator(),a.length?(new Ze(s,t,a,{url:this.url,workspace:this.all}).print(),s.reportSeparator(),this.printOutdatedCount(s,a.length)):this.printUpToDate(t,s)}async loadProject(){let t=await D.Configuration.find(this.context.cwd,this.context.plugins),[r,{project:n,workspace:s}]=await Promise.all([D.Cache.find(t),D.Project.find(t,this.context.cwd)]);if(await n.restoreInstallState(),!s)throw new Le.WorkspaceRequiredError(n.cwd,this.context.cwd);return{cache:r,configuration:t,project:n,workspace:s}}getWorkspaces(t,r){return this.all?t.workspaces:[r]}getDependencies(t,r){let n=[];for(let a of r){let{anchoredLocator:o,project:i}=a,g=i.storedPackages.get(o.locatorHash);g||this.throw(t,o);for(let R of fr)for(let f of a.manifest[R].values()){let A=g.dependencies.get(f.identHash);A||this.throw(t,f);let p=i.storedResolutions.get(A.descriptorHash);p||this.throw(t,A);let H=i.storedPackages.get(p);H||this.throw(t,A),n.push({dependencyType:R,name:D.structUtils.stringifyIdent(H),pkg:H,workspace:a})}}if(!this.patterns.length)return n;let s=n.filter(({name:a})=>hr.isMatch(a,this.patterns));if(!s.length)throw new ne.UsageError(`Pattern ${D.formatUtils.prettyList(t,this.patterns,D.FormatType.CODE)} doesn't match any packages referenced by any workspace`);return s}throw(t,r){let n=D.structUtils.prettyIdent(t,r);throw new Error(`Package for ${n} not found in the project`)}async getOutdatedDependencies(t,r,n){let s=r.map(async({dependencyType:a,name:o,pkg:i,workspace:g})=>{if(g.project.tryWorkspaceByLocator(i))return;let{url:R,version:f}=await t.fetch({pkg:i,range:"latest",url:this.url});if(n==null||n.tick(),i.version!==f)return{current:i.version,latest:f,name:o,type:a,url:R,workspace:this.all?this.getWorkspaceName(g):void 0}});return(await Promise.all(s)).filter(cr).sort((a,o)=>a.name.localeCompare(o.name))}getWorkspaceName(t){return t.manifest.name?D.structUtils.stringifyIdent(t.manifest.name):t.computeCandidateName()}printOutdatedCount(t,r){let n=[D.MessageName.UNNAMED,r===1?"1 dependency is out of date":`${r} dependencies are out of date`];this.check?t.reportError(...n):t.reportWarning(...n)}printUpToDate(t,r){let n="\u2728 All your dependencies are up to date!";r.reportInfo(D.MessageName.UNNAMED,D.formatUtils.pretty(t,n,"green"))}};Ce.paths=[["outdated"]],Ce.usage=ne.Command.Usage({description:"view outdated dependencies",details:` This command finds outdated dependencies in a project and prints the result in a table or JSON format. This command accepts glob patterns as arguments to filter the output. Make sure to escape the patterns, to prevent your own shell from trying to expand them. diff --git a/src/OutdatedCommand.ts b/src/OutdatedCommand.ts index 8cd5755..c714b2b 100644 --- a/src/OutdatedCommand.ts +++ b/src/OutdatedCommand.ts @@ -256,6 +256,13 @@ export class OutdatedCommand extends BaseCommand { ): Promise { const outdated = dependencies.map( async ({ dependencyType, name, pkg, workspace }) => { + // If the dependency is a workspace, then we don't need to check + // if it is outdated. These type of packages tend to be versioned with + // a tool like Lerna or they are private. + if (workspace.project.tryWorkspaceByLocator(pkg)) { + return + } + const { url, version: latest } = await fetcher.fetch({ pkg, range: "latest", diff --git a/test/specs/outdated.spec.ts b/test/specs/outdated.spec.ts index 41c24a1..be7b66e 100644 --- a/test/specs/outdated.spec.ts +++ b/test/specs/outdated.spec.ts @@ -108,4 +108,24 @@ test.describe("yarn outdated", () => { expect(stdout).toMatchSnapshot("resolutions.txt") expect(stderr).toBe("") }) + + test("skips private packages", async ({ env }) => { + const { run, writeJSON } = env + + await writeJSON("package.json", { workspaces: ["packages/*"] }) + await writeJSON("packages/a/package.json", { + name: "a", + private: true, + version: "1.1.0", + }) + await writeJSON("packages/b/package.json", { + dependencies: { a: "1.1.0", patch: "1.0.0" }, + name: "b", + }) + await run("install") + + const { stderr, stdout } = await run("outdated --all") + expect(stdout).toMatchSnapshot("private.txt") + expect(stderr).toBe("") + }) }) diff --git a/test/specs/outdated.spec.ts-snapshots/private.txt b/test/specs/outdated.spec.ts-snapshots/private.txt new file mode 100644 index 0000000..35d25cf --- /dev/null +++ b/test/specs/outdated.spec.ts-snapshots/private.txt @@ -0,0 +1,8 @@ +➤ YN0000: ┌ Checking for outdated dependencies +➤ YN0000: └ Completed + +➤ YN0000: Package Current Latest Workspace Package Type +➤ YN0000: patch 1.0.0 1.0.1 b dependencies + +➤ YN0000: 1 dependency is out of date +➤ YN0000: Done with warnings