@storybook/cli 8.0.0-beta.4 → 8.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/generate.js CHANGED
@@ -1,69 +1,54 @@
1
1
  "use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __esm=(fn,res)=>function(){return fn&&(res=(0,fn[__getOwnPropNames(fn)[0]])(fn=0)),res};var __commonJS=(cb,mod)=>function(){return mod||(0,cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod));var require_eastasianwidth=__commonJS({"../../node_modules/eastasianwidth/eastasianwidth.js"(exports,module2){"use strict";var eaw={};typeof module2>"u"?window.eastasianwidth=eaw:module2.exports=eaw;eaw.eastAsianWidth=function(character){var x=character.charCodeAt(0),y=character.length==2?character.charCodeAt(1):0,codePoint=x;return 55296<=x&&x<=56319&&56320<=y&&y<=57343&&(x&=1023,y&=1023,codePoint=x<<10|y,codePoint+=65536),codePoint==12288||65281<=codePoint&&codePoint<=65376||65504<=codePoint&&codePoint<=65510?"F":codePoint==8361||65377<=codePoint&&codePoint<=65470||65474<=codePoint&&codePoint<=65479||65482<=codePoint&&codePoint<=65487||65490<=codePoint&&codePoint<=65495||65498<=codePoint&&codePoint<=65500||65512<=codePoint&&codePoint<=65518?"H":4352<=codePoint&&codePoint<=4447||4515<=codePoint&&codePoint<=4519||4602<=codePoint&&codePoint<=4607||9001<=codePoint&&codePoint<=9002||11904<=codePoint&&codePoint<=11929||11931<=codePoint&&codePoint<=12019||12032<=codePoint&&codePoint<=12245||12272<=codePoint&&codePoint<=12283||12289<=codePoint&&codePoint<=12350||12353<=codePoint&&codePoint<=12438||12441<=codePoint&&codePoint<=12543||12549<=codePoint&&codePoint<=12589||12593<=codePoint&&codePoint<=12686||12688<=codePoint&&codePoint<=12730||12736<=codePoint&&codePoint<=12771||12784<=codePoint&&codePoint<=12830||12832<=codePoint&&codePoint<=12871||12880<=codePoint&&codePoint<=13054||13056<=codePoint&&codePoint<=19903||19968<=codePoint&&codePoint<=42124||42128<=codePoint&&codePoint<=42182||43360<=codePoint&&codePoint<=43388||44032<=codePoint&&codePoint<=55203||55216<=codePoint&&codePoint<=55238||55243<=codePoint&&codePoint<=55291||63744<=codePoint&&codePoint<=64255||65040<=codePoint&&codePoint<=65049||65072<=codePoint&&codePoint<=65106||65108<=codePoint&&codePoint<=65126||65128<=codePoint&&codePoint<=65131||110592<=codePoint&&codePoint<=110593||127488<=codePoint&&codePoint<=127490||127504<=codePoint&&codePoint<=127546||127552<=codePoint&&codePoint<=127560||127568<=codePoint&&codePoint<=127569||131072<=codePoint&&codePoint<=194367||177984<=codePoint&&codePoint<=196605||196608<=codePoint&&codePoint<=262141?"W":32<=codePoint&&codePoint<=126||162<=codePoint&&codePoint<=163||165<=codePoint&&codePoint<=166||codePoint==172||codePoint==175||10214<=codePoint&&codePoint<=10221||10629<=codePoint&&codePoint<=10630?"Na":codePoint==161||codePoint==164||167<=codePoint&&codePoint<=168||codePoint==170||173<=codePoint&&codePoint<=174||176<=codePoint&&codePoint<=180||182<=codePoint&&codePoint<=186||188<=codePoint&&codePoint<=191||codePoint==198||codePoint==208||215<=codePoint&&codePoint<=216||222<=codePoint&&codePoint<=225||codePoint==230||232<=codePoint&&codePoint<=234||236<=codePoint&&codePoint<=237||codePoint==240||242<=codePoint&&codePoint<=243||247<=codePoint&&codePoint<=250||codePoint==252||codePoint==254||codePoint==257||codePoint==273||codePoint==275||codePoint==283||294<=codePoint&&codePoint<=295||codePoint==299||305<=codePoint&&codePoint<=307||codePoint==312||319<=codePoint&&codePoint<=322||codePoint==324||328<=codePoint&&codePoint<=331||codePoint==333||338<=codePoint&&codePoint<=339||358<=codePoint&&codePoint<=359||codePoint==363||codePoint==462||codePoint==464||codePoint==466||codePoint==468||codePoint==470||codePoint==472||codePoint==474||codePoint==476||codePoint==593||codePoint==609||codePoint==708||codePoint==711||713<=codePoint&&codePoint<=715||codePoint==717||codePoint==720||728<=codePoint&&codePoint<=731||codePoint==733||codePoint==735||768<=codePoint&&codePoint<=879||913<=codePoint&&codePoint<=929||931<=codePoint&&codePoint<=937||945<=codePoint&&codePoint<=961||963<=codePoint&&codePoint<=969||codePoint==1025||1040<=codePoint&&codePoint<=1103||codePoint==1105||codePoint==8208||8211<=codePoint&&codePoint<=8214||8216<=codePoint&&codePoint<=8217||8220<=codePoint&&codePoint<=8221||8224<=codePoint&&codePoint<=8226||8228<=codePoint&&codePoint<=8231||codePoint==8240||8242<=codePoint&&codePoint<=8243||codePoint==8245||codePoint==8251||codePoint==8254||codePoint==8308||codePoint==8319||8321<=codePoint&&codePoint<=8324||codePoint==8364||codePoint==8451||codePoint==8453||codePoint==8457||codePoint==8467||codePoint==8470||8481<=codePoint&&codePoint<=8482||codePoint==8486||codePoint==8491||8531<=codePoint&&codePoint<=8532||8539<=codePoint&&codePoint<=8542||8544<=codePoint&&codePoint<=8555||8560<=codePoint&&codePoint<=8569||codePoint==8585||8592<=codePoint&&codePoint<=8601||8632<=codePoint&&codePoint<=8633||codePoint==8658||codePoint==8660||codePoint==8679||codePoint==8704||8706<=codePoint&&codePoint<=8707||8711<=codePoint&&codePoint<=8712||codePoint==8715||codePoint==8719||codePoint==8721||codePoint==8725||codePoint==8730||8733<=codePoint&&codePoint<=8736||codePoint==8739||codePoint==8741||8743<=codePoint&&codePoint<=8748||codePoint==8750||8756<=codePoint&&codePoint<=8759||8764<=codePoint&&codePoint<=8765||codePoint==8776||codePoint==8780||codePoint==8786||8800<=codePoint&&codePoint<=8801||8804<=codePoint&&codePoint<=8807||8810<=codePoint&&codePoint<=8811||8814<=codePoint&&codePoint<=8815||8834<=codePoint&&codePoint<=8835||8838<=codePoint&&codePoint<=8839||codePoint==8853||codePoint==8857||codePoint==8869||codePoint==8895||codePoint==8978||9312<=codePoint&&codePoint<=9449||9451<=codePoint&&codePoint<=9547||9552<=codePoint&&codePoint<=9587||9600<=codePoint&&codePoint<=9615||9618<=codePoint&&codePoint<=9621||9632<=codePoint&&codePoint<=9633||9635<=codePoint&&codePoint<=9641||9650<=codePoint&&codePoint<=9651||9654<=codePoint&&codePoint<=9655||9660<=codePoint&&codePoint<=9661||9664<=codePoint&&codePoint<=9665||9670<=codePoint&&codePoint<=9672||codePoint==9675||9678<=codePoint&&codePoint<=9681||9698<=codePoint&&codePoint<=9701||codePoint==9711||9733<=codePoint&&codePoint<=9734||codePoint==9737||9742<=codePoint&&codePoint<=9743||9748<=codePoint&&codePoint<=9749||codePoint==9756||codePoint==9758||codePoint==9792||codePoint==9794||9824<=codePoint&&codePoint<=9825||9827<=codePoint&&codePoint<=9829||9831<=codePoint&&codePoint<=9834||9836<=codePoint&&codePoint<=9837||codePoint==9839||9886<=codePoint&&codePoint<=9887||9918<=codePoint&&codePoint<=9919||9924<=codePoint&&codePoint<=9933||9935<=codePoint&&codePoint<=9953||codePoint==9955||9960<=codePoint&&codePoint<=9983||codePoint==10045||codePoint==10071||10102<=codePoint&&codePoint<=10111||11093<=codePoint&&codePoint<=11097||12872<=codePoint&&codePoint<=12879||57344<=codePoint&&codePoint<=63743||65024<=codePoint&&codePoint<=65039||codePoint==65533||127232<=codePoint&&codePoint<=127242||127248<=codePoint&&codePoint<=127277||127280<=codePoint&&codePoint<=127337||127344<=codePoint&&codePoint<=127386||917760<=codePoint&&codePoint<=917999||983040<=codePoint&&codePoint<=1048573||1048576<=codePoint&&codePoint<=1114109?"A":"N"};eaw.characterLength=function(character){var code=this.eastAsianWidth(character);return code=="F"||code=="W"||code=="A"?2:1};function stringToArray(string){return string.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}eaw.length=function(string){for(var characters=stringToArray(string),len=0,i=0;i<characters.length;i++)len=len+this.characterLength(characters[i]);return len};eaw.slice=function(text,start,end){textLen=eaw.length(text),start=start||0,end=end||1,start<0&&(start=textLen+start),end<0&&(end=textLen+end);for(var result="",eawLen=0,chars=stringToArray(text),i=0;i<chars.length;i++){var char=chars[i],charLen=eaw.length(char);if(eawLen>=start-(charLen==2?1:0))if(eawLen+charLen<=end)result+=char;else break;eawLen+=charLen}return result}}});var require_emoji_regex=__commonJS({"../../node_modules/emoji-regex/index.js"(exports,module2){"use strict";module2.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}}});var require_boxes=__commonJS({"../../node_modules/cli-boxes/boxes.json"(exports,module2){module2.exports={single:{topLeft:"\u250C",top:"\u2500",topRight:"\u2510",right:"\u2502",bottomRight:"\u2518",bottom:"\u2500",bottomLeft:"\u2514",left:"\u2502"},double:{topLeft:"\u2554",top:"\u2550",topRight:"\u2557",right:"\u2551",bottomRight:"\u255D",bottom:"\u2550",bottomLeft:"\u255A",left:"\u2551"},round:{topLeft:"\u256D",top:"\u2500",topRight:"\u256E",right:"\u2502",bottomRight:"\u256F",bottom:"\u2500",bottomLeft:"\u2570",left:"\u2502"},bold:{topLeft:"\u250F",top:"\u2501",topRight:"\u2513",right:"\u2503",bottomRight:"\u251B",bottom:"\u2501",bottomLeft:"\u2517",left:"\u2503"},singleDouble:{topLeft:"\u2553",top:"\u2500",topRight:"\u2556",right:"\u2551",bottomRight:"\u255C",bottom:"\u2500",bottomLeft:"\u2559",left:"\u2551"},doubleSingle:{topLeft:"\u2552",top:"\u2550",topRight:"\u2555",right:"\u2502",bottomRight:"\u255B",bottom:"\u2550",bottomLeft:"\u2558",left:"\u2502"},classic:{topLeft:"+",top:"-",topRight:"+",right:"|",bottomRight:"+",bottom:"-",bottomLeft:"+",left:"|"},arrow:{topLeft:"\u2198",top:"\u2193",topRight:"\u2199",right:"\u2190",bottomRight:"\u2196",bottom:"\u2191",bottomLeft:"\u2197",left:"\u2192"}}}});var require_cli_boxes=__commonJS({"../../node_modules/cli-boxes/index.js"(exports,module2){"use strict";var cliBoxes2=require_boxes();module2.exports=cliBoxes2;module2.exports.default=cliBoxes2}});var require_ansi_regex=__commonJS({"../../node_modules/ansi-regex/index.js"(exports,module2){"use strict";module2.exports=({onlyFirst=!1}={})=>{let pattern=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(pattern,onlyFirst?void 0:"g")}}});var require_strip_ansi=__commonJS({"../../node_modules/string-width/node_modules/strip-ansi/index.js"(exports,module2){"use strict";var ansiRegex3=require_ansi_regex();module2.exports=string=>typeof string=="string"?string.replace(ansiRegex3(),""):string}});var require_is_fullwidth_code_point=__commonJS({"../../node_modules/is-fullwidth-code-point/index.js"(exports,module2){"use strict";var isFullwidthCodePoint=codePoint=>Number.isNaN(codePoint)?!1:codePoint>=4352&&(codePoint<=4447||codePoint===9001||codePoint===9002||11904<=codePoint&&codePoint<=12871&&codePoint!==12351||12880<=codePoint&&codePoint<=19903||19968<=codePoint&&codePoint<=42182||43360<=codePoint&&codePoint<=43388||44032<=codePoint&&codePoint<=55203||63744<=codePoint&&codePoint<=64255||65040<=codePoint&&codePoint<=65049||65072<=codePoint&&codePoint<=65131||65281<=codePoint&&codePoint<=65376||65504<=codePoint&&codePoint<=65510||110592<=codePoint&&codePoint<=110593||127488<=codePoint&&codePoint<=127569||131072<=codePoint&&codePoint<=262141);module2.exports=isFullwidthCodePoint;module2.exports.default=isFullwidthCodePoint}});var require_emoji_regex2=__commonJS({"../../node_modules/string-width/node_modules/emoji-regex/index.js"(exports,module2){"use strict";module2.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}}});var require_string_width=__commonJS({"../../node_modules/string-width/index.js"(exports,module2){"use strict";var stripAnsi2=require_strip_ansi(),isFullwidthCodePoint=require_is_fullwidth_code_point(),emojiRegex4=require_emoji_regex2(),stringWidth4=string=>{if(typeof string!="string"||string.length===0||(string=stripAnsi2(string),string.length===0))return 0;string=string.replace(emojiRegex4()," ");let width=0;for(let i=0;i<string.length;i++){let code=string.codePointAt(i);code<=31||code>=127&&code<=159||code>=768&&code<=879||(code>65535&&i++,width+=isFullwidthCodePoint(code)?2:1)}return width};module2.exports=stringWidth4;module2.exports.default=stringWidth4}});var require_ansi_align=__commonJS({"../../node_modules/ansi-align/index.js"(exports,module2){"use strict";var stringWidth4=require_string_width();function ansiAlign2(text,opts){if(!text)return text;opts=opts||{};let align=opts.align||"center";if(align==="left")return text;let split=opts.split||`
2
- `,pad=opts.pad||" ",widthDiffFn=align!=="right"?halfDiff:fullDiff,returnString=!1;Array.isArray(text)||(returnString=!0,text=String(text).split(split));let width,maxWidth=0;return text=text.map(function(str){return str=String(str),width=stringWidth4(str),maxWidth=Math.max(width,maxWidth),{str,width}}).map(function(obj){return new Array(widthDiffFn(maxWidth,obj.width)+1).join(pad)+obj.str}),returnString?text.join(split):text}ansiAlign2.left=function(text){return ansiAlign2(text,{align:"left"})};ansiAlign2.center=function(text){return ansiAlign2(text,{align:"center"})};ansiAlign2.right=function(text){return ansiAlign2(text,{align:"right"})};module2.exports=ansiAlign2;function halfDiff(maxWidth,curWidth){return Math.floor((maxWidth-curWidth)/2)}function fullDiff(maxWidth,curWidth){return maxWidth-curWidth}}});var init_types=__esm({"src/autoblock/types.ts"(){"use strict"}});var block_storystorev6_exports={};__export(block_storystorev6_exports,{blocker:()=>blocker});var import_ts_dedent38,blocker,init_block_storystorev6=__esm({"src/autoblock/block-storystorev6.ts"(){"use strict";init_types();import_ts_dedent38=require("ts-dedent"),blocker={id:"storyStoreV7removal",async check({mainConfig}){let features=mainConfig?.features;return features===void 0?!1:!!Object.hasOwn(features,"storyStoreV7")},log(){return import_ts_dedent38.dedent`
2
+ `,pad=opts.pad||" ",widthDiffFn=align!=="right"?halfDiff:fullDiff,returnString=!1;Array.isArray(text)||(returnString=!0,text=String(text).split(split));let width,maxWidth=0;return text=text.map(function(str){return str=String(str),width=stringWidth4(str),maxWidth=Math.max(width,maxWidth),{str,width}}).map(function(obj){return new Array(widthDiffFn(maxWidth,obj.width)+1).join(pad)+obj.str}),returnString?text.join(split):text}ansiAlign2.left=function(text){return ansiAlign2(text,{align:"left"})};ansiAlign2.center=function(text){return ansiAlign2(text,{align:"center"})};ansiAlign2.right=function(text){return ansiAlign2(text,{align:"right"})};module2.exports=ansiAlign2;function halfDiff(maxWidth,curWidth){return Math.floor((maxWidth-curWidth)/2)}function fullDiff(maxWidth,curWidth){return maxWidth-curWidth}}});var require_balanced_match=__commonJS({"../../node_modules/balanced-match/index.js"(exports,module2){"use strict";module2.exports=balanced;function balanced(a,b,str){a instanceof RegExp&&(a=maybeMatch(a,str)),b instanceof RegExp&&(b=maybeMatch(b,str));var r=range(a,b,str);return r&&{start:r[0],end:r[1],pre:str.slice(0,r[0]),body:str.slice(r[0]+a.length,r[1]),post:str.slice(r[1]+b.length)}}function maybeMatch(reg,str){var m=str.match(reg);return m?m[0]:null}balanced.range=range;function range(a,b,str){var begs,beg,left,right,result,ai=str.indexOf(a),bi=str.indexOf(b,ai+1),i=ai;if(ai>=0&&bi>0){if(a===b)return[ai,bi];for(begs=[],left=str.length;i>=0&&!result;)i==ai?(begs.push(i),ai=str.indexOf(a,i+1)):begs.length==1?result=[begs.pop(),bi]:(beg=begs.pop(),beg<left&&(left=beg,right=bi),bi=str.indexOf(b,i+1)),i=ai<bi&&ai>=0?ai:bi;begs.length&&(result=[left,right])}return result}}});var require_brace_expansion=__commonJS({"../../node_modules/brace-expansion/index.js"(exports,module2){"use strict";var balanced=require_balanced_match();module2.exports=expandTop;var escSlash="\0SLASH"+Math.random()+"\0",escOpen="\0OPEN"+Math.random()+"\0",escClose="\0CLOSE"+Math.random()+"\0",escComma="\0COMMA"+Math.random()+"\0",escPeriod="\0PERIOD"+Math.random()+"\0";function numeric(str){return parseInt(str,10)==str?parseInt(str,10):str.charCodeAt(0)}function escapeBraces(str){return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod)}function unescapeBraces(str){return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join(".")}function parseCommaParts(str){if(!str)return[""];var parts=[],m=balanced("{","}",str);if(!m)return str.split(",");var pre=m.pre,body=m.body,post=m.post,p=pre.split(",");p[p.length-1]+="{"+body+"}";var postParts=parseCommaParts(post);return post.length&&(p[p.length-1]+=postParts.shift(),p.push.apply(p,postParts)),parts.push.apply(parts,p),parts}function expandTop(str){return str?(str.substr(0,2)==="{}"&&(str="\\{\\}"+str.substr(2)),expand2(escapeBraces(str),!0).map(unescapeBraces)):[]}function embrace(str){return"{"+str+"}"}function isPadded(el){return/^-?0\d/.test(el)}function lte(i,y){return i<=y}function gte(i,y){return i>=y}function expand2(str,isTop){var expansions=[],m=balanced("{","}",str);if(!m)return[str];var pre=m.pre,post=m.post.length?expand2(m.post,!1):[""];if(/\$$/.test(m.pre))for(var k=0;k<post.length;k++){var expansion=pre+"{"+m.body+"}"+post[k];expansions.push(expansion)}else{var isNumericSequence=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body),isAlphaSequence=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body),isSequence=isNumericSequence||isAlphaSequence,isOptions=m.body.indexOf(",")>=0;if(!isSequence&&!isOptions)return m.post.match(/,.*\}/)?(str=m.pre+"{"+m.body+escClose+m.post,expand2(str)):[str];var n;if(isSequence)n=m.body.split(/\.\./);else if(n=parseCommaParts(m.body),n.length===1&&(n=expand2(n[0],!1).map(embrace),n.length===1))return post.map(function(p){return m.pre+n[0]+p});var N;if(isSequence){var x=numeric(n[0]),y=numeric(n[1]),width=Math.max(n[0].length,n[1].length),incr=n.length==3?Math.abs(numeric(n[2])):1,test=lte,reverse=y<x;reverse&&(incr*=-1,test=gte);var pad=n.some(isPadded);N=[];for(var i=x;test(i,y);i+=incr){var c;if(isAlphaSequence)c=String.fromCharCode(i),c==="\\"&&(c="");else if(c=String(i),pad){var need=width-c.length;if(need>0){var z=new Array(need+1).join("0");i<0?c="-"+z+c.slice(1):c=z+c}}N.push(c)}}else{N=[];for(var j=0;j<n.length;j++)N.push.apply(N,expand2(n[j],!1))}for(var j=0;j<N.length;j++)for(var k=0;k<post.length;k++){var expansion=pre+N[j]+post[k];(!isTop||isSequence||expansion)&&expansions.push(expansion)}}return expansions}}});var init_types=__esm({"src/autoblock/types.ts"(){"use strict"}});var block_storystorev6_exports={};__export(block_storystorev6_exports,{blocker:()=>blocker});var import_ts_dedent38,import_chalk34,blocker,init_block_storystorev6=__esm({"src/autoblock/block-storystorev6.ts"(){"use strict";init_types();import_ts_dedent38=require("ts-dedent"),import_chalk34=__toESM(require("chalk")),blocker={id:"storyStoreV7removal",async check({mainConfig}){let features=mainConfig?.features;return features===void 0?!1:!!Object.hasOwn(features,"storyStoreV7")},log(){return import_ts_dedent38.dedent`
3
3
  StoryStoreV7 feature must be removed from your Storybook configuration.
4
4
  This feature was removed in Storybook 8.0.0.
5
5
  Please see the migration guide for more information:
6
- https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#storystorev6-and-storiesof-is-deprecated
6
+ ${import_chalk34.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#storystorev6-and-storiesof-is-deprecated")}
7
7
 
8
- In your Storybook configuration file you have this code:
8
+ In your Storybook configuration we found storyStoryV7 feature defined. For instance:
9
9
 
10
10
  export default = {
11
- features: {
12
- storyStoreV7: false, <--- remove this line
13
- },
11
+ features: {
12
+ ${import_chalk34.default.cyan("storyStoreV7: false")}, <--- ${import_chalk34.default.bold("remove this line")}
13
+ },
14
14
  };
15
15
 
16
16
  You need to remove the storyStoreV7 property.
17
- `}}}});var require_balanced_match=__commonJS({"../../node_modules/balanced-match/index.js"(exports,module2){"use strict";module2.exports=balanced;function balanced(a,b,str){a instanceof RegExp&&(a=maybeMatch(a,str)),b instanceof RegExp&&(b=maybeMatch(b,str));var r=range(a,b,str);return r&&{start:r[0],end:r[1],pre:str.slice(0,r[0]),body:str.slice(r[0]+a.length,r[1]),post:str.slice(r[1]+b.length)}}function maybeMatch(reg,str){var m=str.match(reg);return m?m[0]:null}balanced.range=range;function range(a,b,str){var begs,beg,left,right,result,ai=str.indexOf(a),bi=str.indexOf(b,ai+1),i=ai;if(ai>=0&&bi>0){if(a===b)return[ai,bi];for(begs=[],left=str.length;i>=0&&!result;)i==ai?(begs.push(i),ai=str.indexOf(a,i+1)):begs.length==1?result=[begs.pop(),bi]:(beg=begs.pop(),beg<left&&(left=beg,right=bi),bi=str.indexOf(b,i+1)),i=ai<bi&&ai>=0?ai:bi;begs.length&&(result=[left,right])}return result}}});var require_brace_expansion=__commonJS({"../../node_modules/brace-expansion/index.js"(exports,module2){"use strict";var balanced=require_balanced_match();module2.exports=expandTop;var escSlash="\0SLASH"+Math.random()+"\0",escOpen="\0OPEN"+Math.random()+"\0",escClose="\0CLOSE"+Math.random()+"\0",escComma="\0COMMA"+Math.random()+"\0",escPeriod="\0PERIOD"+Math.random()+"\0";function numeric(str){return parseInt(str,10)==str?parseInt(str,10):str.charCodeAt(0)}function escapeBraces(str){return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod)}function unescapeBraces(str){return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join(".")}function parseCommaParts(str){if(!str)return[""];var parts=[],m=balanced("{","}",str);if(!m)return str.split(",");var pre=m.pre,body=m.body,post=m.post,p=pre.split(",");p[p.length-1]+="{"+body+"}";var postParts=parseCommaParts(post);return post.length&&(p[p.length-1]+=postParts.shift(),p.push.apply(p,postParts)),parts.push.apply(parts,p),parts}function expandTop(str){return str?(str.substr(0,2)==="{}"&&(str="\\{\\}"+str.substr(2)),expand2(escapeBraces(str),!0).map(unescapeBraces)):[]}function embrace(str){return"{"+str+"}"}function isPadded(el){return/^-?0\d/.test(el)}function lte(i,y){return i<=y}function gte(i,y){return i>=y}function expand2(str,isTop){var expansions=[],m=balanced("{","}",str);if(!m)return[str];var pre=m.pre,post=m.post.length?expand2(m.post,!1):[""];if(/\$$/.test(m.pre))for(var k=0;k<post.length;k++){var expansion=pre+"{"+m.body+"}"+post[k];expansions.push(expansion)}else{var isNumericSequence=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body),isAlphaSequence=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body),isSequence=isNumericSequence||isAlphaSequence,isOptions=m.body.indexOf(",")>=0;if(!isSequence&&!isOptions)return m.post.match(/,.*\}/)?(str=m.pre+"{"+m.body+escClose+m.post,expand2(str)):[str];var n;if(isSequence)n=m.body.split(/\.\./);else if(n=parseCommaParts(m.body),n.length===1&&(n=expand2(n[0],!1).map(embrace),n.length===1))return post.map(function(p){return m.pre+n[0]+p});var N;if(isSequence){var x=numeric(n[0]),y=numeric(n[1]),width=Math.max(n[0].length,n[1].length),incr=n.length==3?Math.abs(numeric(n[2])):1,test=lte,reverse=y<x;reverse&&(incr*=-1,test=gte);var pad=n.some(isPadded);N=[];for(var i=x;test(i,y);i+=incr){var c;if(isAlphaSequence)c=String.fromCharCode(i),c==="\\"&&(c="");else if(c=String(i),pad){var need=width-c.length;if(need>0){var z=new Array(need+1).join("0");i<0?c="-"+z+c.slice(1):c=z+c}}N.push(c)}}else{N=[];for(var j=0;j<n.length;j++)N.push.apply(N,expand2(n[j],!1))}for(var j=0;j<N.length;j++)for(var k=0;k<post.length;k++){var expansion=pre+N[j]+post[k];(!isTop||isSequence||expansion)&&expansions.push(expansion)}}return expansions}}});var assertValidPattern,init_assert_valid_pattern=__esm({"../../node_modules/glob/node_modules/minimatch/dist/mjs/assert-valid-pattern.js"(){"use strict";assertValidPattern=pattern=>{if(typeof pattern!="string")throw new TypeError("invalid pattern");if(pattern.length>65536)throw new TypeError("pattern is too long")}}});var posixClasses,braceEscape,regexpEscape,rangesToString,parseClass,init_brace_expressions=__esm({"../../node_modules/glob/node_modules/minimatch/dist/mjs/brace-expressions.js"(){"use strict";posixClasses={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},braceEscape=s=>s.replace(/[[\]\\-]/g,"\\$&"),regexpEscape=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),rangesToString=ranges=>ranges.join(""),parseClass=(glob3,position)=>{let pos=position;if(glob3.charAt(pos)!=="[")throw new Error("not in a brace expression");let ranges=[],negs=[],i=pos+1,sawStart=!1,uflag=!1,escaping=!1,negate=!1,endPos=pos,rangeStart="";WHILE:for(;i<glob3.length;){let c=glob3.charAt(i);if((c==="!"||c==="^")&&i===pos+1){negate=!0,i++;continue}if(c==="]"&&sawStart&&!escaping){endPos=i+1;break}if(sawStart=!0,c==="\\"&&!escaping){escaping=!0,i++;continue}if(c==="["&&!escaping){for(let[cls,[unip,u,neg]]of Object.entries(posixClasses))if(glob3.startsWith(cls,i)){if(rangeStart)return["$.",!1,glob3.length-pos,!0];i+=cls.length,neg?negs.push(unip):ranges.push(unip),uflag=uflag||u;continue WHILE}}if(escaping=!1,rangeStart){c>rangeStart?ranges.push(braceEscape(rangeStart)+"-"+braceEscape(c)):c===rangeStart&&ranges.push(braceEscape(c)),rangeStart="",i++;continue}if(glob3.startsWith("-]",i+1)){ranges.push(braceEscape(c+"-")),i+=2;continue}if(glob3.startsWith("-",i+1)){rangeStart=c,i+=2;continue}ranges.push(braceEscape(c)),i++}if(endPos<i)return["",!1,0,!1];if(!ranges.length&&!negs.length)return["$.",!1,glob3.length-pos,!0];if(negs.length===0&&ranges.length===1&&/^\\?.$/.test(ranges[0])&&!negate){let r=ranges[0].length===2?ranges[0].slice(-1):ranges[0];return[regexpEscape(r),!1,endPos-pos,!1]}let sranges="["+(negate?"^":"")+rangesToString(ranges)+"]",snegs="["+(negate?"":"^")+rangesToString(negs)+"]";return[ranges.length&&negs.length?"("+sranges+"|"+snegs+")":ranges.length?sranges:snegs,uflag,endPos-pos,!0]}}});var unescape,init_unescape=__esm({"../../node_modules/glob/node_modules/minimatch/dist/mjs/unescape.js"(){"use strict";unescape=(s,{windowsPathsNoEscape=!1}={})=>windowsPathsNoEscape?s.replace(/\[([^\/\\])\]/g,"$1"):s.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")}});var types,isExtglobType,startNoTraversal,startNoDot,addPatternStart,justDots,reSpecials,regExpEscape,qmark,star,starNoEmpty,AST,init_ast=__esm({"../../node_modules/glob/node_modules/minimatch/dist/mjs/ast.js"(){"use strict";init_brace_expressions();init_unescape();types=new Set(["!","?","+","*","@"]),isExtglobType=c=>types.has(c),startNoTraversal="(?!(?:^|/)\\.\\.?(?:$|/))",startNoDot="(?!\\.)",addPatternStart=new Set(["[","."]),justDots=new Set(["..","."]),reSpecials=new Set("().*{}+?[]^$\\!"),regExpEscape=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),qmark="[^/]",star=qmark+"*?",starNoEmpty=qmark+"+?",AST=class _AST{type;#root;#hasMagic;#uflag=!1;#parts=[];#parent;#parentIndex;#negs;#filledNegs=!1;#options;#toString;#emptyExt=!1;constructor(type,parent,options={}){this.type=type,type&&(this.#hasMagic=!0),this.#parent=parent,this.#root=this.#parent?this.#parent.#root:this,this.#options=this.#root===this?options:this.#root.#options,this.#negs=this.#root===this?[]:this.#root.#negs,type==="!"&&!this.#root.#filledNegs&&this.#negs.push(this),this.#parentIndex=this.#parent?this.#parent.#parts.length:0}get hasMagic(){if(this.#hasMagic!==void 0)return this.#hasMagic;for(let p of this.#parts)if(typeof p!="string"&&(p.type||p.hasMagic))return this.#hasMagic=!0;return this.#hasMagic}toString(){return this.#toString!==void 0?this.#toString:this.type?this.#toString=this.type+"("+this.#parts.map(p=>String(p)).join("|")+")":this.#toString=this.#parts.map(p=>String(p)).join("")}#fillNegs(){if(this!==this.#root)throw new Error("should only call on root");if(this.#filledNegs)return this;this.toString(),this.#filledNegs=!0;let n;for(;n=this.#negs.pop();){if(n.type!=="!")continue;let p=n,pp=p.#parent;for(;pp;){for(let i=p.#parentIndex+1;!pp.type&&i<pp.#parts.length;i++)for(let part of n.#parts){if(typeof part=="string")throw new Error("string part in extglob AST??");part.copyIn(pp.#parts[i])}p=pp,pp=p.#parent}}return this}push(...parts){for(let p of parts)if(p!==""){if(typeof p!="string"&&!(p instanceof _AST&&p.#parent===this))throw new Error("invalid part: "+p);this.#parts.push(p)}}toJSON(){let ret=this.type===null?this.#parts.slice().map(p=>typeof p=="string"?p:p.toJSON()):[this.type,...this.#parts.map(p=>p.toJSON())];return this.isStart()&&!this.type&&ret.unshift([]),this.isEnd()&&(this===this.#root||this.#root.#filledNegs&&this.#parent?.type==="!")&&ret.push({}),ret}isStart(){if(this.#root===this)return!0;if(!this.#parent?.isStart())return!1;if(this.#parentIndex===0)return!0;let p=this.#parent;for(let i=0;i<this.#parentIndex;i++){let pp=p.#parts[i];if(!(pp instanceof _AST&&pp.type==="!"))return!1}return!0}isEnd(){if(this.#root===this||this.#parent?.type==="!")return!0;if(!this.#parent?.isEnd())return!1;if(!this.type)return this.#parent?.isEnd();let pl=this.#parent?this.#parent.#parts.length:0;return this.#parentIndex===pl-1}copyIn(part){typeof part=="string"?this.push(part):this.push(part.clone(this))}clone(parent){let c=new _AST(this.type,parent);for(let p of this.#parts)c.copyIn(p);return c}static#parseAST(str,ast,pos,opt){let escaping=!1,inBrace=!1,braceStart=-1,braceNeg=!1;if(ast.type===null){let i2=pos,acc2="";for(;i2<str.length;){let c=str.charAt(i2++);if(escaping||c==="\\"){escaping=!escaping,acc2+=c;continue}if(inBrace){i2===braceStart+1?(c==="^"||c==="!")&&(braceNeg=!0):c==="]"&&!(i2===braceStart+2&&braceNeg)&&(inBrace=!1),acc2+=c;continue}else if(c==="["){inBrace=!0,braceStart=i2,braceNeg=!1,acc2+=c;continue}if(!opt.noext&&isExtglobType(c)&&str.charAt(i2)==="("){ast.push(acc2),acc2="";let ext2=new _AST(c,ast);i2=_AST.#parseAST(str,ext2,i2,opt),ast.push(ext2);continue}acc2+=c}return ast.push(acc2),i2}let i=pos+1,part=new _AST(null,ast),parts=[],acc="";for(;i<str.length;){let c=str.charAt(i++);if(escaping||c==="\\"){escaping=!escaping,acc+=c;continue}if(inBrace){i===braceStart+1?(c==="^"||c==="!")&&(braceNeg=!0):c==="]"&&!(i===braceStart+2&&braceNeg)&&(inBrace=!1),acc+=c;continue}else if(c==="["){inBrace=!0,braceStart=i,braceNeg=!1,acc+=c;continue}if(isExtglobType(c)&&str.charAt(i)==="("){part.push(acc),acc="";let ext2=new _AST(c,part);part.push(ext2),i=_AST.#parseAST(str,ext2,i,opt);continue}if(c==="|"){part.push(acc),acc="",parts.push(part),part=new _AST(null,ast);continue}if(c===")")return acc===""&&ast.#parts.length===0&&(ast.#emptyExt=!0),part.push(acc),acc="",ast.push(...parts,part),i;acc+=c}return ast.type=null,ast.#hasMagic=void 0,ast.#parts=[str.substring(pos-1)],i}static fromGlob(pattern,options={}){let ast=new _AST(null,void 0,options);return _AST.#parseAST(pattern,ast,0,options),ast}toMMPattern(){if(this!==this.#root)return this.#root.toMMPattern();let glob3=this.toString(),[re,body,hasMagic2,uflag]=this.toRegExpSource();if(!(hasMagic2||this.#hasMagic||this.#options.nocase&&!this.#options.nocaseMagicOnly&&glob3.toUpperCase()!==glob3.toLowerCase()))return body;let flags=(this.#options.nocase?"i":"")+(uflag?"u":"");return Object.assign(new RegExp(`^${re}$`,flags),{_src:re,_glob:glob3})}toRegExpSource(allowDot){let dot=allowDot??!!this.#options.dot;if(this.#root===this&&this.#fillNegs(),!this.type){let noEmpty=this.isStart()&&this.isEnd(),src=this.#parts.map(p=>{let[re,_,hasMagic2,uflag]=typeof p=="string"?_AST.#parseGlob(p,this.#hasMagic,noEmpty):p.toRegExpSource(allowDot);return this.#hasMagic=this.#hasMagic||hasMagic2,this.#uflag=this.#uflag||uflag,re}).join(""),start2="";if(this.isStart()&&typeof this.#parts[0]=="string"&&!(this.#parts.length===1&&justDots.has(this.#parts[0]))){let aps=addPatternStart,needNoTrav=dot&&aps.has(src.charAt(0))||src.startsWith("\\.")&&aps.has(src.charAt(2))||src.startsWith("\\.\\.")&&aps.has(src.charAt(4)),needNoDot=!dot&&!allowDot&&aps.has(src.charAt(0));start2=needNoTrav?startNoTraversal:needNoDot?startNoDot:""}let end="";return this.isEnd()&&this.#root.#filledNegs&&this.#parent?.type==="!"&&(end="(?:$|\\/)"),[start2+src+end,unescape(src),this.#hasMagic=!!this.#hasMagic,this.#uflag]}let repeated=this.type==="*"||this.type==="+",start=this.type==="!"?"(?:(?!(?:":"(?:",body=this.#partsToRegExp(dot);if(this.isStart()&&this.isEnd()&&!body&&this.type!=="!"){let s=this.toString();return this.#parts=[s],this.type=null,this.#hasMagic=void 0,[s,unescape(this.toString()),!1,!1]}let bodyDotAllowed=!repeated||allowDot||dot||!startNoDot?"":this.#partsToRegExp(!0);bodyDotAllowed===body&&(bodyDotAllowed=""),bodyDotAllowed&&(body=`(?:${body})(?:${bodyDotAllowed})*?`);let final="";if(this.type==="!"&&this.#emptyExt)final=(this.isStart()&&!dot?startNoDot:"")+starNoEmpty;else{let close=this.type==="!"?"))"+(this.isStart()&&!dot&&!allowDot?startNoDot:"")+star+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&bodyDotAllowed?")":this.type==="*"&&bodyDotAllowed?")?":`)${this.type}`;final=start+body+close}return[final,unescape(body),this.#hasMagic=!!this.#hasMagic,this.#uflag]}#partsToRegExp(dot){return this.#parts.map(p=>{if(typeof p=="string")throw new Error("string type in extglob ast??");let[re,_,_hasMagic,uflag]=p.toRegExpSource(dot);return this.#uflag=this.#uflag||uflag,re}).filter(p=>!(this.isStart()&&this.isEnd())||!!p).join("|")}static#parseGlob(glob3,hasMagic2,noEmpty=!1){let escaping=!1,re="",uflag=!1;for(let i=0;i<glob3.length;i++){let c=glob3.charAt(i);if(escaping){escaping=!1,re+=(reSpecials.has(c)?"\\":"")+c;continue}if(c==="\\"){i===glob3.length-1?re+="\\\\":escaping=!0;continue}if(c==="["){let[src,needUflag,consumed,magic]=parseClass(glob3,i);if(consumed){re+=src,uflag=uflag||needUflag,i+=consumed-1,hasMagic2=hasMagic2||magic;continue}}if(c==="*"){noEmpty&&glob3==="*"?re+=starNoEmpty:re+=star,hasMagic2=!0;continue}if(c==="?"){re+=qmark,hasMagic2=!0;continue}re+=regExpEscape(c)}return[re,unescape(glob3),!!hasMagic2,uflag]}}}});var escape,init_escape=__esm({"../../node_modules/glob/node_modules/minimatch/dist/mjs/escape.js"(){"use strict";escape=(s,{windowsPathsNoEscape=!1}={})=>windowsPathsNoEscape?s.replace(/[?*()[\]]/g,"[$&]"):s.replace(/[?*()[\]\\]/g,"\\$&")}});var import_brace_expansion,minimatch,starDotExtRE,starDotExtTest,starDotExtTestDot,starDotExtTestNocase,starDotExtTestNocaseDot,starDotStarRE,starDotStarTest,starDotStarTestDot,dotStarRE,dotStarTest,starRE,starTest,starTestDot,qmarksRE,qmarksTestNocase,qmarksTestNocaseDot,qmarksTestDot,qmarksTest,qmarksTestNoExt,qmarksTestNoExtDot,defaultPlatform,path6,sep,GLOBSTAR,qmark2,star2,twoStarDot,twoStarNoDot,filter,ext,defaults,braceExpand,makeRe,match,globMagic,regExpEscape2,Minimatch,init_mjs=__esm({"../../node_modules/glob/node_modules/minimatch/dist/mjs/index.js"(){"use strict";import_brace_expansion=__toESM(require_brace_expansion(),1);init_assert_valid_pattern();init_ast();init_escape();init_unescape();init_ast();init_escape();init_unescape();minimatch=(p,pattern,options={})=>(assertValidPattern(pattern),!options.nocomment&&pattern.charAt(0)==="#"?!1:new Minimatch(pattern,options).match(p)),starDotExtRE=/^\*+([^+@!?\*\[\(]*)$/,starDotExtTest=ext2=>f=>!f.startsWith(".")&&f.endsWith(ext2),starDotExtTestDot=ext2=>f=>f.endsWith(ext2),starDotExtTestNocase=ext2=>(ext2=ext2.toLowerCase(),f=>!f.startsWith(".")&&f.toLowerCase().endsWith(ext2)),starDotExtTestNocaseDot=ext2=>(ext2=ext2.toLowerCase(),f=>f.toLowerCase().endsWith(ext2)),starDotStarRE=/^\*+\.\*+$/,starDotStarTest=f=>!f.startsWith(".")&&f.includes("."),starDotStarTestDot=f=>f!=="."&&f!==".."&&f.includes("."),dotStarRE=/^\.\*+$/,dotStarTest=f=>f!=="."&&f!==".."&&f.startsWith("."),starRE=/^\*+$/,starTest=f=>f.length!==0&&!f.startsWith("."),starTestDot=f=>f.length!==0&&f!=="."&&f!=="..",qmarksRE=/^\?+([^+@!?\*\[\(]*)?$/,qmarksTestNocase=([$0,ext2=""])=>{let noext=qmarksTestNoExt([$0]);return ext2?(ext2=ext2.toLowerCase(),f=>noext(f)&&f.toLowerCase().endsWith(ext2)):noext},qmarksTestNocaseDot=([$0,ext2=""])=>{let noext=qmarksTestNoExtDot([$0]);return ext2?(ext2=ext2.toLowerCase(),f=>noext(f)&&f.toLowerCase().endsWith(ext2)):noext},qmarksTestDot=([$0,ext2=""])=>{let noext=qmarksTestNoExtDot([$0]);return ext2?f=>noext(f)&&f.endsWith(ext2):noext},qmarksTest=([$0,ext2=""])=>{let noext=qmarksTestNoExt([$0]);return ext2?f=>noext(f)&&f.endsWith(ext2):noext},qmarksTestNoExt=([$0])=>{let len=$0.length;return f=>f.length===len&&!f.startsWith(".")},qmarksTestNoExtDot=([$0])=>{let len=$0.length;return f=>f.length===len&&f!=="."&&f!==".."},defaultPlatform=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",path6={win32:{sep:"\\"},posix:{sep:"/"}},sep=defaultPlatform==="win32"?path6.win32.sep:path6.posix.sep;minimatch.sep=sep;GLOBSTAR=Symbol("globstar **");minimatch.GLOBSTAR=GLOBSTAR;qmark2="[^/]",star2=qmark2+"*?",twoStarDot="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",twoStarNoDot="(?:(?!(?:\\/|^)\\.).)*?",filter=(pattern,options={})=>p=>minimatch(p,pattern,options);minimatch.filter=filter;ext=(a,b={})=>Object.assign({},a,b),defaults=def=>{if(!def||typeof def!="object"||!Object.keys(def).length)return minimatch;let orig=minimatch;return Object.assign((p,pattern,options={})=>orig(p,pattern,ext(def,options)),{Minimatch:class extends orig.Minimatch{constructor(pattern,options={}){super(pattern,ext(def,options))}static defaults(options){return orig.defaults(ext(def,options)).Minimatch}},AST:class extends orig.AST{constructor(type,parent,options={}){super(type,parent,ext(def,options))}static fromGlob(pattern,options={}){return orig.AST.fromGlob(pattern,ext(def,options))}},unescape:(s,options={})=>orig.unescape(s,ext(def,options)),escape:(s,options={})=>orig.escape(s,ext(def,options)),filter:(pattern,options={})=>orig.filter(pattern,ext(def,options)),defaults:options=>orig.defaults(ext(def,options)),makeRe:(pattern,options={})=>orig.makeRe(pattern,ext(def,options)),braceExpand:(pattern,options={})=>orig.braceExpand(pattern,ext(def,options)),match:(list,pattern,options={})=>orig.match(list,pattern,ext(def,options)),sep:orig.sep,GLOBSTAR})};minimatch.defaults=defaults;braceExpand=(pattern,options={})=>(assertValidPattern(pattern),options.nobrace||!/\{(?:(?!\{).)*\}/.test(pattern)?[pattern]:(0,import_brace_expansion.default)(pattern));minimatch.braceExpand=braceExpand;makeRe=(pattern,options={})=>new Minimatch(pattern,options).makeRe();minimatch.makeRe=makeRe;match=(list,pattern,options={})=>{let mm=new Minimatch(pattern,options);return list=list.filter(f=>mm.match(f)),mm.options.nonull&&!list.length&&list.push(pattern),list};minimatch.match=match;globMagic=/[?*]|[+@!]\(.*?\)|\[|\]/,regExpEscape2=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Minimatch=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(pattern,options={}){assertValidPattern(pattern),options=options||{},this.options=options,this.pattern=pattern,this.platform=options.platform||defaultPlatform,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!options.windowsPathsNoEscape||options.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!options.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!options.nonegate,this.comment=!1,this.empty=!1,this.partial=!!options.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=options.windowsNoMagicRoot!==void 0?options.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let pattern of this.set)for(let part of pattern)if(typeof part!="string")return!0;return!1}debug(..._){}make(){let pattern=this.pattern,options=this.options;if(!options.nocomment&&pattern.charAt(0)==="#"){this.comment=!0;return}if(!pattern){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],options.debug&&(this.debug=(...args)=>console.error(...args)),this.debug(this.pattern,this.globSet);let rawGlobParts=this.globSet.map(s=>this.slashSplit(s));this.globParts=this.preprocess(rawGlobParts),this.debug(this.pattern,this.globParts);let set=this.globParts.map((s,_,__)=>{if(this.isWindows&&this.windowsNoMagicRoot){let isUNC=s[0]===""&&s[1]===""&&(s[2]==="?"||!globMagic.test(s[2]))&&!globMagic.test(s[3]),isDrive=/^[a-z]:/i.test(s[0]);if(isUNC)return[...s.slice(0,4),...s.slice(4).map(ss=>this.parse(ss))];if(isDrive)return[s[0],...s.slice(1).map(ss=>this.parse(ss))]}return s.map(ss=>this.parse(ss))});if(this.debug(this.pattern,set),this.set=set.filter(s=>s.indexOf(!1)===-1),this.isWindows)for(let i=0;i<this.set.length;i++){let p=this.set[i];p[0]===""&&p[1]===""&&this.globParts[i][2]==="?"&&typeof p[3]=="string"&&/^[a-z]:$/i.test(p[3])&&(p[2]="?")}this.debug(this.pattern,this.set)}preprocess(globParts){if(this.options.noglobstar)for(let i=0;i<globParts.length;i++)for(let j=0;j<globParts[i].length;j++)globParts[i][j]==="**"&&(globParts[i][j]="*");let{optimizationLevel=1}=this.options;return optimizationLevel>=2?(globParts=this.firstPhasePreProcess(globParts),globParts=this.secondPhasePreProcess(globParts)):optimizationLevel>=1?globParts=this.levelOneOptimize(globParts):globParts=this.adjascentGlobstarOptimize(globParts),globParts}adjascentGlobstarOptimize(globParts){return globParts.map(parts=>{let gs=-1;for(;(gs=parts.indexOf("**",gs+1))!==-1;){let i=gs;for(;parts[i+1]==="**";)i++;i!==gs&&parts.splice(gs,i-gs)}return parts})}levelOneOptimize(globParts){return globParts.map(parts=>(parts=parts.reduce((set,part)=>{let prev=set[set.length-1];return part==="**"&&prev==="**"?set:part===".."&&prev&&prev!==".."&&prev!=="."&&prev!=="**"?(set.pop(),set):(set.push(part),set)},[]),parts.length===0?[""]:parts))}levelTwoFileOptimize(parts){Array.isArray(parts)||(parts=this.slashSplit(parts));let didSomething=!1;do{if(didSomething=!1,!this.preserveMultipleSlashes){for(let i=1;i<parts.length-1;i++){let p=parts[i];i===1&&p===""&&parts[0]===""||(p==="."||p==="")&&(didSomething=!0,parts.splice(i,1),i--)}parts[0]==="."&&parts.length===2&&(parts[1]==="."||parts[1]==="")&&(didSomething=!0,parts.pop())}let dd=0;for(;(dd=parts.indexOf("..",dd+1))!==-1;){let p=parts[dd-1];p&&p!=="."&&p!==".."&&p!=="**"&&(didSomething=!0,parts.splice(dd-1,2),dd-=2)}}while(didSomething);return parts.length===0?[""]:parts}firstPhasePreProcess(globParts){let didSomething=!1;do{didSomething=!1;for(let parts of globParts){let gs=-1;for(;(gs=parts.indexOf("**",gs+1))!==-1;){let gss=gs;for(;parts[gss+1]==="**";)gss++;gss>gs&&parts.splice(gs+1,gss-gs);let next=parts[gs+1],p=parts[gs+2],p2=parts[gs+3];if(next!==".."||!p||p==="."||p===".."||!p2||p2==="."||p2==="..")continue;didSomething=!0,parts.splice(gs,1);let other=parts.slice(0);other[gs]="**",globParts.push(other),gs--}if(!this.preserveMultipleSlashes){for(let i=1;i<parts.length-1;i++){let p=parts[i];i===1&&p===""&&parts[0]===""||(p==="."||p==="")&&(didSomething=!0,parts.splice(i,1),i--)}parts[0]==="."&&parts.length===2&&(parts[1]==="."||parts[1]==="")&&(didSomething=!0,parts.pop())}let dd=0;for(;(dd=parts.indexOf("..",dd+1))!==-1;){let p=parts[dd-1];if(p&&p!=="."&&p!==".."&&p!=="**"){didSomething=!0;let splin=dd===1&&parts[dd+1]==="**"?["."]:[];parts.splice(dd-1,2,...splin),parts.length===0&&parts.push(""),dd-=2}}}}while(didSomething);return globParts}secondPhasePreProcess(globParts){for(let i=0;i<globParts.length-1;i++)for(let j=i+1;j<globParts.length;j++){let matched=this.partsMatch(globParts[i],globParts[j],!this.preserveMultipleSlashes);matched&&(globParts[i]=matched,globParts[j]=[])}return globParts.filter(gs=>gs.length)}partsMatch(a,b,emptyGSMatch=!1){let ai=0,bi=0,result=[],which="";for(;ai<a.length&&bi<b.length;)if(a[ai]===b[bi])result.push(which==="b"?b[bi]:a[ai]),ai++,bi++;else if(emptyGSMatch&&a[ai]==="**"&&b[bi]===a[ai+1])result.push(a[ai]),ai++;else if(emptyGSMatch&&b[bi]==="**"&&a[ai]===b[bi+1])result.push(b[bi]),bi++;else if(a[ai]==="*"&&b[bi]&&(this.options.dot||!b[bi].startsWith("."))&&b[bi]!=="**"){if(which==="b")return!1;which="a",result.push(a[ai]),ai++,bi++}else if(b[bi]==="*"&&a[ai]&&(this.options.dot||!a[ai].startsWith("."))&&a[ai]!=="**"){if(which==="a")return!1;which="b",result.push(b[bi]),ai++,bi++}else return!1;return a.length===b.length&&result}parseNegate(){if(this.nonegate)return;let pattern=this.pattern,negate=!1,negateOffset=0;for(let i=0;i<pattern.length&&pattern.charAt(i)==="!";i++)negate=!negate,negateOffset++;negateOffset&&(this.pattern=pattern.slice(negateOffset)),this.negate=negate}matchOne(file,pattern,partial=!1){let options=this.options;if(this.isWindows){let fileDrive=typeof file[0]=="string"&&/^[a-z]:$/i.test(file[0]),fileUNC=!fileDrive&&file[0]===""&&file[1]===""&&file[2]==="?"&&/^[a-z]:$/i.test(file[3]),patternDrive=typeof pattern[0]=="string"&&/^[a-z]:$/i.test(pattern[0]),patternUNC=!patternDrive&&pattern[0]===""&&pattern[1]===""&&pattern[2]==="?"&&typeof pattern[3]=="string"&&/^[a-z]:$/i.test(pattern[3]),fdi=fileUNC?3:fileDrive?0:void 0,pdi=patternUNC?3:patternDrive?0:void 0;if(typeof fdi=="number"&&typeof pdi=="number"){let[fd,pd]=[file[fdi],pattern[pdi]];fd.toLowerCase()===pd.toLowerCase()&&(pattern[pdi]=fd,pdi>fdi?pattern=pattern.slice(pdi):fdi>pdi&&(file=file.slice(fdi)))}}let{optimizationLevel=1}=this.options;optimizationLevel>=2&&(file=this.levelTwoFileOptimize(file)),this.debug("matchOne",this,{file,pattern}),this.debug("matchOne",file.length,pattern.length);for(var fi=0,pi=0,fl=file.length,pl=pattern.length;fi<fl&&pi<pl;fi++,pi++){this.debug("matchOne loop");var p=pattern[pi],f=file[fi];if(this.debug(pattern,p,f),p===!1)return!1;if(p===GLOBSTAR){this.debug("GLOBSTAR",[pattern,p,f]);var fr=fi,pr=pi+1;if(pr===pl){for(this.debug("** at the end");fi<fl;fi++)if(file[fi]==="."||file[fi]===".."||!options.dot&&file[fi].charAt(0)===".")return!1;return!0}for(;fr<fl;){var swallowee=file[fr];if(this.debug(`
18
- globstar while`,file,fr,pattern,pr,swallowee),this.matchOne(file.slice(fr),pattern.slice(pr),partial))return this.debug("globstar found match!",fr,fl,swallowee),!0;if(swallowee==="."||swallowee===".."||!options.dot&&swallowee.charAt(0)==="."){this.debug("dot detected!",file,fr,pattern,pr);break}this.debug("globstar swallow a segment, and continue"),fr++}return!!(partial&&(this.debug(`
19
- >>> no match, partial?`,file,fr,pattern,pr),fr===fl))}let hit;if(typeof p=="string"?(hit=f===p,this.debug("string match",p,f,hit)):(hit=p.test(f),this.debug("pattern match",p,f,hit)),!hit)return!1}if(fi===fl&&pi===pl)return!0;if(fi===fl)return partial;if(pi===pl)return fi===fl-1&&file[fi]==="";throw new Error("wtf?")}braceExpand(){return braceExpand(this.pattern,this.options)}parse(pattern){assertValidPattern(pattern);let options=this.options;if(pattern==="**")return GLOBSTAR;if(pattern==="")return"";let m,fastTest=null;(m=pattern.match(starRE))?fastTest=options.dot?starTestDot:starTest:(m=pattern.match(starDotExtRE))?fastTest=(options.nocase?options.dot?starDotExtTestNocaseDot:starDotExtTestNocase:options.dot?starDotExtTestDot:starDotExtTest)(m[1]):(m=pattern.match(qmarksRE))?fastTest=(options.nocase?options.dot?qmarksTestNocaseDot:qmarksTestNocase:options.dot?qmarksTestDot:qmarksTest)(m):(m=pattern.match(starDotStarRE))?fastTest=options.dot?starDotStarTestDot:starDotStarTest:(m=pattern.match(dotStarRE))&&(fastTest=dotStarTest);let re=AST.fromGlob(pattern,this.options).toMMPattern();return fastTest?Object.assign(re,{test:fastTest}):re}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let set=this.set;if(!set.length)return this.regexp=!1,this.regexp;let options=this.options,twoStar=options.noglobstar?star2:options.dot?twoStarDot:twoStarNoDot,flags=new Set(options.nocase?["i"]:[]),re=set.map(pattern=>{let pp=pattern.map(p=>{if(p instanceof RegExp)for(let f of p.flags.split(""))flags.add(f);return typeof p=="string"?regExpEscape2(p):p===GLOBSTAR?GLOBSTAR:p._src});return pp.forEach((p,i)=>{let next=pp[i+1],prev=pp[i-1];p!==GLOBSTAR||prev===GLOBSTAR||(prev===void 0?next!==void 0&&next!==GLOBSTAR?pp[i+1]="(?:\\/|"+twoStar+"\\/)?"+next:pp[i]=twoStar:next===void 0?pp[i-1]=prev+"(?:\\/|"+twoStar+")?":next!==GLOBSTAR&&(pp[i-1]=prev+"(?:\\/|\\/"+twoStar+"\\/)"+next,pp[i+1]=GLOBSTAR))}),pp.filter(p=>p!==GLOBSTAR).join("/")}).join("|"),[open,close]=set.length>1?["(?:",")"]:["",""];re="^"+open+re+close+"$",this.negate&&(re="^(?!"+re+").+$");try{this.regexp=new RegExp(re,[...flags].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(p){return this.preserveMultipleSlashes?p.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(p)?["",...p.split(/\/+/)]:p.split(/\/+/)}match(f,partial=this.partial){if(this.debug("match",f,this.pattern),this.comment)return!1;if(this.empty)return f==="";if(f==="/"&&partial)return!0;let options=this.options;this.isWindows&&(f=f.split("\\").join("/"));let ff=this.slashSplit(f);this.debug(this.pattern,"split",ff);let set=this.set;this.debug(this.pattern,"set",set);let filename=ff[ff.length-1];if(!filename)for(let i=ff.length-2;!filename&&i>=0;i--)filename=ff[i];for(let i=0;i<set.length;i++){let pattern=set[i],file=ff;if(options.matchBase&&pattern.length===1&&(file=[filename]),this.matchOne(file,pattern,partial))return options.flipNegate?!0:!this.negate}return options.flipNegate?!1:this.negate}static defaults(def){return minimatch.defaults(def).Minimatch}};minimatch.AST=AST;minimatch.Minimatch=Minimatch;minimatch.escape=escape;minimatch.unescape=unescape}});var perf,warned,PROCESS,emitWarning,AC,AS,shouldWarn,TYPE,isPosInt,getUintArray,ZeroArray,Stack,LRUCache,init_esm=__esm({"../../node_modules/lru-cache/dist/esm/index.js"(){"use strict";perf=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,warned=new Set,PROCESS=typeof process=="object"&&process?process:{},emitWarning=(msg,type,code,fn)=>{typeof PROCESS.emitWarning=="function"?PROCESS.emitWarning(msg,type,code,fn):console.error(`[${code}] ${type}: ${msg}`)},AC=globalThis.AbortController,AS=globalThis.AbortSignal;if(typeof AC>"u"){AS=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(_,fn){this._onabort.push(fn)}},AC=class{constructor(){warnACPolyfill()}signal=new AS;abort(reason){if(!this.signal.aborted){this.signal.reason=reason,this.signal.aborted=!0;for(let fn of this.signal._onabort)fn(reason);this.signal.onabort?.(reason)}}};let printACPolyfillWarning=PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",warnACPolyfill=()=>{printACPolyfillWarning&&(printACPolyfillWarning=!1,emitWarning("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",warnACPolyfill))}}shouldWarn=code=>!warned.has(code),TYPE=Symbol("type"),isPosInt=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),getUintArray=max=>isPosInt(max)?max<=Math.pow(2,8)?Uint8Array:max<=Math.pow(2,16)?Uint16Array:max<=Math.pow(2,32)?Uint32Array:max<=Number.MAX_SAFE_INTEGER?ZeroArray:null:null,ZeroArray=class extends Array{constructor(size){super(size),this.fill(0)}},Stack=class _Stack{heap;length;static#constructing=!1;static create(max){let HeapCls=getUintArray(max);if(!HeapCls)return[];_Stack.#constructing=!0;let s=new _Stack(max,HeapCls);return _Stack.#constructing=!1,s}constructor(max,HeapCls){if(!_Stack.#constructing)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new HeapCls(max),this.length=0}push(n){this.heap[this.length++]=n}pop(){return this.heap[--this.length]}},LRUCache=class _LRUCache{#max;#maxSize;#dispose;#disposeAfter;#fetchMethod;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#size;#calculatedSize;#keyMap;#keyList;#valList;#next;#prev;#head;#tail;#free;#disposed;#sizes;#starts;#ttls;#hasDispose;#hasFetchMethod;#hasDisposeAfter;static unsafeExposeInternals(c){return{starts:c.#starts,ttls:c.#ttls,sizes:c.#sizes,keyMap:c.#keyMap,keyList:c.#keyList,valList:c.#valList,next:c.#next,prev:c.#prev,get head(){return c.#head},get tail(){return c.#tail},free:c.#free,isBackgroundFetch:p=>c.#isBackgroundFetch(p),backgroundFetch:(k,index,options,context)=>c.#backgroundFetch(k,index,options,context),moveToTail:index=>c.#moveToTail(index),indexes:options=>c.#indexes(options),rindexes:options=>c.#rindexes(options),isStale:index=>c.#isStale(index)}}get max(){return this.#max}get maxSize(){return this.#maxSize}get calculatedSize(){return this.#calculatedSize}get size(){return this.#size}get fetchMethod(){return this.#fetchMethod}get dispose(){return this.#dispose}get disposeAfter(){return this.#disposeAfter}constructor(options){let{max=0,ttl,ttlResolution=1,ttlAutopurge,updateAgeOnGet,updateAgeOnHas,allowStale,dispose,disposeAfter,noDisposeOnSet,noUpdateTTL,maxSize=0,maxEntrySize=0,sizeCalculation,fetchMethod,noDeleteOnFetchRejection,noDeleteOnStaleGet,allowStaleOnFetchRejection,allowStaleOnFetchAbort,ignoreFetchAbort}=options;if(max!==0&&!isPosInt(max))throw new TypeError("max option must be a nonnegative integer");let UintArray=max?getUintArray(max):Array;if(!UintArray)throw new Error("invalid max value: "+max);if(this.#max=max,this.#maxSize=maxSize,this.maxEntrySize=maxEntrySize||this.#maxSize,this.sizeCalculation=sizeCalculation,this.sizeCalculation){if(!this.#maxSize&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(fetchMethod!==void 0&&typeof fetchMethod!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#fetchMethod=fetchMethod,this.#hasFetchMethod=!!fetchMethod,this.#keyMap=new Map,this.#keyList=new Array(max).fill(void 0),this.#valList=new Array(max).fill(void 0),this.#next=new UintArray(max),this.#prev=new UintArray(max),this.#head=0,this.#tail=0,this.#free=Stack.create(max),this.#size=0,this.#calculatedSize=0,typeof dispose=="function"&&(this.#dispose=dispose),typeof disposeAfter=="function"?(this.#disposeAfter=disposeAfter,this.#disposed=[]):(this.#disposeAfter=void 0,this.#disposed=void 0),this.#hasDispose=!!this.#dispose,this.#hasDisposeAfter=!!this.#disposeAfter,this.noDisposeOnSet=!!noDisposeOnSet,this.noUpdateTTL=!!noUpdateTTL,this.noDeleteOnFetchRejection=!!noDeleteOnFetchRejection,this.allowStaleOnFetchRejection=!!allowStaleOnFetchRejection,this.allowStaleOnFetchAbort=!!allowStaleOnFetchAbort,this.ignoreFetchAbort=!!ignoreFetchAbort,this.maxEntrySize!==0){if(this.#maxSize!==0&&!isPosInt(this.#maxSize))throw new TypeError("maxSize must be a positive integer if specified");if(!isPosInt(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#initializeSizeTracking()}if(this.allowStale=!!allowStale,this.noDeleteOnStaleGet=!!noDeleteOnStaleGet,this.updateAgeOnGet=!!updateAgeOnGet,this.updateAgeOnHas=!!updateAgeOnHas,this.ttlResolution=isPosInt(ttlResolution)||ttlResolution===0?ttlResolution:1,this.ttlAutopurge=!!ttlAutopurge,this.ttl=ttl||0,this.ttl){if(!isPosInt(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#initializeTTLTracking()}if(this.#max===0&&this.ttl===0&&this.#maxSize===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#max&&!this.#maxSize){let code="LRU_CACHE_UNBOUNDED";shouldWarn(code)&&(warned.add(code),emitWarning("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",code,_LRUCache))}}getRemainingTTL(key){return this.#keyMap.has(key)?1/0:0}#initializeTTLTracking(){let ttls=new ZeroArray(this.#max),starts=new ZeroArray(this.#max);this.#ttls=ttls,this.#starts=starts,this.#setItemTTL=(index,ttl,start=perf.now())=>{if(starts[index]=ttl!==0?start:0,ttls[index]=ttl,ttl!==0&&this.ttlAutopurge){let t2=setTimeout(()=>{this.#isStale(index)&&this.delete(this.#keyList[index])},ttl+1);t2.unref&&t2.unref()}},this.#updateItemAge=index=>{starts[index]=ttls[index]!==0?perf.now():0},this.#statusTTL=(status,index)=>{if(ttls[index]){let ttl=ttls[index],start=starts[index];if(!ttl||!start)return;status.ttl=ttl,status.start=start,status.now=cachedNow||getNow();let age=status.now-start;status.remainingTTL=ttl-age}};let cachedNow=0,getNow=()=>{let n=perf.now();if(this.ttlResolution>0){cachedNow=n;let t2=setTimeout(()=>cachedNow=0,this.ttlResolution);t2.unref&&t2.unref()}return n};this.getRemainingTTL=key=>{let index=this.#keyMap.get(key);if(index===void 0)return 0;let ttl=ttls[index],start=starts[index];if(!ttl||!start)return 1/0;let age=(cachedNow||getNow())-start;return ttl-age},this.#isStale=index=>{let s=starts[index],t2=ttls[index];return!!t2&&!!s&&(cachedNow||getNow())-s>t2}}#updateItemAge=()=>{};#statusTTL=()=>{};#setItemTTL=()=>{};#isStale=()=>!1;#initializeSizeTracking(){let sizes=new ZeroArray(this.#max);this.#calculatedSize=0,this.#sizes=sizes,this.#removeItemSize=index=>{this.#calculatedSize-=sizes[index],sizes[index]=0},this.#requireSize=(k,v,size,sizeCalculation)=>{if(this.#isBackgroundFetch(v))return 0;if(!isPosInt(size))if(sizeCalculation){if(typeof sizeCalculation!="function")throw new TypeError("sizeCalculation must be a function");if(size=sizeCalculation(v,k),!isPosInt(size))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return size},this.#addItemSize=(index,size,status)=>{if(sizes[index]=size,this.#maxSize){let maxSize=this.#maxSize-sizes[index];for(;this.#calculatedSize>maxSize;)this.#evict(!0)}this.#calculatedSize+=sizes[index],status&&(status.entrySize=size,status.totalCalculatedSize=this.#calculatedSize)}}#removeItemSize=_i=>{};#addItemSize=(_i,_s,_st)=>{};#requireSize=(_k,_v,size,sizeCalculation)=>{if(size||sizeCalculation)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#indexes({allowStale=this.allowStale}={}){if(this.#size)for(let i=this.#tail;!(!this.#isValidIndex(i)||((allowStale||!this.#isStale(i))&&(yield i),i===this.#head));)i=this.#prev[i]}*#rindexes({allowStale=this.allowStale}={}){if(this.#size)for(let i=this.#head;!(!this.#isValidIndex(i)||((allowStale||!this.#isStale(i))&&(yield i),i===this.#tail));)i=this.#next[i]}#isValidIndex(index){return index!==void 0&&this.#keyMap.get(this.#keyList[index])===index}*entries(){for(let i of this.#indexes())this.#valList[i]!==void 0&&this.#keyList[i]!==void 0&&!this.#isBackgroundFetch(this.#valList[i])&&(yield[this.#keyList[i],this.#valList[i]])}*rentries(){for(let i of this.#rindexes())this.#valList[i]!==void 0&&this.#keyList[i]!==void 0&&!this.#isBackgroundFetch(this.#valList[i])&&(yield[this.#keyList[i],this.#valList[i]])}*keys(){for(let i of this.#indexes()){let k=this.#keyList[i];k!==void 0&&!this.#isBackgroundFetch(this.#valList[i])&&(yield k)}}*rkeys(){for(let i of this.#rindexes()){let k=this.#keyList[i];k!==void 0&&!this.#isBackgroundFetch(this.#valList[i])&&(yield k)}}*values(){for(let i of this.#indexes())this.#valList[i]!==void 0&&!this.#isBackgroundFetch(this.#valList[i])&&(yield this.#valList[i])}*rvalues(){for(let i of this.#rindexes())this.#valList[i]!==void 0&&!this.#isBackgroundFetch(this.#valList[i])&&(yield this.#valList[i])}[Symbol.iterator](){return this.entries()}find(fn,getOptions={}){for(let i of this.#indexes()){let v=this.#valList[i],value=this.#isBackgroundFetch(v)?v.__staleWhileFetching:v;if(value!==void 0&&fn(value,this.#keyList[i],this))return this.get(this.#keyList[i],getOptions)}}forEach(fn,thisp=this){for(let i of this.#indexes()){let v=this.#valList[i],value=this.#isBackgroundFetch(v)?v.__staleWhileFetching:v;value!==void 0&&fn.call(thisp,value,this.#keyList[i],this)}}rforEach(fn,thisp=this){for(let i of this.#rindexes()){let v=this.#valList[i],value=this.#isBackgroundFetch(v)?v.__staleWhileFetching:v;value!==void 0&&fn.call(thisp,value,this.#keyList[i],this)}}purgeStale(){let deleted=!1;for(let i of this.#rindexes({allowStale:!0}))this.#isStale(i)&&(this.delete(this.#keyList[i]),deleted=!0);return deleted}info(key){let i=this.#keyMap.get(key);if(i===void 0)return;let v=this.#valList[i],value=this.#isBackgroundFetch(v)?v.__staleWhileFetching:v;if(value===void 0)return;let entry={value};if(this.#ttls&&this.#starts){let ttl=this.#ttls[i],start=this.#starts[i];if(ttl&&start){let remain=ttl-(perf.now()-start);entry.ttl=remain,entry.start=Date.now()}}return this.#sizes&&(entry.size=this.#sizes[i]),entry}dump(){let arr=[];for(let i of this.#indexes({allowStale:!0})){let key=this.#keyList[i],v=this.#valList[i],value=this.#isBackgroundFetch(v)?v.__staleWhileFetching:v;if(value===void 0||key===void 0)continue;let entry={value};if(this.#ttls&&this.#starts){entry.ttl=this.#ttls[i];let age=perf.now()-this.#starts[i];entry.start=Math.floor(Date.now()-age)}this.#sizes&&(entry.size=this.#sizes[i]),arr.unshift([key,entry])}return arr}load(arr){this.clear();for(let[key,entry]of arr){if(entry.start){let age=Date.now()-entry.start;entry.start=perf.now()-age}this.set(key,entry.value,entry)}}set(k,v,setOptions={}){if(v===void 0)return this.delete(k),this;let{ttl=this.ttl,start,noDisposeOnSet=this.noDisposeOnSet,sizeCalculation=this.sizeCalculation,status}=setOptions,{noUpdateTTL=this.noUpdateTTL}=setOptions,size=this.#requireSize(k,v,setOptions.size||0,sizeCalculation);if(this.maxEntrySize&&size>this.maxEntrySize)return status&&(status.set="miss",status.maxEntrySizeExceeded=!0),this.delete(k),this;let index=this.#size===0?void 0:this.#keyMap.get(k);if(index===void 0)index=this.#size===0?this.#tail:this.#free.length!==0?this.#free.pop():this.#size===this.#max?this.#evict(!1):this.#size,this.#keyList[index]=k,this.#valList[index]=v,this.#keyMap.set(k,index),this.#next[this.#tail]=index,this.#prev[index]=this.#tail,this.#tail=index,this.#size++,this.#addItemSize(index,size,status),status&&(status.set="add"),noUpdateTTL=!1;else{this.#moveToTail(index);let oldVal=this.#valList[index];if(v!==oldVal){if(this.#hasFetchMethod&&this.#isBackgroundFetch(oldVal)){oldVal.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:s}=oldVal;s!==void 0&&!noDisposeOnSet&&(this.#hasDispose&&this.#dispose?.(s,k,"set"),this.#hasDisposeAfter&&this.#disposed?.push([s,k,"set"]))}else noDisposeOnSet||(this.#hasDispose&&this.#dispose?.(oldVal,k,"set"),this.#hasDisposeAfter&&this.#disposed?.push([oldVal,k,"set"]));if(this.#removeItemSize(index),this.#addItemSize(index,size,status),this.#valList[index]=v,status){status.set="replace";let oldValue=oldVal&&this.#isBackgroundFetch(oldVal)?oldVal.__staleWhileFetching:oldVal;oldValue!==void 0&&(status.oldValue=oldValue)}}else status&&(status.set="update")}if(ttl!==0&&!this.#ttls&&this.#initializeTTLTracking(),this.#ttls&&(noUpdateTTL||this.#setItemTTL(index,ttl,start),status&&this.#statusTTL(status,index)),!noDisposeOnSet&&this.#hasDisposeAfter&&this.#disposed){let dt=this.#disposed,task;for(;task=dt?.shift();)this.#disposeAfter?.(...task)}return this}pop(){try{for(;this.#size;){let val=this.#valList[this.#head];if(this.#evict(!0),this.#isBackgroundFetch(val)){if(val.__staleWhileFetching)return val.__staleWhileFetching}else if(val!==void 0)return val}}finally{if(this.#hasDisposeAfter&&this.#disposed){let dt=this.#disposed,task;for(;task=dt?.shift();)this.#disposeAfter?.(...task)}}}#evict(free){let head=this.#head,k=this.#keyList[head],v=this.#valList[head];return this.#hasFetchMethod&&this.#isBackgroundFetch(v)?v.__abortController.abort(new Error("evicted")):(this.#hasDispose||this.#hasDisposeAfter)&&(this.#hasDispose&&this.#dispose?.(v,k,"evict"),this.#hasDisposeAfter&&this.#disposed?.push([v,k,"evict"])),this.#removeItemSize(head),free&&(this.#keyList[head]=void 0,this.#valList[head]=void 0,this.#free.push(head)),this.#size===1?(this.#head=this.#tail=0,this.#free.length=0):this.#head=this.#next[head],this.#keyMap.delete(k),this.#size--,head}has(k,hasOptions={}){let{updateAgeOnHas=this.updateAgeOnHas,status}=hasOptions,index=this.#keyMap.get(k);if(index!==void 0){let v=this.#valList[index];if(this.#isBackgroundFetch(v)&&v.__staleWhileFetching===void 0)return!1;if(this.#isStale(index))status&&(status.has="stale",this.#statusTTL(status,index));else return updateAgeOnHas&&this.#updateItemAge(index),status&&(status.has="hit",this.#statusTTL(status,index)),!0}else status&&(status.has="miss");return!1}peek(k,peekOptions={}){let{allowStale=this.allowStale}=peekOptions,index=this.#keyMap.get(k);if(index===void 0||!allowStale&&this.#isStale(index))return;let v=this.#valList[index];return this.#isBackgroundFetch(v)?v.__staleWhileFetching:v}#backgroundFetch(k,index,options,context){let v=index===void 0?void 0:this.#valList[index];if(this.#isBackgroundFetch(v))return v;let ac=new AC,{signal}=options;signal?.addEventListener("abort",()=>ac.abort(signal.reason),{signal:ac.signal});let fetchOpts={signal:ac.signal,options,context},cb=(v2,updateCache=!1)=>{let{aborted}=ac.signal,ignoreAbort=options.ignoreFetchAbort&&v2!==void 0;if(options.status&&(aborted&&!updateCache?(options.status.fetchAborted=!0,options.status.fetchError=ac.signal.reason,ignoreAbort&&(options.status.fetchAbortIgnored=!0)):options.status.fetchResolved=!0),aborted&&!ignoreAbort&&!updateCache)return fetchFail(ac.signal.reason);let bf2=p;return this.#valList[index]===p&&(v2===void 0?bf2.__staleWhileFetching?this.#valList[index]=bf2.__staleWhileFetching:this.delete(k):(options.status&&(options.status.fetchUpdated=!0),this.set(k,v2,fetchOpts.options))),v2},eb=er=>(options.status&&(options.status.fetchRejected=!0,options.status.fetchError=er),fetchFail(er)),fetchFail=er=>{let{aborted}=ac.signal,allowStaleAborted=aborted&&options.allowStaleOnFetchAbort,allowStale=allowStaleAborted||options.allowStaleOnFetchRejection,noDelete=allowStale||options.noDeleteOnFetchRejection,bf2=p;if(this.#valList[index]===p&&(!noDelete||bf2.__staleWhileFetching===void 0?this.delete(k):allowStaleAborted||(this.#valList[index]=bf2.__staleWhileFetching)),allowStale)return options.status&&bf2.__staleWhileFetching!==void 0&&(options.status.returnedStale=!0),bf2.__staleWhileFetching;if(bf2.__returned===bf2)throw er},pcall=(res,rej)=>{let fmp=this.#fetchMethod?.(k,v,fetchOpts);fmp&&fmp instanceof Promise&&fmp.then(v2=>res(v2===void 0?void 0:v2),rej),ac.signal.addEventListener("abort",()=>{(!options.ignoreFetchAbort||options.allowStaleOnFetchAbort)&&(res(void 0),options.allowStaleOnFetchAbort&&(res=v2=>cb(v2,!0)))})};options.status&&(options.status.fetchDispatched=!0);let p=new Promise(pcall).then(cb,eb),bf=Object.assign(p,{__abortController:ac,__staleWhileFetching:v,__returned:void 0});return index===void 0?(this.set(k,bf,{...fetchOpts.options,status:void 0}),index=this.#keyMap.get(k)):this.#valList[index]=bf,bf}#isBackgroundFetch(p){if(!this.#hasFetchMethod)return!1;let b=p;return!!b&&b instanceof Promise&&b.hasOwnProperty("__staleWhileFetching")&&b.__abortController instanceof AC}async fetch(k,fetchOptions={}){let{allowStale=this.allowStale,updateAgeOnGet=this.updateAgeOnGet,noDeleteOnStaleGet=this.noDeleteOnStaleGet,ttl=this.ttl,noDisposeOnSet=this.noDisposeOnSet,size=0,sizeCalculation=this.sizeCalculation,noUpdateTTL=this.noUpdateTTL,noDeleteOnFetchRejection=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection=this.allowStaleOnFetchRejection,ignoreFetchAbort=this.ignoreFetchAbort,allowStaleOnFetchAbort=this.allowStaleOnFetchAbort,context,forceRefresh=!1,status,signal}=fetchOptions;if(!this.#hasFetchMethod)return status&&(status.fetch="get"),this.get(k,{allowStale,updateAgeOnGet,noDeleteOnStaleGet,status});let options={allowStale,updateAgeOnGet,noDeleteOnStaleGet,ttl,noDisposeOnSet,size,sizeCalculation,noUpdateTTL,noDeleteOnFetchRejection,allowStaleOnFetchRejection,allowStaleOnFetchAbort,ignoreFetchAbort,status,signal},index=this.#keyMap.get(k);if(index===void 0){status&&(status.fetch="miss");let p=this.#backgroundFetch(k,index,options,context);return p.__returned=p}else{let v=this.#valList[index];if(this.#isBackgroundFetch(v)){let stale=allowStale&&v.__staleWhileFetching!==void 0;return status&&(status.fetch="inflight",stale&&(status.returnedStale=!0)),stale?v.__staleWhileFetching:v.__returned=v}let isStale=this.#isStale(index);if(!forceRefresh&&!isStale)return status&&(status.fetch="hit"),this.#moveToTail(index),updateAgeOnGet&&this.#updateItemAge(index),status&&this.#statusTTL(status,index),v;let p=this.#backgroundFetch(k,index,options,context),staleVal=p.__staleWhileFetching!==void 0&&allowStale;return status&&(status.fetch=isStale?"stale":"refresh",staleVal&&isStale&&(status.returnedStale=!0)),staleVal?p.__staleWhileFetching:p.__returned=p}}get(k,getOptions={}){let{allowStale=this.allowStale,updateAgeOnGet=this.updateAgeOnGet,noDeleteOnStaleGet=this.noDeleteOnStaleGet,status}=getOptions,index=this.#keyMap.get(k);if(index!==void 0){let value=this.#valList[index],fetching=this.#isBackgroundFetch(value);return status&&this.#statusTTL(status,index),this.#isStale(index)?(status&&(status.get="stale"),fetching?(status&&allowStale&&value.__staleWhileFetching!==void 0&&(status.returnedStale=!0),allowStale?value.__staleWhileFetching:void 0):(noDeleteOnStaleGet||this.delete(k),status&&allowStale&&(status.returnedStale=!0),allowStale?value:void 0)):(status&&(status.get="hit"),fetching?value.__staleWhileFetching:(this.#moveToTail(index),updateAgeOnGet&&this.#updateItemAge(index),value))}else status&&(status.get="miss")}#connect(p,n){this.#prev[n]=p,this.#next[p]=n}#moveToTail(index){index!==this.#tail&&(index===this.#head?this.#head=this.#next[index]:this.#connect(this.#prev[index],this.#next[index]),this.#connect(this.#tail,index),this.#tail=index)}delete(k){let deleted=!1;if(this.#size!==0){let index=this.#keyMap.get(k);if(index!==void 0)if(deleted=!0,this.#size===1)this.clear();else{this.#removeItemSize(index);let v=this.#valList[index];if(this.#isBackgroundFetch(v)?v.__abortController.abort(new Error("deleted")):(this.#hasDispose||this.#hasDisposeAfter)&&(this.#hasDispose&&this.#dispose?.(v,k,"delete"),this.#hasDisposeAfter&&this.#disposed?.push([v,k,"delete"])),this.#keyMap.delete(k),this.#keyList[index]=void 0,this.#valList[index]=void 0,index===this.#tail)this.#tail=this.#prev[index];else if(index===this.#head)this.#head=this.#next[index];else{let pi=this.#prev[index];this.#next[pi]=this.#next[index];let ni=this.#next[index];this.#prev[ni]=this.#prev[index]}this.#size--,this.#free.push(index)}}if(this.#hasDisposeAfter&&this.#disposed?.length){let dt=this.#disposed,task;for(;task=dt?.shift();)this.#disposeAfter?.(...task)}return deleted}clear(){for(let index of this.#rindexes({allowStale:!0})){let v=this.#valList[index];if(this.#isBackgroundFetch(v))v.__abortController.abort(new Error("deleted"));else{let k=this.#keyList[index];this.#hasDispose&&this.#dispose?.(v,k,"delete"),this.#hasDisposeAfter&&this.#disposed?.push([v,k,"delete"])}}if(this.#keyMap.clear(),this.#valList.fill(void 0),this.#keyList.fill(void 0),this.#ttls&&this.#starts&&(this.#ttls.fill(0),this.#starts.fill(0)),this.#sizes&&this.#sizes.fill(0),this.#head=0,this.#tail=0,this.#free.length=0,this.#calculatedSize=0,this.#size=0,this.#hasDisposeAfter&&this.#disposed){let dt=this.#disposed,task;for(;task=dt?.shift();)this.#disposeAfter?.(...task)}}}}});var import_events,import_stream,import_string_decoder,proc,isStream,isReadable,isWritable,EOF,MAYBE_EMIT_END,EMITTED_END,EMITTING_END,EMITTED_ERROR,CLOSED,READ,FLUSH,FLUSHCHUNK,ENCODING,DECODER,FLOWING,PAUSED,RESUME,BUFFER,PIPES,BUFFERLENGTH,BUFFERPUSH,BUFFERSHIFT,OBJECTMODE,DESTROYED,ERROR,EMITDATA,EMITEND,EMITEND2,ASYNC,ABORT,ABORTED,SIGNAL,DATALISTENERS,DISCARDED,defer,nodefer,isEndish,isArrayBufferLike,isArrayBufferView,Pipe,PipeProxyErrors,isObjectModeOptions,isEncodingOptions,Minipass,init_esm2=__esm({"../../node_modules/minipass/dist/esm/index.js"(){"use strict";import_events=require("events"),import_stream=__toESM(require("stream"),1),import_string_decoder=require("string_decoder"),proc=typeof process=="object"&&process?process:{stdout:null,stderr:null},isStream=s=>!!s&&typeof s=="object"&&(s instanceof Minipass||s instanceof import_stream.default||isReadable(s)||isWritable(s)),isReadable=s=>!!s&&typeof s=="object"&&s instanceof import_events.EventEmitter&&typeof s.pipe=="function"&&s.pipe!==import_stream.default.Writable.prototype.pipe,isWritable=s=>!!s&&typeof s=="object"&&s instanceof import_events.EventEmitter&&typeof s.write=="function"&&typeof s.end=="function",EOF=Symbol("EOF"),MAYBE_EMIT_END=Symbol("maybeEmitEnd"),EMITTED_END=Symbol("emittedEnd"),EMITTING_END=Symbol("emittingEnd"),EMITTED_ERROR=Symbol("emittedError"),CLOSED=Symbol("closed"),READ=Symbol("read"),FLUSH=Symbol("flush"),FLUSHCHUNK=Symbol("flushChunk"),ENCODING=Symbol("encoding"),DECODER=Symbol("decoder"),FLOWING=Symbol("flowing"),PAUSED=Symbol("paused"),RESUME=Symbol("resume"),BUFFER=Symbol("buffer"),PIPES=Symbol("pipes"),BUFFERLENGTH=Symbol("bufferLength"),BUFFERPUSH=Symbol("bufferPush"),BUFFERSHIFT=Symbol("bufferShift"),OBJECTMODE=Symbol("objectMode"),DESTROYED=Symbol("destroyed"),ERROR=Symbol("error"),EMITDATA=Symbol("emitData"),EMITEND=Symbol("emitEnd"),EMITEND2=Symbol("emitEnd2"),ASYNC=Symbol("async"),ABORT=Symbol("abort"),ABORTED=Symbol("aborted"),SIGNAL=Symbol("signal"),DATALISTENERS=Symbol("dataListeners"),DISCARDED=Symbol("discarded"),defer=fn=>Promise.resolve().then(fn),nodefer=fn=>fn(),isEndish=ev=>ev==="end"||ev==="finish"||ev==="prefinish",isArrayBufferLike=b=>b instanceof ArrayBuffer||!!b&&typeof b=="object"&&b.constructor&&b.constructor.name==="ArrayBuffer"&&b.byteLength>=0,isArrayBufferView=b=>!Buffer.isBuffer(b)&&ArrayBuffer.isView(b),Pipe=class{src;dest;opts;ondrain;constructor(src,dest,opts){this.src=src,this.dest=dest,this.opts=opts,this.ondrain=()=>src[RESUME](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(_er){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},PipeProxyErrors=class extends Pipe{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(src,dest,opts){super(src,dest,opts),this.proxyErrors=er=>dest.emit("error",er),src.on("error",this.proxyErrors)}},isObjectModeOptions=o=>!!o.objectMode,isEncodingOptions=o=>!o.objectMode&&!!o.encoding&&o.encoding!=="buffer",Minipass=class extends import_events.EventEmitter{[FLOWING]=!1;[PAUSED]=!1;[PIPES]=[];[BUFFER]=[];[OBJECTMODE];[ENCODING];[ASYNC];[DECODER];[EOF]=!1;[EMITTED_END]=!1;[EMITTING_END]=!1;[CLOSED]=!1;[EMITTED_ERROR]=null;[BUFFERLENGTH]=0;[DESTROYED]=!1;[SIGNAL];[ABORTED]=!1;[DATALISTENERS]=0;[DISCARDED]=!1;writable=!0;readable=!0;constructor(...args){let options=args[0]||{};if(super(),options.objectMode&&typeof options.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");isObjectModeOptions(options)?(this[OBJECTMODE]=!0,this[ENCODING]=null):isEncodingOptions(options)?(this[ENCODING]=options.encoding,this[OBJECTMODE]=!1):(this[OBJECTMODE]=!1,this[ENCODING]=null),this[ASYNC]=!!options.async,this[DECODER]=this[ENCODING]?new import_string_decoder.StringDecoder(this[ENCODING]):null,options&&options.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[BUFFER]}),options&&options.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[PIPES]});let{signal}=options;signal&&(this[SIGNAL]=signal,signal.aborted?this[ABORT]():signal.addEventListener("abort",()=>this[ABORT]()))}get bufferLength(){return this[BUFFERLENGTH]}get encoding(){return this[ENCODING]}set encoding(_enc){throw new Error("Encoding must be set at instantiation time")}setEncoding(_enc){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[OBJECTMODE]}set objectMode(_om){throw new Error("objectMode must be set at instantiation time")}get async(){return this[ASYNC]}set async(a){this[ASYNC]=this[ASYNC]||!!a}[ABORT](){this[ABORTED]=!0,this.emit("abort",this[SIGNAL]?.reason),this.destroy(this[SIGNAL]?.reason)}get aborted(){return this[ABORTED]}set aborted(_){}write(chunk,encoding,cb){if(this[ABORTED])return!1;if(this[EOF])throw new Error("write after end");if(this[DESTROYED])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof encoding=="function"&&(cb=encoding,encoding="utf8"),encoding||(encoding="utf8");let fn=this[ASYNC]?defer:nodefer;if(!this[OBJECTMODE]&&!Buffer.isBuffer(chunk)){if(isArrayBufferView(chunk))chunk=Buffer.from(chunk.buffer,chunk.byteOffset,chunk.byteLength);else if(isArrayBufferLike(chunk))chunk=Buffer.from(chunk);else if(typeof chunk!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[OBJECTMODE]?(this[FLOWING]&&this[BUFFERLENGTH]!==0&&this[FLUSH](!0),this[FLOWING]?this.emit("data",chunk):this[BUFFERPUSH](chunk),this[BUFFERLENGTH]!==0&&this.emit("readable"),cb&&fn(cb),this[FLOWING]):chunk.length?(typeof chunk=="string"&&!(encoding===this[ENCODING]&&!this[DECODER]?.lastNeed)&&(chunk=Buffer.from(chunk,encoding)),Buffer.isBuffer(chunk)&&this[ENCODING]&&(chunk=this[DECODER].write(chunk)),this[FLOWING]&&this[BUFFERLENGTH]!==0&&this[FLUSH](!0),this[FLOWING]?this.emit("data",chunk):this[BUFFERPUSH](chunk),this[BUFFERLENGTH]!==0&&this.emit("readable"),cb&&fn(cb),this[FLOWING]):(this[BUFFERLENGTH]!==0&&this.emit("readable"),cb&&fn(cb),this[FLOWING])}read(n){if(this[DESTROYED])return null;if(this[DISCARDED]=!1,this[BUFFERLENGTH]===0||n===0||n&&n>this[BUFFERLENGTH])return this[MAYBE_EMIT_END](),null;this[OBJECTMODE]&&(n=null),this[BUFFER].length>1&&!this[OBJECTMODE]&&(this[BUFFER]=[this[ENCODING]?this[BUFFER].join(""):Buffer.concat(this[BUFFER],this[BUFFERLENGTH])]);let ret=this[READ](n||null,this[BUFFER][0]);return this[MAYBE_EMIT_END](),ret}[READ](n,chunk){if(this[OBJECTMODE])this[BUFFERSHIFT]();else{let c=chunk;n===c.length||n===null?this[BUFFERSHIFT]():typeof c=="string"?(this[BUFFER][0]=c.slice(n),chunk=c.slice(0,n),this[BUFFERLENGTH]-=n):(this[BUFFER][0]=c.subarray(n),chunk=c.subarray(0,n),this[BUFFERLENGTH]-=n)}return this.emit("data",chunk),!this[BUFFER].length&&!this[EOF]&&this.emit("drain"),chunk}end(chunk,encoding,cb){return typeof chunk=="function"&&(cb=chunk,chunk=void 0),typeof encoding=="function"&&(cb=encoding,encoding="utf8"),chunk!==void 0&&this.write(chunk,encoding),cb&&this.once("end",cb),this[EOF]=!0,this.writable=!1,(this[FLOWING]||!this[PAUSED])&&this[MAYBE_EMIT_END](),this}[RESUME](){this[DESTROYED]||(!this[DATALISTENERS]&&!this[PIPES].length&&(this[DISCARDED]=!0),this[PAUSED]=!1,this[FLOWING]=!0,this.emit("resume"),this[BUFFER].length?this[FLUSH]():this[EOF]?this[MAYBE_EMIT_END]():this.emit("drain"))}resume(){return this[RESUME]()}pause(){this[FLOWING]=!1,this[PAUSED]=!0,this[DISCARDED]=!1}get destroyed(){return this[DESTROYED]}get flowing(){return this[FLOWING]}get paused(){return this[PAUSED]}[BUFFERPUSH](chunk){this[OBJECTMODE]?this[BUFFERLENGTH]+=1:this[BUFFERLENGTH]+=chunk.length,this[BUFFER].push(chunk)}[BUFFERSHIFT](){return this[OBJECTMODE]?this[BUFFERLENGTH]-=1:this[BUFFERLENGTH]-=this[BUFFER][0].length,this[BUFFER].shift()}[FLUSH](noDrain=!1){do;while(this[FLUSHCHUNK](this[BUFFERSHIFT]())&&this[BUFFER].length);!noDrain&&!this[BUFFER].length&&!this[EOF]&&this.emit("drain")}[FLUSHCHUNK](chunk){return this.emit("data",chunk),this[FLOWING]}pipe(dest,opts){if(this[DESTROYED])return dest;this[DISCARDED]=!1;let ended=this[EMITTED_END];return opts=opts||{},dest===proc.stdout||dest===proc.stderr?opts.end=!1:opts.end=opts.end!==!1,opts.proxyErrors=!!opts.proxyErrors,ended?opts.end&&dest.end():(this[PIPES].push(opts.proxyErrors?new PipeProxyErrors(this,dest,opts):new Pipe(this,dest,opts)),this[ASYNC]?defer(()=>this[RESUME]()):this[RESUME]()),dest}unpipe(dest){let p=this[PIPES].find(p2=>p2.dest===dest);p&&(this[PIPES].length===1?(this[FLOWING]&&this[DATALISTENERS]===0&&(this[FLOWING]=!1),this[PIPES]=[]):this[PIPES].splice(this[PIPES].indexOf(p),1),p.unpipe())}addListener(ev,handler){return this.on(ev,handler)}on(ev,handler){let ret=super.on(ev,handler);if(ev==="data")this[DISCARDED]=!1,this[DATALISTENERS]++,!this[PIPES].length&&!this[FLOWING]&&this[RESUME]();else if(ev==="readable"&&this[BUFFERLENGTH]!==0)super.emit("readable");else if(isEndish(ev)&&this[EMITTED_END])super.emit(ev),this.removeAllListeners(ev);else if(ev==="error"&&this[EMITTED_ERROR]){let h=handler;this[ASYNC]?defer(()=>h.call(this,this[EMITTED_ERROR])):h.call(this,this[EMITTED_ERROR])}return ret}removeListener(ev,handler){return this.off(ev,handler)}off(ev,handler){let ret=super.off(ev,handler);return ev==="data"&&(this[DATALISTENERS]=this.listeners("data").length,this[DATALISTENERS]===0&&!this[DISCARDED]&&!this[PIPES].length&&(this[FLOWING]=!1)),ret}removeAllListeners(ev){let ret=super.removeAllListeners(ev);return(ev==="data"||ev===void 0)&&(this[DATALISTENERS]=0,!this[DISCARDED]&&!this[PIPES].length&&(this[FLOWING]=!1)),ret}get emittedEnd(){return this[EMITTED_END]}[MAYBE_EMIT_END](){!this[EMITTING_END]&&!this[EMITTED_END]&&!this[DESTROYED]&&this[BUFFER].length===0&&this[EOF]&&(this[EMITTING_END]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[CLOSED]&&this.emit("close"),this[EMITTING_END]=!1)}emit(ev,...args){let data=args[0];if(ev!=="error"&&ev!=="close"&&ev!==DESTROYED&&this[DESTROYED])return!1;if(ev==="data")return!this[OBJECTMODE]&&!data?!1:this[ASYNC]?(defer(()=>this[EMITDATA](data)),!0):this[EMITDATA](data);if(ev==="end")return this[EMITEND]();if(ev==="close"){if(this[CLOSED]=!0,!this[EMITTED_END]&&!this[DESTROYED])return!1;let ret2=super.emit("close");return this.removeAllListeners("close"),ret2}else if(ev==="error"){this[EMITTED_ERROR]=data,super.emit(ERROR,data);let ret2=!this[SIGNAL]||this.listeners("error").length?super.emit("error",data):!1;return this[MAYBE_EMIT_END](),ret2}else if(ev==="resume"){let ret2=super.emit("resume");return this[MAYBE_EMIT_END](),ret2}else if(ev==="finish"||ev==="prefinish"){let ret2=super.emit(ev);return this.removeAllListeners(ev),ret2}let ret=super.emit(ev,...args);return this[MAYBE_EMIT_END](),ret}[EMITDATA](data){for(let p of this[PIPES])p.dest.write(data)===!1&&this.pause();let ret=this[DISCARDED]?!1:super.emit("data",data);return this[MAYBE_EMIT_END](),ret}[EMITEND](){return this[EMITTED_END]?!1:(this[EMITTED_END]=!0,this.readable=!1,this[ASYNC]?(defer(()=>this[EMITEND2]()),!0):this[EMITEND2]())}[EMITEND2](){if(this[DECODER]){let data=this[DECODER].end();if(data){for(let p of this[PIPES])p.dest.write(data);this[DISCARDED]||super.emit("data",data)}}for(let p of this[PIPES])p.end();let ret=super.emit("end");return this.removeAllListeners("end"),ret}async collect(){let buf=Object.assign([],{dataLength:0});this[OBJECTMODE]||(buf.dataLength=0);let p=this.promise();return this.on("data",c=>{buf.push(c),this[OBJECTMODE]||(buf.dataLength+=c.length)}),await p,buf}async concat(){if(this[OBJECTMODE])throw new Error("cannot concat in objectMode");let buf=await this.collect();return this[ENCODING]?buf.join(""):Buffer.concat(buf,buf.dataLength)}async promise(){return new Promise((resolve2,reject)=>{this.on(DESTROYED,()=>reject(new Error("stream destroyed"))),this.on("error",er=>reject(er)),this.on("end",()=>resolve2())})}[Symbol.asyncIterator](){this[DISCARDED]=!1;let stopped=!1,stop=async()=>(this.pause(),stopped=!0,{value:void 0,done:!0});return{next:()=>{if(stopped)return stop();let res=this.read();if(res!==null)return Promise.resolve({done:!1,value:res});if(this[EOF])return stop();let resolve2,reject,onerr=er=>{this.off("data",ondata),this.off("end",onend),this.off(DESTROYED,ondestroy),stop(),reject(er)},ondata=value=>{this.off("error",onerr),this.off("end",onend),this.off(DESTROYED,ondestroy),this.pause(),resolve2({value,done:!!this[EOF]})},onend=()=>{this.off("error",onerr),this.off("data",ondata),this.off(DESTROYED,ondestroy),stop(),resolve2({done:!0,value:void 0})},ondestroy=()=>onerr(new Error("stream destroyed"));return new Promise((res2,rej)=>{reject=rej,resolve2=res2,this.once(DESTROYED,ondestroy),this.once("error",onerr),this.once("end",onend),this.once("data",ondata)})},throw:stop,return:stop,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[DISCARDED]=!1;let stopped=!1,stop=()=>(this.pause(),this.off(ERROR,stop),this.off(DESTROYED,stop),this.off("end",stop),stopped=!0,{done:!0,value:void 0}),next=()=>{if(stopped)return stop();let value=this.read();return value===null?stop():{done:!1,value}};return this.once("end",stop),this.once(ERROR,stop),this.once(DESTROYED,stop),{next,throw:stop,return:stop,[Symbol.iterator](){return this}}}destroy(er){if(this[DESTROYED])return er?this.emit("error",er):this.emit(DESTROYED),this;this[DESTROYED]=!0,this[DISCARDED]=!0,this[BUFFER].length=0,this[BUFFERLENGTH]=0;let wc=this;return typeof wc.close=="function"&&!this[CLOSED]&&wc.close(),er?this.emit("error",er):this.emit(DESTROYED),this}static get isStream(){return isStream}}}});var import_path15,import_url,actualFS,import_fs5,import_promises2,realpathSync,defaultFS,fsFromOption,uncDriveRegexp,uncToDrive,eitherSep,UNKNOWN,IFIFO,IFCHR,IFDIR,IFBLK,IFREG,IFLNK,IFSOCK,IFMT,IFMT_UNKNOWN,READDIR_CALLED,LSTAT_CALLED,ENOTDIR,ENOENT,ENOREADLINK,ENOREALPATH,ENOCHILD,TYPEMASK,entToType,normalizeCache,normalize,normalizeNocaseCache,normalizeNocase,ResolveCache,ChildrenCache,setAsCwd,PathBase,PathWin32,PathPosix,PathScurryBase,PathScurryWin32,PathScurryPosix,PathScurryDarwin,Path,PathScurry,init_mjs2=__esm({"../../node_modules/path-scurry/dist/mjs/index.js"(){"use strict";init_esm();import_path15=require("path"),import_url=require("url"),actualFS=__toESM(require("fs"),1),import_fs5=require("fs"),import_promises2=require("fs/promises");init_esm2();realpathSync=import_fs5.realpathSync.native,defaultFS={lstatSync:import_fs5.lstatSync,readdir:import_fs5.readdir,readdirSync:import_fs5.readdirSync,readlinkSync:import_fs5.readlinkSync,realpathSync,promises:{lstat:import_promises2.lstat,readdir:import_promises2.readdir,readlink:import_promises2.readlink,realpath:import_promises2.realpath}},fsFromOption=fsOption=>!fsOption||fsOption===defaultFS||fsOption===actualFS?defaultFS:{...defaultFS,...fsOption,promises:{...defaultFS.promises,...fsOption.promises||{}}},uncDriveRegexp=/^\\\\\?\\([a-z]:)\\?$/i,uncToDrive=rootPath=>rootPath.replace(/\//g,"\\").replace(uncDriveRegexp,"$1\\"),eitherSep=/[\\\/]/,UNKNOWN=0,IFIFO=1,IFCHR=2,IFDIR=4,IFBLK=6,IFREG=8,IFLNK=10,IFSOCK=12,IFMT=15,IFMT_UNKNOWN=~IFMT,READDIR_CALLED=16,LSTAT_CALLED=32,ENOTDIR=64,ENOENT=128,ENOREADLINK=256,ENOREALPATH=512,ENOCHILD=ENOTDIR|ENOENT|ENOREALPATH,TYPEMASK=1023,entToType=s=>s.isFile()?IFREG:s.isDirectory()?IFDIR:s.isSymbolicLink()?IFLNK:s.isCharacterDevice()?IFCHR:s.isBlockDevice()?IFBLK:s.isSocket()?IFSOCK:s.isFIFO()?IFIFO:UNKNOWN,normalizeCache=new Map,normalize=s=>{let c=normalizeCache.get(s);if(c)return c;let n=s.normalize("NFKD");return normalizeCache.set(s,n),n},normalizeNocaseCache=new Map,normalizeNocase=s=>{let c=normalizeNocaseCache.get(s);if(c)return c;let n=normalize(s.toLowerCase());return normalizeNocaseCache.set(s,n),n},ResolveCache=class extends LRUCache{constructor(){super({max:256})}},ChildrenCache=class extends LRUCache{constructor(maxSize=16*1024){super({maxSize,sizeCalculation:a=>a.length+1})}},setAsCwd=Symbol("PathScurry setAsCwd"),PathBase=class{name;root;roots;parent;nocase;#fs;#dev;get dev(){return this.#dev}#mode;get mode(){return this.#mode}#nlink;get nlink(){return this.#nlink}#uid;get uid(){return this.#uid}#gid;get gid(){return this.#gid}#rdev;get rdev(){return this.#rdev}#blksize;get blksize(){return this.#blksize}#ino;get ino(){return this.#ino}#size;get size(){return this.#size}#blocks;get blocks(){return this.#blocks}#atimeMs;get atimeMs(){return this.#atimeMs}#mtimeMs;get mtimeMs(){return this.#mtimeMs}#ctimeMs;get ctimeMs(){return this.#ctimeMs}#birthtimeMs;get birthtimeMs(){return this.#birthtimeMs}#atime;get atime(){return this.#atime}#mtime;get mtime(){return this.#mtime}#ctime;get ctime(){return this.#ctime}#birthtime;get birthtime(){return this.#birthtime}#matchName;#depth;#fullpath;#fullpathPosix;#relative;#relativePosix;#type;#children;#linkTarget;#realpath;get path(){return(this.parent||this).fullpath()}constructor(name,type=UNKNOWN,root,roots,nocase,children,opts){this.name=name,this.#matchName=nocase?normalizeNocase(name):normalize(name),this.#type=type&TYPEMASK,this.nocase=nocase,this.roots=roots,this.root=root||this,this.#children=children,this.#fullpath=opts.fullpath,this.#relative=opts.relative,this.#relativePosix=opts.relativePosix,this.parent=opts.parent,this.parent?this.#fs=this.parent.#fs:this.#fs=fsFromOption(opts.fs)}depth(){return this.#depth!==void 0?this.#depth:this.parent?this.#depth=this.parent.depth()+1:this.#depth=0}childrenCache(){return this.#children}resolve(path9){if(!path9)return this;let rootPath=this.getRootString(path9),dirParts=path9.substring(rootPath.length).split(this.splitSep);return rootPath?this.getRoot(rootPath).#resolveParts(dirParts):this.#resolveParts(dirParts)}#resolveParts(dirParts){let p=this;for(let part of dirParts)p=p.child(part);return p}children(){let cached=this.#children.get(this);if(cached)return cached;let children=Object.assign([],{provisional:0});return this.#children.set(this,children),this.#type&=~READDIR_CALLED,children}child(pathPart,opts){if(pathPart===""||pathPart===".")return this;if(pathPart==="..")return this.parent||this;let children=this.children(),name=this.nocase?normalizeNocase(pathPart):normalize(pathPart);for(let p of children)if(p.#matchName===name)return p;let s=this.parent?this.sep:"",fullpath=this.#fullpath?this.#fullpath+s+pathPart:void 0,pchild=this.newChild(pathPart,UNKNOWN,{...opts,parent:this,fullpath});return this.canReaddir()||(pchild.#type|=ENOENT),children.push(pchild),pchild}relative(){if(this.#relative!==void 0)return this.#relative;let name=this.name,p=this.parent;if(!p)return this.#relative=this.name;let pv=p.relative();return pv+(!pv||!p.parent?"":this.sep)+name}relativePosix(){if(this.sep==="/")return this.relative();if(this.#relativePosix!==void 0)return this.#relativePosix;let name=this.name,p=this.parent;if(!p)return this.#relativePosix=this.fullpathPosix();let pv=p.relativePosix();return pv+(!pv||!p.parent?"":"/")+name}fullpath(){if(this.#fullpath!==void 0)return this.#fullpath;let name=this.name,p=this.parent;if(!p)return this.#fullpath=this.name;let fp=p.fullpath()+(p.parent?this.sep:"")+name;return this.#fullpath=fp}fullpathPosix(){if(this.#fullpathPosix!==void 0)return this.#fullpathPosix;if(this.sep==="/")return this.#fullpathPosix=this.fullpath();if(!this.parent){let p2=this.fullpath().replace(/\\/g,"/");return/^[a-z]:\//i.test(p2)?this.#fullpathPosix=`//?/${p2}`:this.#fullpathPosix=p2}let p=this.parent,pfpp=p.fullpathPosix(),fpp=pfpp+(!pfpp||!p.parent?"":"/")+this.name;return this.#fullpathPosix=fpp}isUnknown(){return(this.#type&IFMT)===UNKNOWN}isType(type){return this[`is${type}`]()}getType(){return this.isUnknown()?"Unknown":this.isDirectory()?"Directory":this.isFile()?"File":this.isSymbolicLink()?"SymbolicLink":this.isFIFO()?"FIFO":this.isCharacterDevice()?"CharacterDevice":this.isBlockDevice()?"BlockDevice":this.isSocket()?"Socket":"Unknown"}isFile(){return(this.#type&IFMT)===IFREG}isDirectory(){return(this.#type&IFMT)===IFDIR}isCharacterDevice(){return(this.#type&IFMT)===IFCHR}isBlockDevice(){return(this.#type&IFMT)===IFBLK}isFIFO(){return(this.#type&IFMT)===IFIFO}isSocket(){return(this.#type&IFMT)===IFSOCK}isSymbolicLink(){return(this.#type&IFLNK)===IFLNK}lstatCached(){return this.#type&LSTAT_CALLED?this:void 0}readlinkCached(){return this.#linkTarget}realpathCached(){return this.#realpath}readdirCached(){let children=this.children();return children.slice(0,children.provisional)}canReadlink(){if(this.#linkTarget)return!0;if(!this.parent)return!1;let ifmt=this.#type&IFMT;return!(ifmt!==UNKNOWN&&ifmt!==IFLNK||this.#type&ENOREADLINK||this.#type&ENOENT)}calledReaddir(){return!!(this.#type&READDIR_CALLED)}isENOENT(){return!!(this.#type&ENOENT)}isNamed(n){return this.nocase?this.#matchName===normalizeNocase(n):this.#matchName===normalize(n)}async readlink(){let target=this.#linkTarget;if(target)return target;if(this.canReadlink()&&this.parent)try{let read=await this.#fs.promises.readlink(this.fullpath()),linkTarget=this.parent.resolve(read);if(linkTarget)return this.#linkTarget=linkTarget}catch(er){this.#readlinkFail(er.code);return}}readlinkSync(){let target=this.#linkTarget;if(target)return target;if(this.canReadlink()&&this.parent)try{let read=this.#fs.readlinkSync(this.fullpath()),linkTarget=this.parent.resolve(read);if(linkTarget)return this.#linkTarget=linkTarget}catch(er){this.#readlinkFail(er.code);return}}#readdirSuccess(children){this.#type|=READDIR_CALLED;for(let p=children.provisional;p<children.length;p++)children[p].#markENOENT()}#markENOENT(){this.#type&ENOENT||(this.#type=(this.#type|ENOENT)&IFMT_UNKNOWN,this.#markChildrenENOENT())}#markChildrenENOENT(){let children=this.children();children.provisional=0;for(let p of children)p.#markENOENT()}#markENOREALPATH(){this.#type|=ENOREALPATH,this.#markENOTDIR()}#markENOTDIR(){if(this.#type&ENOTDIR)return;let t2=this.#type;(t2&IFMT)===IFDIR&&(t2&=IFMT_UNKNOWN),this.#type=t2|ENOTDIR,this.#markChildrenENOENT()}#readdirFail(code=""){code==="ENOTDIR"||code==="EPERM"?this.#markENOTDIR():code==="ENOENT"?this.#markENOENT():this.children().provisional=0}#lstatFail(code=""){code==="ENOTDIR"?this.parent.#markENOTDIR():code==="ENOENT"&&this.#markENOENT()}#readlinkFail(code=""){let ter=this.#type;ter|=ENOREADLINK,code==="ENOENT"&&(ter|=ENOENT),(code==="EINVAL"||code==="UNKNOWN")&&(ter&=IFMT_UNKNOWN),this.#type=ter,code==="ENOTDIR"&&this.parent&&this.parent.#markENOTDIR()}#readdirAddChild(e,c){return this.#readdirMaybePromoteChild(e,c)||this.#readdirAddNewChild(e,c)}#readdirAddNewChild(e,c){let type=entToType(e),child=this.newChild(e.name,type,{parent:this}),ifmt=child.#type&IFMT;return ifmt!==IFDIR&&ifmt!==IFLNK&&ifmt!==UNKNOWN&&(child.#type|=ENOTDIR),c.unshift(child),c.provisional++,child}#readdirMaybePromoteChild(e,c){for(let p=c.provisional;p<c.length;p++){let pchild=c[p];if((this.nocase?normalizeNocase(e.name):normalize(e.name))===pchild.#matchName)return this.#readdirPromoteChild(e,pchild,p,c)}}#readdirPromoteChild(e,p,index,c){let v=p.name;return p.#type=p.#type&IFMT_UNKNOWN|entToType(e),v!==e.name&&(p.name=e.name),index!==c.provisional&&(index===c.length-1?c.pop():c.splice(index,1),c.unshift(p)),c.provisional++,p}async lstat(){if(!(this.#type&ENOENT))try{return this.#applyStat(await this.#fs.promises.lstat(this.fullpath())),this}catch(er){this.#lstatFail(er.code)}}lstatSync(){if(!(this.#type&ENOENT))try{return this.#applyStat(this.#fs.lstatSync(this.fullpath())),this}catch(er){this.#lstatFail(er.code)}}#applyStat(st){let{atime,atimeMs,birthtime,birthtimeMs,blksize,blocks,ctime,ctimeMs,dev:dev2,gid,ino,mode,mtime,mtimeMs,nlink,rdev,size,uid}=st;this.#atime=atime,this.#atimeMs=atimeMs,this.#birthtime=birthtime,this.#birthtimeMs=birthtimeMs,this.#blksize=blksize,this.#blocks=blocks,this.#ctime=ctime,this.#ctimeMs=ctimeMs,this.#dev=dev2,this.#gid=gid,this.#ino=ino,this.#mode=mode,this.#mtime=mtime,this.#mtimeMs=mtimeMs,this.#nlink=nlink,this.#rdev=rdev,this.#size=size,this.#uid=uid;let ifmt=entToType(st);this.#type=this.#type&IFMT_UNKNOWN|ifmt|LSTAT_CALLED,ifmt!==UNKNOWN&&ifmt!==IFDIR&&ifmt!==IFLNK&&(this.#type|=ENOTDIR)}#onReaddirCB=[];#readdirCBInFlight=!1;#callOnReaddirCB(children){this.#readdirCBInFlight=!1;let cbs=this.#onReaddirCB.slice();this.#onReaddirCB.length=0,cbs.forEach(cb=>cb(null,children))}readdirCB(cb,allowZalgo=!1){if(!this.canReaddir()){allowZalgo?cb(null,[]):queueMicrotask(()=>cb(null,[]));return}let children=this.children();if(this.calledReaddir()){let c=children.slice(0,children.provisional);allowZalgo?cb(null,c):queueMicrotask(()=>cb(null,c));return}if(this.#onReaddirCB.push(cb),this.#readdirCBInFlight)return;this.#readdirCBInFlight=!0;let fullpath=this.fullpath();this.#fs.readdir(fullpath,{withFileTypes:!0},(er,entries)=>{if(er)this.#readdirFail(er.code),children.provisional=0;else{for(let e of entries)this.#readdirAddChild(e,children);this.#readdirSuccess(children)}this.#callOnReaddirCB(children.slice(0,children.provisional))})}#asyncReaddirInFlight;async readdir(){if(!this.canReaddir())return[];let children=this.children();if(this.calledReaddir())return children.slice(0,children.provisional);let fullpath=this.fullpath();if(this.#asyncReaddirInFlight)await this.#asyncReaddirInFlight;else{let resolve2=()=>{};this.#asyncReaddirInFlight=new Promise(res=>resolve2=res);try{for(let e of await this.#fs.promises.readdir(fullpath,{withFileTypes:!0}))this.#readdirAddChild(e,children);this.#readdirSuccess(children)}catch(er){this.#readdirFail(er.code),children.provisional=0}this.#asyncReaddirInFlight=void 0,resolve2()}return children.slice(0,children.provisional)}readdirSync(){if(!this.canReaddir())return[];let children=this.children();if(this.calledReaddir())return children.slice(0,children.provisional);let fullpath=this.fullpath();try{for(let e of this.#fs.readdirSync(fullpath,{withFileTypes:!0}))this.#readdirAddChild(e,children);this.#readdirSuccess(children)}catch(er){this.#readdirFail(er.code),children.provisional=0}return children.slice(0,children.provisional)}canReaddir(){if(this.#type&ENOCHILD)return!1;let ifmt=IFMT&this.#type;return ifmt===UNKNOWN||ifmt===IFDIR||ifmt===IFLNK}shouldWalk(dirs,walkFilter){return(this.#type&IFDIR)===IFDIR&&!(this.#type&ENOCHILD)&&!dirs.has(this)&&(!walkFilter||walkFilter(this))}async realpath(){if(this.#realpath)return this.#realpath;if(!((ENOREALPATH|ENOREADLINK|ENOENT)&this.#type))try{let rp=await this.#fs.promises.realpath(this.fullpath());return this.#realpath=this.resolve(rp)}catch{this.#markENOREALPATH()}}realpathSync(){if(this.#realpath)return this.#realpath;if(!((ENOREALPATH|ENOREADLINK|ENOENT)&this.#type))try{let rp=this.#fs.realpathSync(this.fullpath());return this.#realpath=this.resolve(rp)}catch{this.#markENOREALPATH()}}[setAsCwd](oldCwd){if(oldCwd===this)return;let changed=new Set([]),rp=[],p=this;for(;p&&p.parent;)changed.add(p),p.#relative=rp.join(this.sep),p.#relativePosix=rp.join("/"),p=p.parent,rp.push("..");for(p=oldCwd;p&&p.parent&&!changed.has(p);)p.#relative=void 0,p.#relativePosix=void 0,p=p.parent}},PathWin32=class _PathWin32 extends PathBase{sep="\\";splitSep=eitherSep;constructor(name,type=UNKNOWN,root,roots,nocase,children,opts){super(name,type,root,roots,nocase,children,opts)}newChild(name,type=UNKNOWN,opts={}){return new _PathWin32(name,type,this.root,this.roots,this.nocase,this.childrenCache(),opts)}getRootString(path9){return import_path15.win32.parse(path9).root}getRoot(rootPath){if(rootPath=uncToDrive(rootPath.toUpperCase()),rootPath===this.root.name)return this.root;for(let[compare,root]of Object.entries(this.roots))if(this.sameRoot(rootPath,compare))return this.roots[rootPath]=root;return this.roots[rootPath]=new PathScurryWin32(rootPath,this).root}sameRoot(rootPath,compare=this.root.name){return rootPath=rootPath.toUpperCase().replace(/\//g,"\\").replace(uncDriveRegexp,"$1\\"),rootPath===compare}},PathPosix=class _PathPosix extends PathBase{splitSep="/";sep="/";constructor(name,type=UNKNOWN,root,roots,nocase,children,opts){super(name,type,root,roots,nocase,children,opts)}getRootString(path9){return path9.startsWith("/")?"/":""}getRoot(_rootPath){return this.root}newChild(name,type=UNKNOWN,opts={}){return new _PathPosix(name,type,this.root,this.roots,this.nocase,this.childrenCache(),opts)}},PathScurryBase=class{root;rootPath;roots;cwd;#resolveCache;#resolvePosixCache;#children;nocase;#fs;constructor(cwd=process.cwd(),pathImpl,sep2,{nocase,childrenCacheSize=16*1024,fs:fs6=defaultFS}={}){this.#fs=fsFromOption(fs6),(cwd instanceof URL||cwd.startsWith("file://"))&&(cwd=(0,import_url.fileURLToPath)(cwd));let cwdPath=pathImpl.resolve(cwd);this.roots=Object.create(null),this.rootPath=this.parseRootPath(cwdPath),this.#resolveCache=new ResolveCache,this.#resolvePosixCache=new ResolveCache,this.#children=new ChildrenCache(childrenCacheSize);let split=cwdPath.substring(this.rootPath.length).split(sep2);if(split.length===1&&!split[0]&&split.pop(),nocase===void 0)throw new TypeError("must provide nocase setting to PathScurryBase ctor");this.nocase=nocase,this.root=this.newRoot(this.#fs),this.roots[this.rootPath]=this.root;let prev=this.root,len=split.length-1,joinSep=pathImpl.sep,abs=this.rootPath,sawFirst=!1;for(let part of split){let l=len--;prev=prev.child(part,{relative:new Array(l).fill("..").join(joinSep),relativePosix:new Array(l).fill("..").join("/"),fullpath:abs+=(sawFirst?"":joinSep)+part}),sawFirst=!0}this.cwd=prev}depth(path9=this.cwd){return typeof path9=="string"&&(path9=this.cwd.resolve(path9)),path9.depth()}childrenCache(){return this.#children}resolve(...paths){let r="";for(let i=paths.length-1;i>=0;i--){let p=paths[i];if(!(!p||p===".")&&(r=r?`${p}/${r}`:p,this.isAbsolute(p)))break}let cached=this.#resolveCache.get(r);if(cached!==void 0)return cached;let result=this.cwd.resolve(r).fullpath();return this.#resolveCache.set(r,result),result}resolvePosix(...paths){let r="";for(let i=paths.length-1;i>=0;i--){let p=paths[i];if(!(!p||p===".")&&(r=r?`${p}/${r}`:p,this.isAbsolute(p)))break}let cached=this.#resolvePosixCache.get(r);if(cached!==void 0)return cached;let result=this.cwd.resolve(r).fullpathPosix();return this.#resolvePosixCache.set(r,result),result}relative(entry=this.cwd){return typeof entry=="string"&&(entry=this.cwd.resolve(entry)),entry.relative()}relativePosix(entry=this.cwd){return typeof entry=="string"&&(entry=this.cwd.resolve(entry)),entry.relativePosix()}basename(entry=this.cwd){return typeof entry=="string"&&(entry=this.cwd.resolve(entry)),entry.name}dirname(entry=this.cwd){return typeof entry=="string"&&(entry=this.cwd.resolve(entry)),(entry.parent||entry).fullpath()}async readdir(entry=this.cwd,opts={withFileTypes:!0}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes}=opts;if(entry.canReaddir()){let p=await entry.readdir();return withFileTypes?p:p.map(e=>e.name)}else return[]}readdirSync(entry=this.cwd,opts={withFileTypes:!0}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes=!0}=opts;return entry.canReaddir()?withFileTypes?entry.readdirSync():entry.readdirSync().map(e=>e.name):[]}async lstat(entry=this.cwd){return typeof entry=="string"&&(entry=this.cwd.resolve(entry)),entry.lstat()}lstatSync(entry=this.cwd){return typeof entry=="string"&&(entry=this.cwd.resolve(entry)),entry.lstatSync()}async readlink(entry=this.cwd,{withFileTypes}={withFileTypes:!1}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(withFileTypes=entry.withFileTypes,entry=this.cwd);let e=await entry.readlink();return withFileTypes?e:e?.fullpath()}readlinkSync(entry=this.cwd,{withFileTypes}={withFileTypes:!1}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(withFileTypes=entry.withFileTypes,entry=this.cwd);let e=entry.readlinkSync();return withFileTypes?e:e?.fullpath()}async realpath(entry=this.cwd,{withFileTypes}={withFileTypes:!1}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(withFileTypes=entry.withFileTypes,entry=this.cwd);let e=await entry.realpath();return withFileTypes?e:e?.fullpath()}realpathSync(entry=this.cwd,{withFileTypes}={withFileTypes:!1}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(withFileTypes=entry.withFileTypes,entry=this.cwd);let e=entry.realpathSync();return withFileTypes?e:e?.fullpath()}async walk(entry=this.cwd,opts={}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes=!0,follow=!1,filter:filter2,walkFilter}=opts,results=[];(!filter2||filter2(entry))&&results.push(withFileTypes?entry:entry.fullpath());let dirs=new Set,walk=(dir,cb)=>{dirs.add(dir),dir.readdirCB((er,entries)=>{if(er)return cb(er);let len=entries.length;if(!len)return cb();let next=()=>{--len===0&&cb()};for(let e of entries)(!filter2||filter2(e))&&results.push(withFileTypes?e:e.fullpath()),follow&&e.isSymbolicLink()?e.realpath().then(r=>r?.isUnknown()?r.lstat():r).then(r=>r?.shouldWalk(dirs,walkFilter)?walk(r,next):next()):e.shouldWalk(dirs,walkFilter)?walk(e,next):next()},!0)},start=entry;return new Promise((res,rej)=>{walk(start,er=>{if(er)return rej(er);res(results)})})}walkSync(entry=this.cwd,opts={}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes=!0,follow=!1,filter:filter2,walkFilter}=opts,results=[];(!filter2||filter2(entry))&&results.push(withFileTypes?entry:entry.fullpath());let dirs=new Set([entry]);for(let dir of dirs){let entries=dir.readdirSync();for(let e of entries){(!filter2||filter2(e))&&results.push(withFileTypes?e:e.fullpath());let r=e;if(e.isSymbolicLink()){if(!(follow&&(r=e.realpathSync())))continue;r.isUnknown()&&r.lstatSync()}r.shouldWalk(dirs,walkFilter)&&dirs.add(r)}}return results}[Symbol.asyncIterator](){return this.iterate()}iterate(entry=this.cwd,options={}){return typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(options=entry,entry=this.cwd),this.stream(entry,options)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(entry=this.cwd,opts={}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes=!0,follow=!1,filter:filter2,walkFilter}=opts;(!filter2||filter2(entry))&&(yield withFileTypes?entry:entry.fullpath());let dirs=new Set([entry]);for(let dir of dirs){let entries=dir.readdirSync();for(let e of entries){(!filter2||filter2(e))&&(yield withFileTypes?e:e.fullpath());let r=e;if(e.isSymbolicLink()){if(!(follow&&(r=e.realpathSync())))continue;r.isUnknown()&&r.lstatSync()}r.shouldWalk(dirs,walkFilter)&&dirs.add(r)}}}stream(entry=this.cwd,opts={}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes=!0,follow=!1,filter:filter2,walkFilter}=opts,results=new Minipass({objectMode:!0});(!filter2||filter2(entry))&&results.write(withFileTypes?entry:entry.fullpath());let dirs=new Set,queue=[entry],processing=0,process3=()=>{let paused=!1;for(;!paused;){let dir=queue.shift();if(!dir){processing===0&&results.end();return}processing++,dirs.add(dir);let onReaddir=(er,entries,didRealpaths=!1)=>{if(er)return results.emit("error",er);if(follow&&!didRealpaths){let promises=[];for(let e of entries)e.isSymbolicLink()&&promises.push(e.realpath().then(r=>r?.isUnknown()?r.lstat():r));if(promises.length){Promise.all(promises).then(()=>onReaddir(null,entries,!0));return}}for(let e of entries)e&&(!filter2||filter2(e))&&(results.write(withFileTypes?e:e.fullpath())||(paused=!0));processing--;for(let e of entries){let r=e.realpathCached()||e;r.shouldWalk(dirs,walkFilter)&&queue.push(r)}paused&&!results.flowing?results.once("drain",process3):sync2||process3()},sync2=!0;dir.readdirCB(onReaddir,!0),sync2=!1}};return process3(),results}streamSync(entry=this.cwd,opts={}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes=!0,follow=!1,filter:filter2,walkFilter}=opts,results=new Minipass({objectMode:!0}),dirs=new Set;(!filter2||filter2(entry))&&results.write(withFileTypes?entry:entry.fullpath());let queue=[entry],processing=0,process3=()=>{let paused=!1;for(;!paused;){let dir=queue.shift();if(!dir){processing===0&&results.end();return}processing++,dirs.add(dir);let entries=dir.readdirSync();for(let e of entries)(!filter2||filter2(e))&&(results.write(withFileTypes?e:e.fullpath())||(paused=!0));processing--;for(let e of entries){let r=e;if(e.isSymbolicLink()){if(!(follow&&(r=e.realpathSync())))continue;r.isUnknown()&&r.lstatSync()}r.shouldWalk(dirs,walkFilter)&&queue.push(r)}}paused&&!results.flowing&&results.once("drain",process3)};return process3(),results}chdir(path9=this.cwd){let oldCwd=this.cwd;this.cwd=typeof path9=="string"?this.cwd.resolve(path9):path9,this.cwd[setAsCwd](oldCwd)}},PathScurryWin32=class extends PathScurryBase{sep="\\";constructor(cwd=process.cwd(),opts={}){let{nocase=!0}=opts;super(cwd,import_path15.win32,"\\",{...opts,nocase}),this.nocase=nocase;for(let p=this.cwd;p;p=p.parent)p.nocase=this.nocase}parseRootPath(dir){return import_path15.win32.parse(dir).root.toUpperCase()}newRoot(fs6){return new PathWin32(this.rootPath,IFDIR,void 0,this.roots,this.nocase,this.childrenCache(),{fs:fs6})}isAbsolute(p){return p.startsWith("/")||p.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(p)}},PathScurryPosix=class extends PathScurryBase{sep="/";constructor(cwd=process.cwd(),opts={}){let{nocase=!1}=opts;super(cwd,import_path15.posix,"/",{...opts,nocase}),this.nocase=nocase}parseRootPath(_dir){return"/"}newRoot(fs6){return new PathPosix(this.rootPath,IFDIR,void 0,this.roots,this.nocase,this.childrenCache(),{fs:fs6})}isAbsolute(p){return p.startsWith("/")}},PathScurryDarwin=class extends PathScurryPosix{constructor(cwd=process.cwd(),opts={}){let{nocase=!0}=opts;super(cwd,{...opts,nocase})}},Path=process.platform==="win32"?PathWin32:PathPosix,PathScurry=process.platform==="win32"?PathScurryWin32:process.platform==="darwin"?PathScurryDarwin:PathScurryPosix}});var isPatternList,isGlobList,Pattern,init_pattern=__esm({"../../node_modules/glob/dist/esm/pattern.js"(){"use strict";init_mjs();isPatternList=pl=>pl.length>=1,isGlobList=gl=>gl.length>=1,Pattern=class _Pattern{#patternList;#globList;#index;length;#platform;#rest;#globString;#isDrive;#isUNC;#isAbsolute;#followGlobstar=!0;constructor(patternList,globList,index,platform){if(!isPatternList(patternList))throw new TypeError("empty pattern list");if(!isGlobList(globList))throw new TypeError("empty glob list");if(globList.length!==patternList.length)throw new TypeError("mismatched pattern list and glob list lengths");if(this.length=patternList.length,index<0||index>=this.length)throw new TypeError("index out of range");if(this.#patternList=patternList,this.#globList=globList,this.#index=index,this.#platform=platform,this.#index===0){if(this.isUNC()){let[p0,p1,p2,p3,...prest]=this.#patternList,[g0,g1,g2,g3,...grest]=this.#globList;prest[0]===""&&(prest.shift(),grest.shift());let p=[p0,p1,p2,p3,""].join("/"),g=[g0,g1,g2,g3,""].join("/");this.#patternList=[p,...prest],this.#globList=[g,...grest],this.length=this.#patternList.length}else if(this.isDrive()||this.isAbsolute()){let[p1,...prest]=this.#patternList,[g1,...grest]=this.#globList;prest[0]===""&&(prest.shift(),grest.shift());let p=p1+"/",g=g1+"/";this.#patternList=[p,...prest],this.#globList=[g,...grest],this.length=this.#patternList.length}}}pattern(){return this.#patternList[this.#index]}isString(){return typeof this.#patternList[this.#index]=="string"}isGlobstar(){return this.#patternList[this.#index]===GLOBSTAR}isRegExp(){return this.#patternList[this.#index]instanceof RegExp}globString(){return this.#globString=this.#globString||(this.#index===0?this.isAbsolute()?this.#globList[0]+this.#globList.slice(1).join("/"):this.#globList.join("/"):this.#globList.slice(this.#index).join("/"))}hasMore(){return this.length>this.#index+1}rest(){return this.#rest!==void 0?this.#rest:this.hasMore()?(this.#rest=new _Pattern(this.#patternList,this.#globList,this.#index+1,this.#platform),this.#rest.#isAbsolute=this.#isAbsolute,this.#rest.#isUNC=this.#isUNC,this.#rest.#isDrive=this.#isDrive,this.#rest):this.#rest=null}isUNC(){let pl=this.#patternList;return this.#isUNC!==void 0?this.#isUNC:this.#isUNC=this.#platform==="win32"&&this.#index===0&&pl[0]===""&&pl[1]===""&&typeof pl[2]=="string"&&!!pl[2]&&typeof pl[3]=="string"&&!!pl[3]}isDrive(){let pl=this.#patternList;return this.#isDrive!==void 0?this.#isDrive:this.#isDrive=this.#platform==="win32"&&this.#index===0&&this.length>1&&typeof pl[0]=="string"&&/^[a-z]:$/i.test(pl[0])}isAbsolute(){let pl=this.#patternList;return this.#isAbsolute!==void 0?this.#isAbsolute:this.#isAbsolute=pl[0]===""&&pl.length>1||this.isDrive()||this.isUNC()}root(){let p=this.#patternList[0];return typeof p=="string"&&this.isAbsolute()&&this.#index===0?p:""}checkFollowGlobstar(){return!(this.#index===0||!this.isGlobstar()||!this.#followGlobstar)}markFollowGlobstar(){return this.#index===0||!this.isGlobstar()||!this.#followGlobstar?!1:(this.#followGlobstar=!1,!0)}}}});var defaultPlatform2,Ignore,init_ignore=__esm({"../../node_modules/glob/dist/esm/ignore.js"(){"use strict";init_mjs();init_pattern();defaultPlatform2=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",Ignore=class{relative;relativeChildren;absolute;absoluteChildren;constructor(ignored,{nobrace,nocase,noext,noglobstar,platform=defaultPlatform2}){this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[];let mmopts={dot:!0,nobrace,nocase,noext,noglobstar,optimizationLevel:2,platform,nocomment:!0,nonegate:!0};for(let ign of ignored){let mm=new Minimatch(ign,mmopts);for(let i=0;i<mm.set.length;i++){let parsed=mm.set[i],globParts=mm.globParts[i];if(!parsed||!globParts)throw new Error("invalid pattern object");let p=new Pattern(parsed,globParts,0,platform),m=new Minimatch(p.globString(),mmopts),children=globParts[globParts.length-1]==="**",absolute=p.isAbsolute();absolute?this.absolute.push(m):this.relative.push(m),children&&(absolute?this.absoluteChildren.push(m):this.relativeChildren.push(m))}}}ignored(p){let fullpath=p.fullpath(),fullpaths=`${fullpath}/`,relative=p.relative()||".",relatives=`${relative}/`;for(let m of this.relative)if(m.match(relative)||m.match(relatives))return!0;for(let m of this.absolute)if(m.match(fullpath)||m.match(fullpaths))return!0;return!1}childrenIgnored(p){let fullpath=p.fullpath()+"/",relative=(p.relative()||".")+"/";for(let m of this.relativeChildren)if(m.match(relative))return!0;for(let m of this.absoluteChildren)if(m.match(fullpath))return!0;return!1}}}});var HasWalkedCache,MatchRecord,SubWalks,Processor,init_processor=__esm({"../../node_modules/glob/dist/esm/processor.js"(){"use strict";init_mjs();HasWalkedCache=class _HasWalkedCache{store;constructor(store=new Map){this.store=store}copy(){return new _HasWalkedCache(new Map(this.store))}hasWalked(target,pattern){return this.store.get(target.fullpath())?.has(pattern.globString())}storeWalked(target,pattern){let fullpath=target.fullpath(),cached=this.store.get(fullpath);cached?cached.add(pattern.globString()):this.store.set(fullpath,new Set([pattern.globString()]))}},MatchRecord=class{store=new Map;add(target,absolute,ifDir){let n=(absolute?2:0)|(ifDir?1:0),current=this.store.get(target);this.store.set(target,current===void 0?n:n&current)}entries(){return[...this.store.entries()].map(([path9,n])=>[path9,!!(n&2),!!(n&1)])}},SubWalks=class{store=new Map;add(target,pattern){if(!target.canReaddir())return;let subs=this.store.get(target);subs?subs.find(p=>p.globString()===pattern.globString())||subs.push(pattern):this.store.set(target,[pattern])}get(target){let subs=this.store.get(target);if(!subs)throw new Error("attempting to walk unknown path");return subs}entries(){return this.keys().map(k=>[k,this.store.get(k)])}keys(){return[...this.store.keys()].filter(t2=>t2.canReaddir())}},Processor=class _Processor{hasWalkedCache;matches=new MatchRecord;subwalks=new SubWalks;patterns;follow;dot;opts;constructor(opts,hasWalkedCache){this.opts=opts,this.follow=!!opts.follow,this.dot=!!opts.dot,this.hasWalkedCache=hasWalkedCache?hasWalkedCache.copy():new HasWalkedCache}processPatterns(target,patterns){this.patterns=patterns;let processingSet=patterns.map(p=>[target,p]);for(let[t2,pattern]of processingSet){this.hasWalkedCache.storeWalked(t2,pattern);let root=pattern.root(),absolute=pattern.isAbsolute()&&this.opts.absolute!==!1;if(root){t2=t2.resolve(root==="/"&&this.opts.root!==void 0?this.opts.root:root);let rest2=pattern.rest();if(rest2)pattern=rest2;else{this.matches.add(t2,!0,!1);continue}}if(t2.isENOENT())continue;let p,rest,changed=!1;for(;typeof(p=pattern.pattern())=="string"&&(rest=pattern.rest());)t2=t2.resolve(p),pattern=rest,changed=!0;if(p=pattern.pattern(),rest=pattern.rest(),changed){if(this.hasWalkedCache.hasWalked(t2,pattern))continue;this.hasWalkedCache.storeWalked(t2,pattern)}if(typeof p=="string"){let ifDir=p===".."||p===""||p===".";this.matches.add(t2.resolve(p),absolute,ifDir);continue}else if(p===GLOBSTAR){(!t2.isSymbolicLink()||this.follow||pattern.checkFollowGlobstar())&&this.subwalks.add(t2,pattern);let rp=rest?.pattern(),rrest=rest?.rest();if(!rest||(rp===""||rp===".")&&!rrest)this.matches.add(t2,absolute,rp===""||rp===".");else if(rp===".."){let tp=t2.parent||t2;rrest?this.hasWalkedCache.hasWalked(tp,rrest)||this.subwalks.add(tp,rrest):this.matches.add(tp,absolute,!0)}}else p instanceof RegExp&&this.subwalks.add(t2,pattern)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new _Processor(this.opts,this.hasWalkedCache)}filterEntries(parent,entries){let patterns=this.subwalks.get(parent),results=this.child();for(let e of entries)for(let pattern of patterns){let absolute=pattern.isAbsolute(),p=pattern.pattern(),rest=pattern.rest();p===GLOBSTAR?results.testGlobstar(e,pattern,rest,absolute):p instanceof RegExp?results.testRegExp(e,p,rest,absolute):results.testString(e,p,rest,absolute)}return results}testGlobstar(e,pattern,rest,absolute){if((this.dot||!e.name.startsWith("."))&&(pattern.hasMore()||this.matches.add(e,absolute,!1),e.canReaddir()&&(this.follow||!e.isSymbolicLink()?this.subwalks.add(e,pattern):e.isSymbolicLink()&&(rest&&pattern.checkFollowGlobstar()?this.subwalks.add(e,rest):pattern.markFollowGlobstar()&&this.subwalks.add(e,pattern)))),rest){let rp=rest.pattern();if(typeof rp=="string"&&rp!==".."&&rp!==""&&rp!==".")this.testString(e,rp,rest.rest(),absolute);else if(rp===".."){let ep=e.parent||e;this.subwalks.add(ep,rest)}else rp instanceof RegExp&&this.testRegExp(e,rp,rest.rest(),absolute)}}testRegExp(e,p,rest,absolute){p.test(e.name)&&(rest?this.subwalks.add(e,rest):this.matches.add(e,absolute,!1))}testString(e,p,rest,absolute){e.isNamed(p)&&(rest?this.subwalks.add(e,rest):this.matches.add(e,absolute,!1))}}}});var makeIgnore,GlobUtil,GlobWalker,GlobStream,init_walker=__esm({"../../node_modules/glob/dist/esm/walker.js"(){"use strict";init_esm2();init_ignore();init_processor();makeIgnore=(ignore,opts)=>typeof ignore=="string"?new Ignore([ignore],opts):Array.isArray(ignore)?new Ignore(ignore,opts):ignore,GlobUtil=class{path;patterns;opts;seen=new Set;paused=!1;aborted=!1;#onResume=[];#ignore;#sep;signal;maxDepth;constructor(patterns,path9,opts){this.patterns=patterns,this.path=path9,this.opts=opts,this.#sep=!opts.posix&&opts.platform==="win32"?"\\":"/",opts.ignore&&(this.#ignore=makeIgnore(opts.ignore,opts)),this.maxDepth=opts.maxDepth||1/0,opts.signal&&(this.signal=opts.signal,this.signal.addEventListener("abort",()=>{this.#onResume.length=0}))}#ignored(path9){return this.seen.has(path9)||!!this.#ignore?.ignored?.(path9)}#childrenIgnored(path9){return!!this.#ignore?.childrenIgnored?.(path9)}pause(){this.paused=!0}resume(){if(this.signal?.aborted)return;this.paused=!1;let fn;for(;!this.paused&&(fn=this.#onResume.shift());)fn()}onResume(fn){this.signal?.aborted||(this.paused?this.#onResume.push(fn):fn())}async matchCheck(e,ifDir){if(ifDir&&this.opts.nodir)return;let rpc;if(this.opts.realpath){if(rpc=e.realpathCached()||await e.realpath(),!rpc)return;e=rpc}let needStat=e.isUnknown()||this.opts.stat;return this.matchCheckTest(needStat?await e.lstat():e,ifDir)}matchCheckTest(e,ifDir){return e&&(this.maxDepth===1/0||e.depth()<=this.maxDepth)&&(!ifDir||e.canReaddir())&&(!this.opts.nodir||!e.isDirectory())&&!this.#ignored(e)?e:void 0}matchCheckSync(e,ifDir){if(ifDir&&this.opts.nodir)return;let rpc;if(this.opts.realpath){if(rpc=e.realpathCached()||e.realpathSync(),!rpc)return;e=rpc}let needStat=e.isUnknown()||this.opts.stat;return this.matchCheckTest(needStat?e.lstatSync():e,ifDir)}matchFinish(e,absolute){if(this.#ignored(e))return;let abs=this.opts.absolute===void 0?absolute:this.opts.absolute;this.seen.add(e);let mark=this.opts.mark&&e.isDirectory()?this.#sep:"";if(this.opts.withFileTypes)this.matchEmit(e);else if(abs){let abs2=this.opts.posix?e.fullpathPosix():e.fullpath();this.matchEmit(abs2+mark)}else{let rel=this.opts.posix?e.relativePosix():e.relative(),pre=this.opts.dotRelative&&!rel.startsWith(".."+this.#sep)?"."+this.#sep:"";this.matchEmit(rel?pre+rel+mark:"."+mark)}}async match(e,absolute,ifDir){let p=await this.matchCheck(e,ifDir);p&&this.matchFinish(p,absolute)}matchSync(e,absolute,ifDir){let p=this.matchCheckSync(e,ifDir);p&&this.matchFinish(p,absolute)}walkCB(target,patterns,cb){this.signal?.aborted&&cb(),this.walkCB2(target,patterns,new Processor(this.opts),cb)}walkCB2(target,patterns,processor,cb){if(this.#childrenIgnored(target))return cb();if(this.signal?.aborted&&cb(),this.paused){this.onResume(()=>this.walkCB2(target,patterns,processor,cb));return}processor.processPatterns(target,patterns);let tasks=1,next=()=>{--tasks===0&&cb()};for(let[m,absolute,ifDir]of processor.matches.entries())this.#ignored(m)||(tasks++,this.match(m,absolute,ifDir).then(()=>next()));for(let t2 of processor.subwalkTargets()){if(this.maxDepth!==1/0&&t2.depth()>=this.maxDepth)continue;tasks++;let childrenCached=t2.readdirCached();t2.calledReaddir()?this.walkCB3(t2,childrenCached,processor,next):t2.readdirCB((_,entries)=>this.walkCB3(t2,entries,processor,next),!0)}next()}walkCB3(target,entries,processor,cb){processor=processor.filterEntries(target,entries);let tasks=1,next=()=>{--tasks===0&&cb()};for(let[m,absolute,ifDir]of processor.matches.entries())this.#ignored(m)||(tasks++,this.match(m,absolute,ifDir).then(()=>next()));for(let[target2,patterns]of processor.subwalks.entries())tasks++,this.walkCB2(target2,patterns,processor.child(),next);next()}walkCBSync(target,patterns,cb){this.signal?.aborted&&cb(),this.walkCB2Sync(target,patterns,new Processor(this.opts),cb)}walkCB2Sync(target,patterns,processor,cb){if(this.#childrenIgnored(target))return cb();if(this.signal?.aborted&&cb(),this.paused){this.onResume(()=>this.walkCB2Sync(target,patterns,processor,cb));return}processor.processPatterns(target,patterns);let tasks=1,next=()=>{--tasks===0&&cb()};for(let[m,absolute,ifDir]of processor.matches.entries())this.#ignored(m)||this.matchSync(m,absolute,ifDir);for(let t2 of processor.subwalkTargets()){if(this.maxDepth!==1/0&&t2.depth()>=this.maxDepth)continue;tasks++;let children=t2.readdirSync();this.walkCB3Sync(t2,children,processor,next)}next()}walkCB3Sync(target,entries,processor,cb){processor=processor.filterEntries(target,entries);let tasks=1,next=()=>{--tasks===0&&cb()};for(let[m,absolute,ifDir]of processor.matches.entries())this.#ignored(m)||this.matchSync(m,absolute,ifDir);for(let[target2,patterns]of processor.subwalks.entries())tasks++,this.walkCB2Sync(target2,patterns,processor.child(),next);next()}},GlobWalker=class extends GlobUtil{matches;constructor(patterns,path9,opts){super(patterns,path9,opts),this.matches=new Set}matchEmit(e){this.matches.add(e)}async walk(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&await this.path.lstat(),await new Promise((res,rej)=>{this.walkCB(this.path,this.patterns,()=>{this.signal?.aborted?rej(this.signal.reason):res(this.matches)})}),this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>{if(this.signal?.aborted)throw this.signal.reason}),this.matches}},GlobStream=class extends GlobUtil{results;constructor(patterns,path9,opts){super(patterns,path9,opts),this.results=new Minipass({signal:this.signal,objectMode:!0}),this.results.on("drain",()=>this.resume()),this.results.on("resume",()=>this.resume())}matchEmit(e){this.results.write(e),this.results.flowing||this.pause()}stream(){let target=this.path;return target.isUnknown()?target.lstat().then(()=>{this.walkCB(target,this.patterns,()=>this.results.end())}):this.walkCB(target,this.patterns,()=>this.results.end()),this.results}streamSync(){return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}}}});var import_url2,defaultPlatform3,Glob,init_glob=__esm({"../../node_modules/glob/dist/esm/glob.js"(){"use strict";init_mjs();init_mjs2();import_url2=require("url");init_pattern();init_walker();defaultPlatform3=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",Glob=class{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;opts;patterns;constructor(pattern,opts){if(!opts)throw new TypeError("glob options required");if(this.withFileTypes=!!opts.withFileTypes,this.signal=opts.signal,this.follow=!!opts.follow,this.dot=!!opts.dot,this.dotRelative=!!opts.dotRelative,this.nodir=!!opts.nodir,this.mark=!!opts.mark,opts.cwd?(opts.cwd instanceof URL||opts.cwd.startsWith("file://"))&&(opts.cwd=(0,import_url2.fileURLToPath)(opts.cwd)):this.cwd="",this.cwd=opts.cwd||"",this.root=opts.root,this.magicalBraces=!!opts.magicalBraces,this.nobrace=!!opts.nobrace,this.noext=!!opts.noext,this.realpath=!!opts.realpath,this.absolute=opts.absolute,this.noglobstar=!!opts.noglobstar,this.matchBase=!!opts.matchBase,this.maxDepth=typeof opts.maxDepth=="number"?opts.maxDepth:1/0,this.stat=!!opts.stat,this.ignore=opts.ignore,this.withFileTypes&&this.absolute!==void 0)throw new Error("cannot set absolute and withFileTypes:true");if(typeof pattern=="string"&&(pattern=[pattern]),this.windowsPathsNoEscape=!!opts.windowsPathsNoEscape||opts.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(pattern=pattern.map(p=>p.replace(/\\/g,"/"))),this.matchBase){if(opts.noglobstar)throw new TypeError("base matching requires globstar");pattern=pattern.map(p=>p.includes("/")?p:`./**/${p}`)}if(this.pattern=pattern,this.platform=opts.platform||defaultPlatform3,this.opts={...opts,platform:this.platform},opts.scurry){if(this.scurry=opts.scurry,opts.nocase!==void 0&&opts.nocase!==opts.scurry.nocase)throw new Error("nocase option contradicts provided scurry option")}else{let Scurry=opts.platform==="win32"?PathScurryWin32:opts.platform==="darwin"?PathScurryDarwin:opts.platform?PathScurryPosix:PathScurry;this.scurry=new Scurry(this.cwd,{nocase:opts.nocase,fs:opts.fs})}this.nocase=this.scurry.nocase;let nocaseMagicOnly=this.platform==="darwin"||this.platform==="win32",mmo={...opts,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly,nocomment:!0,noext:this.noext,nonegate:!0,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},mms=this.pattern.map(p=>new Minimatch(p,mmo)),[matchSet,globParts]=mms.reduce((set,m)=>(set[0].push(...m.set),set[1].push(...m.globParts),set),[[],[]]);this.patterns=matchSet.map((set,i)=>{let g=globParts[i];if(!g)throw new Error("invalid pattern object");return new Pattern(set,g,0,this.platform)})}async walk(){return[...await new GlobWalker(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase}).walk()]}walkSync(){return[...new GlobWalker(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase}).walkSync()]}stream(){return new GlobStream(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase}).stream()}streamSync(){return new GlobStream(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}}}});var hasMagic,init_has_magic=__esm({"../../node_modules/glob/dist/esm/has-magic.js"(){"use strict";init_mjs();hasMagic=(pattern,options={})=>{Array.isArray(pattern)||(pattern=[pattern]);for(let p of pattern)if(new Minimatch(p,options).hasMagic())return!0;return!1}}});function globStreamSync(pattern,options={}){return new Glob(pattern,options).streamSync()}function globStream(pattern,options={}){return new Glob(pattern,options).stream()}function globSync(pattern,options={}){return new Glob(pattern,options).walkSync()}async function glob_(pattern,options={}){return new Glob(pattern,options).walk()}function globIterateSync(pattern,options={}){return new Glob(pattern,options).iterateSync()}function globIterate(pattern,options={}){return new Glob(pattern,options).iterate()}var streamSync,stream,iterateSync,iterate,sync,glob2,init_esm3=__esm({"../../node_modules/glob/dist/esm/index.js"(){"use strict";init_mjs();init_glob();init_has_magic();init_mjs();init_glob();init_has_magic();streamSync=globStreamSync,stream=Object.assign(globStream,{sync:globStreamSync}),iterateSync=globIterateSync,iterate=Object.assign(globIterate,{sync:globIterateSync}),sync=Object.assign(globSync,{stream:globStreamSync,iterate:globIterateSync}),glob2=Object.assign(glob_,{glob:glob_,globSync,sync,globStream,stream,globStreamSync,streamSync,globIterate,iterate,globIterateSync,iterateSync,Glob,hasMagic,escape,unescape});glob2.glob=glob2}});var block_stories_mdx_exports={};__export(block_stories_mdx_exports,{blocker:()=>blocker2});var import_ts_dedent39,blocker2,init_block_stories_mdx=__esm({"src/autoblock/block-stories-mdx.ts"(){"use strict";init_types();import_ts_dedent39=require("ts-dedent");init_esm3();blocker2={id:"storiesMdxUsage",async check(){let files=await glob2("**/*.stories.mdx",{cwd:process.cwd()});return files.length===0?!1:{files}},log(options,data){return import_ts_dedent39.dedent`
20
- Support for *.stories.mdx files has been removed.
21
- Please see the migration guide for more information:
22
- https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropping-support-for-storiesmdx-csf-in-mdx-format-and-mdx1-support
23
-
24
- Storybook will also require you to use MDX 3.0.0 or later.
25
- Check the migration guide for more information:
26
- https://mdxjs.com/blog/v3/
27
-
28
- Found ${data.files.length} stories.mdx ${data.files.length===1?"file":"files"}, these must be migrated.
29
-
30
- Manually run the migration script to convert your stories.mdx files to CSF format documented here:
31
- https://storybook.js.org/docs/migration-guide#storiesmdx-to-mdxcsf
32
- `}}}});var block_dependencies_versions_exports={};__export(block_dependencies_versions_exports,{blocker:()=>blocker3});var import_ts_dedent40,import_semver22,minimalVersionsMap,typedKeys,blocker3,init_block_dependencies_versions=__esm({"src/autoblock/block-dependencies-versions.ts"(){"use strict";init_types();import_ts_dedent40=require("ts-dedent"),import_semver22=require("semver"),minimalVersionsMap={"@angular/core":"15.0.0","react-scripts":"5.0.0",next:"13.5.0",preact:"10.0.0",svelte:"4.0.0",vue:"3.0.0"},typedKeys=obj=>Object.keys(obj),blocker3={id:"dependenciesVersions",async check({packageManager}){return(await Promise.all(typedKeys(minimalVersionsMap).map(async packageName=>({packageName,installedVersion:await packageManager.getPackageVersion(packageName),minimumVersion:minimalVersionsMap[packageName]})))).reduce((acc,{installedVersion,minimumVersion,packageName})=>acc||(packageName&&installedVersion&&(0,import_semver22.lt)(installedVersion,minimumVersion)?{installedVersion,packageName,minimumVersion}:acc),!1)},log(options,data){switch(data.packageName){case"react-scripts":return import_ts_dedent40.dedent`
33
- Support react-script < 5.0.0 has been removed.
17
+ `}}}});var block_dependencies_versions_exports={};__export(block_dependencies_versions_exports,{blocker:()=>blocker2});var import_ts_dedent39,import_semver18,import_chalk35,minimalVersionsMap,typedKeys,blocker2,init_block_dependencies_versions=__esm({"src/autoblock/block-dependencies-versions.ts"(){"use strict";init_types();import_ts_dedent39=require("ts-dedent"),import_semver18=require("semver"),import_chalk35=__toESM(require("chalk")),minimalVersionsMap={"@angular/core":"15.0.0","react-scripts":"5.0.0",next:"13.5.0",preact:"10.0.0",svelte:"4.0.0",vue:"3.0.0",vite:"4.0.0"},typedKeys=obj=>Object.keys(obj),blocker2={id:"dependenciesVersions",async check({packageManager}){return(await Promise.all(typedKeys(minimalVersionsMap).map(async packageName=>({packageName,installedVersion:await packageManager.getPackageVersion(packageName),minimumVersion:minimalVersionsMap[packageName]})))).reduce((acc,{installedVersion,minimumVersion,packageName})=>acc||(packageName&&installedVersion&&(0,import_semver18.lt)(installedVersion,minimumVersion)?{installedVersion,packageName,minimumVersion}:acc),!1)},log(options,data){switch(data.packageName){case"react-scripts":return import_ts_dedent39.dedent`
18
+ Support for react-script < 5.0.0 has been removed.
34
19
  Please see the migration guide for more information:
35
- https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#create-react-app-dropped-cra4-support
20
+ ${import_chalk35.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#create-react-app-dropped-cra4-support")}
36
21
 
37
22
  Upgrade to the latest version of react-scripts.
38
- `;case"vue":return import_ts_dedent40.dedent`
23
+ `;case"vue":return import_ts_dedent39.dedent`
39
24
  Support for Vue 2 has been removed.
40
25
  Please see the migration guide for more information:
41
- https://v3-migration.vuejs.org/
26
+ ${import_chalk35.default.yellow("https://v3-migration.vuejs.org/")}
42
27
 
43
28
  Please upgrade to the latest version of Vue.
44
- `;case"@angular/core":return import_ts_dedent40.dedent`
29
+ `;case"@angular/core":return import_ts_dedent39.dedent`
45
30
  Support for Angular < 15 has been removed.
46
31
  Please see the migration guide for more information:
47
- https://angular.io/guide/update-to-version-15
32
+ ${import_chalk35.default.yellow("https://angular.io/guide/update-to-version-15")}
48
33
 
49
34
  Please upgrade to the latest version of Angular.
50
- `;case"next":return import_ts_dedent40.dedent`
35
+ `;case"next":return import_ts_dedent39.dedent`
51
36
  Support for Next.js < 13.5 has been removed.
52
37
  Please see the migration guide for more information:
53
- https://nextjs.org/docs/pages/building-your-application/upgrading/version-13
38
+ ${import_chalk35.default.yellow("https://nextjs.org/docs/pages/building-your-application/upgrading/version-13")}
54
39
 
55
40
  Please upgrade to the latest version of Next.js.
56
- `;default:return import_ts_dedent40.dedent`
41
+ `;default:return import_ts_dedent39.dedent`
57
42
  Support for ${data.packageName} version < ${data.minimumVersion} has been removed.
58
- Storybook 8 needs minimum version of ${data.minimumVersion}, but you had version ${data.installedVersion}.
43
+ Since version 8, Storybook needs a minimum version of ${data.minimumVersion}, but you have version ${data.installedVersion}.
59
44
 
60
45
  Please update this dependency.
61
- `}}}}});var block_node_version_exports={};__export(block_node_version_exports,{blocker:()=>blocker4});var import_ts_dedent41,import_semver23,blocker4,init_block_node_version=__esm({"src/autoblock/block-node-version.ts"(){"use strict";init_types();import_ts_dedent41=require("ts-dedent"),import_semver23=require("semver"),blocker4={id:"minimumNode16",async check(){let nodeVersion=process.versions.node;return nodeVersion&&(0,import_semver23.lt)(nodeVersion,"18.0.0")?{nodeVersion}:!1},log(options,data){return import_ts_dedent41.dedent`
46
+ `}}}}});var block_node_version_exports={};__export(block_node_version_exports,{blocker:()=>blocker3});var import_ts_dedent40,import_semver19,import_chalk36,blocker3,init_block_node_version=__esm({"src/autoblock/block-node-version.ts"(){"use strict";init_types();import_ts_dedent40=require("ts-dedent"),import_semver19=require("semver"),import_chalk36=__toESM(require("chalk")),blocker3={id:"minimumNode16",async check(){let nodeVersion=process.versions.node;return nodeVersion&&(0,import_semver19.lt)(nodeVersion,"18.0.0")?{nodeVersion}:!1},log(options,data){return import_ts_dedent40.dedent`
62
47
  We've detected you're using Node.js v${data.nodeVersion}.
63
48
  Storybook needs Node.js 18 or higher.
64
49
 
65
- https://nodejs.org/en/download
66
- `}}}});var import_commander=__toESM(require("commander")),import_chalk38=__toESM(require("chalk")),import_envinfo=__toESM(require("envinfo")),import_leven=__toESM(require("leven")),import_read_pkg_up3=require("read-pkg-up"),import_tiny_invariant9=__toESM(require("tiny-invariant")),import_node_logger8=require("@storybook/node-logger"),import_telemetry4=require("@storybook/telemetry"),import_core_common29=require("@storybook/core-common"),import_core_server5=require("@storybook/core-server");var import_promises=require("fs/promises"),import_find_up3=__toESM(require("find-up")),import_chalk5=__toESM(require("chalk")),import_prompts5=__toESM(require("prompts")),import_telemetry2=require("@storybook/telemetry"),import_core_server=require("@storybook/core-server"),import_server_errors3=require("@storybook/core-events/server-errors"),import_core_common8=require("@storybook/core-common"),import_ts_dedent7=__toESM(require("ts-dedent"));var import_node_process=__toESM(require("process"),1);function ansiRegex({onlyFirst=!1}={}){let pattern=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(pattern,onlyFirst?void 0:"g")}var regex=ansiRegex();function stripAnsi(string){if(typeof string!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);return string.replace(regex,"")}var import_eastasianwidth=__toESM(require_eastasianwidth(),1),import_emoji_regex=__toESM(require_emoji_regex(),1);function stringWidth(string,options={}){if(typeof string!="string"||string.length===0||(options={ambiguousIsNarrow:!0,...options},string=stripAnsi(string),string.length===0))return 0;string=string.replace((0,import_emoji_regex.default)()," ");let ambiguousCharacterWidth=options.ambiguousIsNarrow?1:2,width=0;for(let character of string){let codePoint=character.codePointAt(0);if(codePoint<=31||codePoint>=127&&codePoint<=159||codePoint>=768&&codePoint<=879)continue;switch(import_eastasianwidth.default.eastAsianWidth(character)){case"F":case"W":width+=2;break;case"A":width+=ambiguousCharacterWidth;break;default:width+=1}}return width}var import_chalk=__toESM(require("chalk"),1);var import_eastasianwidth2=__toESM(require_eastasianwidth(),1),import_emoji_regex2=__toESM(require_emoji_regex(),1);function stringWidth2(string,options={}){if(typeof string!="string"||string.length===0||(options={ambiguousIsNarrow:!0,...options},string=stripAnsi(string),string.length===0))return 0;string=string.replace((0,import_emoji_regex2.default)()," ");let ambiguousCharacterWidth=options.ambiguousIsNarrow?1:2,width=0;for(let character of string){let codePoint=character.codePointAt(0);if(codePoint<=31||codePoint>=127&&codePoint<=159||codePoint>=768&&codePoint<=879)continue;switch(import_eastasianwidth2.default.eastAsianWidth(character)){case"F":case"W":width+=2;break;case"A":width+=ambiguousCharacterWidth;break;default:width+=1}}return width}function widestLine(string){let lineWidth=0;for(let line of string.split(`
50
+ ${import_chalk36.default.yellow("https://nodejs.org/en/download")}
51
+ `}}}});var import_commander=__toESM(require("commander")),import_chalk41=__toESM(require("chalk")),import_envinfo=__toESM(require("envinfo")),import_leven=__toESM(require("leven")),import_read_pkg_up3=require("read-pkg-up"),import_tiny_invariant9=__toESM(require("tiny-invariant")),import_node_logger9=require("@storybook/node-logger"),import_telemetry4=require("@storybook/telemetry"),import_core_common28=require("@storybook/core-common"),import_core_server5=require("@storybook/core-server");var import_promises=require("fs/promises"),import_find_up3=__toESM(require("find-up")),import_chalk5=__toESM(require("chalk")),import_prompts5=__toESM(require("prompts")),import_telemetry2=require("@storybook/telemetry"),import_core_server=require("@storybook/core-server"),import_server_errors3=require("@storybook/core-events/server-errors"),import_core_common7=require("@storybook/core-common"),import_ts_dedent7=__toESM(require("ts-dedent"));var import_node_process=__toESM(require("process"),1);function ansiRegex({onlyFirst=!1}={}){let pattern=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(pattern,onlyFirst?void 0:"g")}var regex=ansiRegex();function stripAnsi(string){if(typeof string!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);return string.replace(regex,"")}var import_eastasianwidth=__toESM(require_eastasianwidth(),1),import_emoji_regex=__toESM(require_emoji_regex(),1);function stringWidth(string,options={}){if(typeof string!="string"||string.length===0||(options={ambiguousIsNarrow:!0,...options},string=stripAnsi(string),string.length===0))return 0;string=string.replace((0,import_emoji_regex.default)()," ");let ambiguousCharacterWidth=options.ambiguousIsNarrow?1:2,width=0;for(let character of string){let codePoint=character.codePointAt(0);if(codePoint<=31||codePoint>=127&&codePoint<=159||codePoint>=768&&codePoint<=879)continue;switch(import_eastasianwidth.default.eastAsianWidth(character)){case"F":case"W":width+=2;break;case"A":width+=ambiguousCharacterWidth;break;default:width+=1}}return width}var import_chalk=__toESM(require("chalk"),1);var import_eastasianwidth2=__toESM(require_eastasianwidth(),1),import_emoji_regex2=__toESM(require_emoji_regex(),1);function stringWidth2(string,options={}){if(typeof string!="string"||string.length===0||(options={ambiguousIsNarrow:!0,...options},string=stripAnsi(string),string.length===0))return 0;string=string.replace((0,import_emoji_regex2.default)()," ");let ambiguousCharacterWidth=options.ambiguousIsNarrow?1:2,width=0;for(let character of string){let codePoint=character.codePointAt(0);if(codePoint<=31||codePoint>=127&&codePoint<=159||codePoint>=768&&codePoint<=879)continue;switch(import_eastasianwidth2.default.eastAsianWidth(character)){case"F":case"W":width+=2;break;case"A":width+=ambiguousCharacterWidth;break;default:width+=1}}return width}function widestLine(string){let lineWidth=0;for(let line of string.split(`
67
52
  `))lineWidth=Math.max(lineWidth,stringWidth2(line));return lineWidth}var import_cli_boxes=__toESM(require_cli_boxes(),1);var UPPERCASE=/[\p{Lu}]/u,LOWERCASE=/[\p{Ll}]/u,LEADING_CAPITAL=/^[\p{Lu}](?![\p{Lu}])/gu,IDENTIFIER=/([\p{Alpha}\p{N}_]|$)/u,SEPARATORS=/[_.\- ]+/,LEADING_SEPARATORS=new RegExp("^"+SEPARATORS.source),SEPARATORS_AND_IDENTIFIER=new RegExp(SEPARATORS.source+IDENTIFIER.source,"gu"),NUMBERS_AND_IDENTIFIER=new RegExp("\\d+"+IDENTIFIER.source,"gu"),preserveCamelCase=(string,toLowerCase,toUpperCase,preserveConsecutiveUppercase2)=>{let isLastCharLower=!1,isLastCharUpper=!1,isLastLastCharUpper=!1,isLastLastCharPreserved=!1;for(let index=0;index<string.length;index++){let character=string[index];isLastLastCharPreserved=index>2?string[index-3]==="-":!0,isLastCharLower&&UPPERCASE.test(character)?(string=string.slice(0,index)+"-"+string.slice(index),isLastCharLower=!1,isLastLastCharUpper=isLastCharUpper,isLastCharUpper=!0,index++):isLastCharUpper&&isLastLastCharUpper&&LOWERCASE.test(character)&&(!isLastLastCharPreserved||preserveConsecutiveUppercase2)?(string=string.slice(0,index-1)+"-"+string.slice(index-1),isLastLastCharUpper=isLastCharUpper,isLastCharUpper=!1,isLastCharLower=!0):(isLastCharLower=toLowerCase(character)===character&&toUpperCase(character)!==character,isLastLastCharUpper=isLastCharUpper,isLastCharUpper=toUpperCase(character)===character&&toLowerCase(character)!==character)}return string},preserveConsecutiveUppercase=(input,toLowerCase)=>(LEADING_CAPITAL.lastIndex=0,input.replace(LEADING_CAPITAL,m1=>toLowerCase(m1))),postProcess=(input,toUpperCase)=>(SEPARATORS_AND_IDENTIFIER.lastIndex=0,NUMBERS_AND_IDENTIFIER.lastIndex=0,input.replace(SEPARATORS_AND_IDENTIFIER,(_,identifier2)=>toUpperCase(identifier2)).replace(NUMBERS_AND_IDENTIFIER,m=>toUpperCase(m)));function camelCase(input,options){if(!(typeof input=="string"||Array.isArray(input)))throw new TypeError("Expected the input to be `string | string[]`");if(options={pascalCase:!1,preserveConsecutiveUppercase:!1,...options},Array.isArray(input)?input=input.map(x=>x.trim()).filter(x=>x.length).join("-"):input=input.trim(),input.length===0)return"";let toLowerCase=options.locale===!1?string=>string.toLowerCase():string=>string.toLocaleLowerCase(options.locale),toUpperCase=options.locale===!1?string=>string.toUpperCase():string=>string.toLocaleUpperCase(options.locale);return input.length===1?SEPARATORS.test(input)?"":options.pascalCase?toUpperCase(input):toLowerCase(input):(input!==toLowerCase(input)&&(input=preserveCamelCase(input,toLowerCase,toUpperCase,options.preserveConsecutiveUppercase)),input=input.replace(LEADING_SEPARATORS,""),input=options.preserveConsecutiveUppercase?preserveConsecutiveUppercase(input,toLowerCase):toLowerCase(input),options.pascalCase&&(input=toUpperCase(input.charAt(0))+input.slice(1)),postProcess(input,toUpperCase))}var import_ansi_align=__toESM(require_ansi_align(),1);var import_eastasianwidth3=__toESM(require_eastasianwidth(),1),import_emoji_regex3=__toESM(require_emoji_regex(),1);function stringWidth3(string,options={}){if(typeof string!="string"||string.length===0||(options={ambiguousIsNarrow:!0,...options},string=stripAnsi(string),string.length===0))return 0;string=string.replace((0,import_emoji_regex3.default)()," ");let ambiguousCharacterWidth=options.ambiguousIsNarrow?1:2,width=0;for(let character of string){let codePoint=character.codePointAt(0);if(codePoint<=31||codePoint>=127&&codePoint<=159||codePoint>=768&&codePoint<=879)continue;switch(import_eastasianwidth3.default.eastAsianWidth(character)){case"F":case"W":width+=2;break;case"A":width+=ambiguousCharacterWidth;break;default:width+=1}}return width}var wrapAnsi16=(offset=0)=>code=>`\x1B[${code+offset}m`,wrapAnsi256=(offset=0)=>code=>`\x1B[${38+offset};5;${code}m`,wrapAnsi16m=(offset=0)=>(red,green,blue)=>`\x1B[${38+offset};2;${red};${green};${blue}m`,styles={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},modifierNames=Object.keys(styles.modifier),foregroundColorNames=Object.keys(styles.color),backgroundColorNames=Object.keys(styles.bgColor),colorNames=[...foregroundColorNames,...backgroundColorNames];function assembleStyles(){let codes=new Map;for(let[groupName,group]of Object.entries(styles)){for(let[styleName,style]of Object.entries(group))styles[styleName]={open:`\x1B[${style[0]}m`,close:`\x1B[${style[1]}m`},group[styleName]=styles[styleName],codes.set(style[0],style[1]);Object.defineProperty(styles,groupName,{value:group,enumerable:!1})}return Object.defineProperty(styles,"codes",{value:codes,enumerable:!1}),styles.color.close="\x1B[39m",styles.bgColor.close="\x1B[49m",styles.color.ansi=wrapAnsi16(),styles.color.ansi256=wrapAnsi256(),styles.color.ansi16m=wrapAnsi16m(),styles.bgColor.ansi=wrapAnsi16(10),styles.bgColor.ansi256=wrapAnsi256(10),styles.bgColor.ansi16m=wrapAnsi16m(10),Object.defineProperties(styles,{rgbToAnsi256:{value:(red,green,blue)=>red===green&&green===blue?red<8?16:red>248?231:Math.round((red-8)/247*24)+232:16+36*Math.round(red/255*5)+6*Math.round(green/255*5)+Math.round(blue/255*5),enumerable:!1},hexToRgb:{value:hex=>{let matches=/[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));if(!matches)return[0,0,0];let[colorString]=matches;colorString.length===3&&(colorString=[...colorString].map(character=>character+character).join(""));let integer=Number.parseInt(colorString,16);return[integer>>16&255,integer>>8&255,integer&255]},enumerable:!1},hexToAnsi256:{value:hex=>styles.rgbToAnsi256(...styles.hexToRgb(hex)),enumerable:!1},ansi256ToAnsi:{value:code=>{if(code<8)return 30+code;if(code<16)return 90+(code-8);let red,green,blue;if(code>=232)red=((code-232)*10+8)/255,green=red,blue=red;else{code-=16;let remainder=code%36;red=Math.floor(code/36)/5,green=Math.floor(remainder/6)/5,blue=remainder%6/5}let value=Math.max(red,green,blue)*2;if(value===0)return 30;let result=30+(Math.round(blue)<<2|Math.round(green)<<1|Math.round(red));return value===2&&(result+=60),result},enumerable:!1},rgbToAnsi:{value:(red,green,blue)=>styles.ansi256ToAnsi(styles.rgbToAnsi256(red,green,blue)),enumerable:!1},hexToAnsi:{value:hex=>styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),enumerable:!1}}),styles}var ansiStyles=assembleStyles(),ansi_styles_default=ansiStyles;var ESCAPES=new Set(["\x1B","\x9B"]),END_CODE=39,ANSI_ESCAPE_BELL="\x07",ANSI_CSI="[",ANSI_OSC="]",ANSI_SGR_TERMINATOR="m",ANSI_ESCAPE_LINK=`${ANSI_OSC}8;;`,wrapAnsiCode=code=>`${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`,wrapAnsiHyperlink=uri=>`${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`,wordLengths=string=>string.split(" ").map(character=>stringWidth3(character)),wrapWord=(rows,word,columns)=>{let characters=[...word],isInsideEscape=!1,isInsideLinkEscape=!1,visible=stringWidth3(stripAnsi(rows[rows.length-1]));for(let[index,character]of characters.entries()){let characterLength=stringWidth3(character);if(visible+characterLength<=columns?rows[rows.length-1]+=character:(rows.push(character),visible=0),ESCAPES.has(character)&&(isInsideEscape=!0,isInsideLinkEscape=characters.slice(index+1).join("").startsWith(ANSI_ESCAPE_LINK)),isInsideEscape){isInsideLinkEscape?character===ANSI_ESCAPE_BELL&&(isInsideEscape=!1,isInsideLinkEscape=!1):character===ANSI_SGR_TERMINATOR&&(isInsideEscape=!1);continue}visible+=characterLength,visible===columns&&index<characters.length-1&&(rows.push(""),visible=0)}!visible&&rows[rows.length-1].length>0&&rows.length>1&&(rows[rows.length-2]+=rows.pop())},stringVisibleTrimSpacesRight=string=>{let words=string.split(" "),last=words.length;for(;last>0&&!(stringWidth3(words[last-1])>0);)last--;return last===words.length?string:words.slice(0,last).join(" ")+words.slice(last).join("")},exec=(string,columns,options={})=>{if(options.trim!==!1&&string.trim()==="")return"";let returnValue="",escapeCode,escapeUrl,lengths=wordLengths(string),rows=[""];for(let[index,word]of string.split(" ").entries()){options.trim!==!1&&(rows[rows.length-1]=rows[rows.length-1].trimStart());let rowLength=stringWidth3(rows[rows.length-1]);if(index!==0&&(rowLength>=columns&&(options.wordWrap===!1||options.trim===!1)&&(rows.push(""),rowLength=0),(rowLength>0||options.trim===!1)&&(rows[rows.length-1]+=" ",rowLength++)),options.hard&&lengths[index]>columns){let remainingColumns=columns-rowLength,breaksStartingThisLine=1+Math.floor((lengths[index]-remainingColumns-1)/columns);Math.floor((lengths[index]-1)/columns)<breaksStartingThisLine&&rows.push(""),wrapWord(rows,word,columns);continue}if(rowLength+lengths[index]>columns&&rowLength>0&&lengths[index]>0){if(options.wordWrap===!1&&rowLength<columns){wrapWord(rows,word,columns);continue}rows.push("")}if(rowLength+lengths[index]>columns&&options.wordWrap===!1){wrapWord(rows,word,columns);continue}rows[rows.length-1]+=word}options.trim!==!1&&(rows=rows.map(row=>stringVisibleTrimSpacesRight(row)));let pre=[...rows.join(`
68
53
  `)];for(let[index,character]of pre.entries()){if(returnValue+=character,ESCAPES.has(character)){let{groups}=new RegExp(`(?:\\${ANSI_CSI}(?<code>\\d+)m|\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join(""))||{groups:{}};if(groups.code!==void 0){let code2=Number.parseFloat(groups.code);escapeCode=code2===END_CODE?void 0:code2}else groups.uri!==void 0&&(escapeUrl=groups.uri.length===0?void 0:groups.uri)}let code=ansi_styles_default.codes.get(Number(escapeCode));pre[index+1]===`
69
54
  `?(escapeUrl&&(returnValue+=wrapAnsiHyperlink("")),escapeCode&&code&&(returnValue+=wrapAnsiCode(code))):character===`
@@ -120,11 +105,16 @@ We were not able to detect the right builder for your project. Please select one
120
105
  */
121
106
  function getAbsolutePath(value: string): any {
122
107
  return dirname(require.resolve(join(value, 'package.json')))
123
- }`]:[];await configureMain({framework:{name:frameworkInclude,options:options.framework||{}},prefixes,storybookConfigFolder,docs:{autodocs:"tag"},addons:shouldApplyRequireWrapperOnPackageNames?addons.map(addon=>applyRequireWrapper(addon)):addons,extensions,language,...staticDir?{staticDirs:[import_path5.default.join("..",staticDir)]}:null,...extraMain,...type!=="framework"?{core:{builder:builderInclude}}:{}})}if(await configurePreview({frameworkPreviewParts,storybookConfigFolder,language,rendererId}),addScripts&&await packageManager.addStorybookCommandInScripts({port:6006}),addComponents){let templateLocation=hasFrameworkTemplates(framework)?framework:rendererId;if(!templateLocation)throw new Error(`Could not find template location for ${framework} or ${rendererId}`);await copyTemplateFiles({renderer:templateLocation,packageManager,language,destination:componentsDestinationPath})}}var import_fs2=__toESM(require("fs")),import_path6=require("path"),import_prompts3=__toESM(require("prompts")),import_ts_dedent4=__toESM(require("ts-dedent")),import_server_errors=require("@storybook/core-events/server-errors"),ANGULAR_JSON_PATH="angular.json",compoDocPreviewPrefix=import_ts_dedent4.default`
108
+ }`]:[];await configureMain({framework:{name:frameworkInclude,options:options.framework||{}},prefixes,storybookConfigFolder,docs:{autodocs:"tag"},addons:shouldApplyRequireWrapperOnPackageNames?addons.map(addon=>applyRequireWrapper(addon)):addons,extensions,language,...staticDir?{staticDirs:[import_path5.default.join("..",staticDir)]}:null,...extraMain,...type!=="framework"?{core:{builder:builderInclude}}:{}})}if(await configurePreview({frameworkPreviewParts,storybookConfigFolder,language,rendererId}),addScripts&&await packageManager.addStorybookCommandInScripts({port:6006}),addComponents){let templateLocation=hasFrameworkTemplates(framework)?framework:rendererId;if(!templateLocation)throw new Error(`Could not find template location for ${framework} or ${rendererId}`);await copyTemplateFiles({renderer:templateLocation,packageManager,language,destination:componentsDestinationPath})}}var import_fs2=__toESM(require("fs")),import_path6=require("path"),import_prompts3=__toESM(require("prompts")),import_ts_dedent4=__toESM(require("ts-dedent")),import_server_errors=require("@storybook/core-events/server-errors");var import_node_logger3=require("@storybook/node-logger"),ANGULAR_JSON_PATH="angular.json",compoDocPreviewPrefix=import_ts_dedent4.default`
124
109
  import { setCompodocJson } from "@storybook/addon-docs/angular";
125
110
  import docJson from "../documentation.json";
126
111
  setCompodocJson(docJson);
127
- `.trimStart(),promptForCompoDocs=async()=>{let{useCompoDoc}=await(0,import_prompts3.default)({type:"confirm",name:"useCompoDoc",message:"Do you want to use Compodoc for documentation?"});return useCompoDoc},AngularJSON=class{constructor(){if(!import_fs2.default.existsSync(ANGULAR_JSON_PATH))throw new import_server_errors.MissingAngularJsonError({path:(0,import_path6.join)(process.cwd(),ANGULAR_JSON_PATH)});let jsonContent=import_fs2.default.readFileSync(ANGULAR_JSON_PATH,"utf8");this.json=JSON.parse(jsonContent)}get projects(){return this.json.projects}get projectsWithoutStorybook(){return Object.keys(this.projects).filter(projectName=>{let{architect}=this.projects[projectName];return!architect.storybook})}get hasStorybookBuilder(){return Object.keys(this.projects).some(projectName=>{let{architect}=this.projects[projectName];return Object.keys(architect).some(key=>architect[key].builder==="@storybook/angular:start-storybook")})}get rootProject(){let rootProjectName=Object.keys(this.projects).find(projectName=>{let{root}=this.projects[projectName];return root===""||root==="."});return rootProjectName?this.projects[rootProjectName]:null}getProjectSettingsByName(projectName){return this.projects[projectName]}async getProjectName(){if(this.projectsWithoutStorybook.length>1){let{projectName}=await(0,import_prompts3.default)({type:"select",name:"projectName",message:"For which project do you want to generate Storybook configuration?",choices:this.projectsWithoutStorybook.map(name=>({title:name,value:name}))});return projectName}return this.projectsWithoutStorybook[0]}addStorybookEntries({angularProjectName,storybookFolder,useCompodoc,root}){let{architect}=this.projects[angularProjectName],baseOptions={configDir:storybookFolder,browserTarget:`${angularProjectName}:build`,compodoc:useCompodoc,...useCompodoc&&{compodocArgs:["-e","json","-d",root||"."]}};architect.storybook||(architect.storybook={builder:"@storybook/angular:start-storybook",options:{...baseOptions,port:6006}}),architect["build-storybook"]||(architect["build-storybook"]={builder:"@storybook/angular:build-storybook",options:{...baseOptions,outputDir:Object.keys(this.projects).length===1?"storybook-static":`dist/storybook/${angularProjectName}`}})}write(){import_fs2.default.writeFileSync(ANGULAR_JSON_PATH,JSON.stringify(this.json,null,2))}};var generator=async(packageManager,npmOptions,options,commandOptions)=>{let angularJSON=new AngularJSON;if(!angularJSON.projects||angularJSON.projects&&Object.keys(angularJSON.projects).length===0)throw new Error("Storybook was not able to find any projects in your angular.json file. Are you sure this is an Angular CLI project?");if(angularJSON.projectsWithoutStorybook.length===0)throw new Error("Every project in your workspace is already set up with Storybook. There is nothing to do!");let angularProjectName=await angularJSON.getProjectName();(0,import_core_common6.paddedLog)(`Adding Storybook support to your "${angularProjectName}" project`);let angularProject=angularJSON.getProjectSettingsByName(angularProjectName);if(!angularProject)throw new Error(`Somehow we were not able to retrieve the "${angularProjectName}" project in your angular.json file. This is likely a bug in Storybook, please file an issue.`);let{root,projectType}=angularProject,{projects}=angularJSON,useCompodoc=commandOptions?.yes?!0:await promptForCompoDocs(),storybookFolder=root?`${root}/.storybook`:".storybook";angularJSON.addStorybookEntries({angularProjectName,storybookFolder,useCompodoc,root}),angularJSON.write(),await baseGenerator(packageManager,npmOptions,{...options,builder:"webpack5",...useCompodoc&&{frameworkPreviewParts:{prefix:compoDocPreviewPrefix}}},"angular",{...useCompodoc&&{extraPackages:["@compodoc/compodoc","@storybook/addon-docs"]},addScripts:!1,componentsDestinationPath:root?`${root}/src/stories`:void 0,storybookConfigFolder:storybookFolder,webpackCompiler:()=>{}},"angular"),Object.keys(projects).length===1&&packageManager.addScripts({storybook:`ng run ${angularProjectName}:storybook`,"build-storybook":`ng run ${angularProjectName}:build-storybook`});let projectTypeValue=projectType||"application";projectTypeValue!=="application"&&projectTypeValue!=="library"&&(projectTypeValue="application");let templateDir=(0,import_path7.join)(getCliDir(),"templates","angular",projectTypeValue);return templateDir&&copyTemplate(templateDir,root||void 0),{projectName:angularProjectName,configDir:storybookFolder}},ANGULAR_default=generator;var generator2=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:"webpack5"},"ember",{staticDir:"dist"},"ember")},EMBER_default=generator2;var generator3=async(packageManager,npmOptions,options)=>{let extraPackages=await detectLanguage(packageManager)==="javascript"?["prop-types"]:[];await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,webpackCompiler:({builder})=>builder==="webpack5"?"swc":void 0,extraAddons:["@storybook/addon-onboarding@^1.0.0"]})},REACT_default=generator3;var generator4=async(packageManager,npmOptions)=>{let packageJson=await packageManager.retrievePackageJson(),missingReactDom=!packageJson.dependencies["react-dom"]&&!packageJson.devDependencies["react-dom"],reactVersion=packageJson.dependencies.react,packagesToResolve=[...["react-native-safe-area-context","@react-native-async-storage/async-storage","@react-native-community/datetimepicker","@react-native-community/slider"].filter(dep=>!packageJson.dependencies[dep]&&!packageJson.devDependencies[dep]),"@storybook/addon-ondevice-controls","@storybook/addon-ondevice-actions","@storybook/react-native"],packagesWithFixedVersion=[],versionedPackages=await packageManager.getVersionedPackages(packagesToResolve),babelDependencies=await getBabelDependencies(packageManager,packageJson),packages=[];packages.push(...babelDependencies),packages.push(...packagesWithFixedVersion),packages.push(...versionedPackages),missingReactDom&&reactVersion&&packages.push(`react-dom@${reactVersion}`),await packageManager.addDependencies({...npmOptions,packageJson},packages),packageManager.addScripts({"storybook-generate":"sb-rn-get-stories"});let storybookConfigFolder=".storybook";await copyTemplateFiles({packageManager,renderer:"react-native",language:"typescript-3-8",destination:storybookConfigFolder,includeCommonAssets:!1})},REACT_NATIVE_default=generator4;var import_path8=__toESM(require("path")),import_fs3=__toESM(require("fs")),import_semver4=__toESM(require("semver")),import_ts_dedent5=__toESM(require("ts-dedent")),import_core_common7=require("@storybook/core-common");var generator5=async(packageManager,npmOptions,options)=>{let monorepoRootPath=import_path8.default.join(__dirname,"..","..","..","..","..",".."),extraMain=options.linkable?{webpackFinal:`%%(config) => {
112
+ `.trimStart(),promptForCompoDocs=async()=>{import_node_logger3.logger.plain(boxen(import_ts_dedent4.default`
113
+ Compodoc is a great tool to generate documentation for your Angular projects.
114
+ Storybook can use the documentation generated by Compodoc to extract argument definitions
115
+ and JSDOC comments to display them in the Storybook UI. We highly recommend using Compodoc for
116
+ your Angular projects to get the best experience out of Storybook.
117
+ `,{title:"Compodoc",borderStyle:"round",padding:1,borderColor:"#F1618C"}));let{useCompoDoc}=await(0,import_prompts3.default)({type:"confirm",name:"useCompoDoc",message:"Do you want to use Compodoc for documentation?"});return useCompoDoc},AngularJSON=class{constructor(){if(!import_fs2.default.existsSync(ANGULAR_JSON_PATH))throw new import_server_errors.MissingAngularJsonError({path:(0,import_path6.join)(process.cwd(),ANGULAR_JSON_PATH)});let jsonContent=import_fs2.default.readFileSync(ANGULAR_JSON_PATH,"utf8");this.json=JSON.parse(jsonContent)}get projects(){return this.json.projects}get projectsWithoutStorybook(){return Object.keys(this.projects).filter(projectName=>{let{architect}=this.projects[projectName];return!architect.storybook})}get hasStorybookBuilder(){return Object.keys(this.projects).some(projectName=>{let{architect}=this.projects[projectName];return Object.keys(architect).some(key=>architect[key].builder==="@storybook/angular:start-storybook")})}get rootProject(){let rootProjectName=Object.keys(this.projects).find(projectName=>{let{root}=this.projects[projectName];return root===""||root==="."});return rootProjectName?this.projects[rootProjectName]:null}getProjectSettingsByName(projectName){return this.projects[projectName]}async getProjectName(){if(this.projectsWithoutStorybook.length>1){let{projectName}=await(0,import_prompts3.default)({type:"select",name:"projectName",message:"For which project do you want to generate Storybook configuration?",choices:this.projectsWithoutStorybook.map(name=>({title:name,value:name}))});return projectName}return this.projectsWithoutStorybook[0]}addStorybookEntries({angularProjectName,storybookFolder,useCompodoc,root}){let{architect}=this.projects[angularProjectName],baseOptions={configDir:storybookFolder,browserTarget:`${angularProjectName}:build`,compodoc:useCompodoc,...useCompodoc&&{compodocArgs:["-e","json","-d",root||"."]}};architect.storybook||(architect.storybook={builder:"@storybook/angular:start-storybook",options:{...baseOptions,port:6006}}),architect["build-storybook"]||(architect["build-storybook"]={builder:"@storybook/angular:build-storybook",options:{...baseOptions,outputDir:Object.keys(this.projects).length===1?"storybook-static":`dist/storybook/${angularProjectName}`}})}write(){import_fs2.default.writeFileSync(ANGULAR_JSON_PATH,JSON.stringify(this.json,null,2))}};var generator=async(packageManager,npmOptions,options,commandOptions)=>{let angularJSON=new AngularJSON;if(!angularJSON.projects||angularJSON.projects&&Object.keys(angularJSON.projects).length===0)throw new Error("Storybook was not able to find any projects in your angular.json file. Are you sure this is an Angular CLI project?");if(angularJSON.projectsWithoutStorybook.length===0)throw new Error("Every project in your workspace is already set up with Storybook. There is nothing to do!");let angularProjectName=await angularJSON.getProjectName();(0,import_core_common6.commandLog)(`Adding Storybook support to your "${angularProjectName}" project`);let angularProject=angularJSON.getProjectSettingsByName(angularProjectName);if(!angularProject)throw new Error(`Somehow we were not able to retrieve the "${angularProjectName}" project in your angular.json file. This is likely a bug in Storybook, please file an issue.`);let{root,projectType}=angularProject,{projects}=angularJSON,useCompodoc=commandOptions?.yes?!0:await promptForCompoDocs(),storybookFolder=root?`${root}/.storybook`:".storybook";angularJSON.addStorybookEntries({angularProjectName,storybookFolder,useCompodoc,root}),angularJSON.write(),await baseGenerator(packageManager,npmOptions,{...options,builder:"webpack5",...useCompodoc&&{frameworkPreviewParts:{prefix:compoDocPreviewPrefix}}},"angular",{...useCompodoc&&{extraPackages:["@compodoc/compodoc","@storybook/addon-docs"]},addScripts:!1,componentsDestinationPath:root?`${root}/src/stories`:void 0,storybookConfigFolder:storybookFolder,webpackCompiler:()=>{}},"angular"),Object.keys(projects).length===1&&packageManager.addScripts({storybook:`ng run ${angularProjectName}:storybook`,"build-storybook":`ng run ${angularProjectName}:build-storybook`});let projectTypeValue=projectType||"application";projectTypeValue!=="application"&&projectTypeValue!=="library"&&(projectTypeValue="application");let templateDir=(0,import_path7.join)(getCliDir(),"templates","angular",projectTypeValue);return templateDir&&copyTemplate(templateDir,root||void 0),{projectName:angularProjectName,configDir:storybookFolder}},ANGULAR_default=generator;var generator2=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:"webpack5"},"ember",{staticDir:"dist"},"ember")},EMBER_default=generator2;var generator3=async(packageManager,npmOptions,options)=>{let extraPackages=await detectLanguage(packageManager)==="javascript"?["prop-types"]:[];await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,webpackCompiler:({builder})=>builder==="webpack5"?"swc":void 0,extraAddons:["@storybook/addon-onboarding"]})},REACT_default=generator3;var generator4=async(packageManager,npmOptions)=>{let packageJson=await packageManager.retrievePackageJson(),missingReactDom=!packageJson.dependencies["react-dom"]&&!packageJson.devDependencies["react-dom"],reactVersion=packageJson.dependencies.react,packagesToResolve=[...["react-native-safe-area-context","@react-native-async-storage/async-storage","@react-native-community/datetimepicker","@react-native-community/slider"].filter(dep=>!packageJson.dependencies[dep]&&!packageJson.devDependencies[dep]),"@storybook/addon-ondevice-controls","@storybook/addon-ondevice-actions","@storybook/react-native"],packagesWithFixedVersion=[],versionedPackages=await packageManager.getVersionedPackages(packagesToResolve),babelDependencies=await getBabelDependencies(packageManager,packageJson),packages=[];packages.push(...babelDependencies),packages.push(...packagesWithFixedVersion),packages.push(...versionedPackages),missingReactDom&&reactVersion&&packages.push(`react-dom@${reactVersion}`),await packageManager.addDependencies({...npmOptions,packageJson},packages),packageManager.addScripts({"storybook-generate":"sb-rn-get-stories"});let storybookConfigFolder=".storybook";await copyTemplateFiles({packageManager,renderer:"react-native",language:"typescript-3-8",destination:storybookConfigFolder,includeCommonAssets:!1})},REACT_NATIVE_default=generator4;var import_path8=__toESM(require("path")),import_fs3=__toESM(require("fs")),import_semver4=__toESM(require("semver")),import_ts_dedent5=__toESM(require("ts-dedent"));var generator5=async(packageManager,npmOptions,options)=>{let monorepoRootPath=import_path8.default.join(__dirname,"..","..","..","..","..",".."),extraMain=options.linkable?{webpackFinal:`%%(config) => {
128
118
  // add monorepo root as a valid directory to import modules from
129
119
  config.resolve.plugins.forEach((p) => {
130
120
  if (Array.isArray(p.appSrcs)) {
@@ -140,7 +130,7 @@ We were not able to detect the right builder for your project. Please select one
140
130
  Storybook 7.0+ doesn't support react-scripts@<5.0.0.
141
131
 
142
132
  https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#create-react-app-dropped-cra4-support
143
- `);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=[`@storybook/preset-create-react-app@${import_core_common7.versions["@storybook/preset-create-react-app"]}`,"@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:"webpack5"},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:import_fs3.default.existsSync(import_path8.default.resolve("./public"))?"public":void 0,extraMain})},REACT_SCRIPTS_default=generator5;var import_path9=require("path"),import_fs4=require("fs");var generator6=async(packageManager,npmOptions,options)=>{let staticDir;(0,import_fs4.existsSync)((0,import_path9.join)(process.cwd(),"public"))&&(staticDir="public"),await baseGenerator(packageManager,npmOptions,{...options,builder:"webpack5"},"react",{staticDir,extraAddons:["@storybook/addon-onboarding@^1.0.0"],webpackCompiler:({builder})=>{}},"nextjs")},NEXTJS_default=generator6;var generator7=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraPackages:async({builder})=>builder==="webpack5"?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder==="webpack5"?"swc":void 0})},VUE3_default=generator7;var generator8=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding@^1.0.0"],webpackCompiler:({builder})=>builder==="webpack5"?"swc":void 0})},WEBPACK_REACT_default=generator8;var generator9=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"html",{webpackCompiler:({builder})=>builder==="webpack5"?"swc":void 0})},HTML_default=generator9;var generator10=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder==="webpack5"?"swc":void 0}),WEB_COMPONENTS_default=generator10;var generator11=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"preact",{webpackCompiler:({builder})=>builder==="webpack5"?"swc":void 0})},PREACT_default=generator11;var generator12=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","jsx","ts","tsx","svelte"]})},SVELTE_default=generator12;var generator13=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"qwik",{},"qwik")},QWIK_default=generator13;var generator14=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:"vite"},"svelte",void 0,"sveltekit")},SVELTEKIT_default=generator14;var generator15=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:"vite"},"solid",{},"solid")},SOLID_default=generator15;var generator16=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:"webpack5"},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]})},SERVER_default=generator16;var import_chalk4=__toESM(require("chalk")),import_execa=__toESM(require("execa")),import_fs_extra5=require("fs-extra"),import_prompts4=__toESM(require("prompts")),import_ts_dedent6=__toESM(require("ts-dedent")),import_telemetry=require("@storybook/telemetry"),import_server_errors2=require("@storybook/core-events/server-errors"),import_node_logger3=require("@storybook/node-logger"),SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'yarn create next-app . --typescript --use-yarn --eslint --tailwind --no-app --import-alias="@/*" --src-dir',pnpm:'pnpm create next-app . --typescript --use-pnpm --eslint --tailwind --no-app --import-alias="@/*" --src-dir'}},"vue-vite-ts":{displayName:{type:"Vue 3",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template vue-ts",yarn:"yarn create vite@latest . --template vue-ts",pnpm:"pnpm create vite@latest . --template vue-ts"}},"angular-cli":{displayName:{type:"Angular",language:"TS"},createScript:{npm:"npx -p @angular/cli@latest ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install",yarn:"yarn dlx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=yarn --skip-install && touch yarn.lock && yarn set version berry && yarn config set nodeLinker node-modules",pnpm:"pnpm --package @angular/cli dlx ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=pnpm --skip-install"}},"lit-vite-ts":{displayName:{type:"Lit",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template lit-ts",yarn:"yarn create vite@latest . --template lit-ts && touch yarn.lock && yarn set version berry && yarn config set nodeLinker pnp",pnpm:"pnpm create vite@latest . --template lit-ts"}}},packageManagerToCoercedName=packageManager=>{switch(packageManager){case"npm":return"npm";case"pnpm":return"pnpm";default:return"yarn"}},buildProjectDisplayNameForPrint=({displayName})=>{let{type,builder,language}=displayName;return`${import_chalk4.default.bold.blue(type)} ${builder?`+ ${builder} `:""}(${language})`},scaffoldNewProject=async(packageManager,{disableTelemetry})=>{let packageManagerName=packageManagerToCoercedName(packageManager);import_node_logger3.logger.plain(boxen(import_ts_dedent6.default`
133
+ `);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=["@storybook/preset-create-react-app","@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:"webpack5"},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:import_fs3.default.existsSync(import_path8.default.resolve("./public"))?"public":void 0,extraMain})},REACT_SCRIPTS_default=generator5;var import_path9=require("path"),import_fs4=require("fs");var generator6=async(packageManager,npmOptions,options)=>{let staticDir;(0,import_fs4.existsSync)((0,import_path9.join)(process.cwd(),"public"))&&(staticDir="public"),await baseGenerator(packageManager,npmOptions,{...options,builder:"webpack5"},"react",{staticDir,extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>{}},"nextjs")},NEXTJS_default=generator6;var generator7=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraPackages:async({builder})=>builder==="webpack5"?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder==="webpack5"?"swc":void 0})},VUE3_default=generator7;var generator8=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>builder==="webpack5"?"swc":void 0})},WEBPACK_REACT_default=generator8;var generator9=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"html",{webpackCompiler:({builder})=>builder==="webpack5"?"swc":void 0})},HTML_default=generator9;var generator10=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder==="webpack5"?"swc":void 0}),WEB_COMPONENTS_default=generator10;var generator11=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"preact",{webpackCompiler:({builder})=>builder==="webpack5"?"swc":void 0})},PREACT_default=generator11;var generator12=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","jsx","ts","tsx","svelte"]})},SVELTE_default=generator12;var generator13=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"qwik",{},"qwik")},QWIK_default=generator13;var generator14=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:"vite"},"svelte",void 0,"sveltekit")},SVELTEKIT_default=generator14;var generator15=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:"vite"},"solid",{},"solid")},SOLID_default=generator15;var generator16=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:"webpack5"},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]})},SERVER_default=generator16;var import_chalk4=__toESM(require("chalk")),import_execa=__toESM(require("execa")),import_fs_extra5=require("fs-extra"),import_prompts4=__toESM(require("prompts")),import_ts_dedent6=__toESM(require("ts-dedent")),import_telemetry=require("@storybook/telemetry"),import_server_errors2=require("@storybook/core-events/server-errors"),import_node_logger4=require("@storybook/node-logger"),SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'yarn create next-app . --typescript --use-yarn --eslint --tailwind --no-app --import-alias="@/*" --src-dir',pnpm:'pnpm create next-app . --typescript --use-pnpm --eslint --tailwind --no-app --import-alias="@/*" --src-dir'}},"vue-vite-ts":{displayName:{type:"Vue 3",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template vue-ts",yarn:"yarn create vite@latest . --template vue-ts",pnpm:"pnpm create vite@latest . --template vue-ts"}},"angular-cli":{displayName:{type:"Angular",language:"TS"},createScript:{npm:"npx -p @angular/cli@latest ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install",yarn:"yarn dlx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=yarn --skip-install && touch yarn.lock && yarn set version berry && yarn config set nodeLinker node-modules",pnpm:"pnpm --package @angular/cli dlx ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=pnpm --skip-install"}},"lit-vite-ts":{displayName:{type:"Lit",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template lit-ts",yarn:"yarn create vite@latest . --template lit-ts && touch yarn.lock && yarn set version berry && yarn config set nodeLinker pnp",pnpm:"pnpm create vite@latest . --template lit-ts"}}},packageManagerToCoercedName=packageManager=>{switch(packageManager){case"npm":return"npm";case"pnpm":return"pnpm";default:return"yarn"}},buildProjectDisplayNameForPrint=({displayName})=>{let{type,builder,language}=displayName;return`${import_chalk4.default.bold.blue(type)} ${builder?`+ ${builder} `:""}(${language})`},scaffoldNewProject=async(packageManager,{disableTelemetry})=>{let packageManagerName=packageManagerToCoercedName(packageManager);import_node_logger4.logger.plain(boxen(import_ts_dedent6.default`
144
134
  Would you like to generate a new project from the following list?
145
135
 
146
136
  ${import_chalk4.default.bold("Note:")}
@@ -148,21 +138,21 @@ We were not able to detect the right builder for your project. Please select one
148
138
  preferred setup, you can still generate a project then rerun this command to add Storybook.
149
139
 
150
140
  ${import_chalk4.default.bold("Press ^C at any time to quit.")}
151
- `,{title:import_chalk4.default.bold("\u{1F50E} Empty directory detected"),padding:1,borderStyle:"double",borderColor:"yellow"})),import_node_logger3.logger.line(1);let projectStrategy;if(process.env.STORYBOOK_INIT_EMPTY_TYPE&&(projectStrategy=process.env.STORYBOOK_INIT_EMPTY_TYPE),!projectStrategy){let{project}=await(0,import_prompts4.default)({type:"select",name:"project",message:"Choose a project template",choices:Object.entries(SUPPORTED_PROJECTS).map(([key,value])=>({title:buildProjectDisplayNameForPrint(value),value:key}))},{onCancel:()=>process.exit(0)});projectStrategy=project}let projectStrategyConfig=SUPPORTED_PROJECTS[projectStrategy],projectDisplayName=buildProjectDisplayNameForPrint(projectStrategyConfig),createScript=projectStrategyConfig.createScript[packageManagerName];import_node_logger3.logger.line(1),import_node_logger3.logger.plain(`Creating a new "${projectDisplayName}" project with ${import_chalk4.default.bold(packageManagerName)}...`),import_node_logger3.logger.line(1);let targetDir=process.cwd();try{await(0,import_fs_extra5.remove)(`${targetDir}/.cache`),await import_execa.default.command(createScript,{stdio:"pipe",shell:!0,cwd:targetDir,cleanup:!0})}catch(e){throw new import_server_errors2.GenerateNewProjectOnInitError({error:e,packageManager:packageManagerName,projectType:projectStrategy})}disableTelemetry||(0,import_telemetry.telemetry)("scaffolded-empty",{packageManager:packageManagerName,projectType:projectStrategy}),import_node_logger3.logger.plain(boxen(import_ts_dedent6.default`
141
+ `,{title:import_chalk4.default.bold("\u{1F50E} Empty directory detected"),padding:1,borderStyle:"double",borderColor:"yellow"})),import_node_logger4.logger.line(1);let projectStrategy;if(process.env.STORYBOOK_INIT_EMPTY_TYPE&&(projectStrategy=process.env.STORYBOOK_INIT_EMPTY_TYPE),!projectStrategy){let{project}=await(0,import_prompts4.default)({type:"select",name:"project",message:"Choose a project template",choices:Object.entries(SUPPORTED_PROJECTS).map(([key,value])=>({title:buildProjectDisplayNameForPrint(value),value:key}))},{onCancel:()=>process.exit(0)});projectStrategy=project}let projectStrategyConfig=SUPPORTED_PROJECTS[projectStrategy],projectDisplayName=buildProjectDisplayNameForPrint(projectStrategyConfig),createScript=projectStrategyConfig.createScript[packageManagerName];import_node_logger4.logger.line(1),import_node_logger4.logger.plain(`Creating a new "${projectDisplayName}" project with ${import_chalk4.default.bold(packageManagerName)}...`),import_node_logger4.logger.line(1);let targetDir=process.cwd();try{await(0,import_fs_extra5.remove)(`${targetDir}/.cache`),await import_execa.default.command(createScript,{stdio:"pipe",shell:!0,cwd:targetDir,cleanup:!0})}catch(e){throw new import_server_errors2.GenerateNewProjectOnInitError({error:e,packageManager:packageManagerName,projectType:projectStrategy})}disableTelemetry||(0,import_telemetry.telemetry)("scaffolded-empty",{packageManager:packageManagerName,projectType:projectStrategy}),import_node_logger4.logger.plain(boxen(import_ts_dedent6.default`
152
142
  "${projectDisplayName}" project with ${import_chalk4.default.bold(packageManagerName)} created successfully!
153
143
 
154
144
  Continuing with Storybook installation...
155
- `,{title:import_chalk4.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),import_node_logger3.logger.line(1)},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=(0,import_fs_extra5.readdirSync)(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger5=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await detectLanguage(packageManager),pnp=await detectPnp(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case"REACT_SCRIPTS":return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "Create React App" based project'));case"REACT":return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "React" app'));case"REACT_NATIVE":return REACT_NATIVE_default(packageManager,npmOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "React Native" app'));case"QWIK":return QWIK_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "Qwik" app'));case"WEBPACK_REACT":return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "Webpack React" app'));case"REACT_PROJECT":return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "React" library'));case"NEXTJS":return NEXTJS_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "Next" app'));case"VUE3":return VUE3_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "Vue 3" app'));case"ANGULAR":return(0,import_core_common8.commandLog)('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case"EMBER":return EMBER_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "Ember" app'));case"HTML":return HTML_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "HTML" app'));case"WEB_COMPONENTS":return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "web components" app'));case"PREACT":return PREACT_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "Preact" app'));case"SVELTE":return SVELTE_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "Svelte" app'));case"SVELTEKIT":return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "SvelteKit" app'));case"SERVER":return SERVER_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "Server" app'));case"NX":throw new import_server_errors3.NxProjectDetectedError;case"SOLID":return SOLID_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common8.commandLog)('Adding Storybook support to your "SolidJS" app'));case"UNSUPPORTED":return(0,import_core_common8.paddedLog)("We detected a project type that we don't support yet."),(0,import_core_common8.paddedLog)("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger5.log(),Promise.resolve();default:return(0,import_core_common8.paddedLog)(`We couldn't detect your project type. (code: ${projectType})`),(0,import_core_common8.paddedLog)("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/react/get-started/install"),logger5.log(),projectTypeInquirer(options,packageManager)}};try{return await runGenerator()}catch(err){throw err?.message!=="Canceled by the user"&&err?.stack&&logger5.error(`
156
- ${import_chalk5.default.red(err.stack)}`),new import_core_common8.HandledError(err)}},projectTypeInquirer=async(options,packageManager)=>{let manualAnswer=options.yes?!0:await(0,import_prompts5.default)([{type:"confirm",name:"manual",message:"Do you want to manually choose a Storybook project type to install?"}]);if(manualAnswer!==!0&&manualAnswer.manual){let{manualFramework}=await(0,import_prompts5.default)([{type:"select",name:"manualFramework",message:"Please choose a project type from the following list:",choices:installableProjectTypes.map(type=>({title:type,value:type.toUpperCase()}))}]);if(manualFramework)return installStorybook(manualFramework,packageManager,options)}logger5.log(),logger5.log("For more information about installing Storybook: https://storybook.js.org/docs"),process.exit(0)};async function doInitiate(options,pkg2){let{packageManager:pkgMgr}=options,packageManager=import_core_common8.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("@storybook/cli"),currentVersion=import_core_common8.versions["@storybook/cli"],isPrerelease=(0,import_semver5.prerelease)(currentVersion),isOutdated=(0,import_semver5.lt)(currentVersion,latestVersion),borderColor=isOutdated?"#FC521F":"#F1618C",messages={welcome:`Adding Storybook version ${import_chalk5.default.bold(currentVersion)} to your project..`,notLatest:import_chalk5.default.red(import_ts_dedent7.default`
145
+ `,{title:import_chalk4.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),import_node_logger4.logger.line(1)},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=(0,import_fs_extra5.readdirSync)(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger6=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await detectLanguage(packageManager),pnp=await detectPnp(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case"REACT_SCRIPTS":return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "Create React App" based project'));case"REACT":return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "React" app'));case"REACT_NATIVE":return REACT_NATIVE_default(packageManager,npmOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "React Native" app'));case"QWIK":return QWIK_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "Qwik" app'));case"WEBPACK_REACT":return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "Webpack React" app'));case"REACT_PROJECT":return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "React" library'));case"NEXTJS":return NEXTJS_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "Next" app'));case"VUE3":return VUE3_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "Vue 3" app'));case"ANGULAR":return(0,import_core_common7.commandLog)('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case"EMBER":return EMBER_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "Ember" app'));case"HTML":return HTML_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "HTML" app'));case"WEB_COMPONENTS":return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "web components" app'));case"PREACT":return PREACT_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "Preact" app'));case"SVELTE":return SVELTE_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "Svelte" app'));case"SVELTEKIT":return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "SvelteKit" app'));case"SERVER":return SERVER_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "Server" app'));case"NX":throw new import_server_errors3.NxProjectDetectedError;case"SOLID":return SOLID_default(packageManager,npmOptions,generatorOptions).then((0,import_core_common7.commandLog)('Adding Storybook support to your "SolidJS" app'));case"UNSUPPORTED":return(0,import_core_common7.paddedLog)("We detected a project type that we don't support yet."),(0,import_core_common7.paddedLog)("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger6.log(),Promise.resolve();default:return(0,import_core_common7.paddedLog)(`We couldn't detect your project type. (code: ${projectType})`),(0,import_core_common7.paddedLog)("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/react/get-started/install"),logger6.log(),projectTypeInquirer(options,packageManager)}};try{return await runGenerator()}catch(err){throw err?.message!=="Canceled by the user"&&err?.stack&&logger6.error(`
146
+ ${import_chalk5.default.red(err.stack)}`),new import_core_common7.HandledError(err)}},projectTypeInquirer=async(options,packageManager)=>{let manualAnswer=options.yes?!0:await(0,import_prompts5.default)([{type:"confirm",name:"manual",message:"Do you want to manually choose a Storybook project type to install?"}]);if(manualAnswer!==!0&&manualAnswer.manual){let{manualFramework}=await(0,import_prompts5.default)([{type:"select",name:"manualFramework",message:"Please choose a project type from the following list:",choices:installableProjectTypes.map(type=>({title:type,value:type.toUpperCase()}))}]);if(manualFramework)return installStorybook(manualFramework,packageManager,options)}logger6.log(),logger6.log("For more information about installing Storybook: https://storybook.js.org/docs"),process.exit(0)};async function doInitiate(options,pkg2){let{packageManager:pkgMgr}=options,packageManager=import_core_common7.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("@storybook/cli"),currentVersion=import_core_common7.versions["@storybook/cli"],isPrerelease2=(0,import_semver5.prerelease)(currentVersion),isOutdated=(0,import_semver5.lt)(currentVersion,latestVersion),borderColor=isOutdated?"#FC521F":"#F1618C",messages={welcome:`Adding Storybook version ${import_chalk5.default.bold(currentVersion)} to your project..`,notLatest:import_chalk5.default.red(import_ts_dedent7.default`
157
147
  This version is behind the latest release, which is: ${import_chalk5.default.bold(latestVersion)}!
158
148
  You likely ran the init command through npx, which can use a locally cached version, to get the latest please run:
159
149
  ${import_chalk5.default.bold("npx storybook@latest init")}
160
150
 
161
151
  You may want to CTRL+C to stop, and run with the latest version instead.
162
- `),prelease:import_chalk5.default.yellow("This is a pre-release version.")};logger5.log(boxen([messages.welcome].concat(isOutdated&&!isPrerelease?[messages.notLatest]:[]).concat(isPrerelease?[messages.prelease]:[]).join(`
163
- `),{borderStyle:"round",padding:1,borderColor})),options.force!==!0&&currentDirectoryIsEmpty(packageManager.type)&&(await scaffoldNewProject(packageManager.type,options),(process.env.IN_STORYBOOK_SANDBOX==="true"||process.env.CI==="true")&&packageManager.addPackageResolutions({"@storybook/telemetry":import_core_common8.versions["@storybook/telemetry"]}));let projectType,projectTypeProvided=options.type,infoText=projectTypeProvided?`Installing Storybook for user specified project type: ${projectTypeProvided}`:"Detecting project type",done=(0,import_core_common8.commandLog)(infoText);if(projectTypeProvided)if(installableProjectTypes.includes(projectTypeProvided))projectType=projectTypeProvided.toUpperCase();else throw done(`The provided project type was not recognized by Storybook: ${projectTypeProvided}`),logger5.log(`
152
+ `),prelease:import_chalk5.default.yellow("This is a pre-release version.")};logger6.log(boxen([messages.welcome].concat(isOutdated&&!isPrerelease2?[messages.notLatest]:[]).concat(isPrerelease2?[messages.prelease]:[]).join(`
153
+ `),{borderStyle:"round",padding:1,borderColor})),options.force!==!0&&currentDirectoryIsEmpty(packageManager.type)&&(await scaffoldNewProject(packageManager.type,options),(process.env.IN_STORYBOOK_SANDBOX==="true"||process.env.CI==="true")&&packageManager.addPackageResolutions({"@storybook/telemetry":import_core_common7.versions["@storybook/telemetry"]}));let projectType,projectTypeProvided=options.type,infoText=projectTypeProvided?`Installing Storybook for user specified project type: ${projectTypeProvided}`:"Detecting project type",done=(0,import_core_common7.commandLog)(infoText);if(projectTypeProvided)if(installableProjectTypes.includes(projectTypeProvided))projectType=projectTypeProvided.toUpperCase();else throw done(`The provided project type was not recognized by Storybook: ${projectTypeProvided}`),logger6.log(`
164
154
  The project types currently supported by Storybook are:
165
- `),installableProjectTypes.sort().forEach(framework=>(0,import_core_common8.paddedLog)(`- ${framework}`)),logger5.log(),new import_core_common8.HandledError(`Unknown project type supplied: ${projectTypeProvided}`);else try{projectType=await detect(packageManager,options)}catch(err){throw done(String(err)),new import_core_common8.HandledError(err)}done();let storybookInstantiated=isStorybookInstantiated();if(options.force===!1&&storybookInstantiated&&projectType!=="ANGULAR"){logger5.log();let{force}=await(0,import_prompts5.default)([{type:"confirm",name:"force",message:"We found a .storybook config directory in your project. Therefore we assume that Storybook is already instantiated for your project. Do you still want to continue and force the initialization?"}]);logger5.log(),force?options.force=!0:process.exit(0)}options.skipInstall||await packageManager.installDependencies();let installResult=await installStorybook(projectType,packageManager,options);if(options.skipInstall||await packageManager.installDependencies(),options.disableTelemetry||await(0,import_telemetry2.telemetry)("init",{projectType}),projectType==="REACT_NATIVE")return logger5.log(import_ts_dedent7.default`
155
+ `),installableProjectTypes.sort().forEach(framework=>(0,import_core_common7.paddedLog)(`- ${framework}`)),logger6.log(),new import_core_common7.HandledError(`Unknown project type supplied: ${projectTypeProvided}`);else try{projectType=await detect(packageManager,options)}catch(err){throw done(String(err)),new import_core_common7.HandledError(err)}done();let storybookInstantiated=isStorybookInstantiated();if(options.force===!1&&storybookInstantiated&&projectType!=="ANGULAR"){logger6.log();let{force}=await(0,import_prompts5.default)([{type:"confirm",name:"force",message:"We found a .storybook config directory in your project. Therefore we assume that Storybook is already instantiated for your project. Do you still want to continue and force the initialization?"}]);logger6.log(),force?options.force=!0:process.exit(0)}options.skipInstall||await packageManager.installDependencies();let installResult=await installStorybook(projectType,packageManager,options);if(options.skipInstall||await packageManager.installDependencies(),options.disableTelemetry||await(0,import_telemetry2.telemetry)("init",{projectType}),projectType==="REACT_NATIVE")return logger6.log(import_ts_dedent7.default`
166
156
  ${import_chalk5.default.yellow("NOTE: installation is not 100% automated.")}
167
157
 
168
158
  To run Storybook, you will need to:
@@ -180,21 +170,21 @@ The project types currently supported by Storybook are:
180
170
 
181
171
  ${import_chalk5.default.inverse(" "+packageManager.getRunCommand("start")+" ")}
182
172
 
183
- `),{shouldRunDev:!1};let foundGitIgnoreFile=await(0,import_find_up3.default)(".gitignore"),rootDirectory=(0,import_core_common8.getProjectRoot)();foundGitIgnoreFile&&foundGitIgnoreFile.includes(rootDirectory)&&((await(0,import_promises.readFile)(foundGitIgnoreFile,"utf-8")).includes("*storybook.log")||await(0,import_promises.appendFile)(foundGitIgnoreFile,`
184
- *storybook.log`));let storybookCommand=projectType==="ANGULAR"?`ng run ${installResult.projectName}:storybook`:packageManager.getRunStorybookCommand();return logger5.log(boxen(import_ts_dedent7.default`
173
+ `),{shouldRunDev:!1};let foundGitIgnoreFile=await(0,import_find_up3.default)(".gitignore"),rootDirectory=(0,import_core_common7.getProjectRoot)();foundGitIgnoreFile&&foundGitIgnoreFile.includes(rootDirectory)&&((await(0,import_promises.readFile)(foundGitIgnoreFile,"utf-8")).includes("*storybook.log")||await(0,import_promises.appendFile)(foundGitIgnoreFile,`
174
+ *storybook.log`));let storybookCommand=projectType==="ANGULAR"?`ng run ${installResult.projectName}:storybook`:packageManager.getRunStorybookCommand();return logger6.log(boxen(import_ts_dedent7.default`
185
175
  Storybook was successfully installed in your project! 🎉
186
176
  To run Storybook manually, run ${import_chalk5.default.yellow(import_chalk5.default.bold(storybookCommand))}. CTRL+C to stop.
187
177
 
188
178
  Wanna know more about Storybook? Check out ${import_chalk5.default.cyan("https://storybook.js.org/")}
189
179
  Having trouble or want to chat? Join us at ${import_chalk5.default.cyan("https://discord.gg/storybook/")}
190
- `,{borderStyle:"round",padding:1,borderColor:"#F1618C"})),{shouldRunDev:process.env.CI!=="true"&&process.env.IN_STORYBOOK_SANDBOX!=="true",projectType,packageManager,storybookCommand}}async function initiate(options,pkg2){let initiateResult=await(0,import_core_server.withTelemetry)("init",{cliOptions:options,printError:err=>!err.handled&&logger5.error(err)},()=>doInitiate(options,pkg2));if(initiateResult?.shouldRunDev){let{projectType,packageManager,storybookCommand}=initiateResult;logger5.log(`
191
- Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||projectType==="REACT"||projectType==="WEBPACK_REACT"||projectType==="REACT_PROJECT"||projectType==="NEXTJS",flags=[];packageManager.type==="npm"&&flags.push("--"),isReactWebProject&&flags.push("--initial-path=/onboarding"),flags.push("--quiet"),packageManager.runPackageCommandSync(storybookCommand.replace(/^yarn /,""),flags,void 0,"inherit")}catch{}}}var import_core_common9=require("@storybook/core-common"),import_csf_tools2=require("@storybook/csf-tools"),import_path10=require("path"),import_semver6=__toESM(require("semver")),import_ts_dedent8=__toESM(require("ts-dedent")),logger6=console,postinstallAddon=async(addonName,options)=>{try{let modulePath=require.resolve(`${addonName}/postinstall`,{paths:[process.cwd()]}),postinstall=require(modulePath);try{logger6.log(`Running postinstall script for ${addonName}`),await postinstall(options)}catch(e){logger6.error(`Error running postinstall script for ${addonName}`),logger6.error(e)}}catch{}},getVersionSpecifier=addon=>{let groups=/^(...*)@(.*)$/.exec(addon);return groups?[groups[0],groups[2]]:[addon,void 0]},requireMain=configDir=>{let absoluteConfigDir=(0,import_path10.isAbsolute)(configDir)?configDir:(0,import_path10.join)(process.cwd(),configDir),mainFile=(0,import_path10.join)(absoluteConfigDir,"main");return(0,import_core_common9.serverRequire)(mainFile)??{}},checkInstalled=(addonName,main)=>!!main.addons?.find(entry=>(typeof entry=="string"?entry:entry.name)?.endsWith(addonName));async function add(addon,options){let{packageManager:pkgMgr}=options,packageManager=import_core_common9.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),packageJson=await packageManager.retrievePackageJson(),{mainConfig,configDir}=(0,import_core_common9.getStorybookInfo)(packageJson);if(typeof configDir>"u")throw new Error(import_ts_dedent8.default`
180
+ `,{borderStyle:"round",padding:1,borderColor:"#F1618C"})),{shouldRunDev:process.env.CI!=="true"&&process.env.IN_STORYBOOK_SANDBOX!=="true",projectType,packageManager,storybookCommand}}async function initiate(options,pkg2){let initiateResult=await(0,import_core_server.withTelemetry)("init",{cliOptions:options,printError:err=>!err.handled&&logger6.error(err)},()=>doInitiate(options,pkg2));if(initiateResult?.shouldRunDev){let{projectType,packageManager,storybookCommand}=initiateResult;logger6.log(`
181
+ Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||projectType==="REACT"||projectType==="WEBPACK_REACT"||projectType==="REACT_PROJECT"||projectType==="NEXTJS",flags=[];packageManager.type==="npm"&&projectType!=="ANGULAR"&&flags.push("--"),isReactWebProject&&flags.push("--initial-path=/onboarding"),flags.push("--quiet"),packageManager.runPackageCommandSync(storybookCommand.replace(/^yarn /,""),flags,void 0,"inherit")}catch{}}}var import_core_common8=require("@storybook/core-common"),import_csf_tools2=require("@storybook/csf-tools"),import_path10=require("path"),import_semver6=__toESM(require("semver")),import_ts_dedent8=__toESM(require("ts-dedent")),logger7=console,postinstallAddon=async(addonName,options)=>{try{let modulePath=require.resolve(`${addonName}/postinstall`,{paths:[process.cwd()]}),postinstall=require(modulePath);try{logger7.log(`Running postinstall script for ${addonName}`),await postinstall(options)}catch(e){logger7.error(`Error running postinstall script for ${addonName}`),logger7.error(e)}}catch{}},getVersionSpecifier=addon=>{let groups=/^(...*)@(.*)$/.exec(addon);return groups?[groups[0],groups[2]]:[addon,void 0]},requireMain=configDir=>{let absoluteConfigDir=(0,import_path10.isAbsolute)(configDir)?configDir:(0,import_path10.join)(process.cwd(),configDir),mainFile=(0,import_path10.join)(absoluteConfigDir,"main");return(0,import_core_common8.serverRequire)(mainFile)??{}},checkInstalled=(addonName,main)=>!!main.addons?.find(entry=>(typeof entry=="string"?entry:entry.name)?.endsWith(addonName));async function add(addon,options){let{packageManager:pkgMgr}=options,packageManager=import_core_common8.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),packageJson=await packageManager.retrievePackageJson(),{mainConfig,configDir}=(0,import_core_common8.getStorybookInfo)(packageJson);if(typeof configDir>"u")throw new Error(import_ts_dedent8.default`
192
182
  Unable to find storybook config directory
193
183
  `);if(checkInstalled(addon,requireMain(configDir)))throw new Error(import_ts_dedent8.default`
194
184
  Addon ${addon} is already installed; we skipped adding it to your ${mainConfig}.
195
- `);let[addonName,versionSpecifier]=getVersionSpecifier(addon);if(!mainConfig){logger6.error("Unable to find storybook main.js config");return}let main=await(0,import_csf_tools2.readConfig)(mainConfig);logger6.log(`Verifying ${addonName}`);let latestVersion=await packageManager.latestVersion(addonName);latestVersion||logger6.error(`Unknown addon ${addonName}`);let isStorybookAddon=addonName.startsWith("@storybook/"),isAddonFromCore=(0,import_core_common9.isCorePackage)(addonName),storybookVersion=await(0,import_core_common9.getCoercedStorybookVersion)(packageManager),version=versionSpecifier||(isAddonFromCore?storybookVersion:latestVersion),addonWithVersion=import_semver6.default.valid(version)?`${addonName}@^${version}`:`${addonName}@${version}`;logger6.log(`Installing ${addonWithVersion}`),await packageManager.addDependencies({installAsDevDependencies:!0},[addonWithVersion]),logger6.log(`Adding '${addon}' to main.js addons field.`),main.appendValueToArray(["addons"],addonName),await(0,import_csf_tools2.writeConfig)(main),!options.skipPostinstall&&isStorybookAddon&&await postinstallAddon(addonName,{packageManager:packageManager.type})}var import_codemod=require("@storybook/codemod");var import_prompts9=__toESM(require("prompts")),import_chalk30=__toESM(require("chalk"));var import_fs_extra8=require("fs-extra"),import_tempy=__toESM(require("tempy")),import_path14=require("path"),import_tiny_invariant5=__toESM(require("tiny-invariant")),import_core_common20=require("@storybook/core-common");var import_chalk9=__toESM(require("chalk")),import_ts_dedent12=require("ts-dedent"),import_semver9=__toESM(require("semver"));var import_chalk8=__toESM(require("chalk")),import_ts_dedent11=require("ts-dedent"),import_semver8=__toESM(require("semver"));var import_chalk7=__toESM(require("chalk")),import_semver7=__toESM(require("semver")),import_ts_dedent10=__toESM(require("ts-dedent"));var import_core_common10=require("@storybook/core-common"),import_csf_tools3=require("@storybook/csf-tools"),import_chalk6=__toESM(require("chalk")),import_ts_dedent9=__toESM(require("ts-dedent")),import_path11=__toESM(require("path")),import_core_common11=require("@storybook/core-common"),logger7=console,getFrameworkPackageName=mainConfig=>{let packageNameOrPath=typeof mainConfig?.framework=="string"?mainConfig.framework:mainConfig?.framework?.name;if(!packageNameOrPath)return null;let normalizedPath=import_path11.default.normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return Object.keys(import_core_common10.frameworkPackages).find(pkg2=>normalizedPath.endsWith(pkg2))||packageNameOrPath},getBuilderPackageName=mainConfig=>{let frameworkBuilder=getFrameworkOptions(mainConfig)?.builder,frameworkBuilderName=typeof frameworkBuilder=="string"?frameworkBuilder:frameworkBuilder?.options?.name,packageNameOrPath=(typeof mainConfig?.core?.builder=="string"?mainConfig.core.builder:mainConfig?.core?.builder?.name)??frameworkBuilderName;if(!packageNameOrPath)return null;let normalizedPath=import_path11.default.normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return import_core_common10.builderPackages.find(pkg2=>normalizedPath.endsWith(pkg2))||packageNameOrPath},getFrameworkOptions=mainConfig=>typeof mainConfig?.framework=="string"?null:mainConfig?.framework?.options??null,getRendererPackageNameFromFramework=frameworkPackageName=>{if(frameworkPackageName){if(Object.keys(import_core_common10.rendererPackages).includes(frameworkPackageName))return frameworkPackageName;if(Object.values(import_core_common10.rendererPackages).includes(frameworkPackageName))return Object.keys(import_core_common10.rendererPackages).find(k=>import_core_common10.rendererPackages[k]===frameworkPackageName)}return null},getStorybookData=async({packageManager,configDir:userDefinedConfigDir})=>{let packageJson=await packageManager.retrievePackageJson(),{mainConfig:mainConfigPath,version:storybookVersionSpecifier,configDir:configDirFromScript,previewConfig:previewConfigPath}=(0,import_core_common10.getStorybookInfo)(packageJson,userDefinedConfigDir),storybookVersion=await(0,import_core_common11.getCoercedStorybookVersion)(packageManager),configDir=userDefinedConfigDir||configDirFromScript||".storybook",mainConfig;try{mainConfig=await(0,import_core_common10.loadMainConfig)({configDir,noCache:!0})}catch(err){throw new Error(import_ts_dedent9.default`Unable to find or evaluate ${import_chalk6.default.blue(mainConfigPath)}: ${String(err)}`)}return{configDir,mainConfig,storybookVersionSpecifier,storybookVersion,mainConfigPath,previewConfigPath}},updateMainConfig=async({mainConfigPath,dryRun},callback)=>{try{let main=await(0,import_csf_tools3.readConfig)(mainConfigPath);await callback(main),dryRun||await(0,import_csf_tools3.writeConfig)(main)}catch(e){logger7.info(`\u274C The migration failed to update your ${import_chalk6.default.blue(mainConfigPath)} on your behalf because of the following error:
185
+ `);let[addonName,versionSpecifier]=getVersionSpecifier(addon);if(!mainConfig){logger7.error("Unable to find storybook main.js config");return}let main=await(0,import_csf_tools2.readConfig)(mainConfig);logger7.log(`Verifying ${addonName}`);let latestVersion=await packageManager.latestVersion(addonName);latestVersion||logger7.error(`Unknown addon ${addonName}`);let isStorybookAddon=addonName.startsWith("@storybook/"),isAddonFromCore=(0,import_core_common8.isCorePackage)(addonName),storybookVersion=await(0,import_core_common8.getCoercedStorybookVersion)(packageManager),version=versionSpecifier||(isAddonFromCore?storybookVersion:latestVersion),addonWithVersion=import_semver6.default.valid(version)?`${addonName}@^${version}`:`${addonName}@${version}`;logger7.log(`Installing ${addonWithVersion}`),await packageManager.addDependencies({installAsDevDependencies:!0},[addonWithVersion]),logger7.log(`Adding '${addon}' to main.js addons field.`),main.appendValueToArray(["addons"],addonName),await(0,import_csf_tools2.writeConfig)(main),!options.skipPostinstall&&isStorybookAddon&&await postinstallAddon(addonName,{packageManager:packageManager.type})}var import_codemod3=require("@storybook/codemod");var import_prompts11=__toESM(require("prompts")),import_chalk33=__toESM(require("chalk"));var import_fs_extra9=require("fs-extra"),import_tempy2=__toESM(require("tempy")),import_path16=require("path"),import_tiny_invariant5=__toESM(require("tiny-invariant")),import_semver17=__toESM(require("semver")),import_core_common21=require("@storybook/core-common");var import_chalk9=__toESM(require("chalk")),import_ts_dedent12=require("ts-dedent"),import_semver9=__toESM(require("semver"));var import_chalk8=__toESM(require("chalk")),import_ts_dedent11=require("ts-dedent"),import_semver8=__toESM(require("semver"));var import_chalk7=__toESM(require("chalk")),import_semver7=__toESM(require("semver")),import_ts_dedent10=__toESM(require("ts-dedent"));var import_core_common9=require("@storybook/core-common"),import_csf_tools3=require("@storybook/csf-tools"),import_chalk6=__toESM(require("chalk")),import_ts_dedent9=__toESM(require("ts-dedent")),import_path11=__toESM(require("path")),import_core_common10=require("@storybook/core-common"),logger8=console,getFrameworkPackageName=mainConfig=>{let packageNameOrPath=typeof mainConfig?.framework=="string"?mainConfig.framework:mainConfig?.framework?.name;if(!packageNameOrPath)return null;let normalizedPath=import_path11.default.normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return Object.keys(import_core_common9.frameworkPackages).find(pkg2=>normalizedPath.endsWith(pkg2))||packageNameOrPath},getBuilderPackageName=mainConfig=>{let frameworkBuilder=getFrameworkOptions(mainConfig)?.builder,frameworkBuilderName=typeof frameworkBuilder=="string"?frameworkBuilder:frameworkBuilder?.options?.name,packageNameOrPath=(typeof mainConfig?.core?.builder=="string"?mainConfig.core.builder:mainConfig?.core?.builder?.name)??frameworkBuilderName;if(!packageNameOrPath)return null;let normalizedPath=import_path11.default.normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return import_core_common9.builderPackages.find(pkg2=>normalizedPath.endsWith(pkg2))||packageNameOrPath},getFrameworkOptions=mainConfig=>typeof mainConfig?.framework=="string"?null:mainConfig?.framework?.options??null,getRendererPackageNameFromFramework=frameworkPackageName=>{if(frameworkPackageName){if(Object.keys(import_core_common9.rendererPackages).includes(frameworkPackageName))return frameworkPackageName;if(Object.values(import_core_common9.rendererPackages).includes(frameworkPackageName))return Object.keys(import_core_common9.rendererPackages).find(k=>import_core_common9.rendererPackages[k]===frameworkPackageName)}return null},getStorybookData=async({packageManager,configDir:userDefinedConfigDir})=>{let packageJson=await packageManager.retrievePackageJson(),{mainConfig:mainConfigPath,version:storybookVersionSpecifier,configDir:configDirFromScript,previewConfig:previewConfigPath}=(0,import_core_common9.getStorybookInfo)(packageJson,userDefinedConfigDir),storybookVersion=await(0,import_core_common10.getCoercedStorybookVersion)(packageManager),configDir=userDefinedConfigDir||configDirFromScript||".storybook",mainConfig;try{mainConfig=await(0,import_core_common9.loadMainConfig)({configDir,noCache:!0})}catch(err){throw new Error(import_ts_dedent9.default`Unable to find or evaluate ${import_chalk6.default.blue(mainConfigPath)}: ${String(err)}`)}return{configDir,mainConfig,storybookVersionSpecifier,storybookVersion,mainConfigPath,previewConfigPath}},updateMainConfig=async({mainConfigPath,dryRun},callback)=>{try{let main=await(0,import_csf_tools3.readConfig)(mainConfigPath);await callback(main),dryRun||await(0,import_csf_tools3.writeConfig)(main)}catch(e){logger8.info(`\u274C The migration failed to update your ${import_chalk6.default.blue(mainConfigPath)} on your behalf because of the following error:
196
186
  ${e}
197
- `),logger7.info(`\u26A0\uFE0F Storybook automigrations are based on AST parsing and it's possible that your ${import_chalk6.default.blue(mainConfigPath)} file contains a non-standard format (e.g. your export is not an object) or that there was an error when parsing dynamic values (e.g. "require" calls, or usage of environment variables). When your main config is non-standard, automigrations are unfortunately not possible. Please follow the instructions given previously and follow the documentation to make the updates manually.`)}},getAddonNames=mainConfig=>(mainConfig.addons||[]).map(addon=>{let name="";if(typeof addon=="string"?name=addon:typeof addon=="object"&&(name=addon.name),!name.startsWith("."))return name.replace(/\/dist\/.*/,"").replace(/\.[mc]?[tj]?s[x]?$/,"").replace(/\/register$/,"").replace(/\/manager$/,"").replace(/\/preset$/,"")}).filter(item=>item!=null);var logger8=console,checkWebpack5Builder=async({mainConfig,storybookVersion})=>{if(import_semver7.default.lt(storybookVersion,"6.3.0"))return logger8.warn(import_ts_dedent10.default`
187
+ `),logger8.info(`\u26A0\uFE0F Storybook automigrations are based on AST parsing and it's possible that your ${import_chalk6.default.blue(mainConfigPath)} file contains a non-standard format (e.g. your export is not an object) or that there was an error when parsing dynamic values (e.g. "require" calls, or usage of environment variables). When your main config is non-standard, automigrations are unfortunately not possible. Please follow the instructions given previously and follow the documentation to make the updates manually.`)}},getAddonNames=mainConfig=>(mainConfig.addons||[]).map(addon=>{let name="";if(typeof addon=="string"?name=addon:typeof addon=="object"&&(name=addon.name),!name.startsWith("."))return name.replace(/\/dist\/.*/,"").replace(/\.[mc]?[tj]?s[x]?$/,"").replace(/\/register$/,"").replace(/\/manager$/,"").replace(/\/preset$/,"")}).filter(item=>item!=null);var logger9=console,checkWebpack5Builder=async({mainConfig,storybookVersion})=>{if(import_semver7.default.lt(storybookVersion,"6.3.0"))return logger9.warn(import_ts_dedent10.default`
198
188
  Detected SB 6.3 or below, please upgrade storybook to use webpack5.
199
189
 
200
190
  To upgrade to the latest stable release, run this from your project directory:
@@ -204,68 +194,63 @@ Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||pro
204
194
  To upgrade to the latest pre-release, run this from your project directory:
205
195
 
206
196
  ${import_chalk7.default.cyan("npx storybook@next upgrade")}
207
- `.trim()),null;if(import_semver7.default.gte(storybookVersion,"7.0.0"))return null;if(!mainConfig)return logger8.warn("Unable to find storybook main.js config"),null;let builderPackageName=getBuilderPackageName(mainConfig);return builderPackageName&&builderPackageName!=="webpack4"?(logger8.info(`Found builder ${builderPackageName}, skipping`),null):{storybookVersion}};var logger9=console,webpack5={id:"webpack5",async check({configDir,packageManager,mainConfig,storybookVersion}){let webpackVersion=await packageManager.getPackageVersion("webpack");if(!webpackVersion||import_semver8.default.lt(webpackVersion,"5.0.0")||import_semver8.default.gte(webpackVersion,"6.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{webpackVersion,...builderInfo}:null},prompt({webpackVersion}){let webpackFormatted=import_chalk8.default.cyan(`webpack ${webpackVersion}`);return import_ts_dedent11.dedent`
197
+ `.trim()),null;if(import_semver7.default.gte(storybookVersion,"7.0.0"))return null;if(!mainConfig)return logger9.warn("Unable to find storybook main.js config"),null;let builderPackageName=getBuilderPackageName(mainConfig);return builderPackageName&&builderPackageName!=="webpack4"?(logger9.info(`Found builder ${builderPackageName}, skipping`),null):{storybookVersion}};var logger10=console,webpack5={id:"webpack5",versionRange:["<7",">=7"],async check({packageManager,mainConfig,storybookVersion}){let webpackVersion=await packageManager.getPackageVersion("webpack");if(!webpackVersion||import_semver8.default.lt(webpackVersion,"5.0.0")||import_semver8.default.gte(webpackVersion,"6.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{webpackVersion,...builderInfo}:null},prompt({webpackVersion}){let webpackFormatted=import_chalk8.default.cyan(`webpack ${webpackVersion}`);return import_ts_dedent11.dedent`
208
198
  We've detected you're running ${webpackFormatted}.
209
199
  Your Storybook's main.js files specifies webpack4, which is incompatible.
210
200
 
211
201
  To run Storybook in webpack5-mode, we can install Storybook's ${import_chalk8.default.cyan("@storybook/builder-webpack5")} for you.
212
202
 
213
203
  More info: ${import_chalk8.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack-5-manager-build")}
214
- `},async run({result:{storybookVersion,webpackVersion},packageManager,dryRun,mainConfigPath}){let deps=[`@storybook/builder-webpack5@${storybookVersion}`];webpackVersion||deps.push("webpack@5"),logger9.info(`\u2705 Adding dependencies: ${deps}`),dryRun||await packageManager.addDependencies({installAsDevDependencies:!0},deps),logger9.info("\u2705 Setting `core.builder` to `@storybook/builder-webpack5` in main.js"),dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{main.setFieldValue(["core","builder"],"@storybook/builder-webpack5")})}};var cra5={id:"cra5",async check({packageManager,mainConfig,storybookVersion}){let craVersion=await packageManager.getPackageVersion("react-scripts");if(!craVersion||import_semver9.default.lt(craVersion,"5.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{craVersion,...builderInfo}:null},prompt({craVersion}){let craFormatted=import_chalk9.default.cyan(`Create React App (CRA) ${craVersion}`);return import_ts_dedent12.dedent`
204
+ `},async run({result:{storybookVersion,webpackVersion},packageManager,dryRun,mainConfigPath}){let deps=[`@storybook/builder-webpack5@${storybookVersion}`];webpackVersion||deps.push("webpack@5"),logger10.info(`\u2705 Adding dependencies: ${deps}`),dryRun||await packageManager.addDependencies({installAsDevDependencies:!0},deps),logger10.info("\u2705 Setting `core.builder` to `@storybook/builder-webpack5` in main.js"),dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{main.setFieldValue(["core","builder"],"@storybook/builder-webpack5")})}};var cra5={id:"cra5",versionRange:["<7",">=7"],async check({packageManager,mainConfig,storybookVersion}){let craVersion=await packageManager.getPackageVersion("react-scripts");if(!craVersion||import_semver9.default.lt(craVersion,"5.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{craVersion,...builderInfo}:null},prompt({craVersion}){let craFormatted=import_chalk9.default.cyan(`Create React App (CRA) ${craVersion}`);return import_ts_dedent12.dedent`
215
205
  We've detected you are running ${craFormatted} which is powered by webpack5.
216
206
  Your Storybook's main.js files specifies webpack4, which is incompatible.
217
207
 
218
208
  In order to work with your version of CRA, we need to install Storybook's ${import_chalk9.default.cyan("@storybook/builder-webpack5")}.
219
209
 
220
210
  More info: ${import_chalk9.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#cra5-upgrade")}
221
- `},async run(options){return webpack5.run({...options,result:{webpackVersion:null,...options.result}})}};var import_chalk10=__toESM(require("chalk")),import_ts_dedent13=require("ts-dedent"),import_semver10=__toESM(require("semver")),logger10=console,vite4={id:"vite4",async check({packageManager}){let viteVersion=await packageManager.getPackageVersion("vite");return!viteVersion||import_semver10.default.gt(viteVersion,"4.0.0")?null:{viteVersion}},prompt({viteVersion}){let viteFormatted=import_chalk10.default.cyan(`${viteVersion}`);return import_ts_dedent13.dedent`
222
- We've detected your version of Vite is outdated (${viteFormatted}).
223
-
224
- Storybook 8.0.0 will require Vite 4.0.0 or later.
225
- Do you want us to upgrade Vite for you?
226
- `},async run({packageManager,dryRun}){let deps=["vite"];logger10.info(`\u2705 Adding dependencies: ${deps}`),dryRun||await packageManager.addDependencies({installAsDevDependencies:!0},deps)}};var import_chalk11=__toESM(require("chalk")),import_ts_dedent14=require("ts-dedent"),import_semver11=__toESM(require("semver"));var vue3={id:"vue3",async check({packageManager,mainConfig,storybookVersion}){let vueVersion=await packageManager.getPackageVersion("vue");if(!vueVersion||import_semver11.default.lt(vueVersion,"3.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{vueVersion,...builderInfo}:null},prompt({vueVersion,storybookVersion}){let vueFormatted=import_chalk11.default.cyan(`Vue ${vueVersion}`),sbFormatted=import_chalk11.default.cyan(`Storybook ${storybookVersion}`);return import_ts_dedent14.dedent`
211
+ `},async run(options){return webpack5.run({...options,result:{webpackVersion:null,...options.result}})}};var import_chalk10=__toESM(require("chalk")),import_ts_dedent13=require("ts-dedent"),import_semver10=__toESM(require("semver"));var vue3={id:"vue3",versionRange:["<7",">=7"],async check({packageManager,mainConfig,storybookVersion}){let vueVersion=await packageManager.getPackageVersion("vue");if(!vueVersion||import_semver10.default.lt(vueVersion,"3.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{vueVersion,...builderInfo}:null},prompt({vueVersion,storybookVersion}){let vueFormatted=import_chalk10.default.cyan(`Vue ${vueVersion}`),sbFormatted=import_chalk10.default.cyan(`Storybook ${storybookVersion}`);return import_ts_dedent13.dedent`
227
212
  We've detected you are running ${vueFormatted} with Storybook.
228
213
  ${sbFormatted} runs webpack4 by default, which is incompatible.
229
214
 
230
- In order to work with your version of Vue, we need to install Storybook's ${import_chalk11.default.cyan("webpack5 builder")}.
215
+ In order to work with your version of Vue, we need to install Storybook's ${import_chalk10.default.cyan("webpack5 builder")}.
231
216
 
232
- More info: ${import_chalk11.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vue3-upgrade")}
233
- `},async run(options){return webpack5.run({...options,result:{webpackVersion:null,...options.result}})}};var import_ts_dedent15=require("ts-dedent"),import_semver12=__toESM(require("semver")),import_path12=require("path");function slash(path9){return path9.startsWith("\\\\?\\")?path9:path9.replace(/\\/g,"/")}var import_globby=__toESM(require("globby")),import_core_common12=require("@storybook/core-common");var logger11=console,mdxgfm={id:"github-flavored-markdown-mdx",async check({configDir,mainConfig,storybookVersion}){if(!import_semver12.default.gte(storybookVersion,"7.0.0"))return null;let hasMDXFiles=await mainConfig?.stories?.reduce(async(acc,item)=>{if(await acc===!0)return!0;let pattern;if(typeof configDir>"u")return!1;if(typeof item=="string")pattern=slash((0,import_path12.join)(configDir,item));else if(typeof item=="object"){let directory2=item.directory||"..",files2=item.files||"**/*.@(mdx|stories.@(mdx|js|jsx|mjs|ts|tsx))";pattern=slash((0,import_path12.join)(configDir,directory2,files2))}return pattern?(await(0,import_globby.default)(pattern,(0,import_core_common12.commonGlobOptions)(pattern))).some(f=>f.endsWith(".mdx")):!1},Promise.resolve(!1));return mainConfig?.features?.legacyMdx1===!0||!1||!hasMDXFiles||!!mainConfig.addons?.find(item=>item==="@storybook/addon-mdx-gfm"?!0:typeof item=="string"?!1:item.name==="@storybook/addon-docs"?item.options?.mdxPluginOptions?.mdxCompileOptions?.remarkPlugins?.length>0:!1)?null:{}},prompt(){return import_ts_dedent15.dedent`
217
+ More info: ${import_chalk10.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vue3-upgrade")}
218
+ `},async run(options){return webpack5.run({...options,result:{webpackVersion:null,...options.result}})}};var import_ts_dedent14=require("ts-dedent"),import_path12=require("path");function slash(path9){return path9.startsWith("\\\\?\\")?path9:path9.replace(/\\/g,"/")}var import_globby=__toESM(require("globby")),import_core_common11=require("@storybook/core-common");var logger11=console,mdxgfm={id:"github-flavored-markdown-mdx",versionRange:["<7",">=7"],async check({configDir,mainConfig}){let hasMDXFiles=await mainConfig?.stories?.reduce(async(acc,item)=>{if(await acc===!0)return!0;let pattern;if(typeof configDir>"u")return!1;if(typeof item=="string")pattern=slash((0,import_path12.join)(configDir,item));else if(typeof item=="object"){let directory2=item.directory||"..",files2=item.files||"**/*.@(mdx|stories.@(mdx|js|jsx|mjs|ts|tsx))";pattern=slash((0,import_path12.join)(configDir,directory2,files2))}return pattern?(await(0,import_globby.default)(pattern,(0,import_core_common11.commonGlobOptions)(pattern))).some(f=>f.endsWith(".mdx")):!1},Promise.resolve(!1));return mainConfig?.features?.legacyMdx1===!0||!1||!hasMDXFiles||!!mainConfig.addons?.find(item=>item==="@storybook/addon-mdx-gfm"?!0:typeof item=="string"?!1:item.name==="@storybook/addon-docs"?item.options?.mdxPluginOptions?.mdxCompileOptions?.remarkPlugins?.length>0:!1)?null:{}},prompt(){return import_ts_dedent14.dedent`
234
219
  In MDX1 you had the option of using GitHub flavored markdown.
235
220
 
236
- Storybook 8.0 uses MDX3 for compiling MDX, and thus no longer supports GFM out of the box.
221
+ Storybook >= 8.0 uses MDX3 for compiling MDX, and thus no longer supports GFM out of the box.
237
222
  Because of this you need to explicitly add the GFM plugin in the addon-docs options:
238
223
  https://storybook.js.org/docs/react/writing-docs/mdx#lack-of-github-flavored-markdown-gfm
239
224
 
240
- We recommend you follow the guide on the link above, however we can add a temporary storybook addon that helps make this migration easier.
225
+ We recommend that you follow the guide in the link above; however, we can add a temporary Storybook addon to help make this migration easier.
241
226
  We'll install the addon and add it to your storybook config.
242
- `},async run({packageManager,dryRun,mainConfigPath,skipInstall}){if(!dryRun){let packageJson=await packageManager.retrievePackageJson(),versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall,packageJson},[`@storybook/addon-mdx-gfm@${versionToInstall}`]),await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger11.info('\u2705 Adding "@storybook/addon-mdx-gfm" addon'),dryRun||main.appendValueToArray(["addons"],"@storybook/addon-mdx-gfm")})}}};var import_ts_dedent16=require("ts-dedent"),import_csf_tools4=require("@storybook/csf-tools");var logger12=console,removeLegacyMDX1={id:"builder-vite",async check({mainConfig}){return mainConfig.features?{hasFeature:!!Object.hasOwn(mainConfig.features,"legacyMdx1")}:null},prompt({}){return import_ts_dedent16.dedent`
227
+ `},async run({packageManager,dryRun,mainConfigPath,skipInstall}){if(!dryRun){let packageJson=await packageManager.retrievePackageJson(),versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall,packageJson},[`@storybook/addon-mdx-gfm@${versionToInstall}`]),await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger11.info('\u2705 Adding "@storybook/addon-mdx-gfm" addon'),dryRun||main.appendValueToArray(["addons"],"@storybook/addon-mdx-gfm")})}}};var import_ts_dedent15=require("ts-dedent"),import_csf_tools4=require("@storybook/csf-tools");var logger12=console,removeLegacyMDX1={id:"remove-legacy-mdx1",versionRange:["<8.0.0-alpha.0",">=8.0.0-alpha.0"],async check({mainConfig}){return mainConfig.features&&Object.hasOwn(mainConfig.features,"legacyMdx1")?{hasFeature:!0}:null},prompt({}){return import_ts_dedent15.dedent`
243
228
  You have features.legacyMdx1 in your Storybook main config file. This feature has been removed. Shall we remove it from your Storybook main config file?
244
229
 
245
230
  Link: https://storybook.js.org/docs/8.0/migration-guide
246
- `},async run({dryRun,mainConfigPath,skipInstall,packageManager}){if(logger12.info("\u2705 Removing legacyMdx1 feature"),!dryRun){await updateMainConfig({dryRun:!!dryRun,mainConfigPath},async main=>{main.removeField(["features","legacyMdx1"]),await(0,import_csf_tools4.writeConfig)(main)});let packageJson=await packageManager.retrievePackageJson();await packageManager.removeDependencies({skipInstall,packageJson},["@storybook/mdx1-csf"])}}};var import_chalk12=__toESM(require("chalk")),import_ts_dedent17=require("ts-dedent");var logger13=console,eslintPlugin={id:"eslintPlugin",async check({packageManager}){let{hasEslint,isStorybookPluginInstalled}=await extractEslintInfo(packageManager);if(isStorybookPluginInstalled||!hasEslint)return null;let eslintFile=null,unsupportedExtension;try{eslintFile=findEslintFile()}catch(err){unsupportedExtension=String(err)}return!eslintFile||!unsupportedExtension?(logger13.warn("Unable to find .eslintrc config file, skipping"),null):{eslintFile,unsupportedExtension}},prompt(){return import_ts_dedent17.dedent`
231
+ `},async run({dryRun,mainConfigPath,skipInstall,packageManager}){if(logger12.info("\u2705 Removing legacyMdx1 feature"),!dryRun){await updateMainConfig({dryRun:!!dryRun,mainConfigPath},async main=>{main.removeField(["features","legacyMdx1"]),await(0,import_csf_tools4.writeConfig)(main)});let packageJson=await packageManager.retrievePackageJson();await packageManager.removeDependencies({skipInstall,packageJson},["@storybook/mdx1-csf"])}}};var import_chalk11=__toESM(require("chalk")),import_ts_dedent16=require("ts-dedent");var logger13=console,eslintPlugin={id:"eslintPlugin",versionRange:["<8",">=7"],async check({packageManager}){let{hasEslint,isStorybookPluginInstalled}=await extractEslintInfo(packageManager);if(isStorybookPluginInstalled||!hasEslint)return null;let eslintFile=null,unsupportedExtension;try{eslintFile=findEslintFile()}catch(err){unsupportedExtension=String(err)}return!eslintFile||!unsupportedExtension?(logger13.warn("Unable to find .eslintrc config file, skipping"),null):{eslintFile,unsupportedExtension}},prompt(){return import_ts_dedent16.dedent`
247
232
  We've detected you are not using our eslint-plugin.
248
233
 
249
234
  In order to have the best experience with Storybook and follow best practices, we advise you to install eslint-plugin-storybook.
250
235
 
251
- More info: ${import_chalk12.default.yellow("https://github.com/storybookjs/eslint-plugin-storybook#readme")}
252
- `},async run({result:{eslintFile,unsupportedExtension},packageManager,dryRun,skipInstall}){let deps=["eslint-plugin-storybook"];if(logger13.info(`\u2705 Adding dependencies: ${deps}`),dryRun||await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall},deps),!dryRun&&unsupportedExtension){logger13.info(import_ts_dedent17.dedent`
236
+ More info: ${import_chalk11.default.yellow("https://github.com/storybookjs/eslint-plugin-storybook#readme")}
237
+ `},async run({result:{eslintFile,unsupportedExtension},packageManager,dryRun,skipInstall}){let deps=["eslint-plugin-storybook"];if(logger13.info(`\u2705 Adding dependencies: ${deps}`),dryRun||await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall},deps),!dryRun&&unsupportedExtension){logger13.info(import_ts_dedent16.dedent`
253
238
  ⚠️ The plugin was successfully installed but failed to configure.
254
239
 
255
240
  Found an eslint config file with an unsupported automigration format: .eslintrc.${unsupportedExtension}.
256
241
  The supported formats for this automigration are: ${SUPPORTED_ESLINT_EXTENSIONS.join(", ")}.
257
242
 
258
243
  Please refer to https://github.com/storybookjs/eslint-plugin-storybook#usage to finish setting up the plugin manually.
259
- `);return}dryRun||await configureEslintPlugin(eslintFile,packageManager)}};var import_chalk13=__toESM(require("chalk")),import_ts_dedent18=require("ts-dedent"),import_csf_tools5=require("@storybook/csf-tools");var logger14=console,builderVite={id:"builder-vite",async check({packageManager,mainConfig}){let packageJson=await packageManager.retrievePackageJson(),builder=mainConfig.core?.builder;return(typeof builder=="string"?builder:builder?.name)!=="storybook-builder-vite"?null:{builder,packageJson}},prompt({builder}){let builderFormatted=import_chalk13.default.cyan(JSON.stringify(builder,null,2));return import_ts_dedent18.dedent`
244
+ `);return}dryRun||await configureEslintPlugin(eslintFile,packageManager)}};var import_chalk12=__toESM(require("chalk")),import_ts_dedent17=require("ts-dedent"),import_csf_tools5=require("@storybook/csf-tools");var logger14=console,builderVite={id:"builder-vite",versionRange:["<7",">=7"],async check({packageManager,mainConfig}){let packageJson=await packageManager.retrievePackageJson(),builder=mainConfig.core?.builder;return(typeof builder=="string"?builder:builder?.name)!=="storybook-builder-vite"?null:{builder,packageJson}},prompt({builder}){let builderFormatted=import_chalk12.default.cyan(JSON.stringify(builder,null,2));return import_ts_dedent17.dedent`
260
245
  We've detected you're using the community vite builder: ${builderFormatted}
261
246
 
262
- 'storybook-builder-vite' is deprecated and now located at ${import_chalk13.default.cyan("@storybook/builder-vite")}.
247
+ 'storybook-builder-vite' is deprecated and now located at ${import_chalk12.default.cyan("@storybook/builder-vite")}.
263
248
 
264
249
  We can upgrade your project to use the new builder automatically.
265
250
 
266
- More info: ${import_chalk13.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vite-builder-renamed")}
267
- `},async run({result:{builder,packageJson},packageManager,dryRun,mainConfigPath}){let{dependencies={},devDependencies={}}=packageJson;if(logger14.info("\u2705 Removing existing 'storybook-builder-vite' dependency"),dryRun||(delete dependencies["storybook-builder-vite"],delete devDependencies["storybook-builder-vite"],await packageManager.writePackageJson(packageJson)),logger14.info("\u2705 Adding '@storybook/builder-vite' as dev dependency"),!dryRun){let versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());await packageManager.addDependencies({installAsDevDependencies:!0},[`@storybook/builder-vite@${versionToInstall}`])}logger14.info("\u2705 Updating main.js to use vite builder"),dryRun||await updateMainConfig({dryRun:!!dryRun,mainConfigPath},async main=>{let updatedBuilder=typeof builder=="string"?"@storybook/builder-vite":{name:"@storybook/builder-vite",options:builder.options};main.setFieldValue(["core","builder"],updatedBuilder),await(0,import_csf_tools5.writeConfig)(main)})}};var import_ts_dedent19=require("ts-dedent"),import_find_up4=__toESM(require("find-up"));var import_core_common13=require("@storybook/core-common"),viteConfigFile={id:"viteConfigFile",async check({mainConfig,packageManager}){let isViteConfigFileFound=!!await(0,import_find_up4.default)(["vite.config.js","vite.config.mjs","vite.config.cjs","vite.config.ts"]),rendererToVitePluginMap={preact:"@preact/preset-vite",qwik:"vite-plugin-qwik",react:"@vitejs/plugin-react",solid:"vite-plugin-solid",svelte:"@sveltejs/vite-plugin-svelte",sveltekit:"@sveltejs/kit/vite",vue:"@vitejs/plugin-vue"},frameworkPackageName=getFrameworkPackageName(mainConfig);if(!frameworkPackageName)return null;let frameworkName=import_core_common13.frameworkPackages[frameworkPackageName],isUsingViteBuilder=mainConfig.core?.builder==="vite"||frameworkPackageName?.includes("vite")||frameworkPackageName==="qwik"||frameworkPackageName==="solid"||frameworkPackageName==="sveltekit",rendererName=frameworkToRenderer[frameworkName];if(!isViteConfigFileFound&&mainConfig.core?.builder&&typeof mainConfig.core?.builder!="string"&&mainConfig.core?.builder.options&&(isViteConfigFileFound=!!mainConfig.core?.builder.options.viteConfigPath),!isViteConfigFileFound&&isUsingViteBuilder){let plugins=[];return rendererToVitePluginMap[rendererName]&&plugins.push(rendererToVitePluginMap[rendererName]),{plugins,existed:isViteConfigFileFound}}let plugin=rendererToVitePluginMap[rendererName];if(!plugin)return null;let pluginVersion=await packageManager.getPackageVersion(plugin);if(isViteConfigFileFound&&isUsingViteBuilder&&!pluginVersion){let plugins=[];return plugin&&plugins.push(plugin),{plugins,existed:!isViteConfigFileFound}}return null},prompt({existed,plugins}){return existed?import_ts_dedent19.dedent`
268
- Storybook 8.0.0 no longer ships with a Vite config build-in.
251
+ More info: ${import_chalk12.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vite-builder-renamed")}
252
+ `},async run({result:{builder,packageJson},packageManager,dryRun,mainConfigPath}){let{dependencies={},devDependencies={}}=packageJson;if(logger14.info("\u2705 Removing existing 'storybook-builder-vite' dependency"),dryRun||(delete dependencies["storybook-builder-vite"],delete devDependencies["storybook-builder-vite"],await packageManager.writePackageJson(packageJson)),logger14.info("\u2705 Adding '@storybook/builder-vite' as dev dependency"),!dryRun){let versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());await packageManager.addDependencies({installAsDevDependencies:!0},[`@storybook/builder-vite@${versionToInstall}`])}logger14.info("\u2705 Updating main.js to use vite builder"),dryRun||await updateMainConfig({dryRun:!!dryRun,mainConfigPath},async main=>{let updatedBuilder=typeof builder=="string"?"@storybook/builder-vite":{name:"@storybook/builder-vite",options:builder.options};main.setFieldValue(["core","builder"],updatedBuilder),await(0,import_csf_tools5.writeConfig)(main)})}};var import_ts_dedent18=require("ts-dedent"),import_find_up4=__toESM(require("find-up"));var import_core_common12=require("@storybook/core-common"),viteConfigFile={id:"viteConfigFile",versionRange:["<8.0.0-beta.3",">=8.0.0-beta.3"],async check({mainConfig,packageManager}){let isViteConfigFileFound=!!await(0,import_find_up4.default)(["vite.config.js","vite.config.mjs","vite.config.cjs","vite.config.ts"]),rendererToVitePluginMap={preact:"@preact/preset-vite",qwik:"vite-plugin-qwik",react:"@vitejs/plugin-react",solid:"vite-plugin-solid",svelte:"@sveltejs/vite-plugin-svelte",sveltekit:"@sveltejs/kit/vite",vue:"@vitejs/plugin-vue"},frameworkPackageName=getFrameworkPackageName(mainConfig);if(!frameworkPackageName)return null;let frameworkName=import_core_common12.frameworkPackages[frameworkPackageName],isUsingViteBuilder=mainConfig.core?.builder==="vite"||frameworkPackageName?.includes("vite")||frameworkPackageName==="qwik"||frameworkPackageName==="solid"||frameworkPackageName==="sveltekit",rendererName=frameworkToRenderer[frameworkName];if(!isViteConfigFileFound&&mainConfig.core?.builder&&typeof mainConfig.core?.builder!="string"&&mainConfig.core?.builder.options&&(isViteConfigFileFound=!!mainConfig.core?.builder.options.viteConfigPath),!isViteConfigFileFound&&isUsingViteBuilder){let plugins=[];return rendererToVitePluginMap[rendererName]&&plugins.push(rendererToVitePluginMap[rendererName]),{plugins,existed:isViteConfigFileFound}}let plugin=rendererToVitePluginMap[rendererName];if(!plugin)return null;let pluginVersion=await packageManager.getPackageVersion(plugin);if(isViteConfigFileFound&&isUsingViteBuilder&&!pluginVersion){let plugins=[];return plugin&&plugins.push(plugin),{plugins,existed:!isViteConfigFileFound}}return null},prompt({existed,plugins}){return existed?import_ts_dedent18.dedent`
253
+ Since version 8.0.0, Storybook no longer ships with a Vite config build-in.
269
254
  We've detected you do have a Vite config, but you may be missing the following plugins in it.
270
255
 
271
256
  ${plugins.map(plugin=>` - ${plugin}`).join(`
@@ -277,112 +262,102 @@ Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||pro
277
262
  https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-specific-vite-plugins-have-to-be-explicitly-added
278
263
 
279
264
  This change was necessary to support newer versions of Vite.
280
- `:import_ts_dedent19.dedent`
281
- Storybook 8.0.0 no longer ships with a Vite config build-in.
265
+ `:import_ts_dedent18.dedent`
266
+ Since version 8.0.0, Storybook no longer ships with a Vite config build-in.
282
267
  Please add a vite.config.js file to your project root.
283
268
 
284
269
  You can find more information on how to do this here:
285
270
  https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-specific-vite-plugins-have-to-be-explicitly-added
286
271
 
287
272
  This change was necessary to support newer versions of Vite.
288
- `}};var import_chalk14=__toESM(require("chalk")),import_ts_dedent20=require("ts-dedent"),import_semver13=__toESM(require("semver")),logger15=console,getStorybookScripts=allScripts=>Object.keys(allScripts).reduce((acc,key)=>{let currentScript=allScripts[key];if(currentScript==null)return acc;let isStorybookScript=!1,allWordsFromScript=currentScript.split(" "),newScript=allWordsFromScript.map((currentWord,index)=>{let previousWord=allWordsFromScript[index-1],isSbBinary=currentWord==="build-storybook"||currentWord==="start-storybook"||currentWord==="sb",isPrependedByPkgManager=previousWord&&["npx","run","yarn","pnpx","pnpm dlx"].some(cmd=>previousWord.includes(cmd));return isSbBinary&&!isPrependedByPkgManager?(isStorybookScript=!0,currentWord.replace("sb","storybook").replace("start-storybook","storybook dev").replace("build-storybook","storybook build")):currentWord}).join(" ");return isStorybookScript&&(acc[key]={before:currentScript,after:newScript}),acc},{}),sbScripts={id:"sb-scripts",async check({packageManager,storybookVersion}){let packageJson=await packageManager.retrievePackageJson(),{scripts={}}=packageJson;if(import_semver13.default.lt(storybookVersion,"7.0.0"))return null;let storybookScripts=getStorybookScripts(scripts);return Object.keys(storybookScripts).length===0?null:{packageJson,storybookScripts,storybookVersion}},prompt({storybookVersion,storybookScripts}){let sbFormatted=import_chalk14.default.cyan(`Storybook ${storybookVersion}`),newScriptsMessage=Object.keys(storybookScripts).reduce((acc,scriptKey)=>(acc.push([import_chalk14.default.bold(scriptKey),"from:",import_chalk14.default.cyan(storybookScripts[scriptKey].before),"to:",import_chalk14.default.cyan(storybookScripts[scriptKey].after)].join(`
289
- `)),acc),[]);return import_ts_dedent20.dedent`
273
+ `}};var import_chalk13=__toESM(require("chalk")),import_ts_dedent19=require("ts-dedent"),import_semver11=__toESM(require("semver")),logger15=console,getStorybookScripts=allScripts=>Object.keys(allScripts).reduce((acc,key)=>{let currentScript=allScripts[key];if(currentScript==null)return acc;let isStorybookScript=!1,allWordsFromScript=currentScript.split(" "),newScript=allWordsFromScript.map((currentWord,index)=>{let previousWord=allWordsFromScript[index-1],isSbBinary=currentWord==="build-storybook"||currentWord==="start-storybook"||currentWord==="sb",isPrependedByPkgManager=previousWord&&["npx","run","yarn","pnpx","pnpm dlx"].some(cmd=>previousWord.includes(cmd));return isSbBinary&&!isPrependedByPkgManager?(isStorybookScript=!0,currentWord.replace("sb","storybook").replace("start-storybook","storybook dev").replace("build-storybook","storybook build")):currentWord}).join(" ");return isStorybookScript&&(acc[key]={before:currentScript,after:newScript}),acc},{}),sbScripts={id:"sb-scripts",versionRange:["<7",">=7"],async check({packageManager,storybookVersion}){let packageJson=await packageManager.retrievePackageJson(),{scripts={}}=packageJson;if(import_semver11.default.lt(storybookVersion,"7.0.0"))return null;let storybookScripts=getStorybookScripts(scripts);return Object.keys(storybookScripts).length===0?null:{packageJson,storybookScripts,storybookVersion}},prompt({storybookVersion,storybookScripts}){let sbFormatted=import_chalk13.default.cyan(`Storybook ${storybookVersion}`),newScriptsMessage=Object.keys(storybookScripts).reduce((acc,scriptKey)=>(acc.push([import_chalk13.default.bold(scriptKey),"from:",import_chalk13.default.cyan(storybookScripts[scriptKey].before),"to:",import_chalk13.default.cyan(storybookScripts[scriptKey].after)].join(`
274
+ `)),acc),[]);return import_ts_dedent19.dedent`
290
275
  We've detected you are using ${sbFormatted} with scripts from previous versions of Storybook.
291
- Starting in Storybook 7, the ${import_chalk14.default.yellow("start-storybook")} and ${import_chalk14.default.yellow("build-storybook")} binaries have changed to ${import_chalk14.default.magenta("storybook dev")} and ${import_chalk14.default.magenta("storybook build")} respectively.
276
+ Starting in Storybook 7, the ${import_chalk13.default.yellow("start-storybook")} and ${import_chalk13.default.yellow("build-storybook")} binaries have changed to ${import_chalk13.default.magenta("storybook dev")} and ${import_chalk13.default.magenta("storybook build")} respectively.
292
277
  In order to work with ${sbFormatted}, your storybook scripts have to be adjusted to use the binary. We can adjust them for you:
293
278
 
294
279
  ${newScriptsMessage.join(`
295
280
 
296
281
  `)}
297
282
 
298
- In case this migration did not cover all of your scripts, or you'd like more info: ${import_chalk14.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#start-storybook--build-storybook-binaries-removed")}
299
- `},async run({result:{storybookScripts},packageManager,dryRun}){if(logger15.info("\u2705 Updating scripts in package.json"),logger15.log(),!dryRun){let newScripts=Object.keys(storybookScripts).reduce((acc,scriptKey)=>(acc[scriptKey]=storybookScripts[scriptKey].after,acc),{});logger15.log(),await packageManager.addScripts(newScripts)}}};var import_chalk15=__toESM(require("chalk")),import_ts_dedent21=require("ts-dedent"),import_semver14=__toESM(require("semver"));var logger16=console,sbBinary={id:"storybook-binary",async check({packageManager,storybookVersion}){let packageJson=await packageManager.retrievePackageJson(),nrwlStorybookVersion=await packageManager.getPackageVersion("@nrwl/storybook"),sbBinaryVersion=await packageManager.getPackageVersion("sb"),storybookBinaryVersion=await packageManager.getPackageVersion("storybook");if(nrwlStorybookVersion||import_semver14.default.lt(storybookVersion,"7.0.0"))return null;let hasSbBinary=!!sbBinaryVersion,hasStorybookBinary=!!storybookBinaryVersion;return!hasSbBinary&&hasStorybookBinary?null:{hasSbBinary,hasStorybookBinary,storybookVersion,packageJson}},prompt({storybookVersion,hasSbBinary,hasStorybookBinary}){let sbFormatted=import_chalk15.default.cyan(`Storybook ${storybookVersion}`),storybookBinaryMessage=hasStorybookBinary?"":`We've detected you are using ${sbFormatted} without Storybook's ${import_chalk15.default.magenta("storybook")} binary. Starting in Storybook 7.0, it has to be installed.`;return import_ts_dedent21.dedent`
283
+ In case this migration did not cover all of your scripts, or you'd like more info: ${import_chalk13.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#start-storybook--build-storybook-binaries-removed")}
284
+ `},async run({result:{storybookScripts},packageManager,dryRun}){if(logger15.info("\u2705 Updating scripts in package.json"),logger15.log(),!dryRun){let newScripts=Object.keys(storybookScripts).reduce((acc,scriptKey)=>(acc[scriptKey]=storybookScripts[scriptKey].after,acc),{});logger15.log(),await packageManager.addScripts(newScripts)}}};var import_chalk14=__toESM(require("chalk")),import_ts_dedent20=require("ts-dedent");var logger16=console,sbBinary={id:"storybook-binary",versionRange:["<7",">=7"],async check({packageManager,storybookVersion}){let packageJson=await packageManager.retrievePackageJson(),nrwlStorybookVersion=await packageManager.getPackageVersion("@nrwl/storybook"),sbBinaryVersion=await packageManager.getPackageVersion("sb"),storybookBinaryVersion=await packageManager.getPackageVersion("storybook");if(nrwlStorybookVersion)return null;let hasSbBinary=!!sbBinaryVersion,hasStorybookBinary=!!storybookBinaryVersion;return!hasSbBinary&&hasStorybookBinary?null:{hasSbBinary,hasStorybookBinary,storybookVersion,packageJson}},prompt({storybookVersion,hasSbBinary,hasStorybookBinary}){let sbFormatted=import_chalk14.default.cyan(`Storybook ${storybookVersion}`),storybookBinaryMessage=hasStorybookBinary?"":`We've detected you are using ${sbFormatted} without Storybook's ${import_chalk14.default.magenta("storybook")} binary. Starting in Storybook 7.0, it has to be installed.`;return import_ts_dedent20.dedent`
300
285
  ${storybookBinaryMessage}
301
286
  ${hasSbBinary?`You're using the 'sb' binary and it should be replaced, as 'storybook' is the recommended way to run Storybook.
302
287
  `:""}
303
288
 
304
- More info: ${import_chalk15.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#start-storybook--build-storybook-binaries-removed")}
305
- `},async run({result:{packageJson,hasSbBinary,hasStorybookBinary},packageManager,dryRun,skipInstall}){if(hasSbBinary&&(logger16.info("\u2705 Removing 'sb' dependency"),dryRun||await packageManager.removeDependencies({skipInstall:skipInstall||!hasStorybookBinary,packageJson},["sb"])),!hasStorybookBinary&&(logger16.log(),logger16.info("\u2705 Adding 'storybook' as dev dependency"),logger16.log(),!dryRun)){let versionToInstall=getStorybookVersionSpecifier(packageJson);await packageManager.addDependencies({installAsDevDependencies:!0,packageJson,skipInstall},[`storybook@${versionToInstall}`])}}};var import_chalk16=__toESM(require("chalk")),import_ts_dedent22=__toESM(require("ts-dedent")),import_semver15=__toESM(require("semver")),import_core_common16=require("@storybook/core-common"),import_tiny_invariant4=__toESM(require("tiny-invariant"));var import_core_common14=require("@storybook/core-common"),import_find_up5=__toESM(require("find-up"));var logger17=console,packagesMap={"@storybook/react":{webpack5:"@storybook/react-webpack5",vite:"@storybook/react-vite"},"@storybook/preact":{webpack5:"@storybook/preact-webpack5",vite:"@storybook/preact-vite"},"@storybook/server":{webpack5:"@storybook/server-webpack5"},"@storybook/ember":{webpack5:"@storybook/ember"},"@storybook/angular":{webpack5:"@storybook/angular"},"@storybook/vue3":{webpack5:"@storybook/vue3-webpack5",vite:"@storybook/vue3-vite"},"@storybook/svelte":{webpack5:"@storybook/svelte-webpack5",vite:"@storybook/svelte-vite"},"@storybook/web-components":{webpack5:"@storybook/web-components-webpack5",vite:"@storybook/web-components-vite"},"@storybook/html":{webpack5:"@storybook/html-webpack5",vite:"@storybook/html-vite"}},communityFrameworks={vite:["storybook-framework-qwik","storybook-solidjs-vite"],webpack5:[]},viteConfigFiles2=["vite.config.js","vite.config.cjs","vite.config.mjs","vite.config.ts"],webpackConfigFiles2=["webpack.config.js","webpack.config.cjs","webpack.config.mjs","webpack.config.ts"],detectBuilderInfo=async({mainConfig,configDir,packageManager})=>{let builderName,builderOrFrameworkName,{core={},framework}=mainConfig,{builder}=core,builderPackageName=getBuilderPackageName(mainConfig),frameworkPackageName=getFrameworkPackageName(mainConfig),builderOptions=typeof builder!="string"?builder?.options??{}:{};if(builderPackageName?builderOrFrameworkName=builderPackageName:framework&&Object.keys(import_core_common14.frameworkPackages).includes(frameworkPackageName)&&(builderOrFrameworkName=frameworkPackageName,builderOptions=typeof framework=="object"?framework.options?.builder??{}:{}),!builderOrFrameworkName){let viteConfigFile2=await(0,import_find_up5.default)(viteConfigFiles2,{cwd:configDir});if(viteConfigFile2)logger17.info(`No builder or framework field, detected Storybook builder via: ${viteConfigFile2}`),builderOrFrameworkName="vite";else{let webpackConfigFile=await(0,import_find_up5.default)(webpackConfigFiles2,{cwd:configDir});webpackConfigFile&&(logger17.info(`No builder or framework field, detected Storybook builder via: ${webpackConfigFile}`),builderOrFrameworkName="webpack5")}}if(!builderOrFrameworkName){let storybookBuilderViteVersion=await packageManager.getPackageVersion("@storybook/builder-vite"),storybookBuilderVite2Version=await packageManager.getPackageVersion("storybook-builder-vite"),storybookBuilderWebpack5Version=await packageManager.getPackageVersion("@storybook/builder-webpack5"),storybookBuilderManagerWebpack5Version=await packageManager.getPackageVersion("@storybook/manager-webpack5");storybookBuilderViteVersion||storybookBuilderVite2Version?builderOrFrameworkName="vite":(storybookBuilderWebpack5Version||storybookBuilderManagerWebpack5Version)&&(builderOrFrameworkName="webpack5")}return builderOrFrameworkName?.includes("vite")||builderOrFrameworkName&&communityFrameworks.vite.includes(builderOrFrameworkName)?builderName="vite":(builderOrFrameworkName?.includes("webpack")||builderOrFrameworkName&&communityFrameworks.webpack5.includes(builderOrFrameworkName),builderName="webpack5"),{name:builderName,options:builderOptions}},getNextjsAddonOptions=addons=>{let nextjsAddon=addons?.find(addon=>typeof addon=="string"?addon==="storybook-addon-next":addon.name==="storybook-addon-next");return!nextjsAddon||typeof nextjsAddon=="string"?{}:nextjsAddon.options||{}};var import_core_common15=require("@storybook/core-common"),import_prompts6=__toESM(require("prompts")),detectRenderer=async packageJson=>{let allDependencies={...packageJson.dependencies,...packageJson.devDependencies,...packageJson.peerDependencies},matches=Object.keys(import_core_common15.rendererPackages).filter(pkg2=>!!allDependencies[pkg2]),[rendererPackage]=matches;return matches.length>1&&(rendererPackage=(await(0,import_prompts6.default)([{type:"select",name:"rendererPackage",hint:"> - Use arrow-keys. Return to submit. To automate this next time, you can pass the renderer to the CLI via the --renderer flag",message:"Tried to detect a Storybook renderer in your project but found multiple. This could happen in monorepos, when projects contain multiple Storybook packages in package.json. Please select the correct one:",choices:matches.map(type=>({title:type,value:type}))}])).rendererPackage),rendererPackage};var logger18=console,newFrameworks={id:"new-frameworks",async check({configDir,packageManager,storybookVersion,mainConfig,mainConfigPath,rendererPackage}){if(!import_semver15.default.gte(storybookVersion,"7.0.0")||typeof configDir>"u")return null;let packageJson=await packageManager.retrievePackageJson(),frameworkPackageName=getFrameworkPackageName(mainConfig),rendererPackageName=rendererPackage??await getRendererPackageNameFromFramework(frameworkPackageName)??await detectRenderer(packageJson),hasFrameworkInMainConfig=!!frameworkPackageName;frameworkPackageName&&Object.values(import_core_common16.rendererPackages).includes(frameworkPackageName)&&(hasFrameworkInMainConfig=!1);let builderConfig=mainConfig.core?.builder;if(!Object.keys(packagesMap).includes(rendererPackageName))return null;let allDependencies=await packageManager.getAllDependencies(),builderInfo=await detectBuilderInfo({mainConfig,configDir,packageManager}),newFrameworkPackage=Object.keys(import_core_common16.frameworkPackages).find(pkg2=>pkg2===frameworkPackageName);if(newFrameworkPackage||(newFrameworkPackage=packagesMap[rendererPackageName]?.[builderInfo.name]),!newFrameworkPackage)return null;let renderer=import_core_common16.rendererPackages[rendererPackageName],rendererOptions=mainConfig[`${renderer}Options`]||{},frameworkOptions=typeof mainConfig.framework=="string"?{}:mainConfig.framework?.options,dependenciesToRemove=["@storybook/builder-webpack5","@storybook/manager-webpack5","@storybook/builder-webpack4","@storybook/manager-webpack4","@storybook/builder-vite","storybook-builder-vite"],addonsToRemove=[],addonOptions={},metaFramework,nextVersion=await packageManager.getPackageVersion("next"),svelteKitVersion=await packageManager.getPackageVersion("@sveltejs/kit"),viteVersion=await packageManager.getPackageVersion("vite");if(rendererPackageName==="@storybook/react"&&nextVersion){let nextAddonOptions=getNextjsAddonOptions(mainConfig.addons);(nextVersion&&import_semver15.default.gte(nextVersion,"12.0.0")||Object.keys(nextAddonOptions).length>0)&&(metaFramework="nextjs",(newFrameworkPackage==="@storybook/react-webpack5"||newFrameworkPackage==="@storybook/nextjs")&&(newFrameworkPackage="@storybook/nextjs",addonsToRemove=["storybook-addon-next","storybook-addon-next-router"].filter(dep=>allDependencies[dep]||mainConfig.addons?.find(addon=>typeof addon=="string"?dep===addon:dep===addon.name)),addonOptions=nextAddonOptions,dependenciesToRemove.push("@storybook/react-webpack5","storybook-addon-next","storybook-addon-next-router")))}else rendererPackageName==="@storybook/svelte"&&svelteKitVersion&&import_semver15.default.gte(svelteKitVersion,"1.0.0")&&(metaFramework="sveltekit",newFrameworkPackage==="@storybook/svelte-vite"&&(newFrameworkPackage="@storybook/sveltekit",rendererOptions={},dependenciesToRemove.push("@storybook/svelte-vite")));let dependenciesToAdd=[newFrameworkPackage].filter(dep=>!allDependencies[dep]).filter(Boolean);if(dependenciesToRemove=dependenciesToRemove.filter(dep=>allDependencies[dep]).filter(Boolean),hasFrameworkInMainConfig&&!builderConfig&&!Object.keys(rendererOptions).length&&!Object.keys(addonOptions).length&&!dependenciesToRemove.length&&!dependenciesToAdd.length)return null;if(viteVersion&&import_semver15.default.lt(viteVersion,"3.0.0"))throw new Error(import_ts_dedent22.default`
306
- ❌ Your project should be upgraded to use the framework package ${import_chalk16.default.bold(newFrameworkPackage)}, but we detected that you are using Vite ${import_chalk16.default.bold(viteVersion)}, which is unsupported in ${import_chalk16.default.bold("Storybook 7.0")}. Please upgrade Vite to ${import_chalk16.default.bold("3.0.0 or higher")} and rerun this migration.
289
+ More info: ${import_chalk14.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#start-storybook--build-storybook-binaries-removed")}
290
+ `},async run({result:{packageJson,hasSbBinary,hasStorybookBinary},packageManager,dryRun,skipInstall}){if(hasSbBinary&&(logger16.info("\u2705 Removing 'sb' dependency"),dryRun||await packageManager.removeDependencies({skipInstall:skipInstall||!hasStorybookBinary,packageJson},["sb"])),!hasStorybookBinary&&(logger16.log(),logger16.info("\u2705 Adding 'storybook' as dev dependency"),logger16.log(),!dryRun)){let versionToInstall=getStorybookVersionSpecifier(packageJson);await packageManager.addDependencies({installAsDevDependencies:!0,packageJson,skipInstall},[`storybook@${versionToInstall}`])}}};var import_chalk15=__toESM(require("chalk")),import_ts_dedent21=__toESM(require("ts-dedent")),import_semver12=__toESM(require("semver")),import_core_common15=require("@storybook/core-common"),import_tiny_invariant4=__toESM(require("tiny-invariant"));var import_core_common13=require("@storybook/core-common"),import_find_up5=__toESM(require("find-up"));var logger17=console,packagesMap={"@storybook/react":{webpack5:"@storybook/react-webpack5",vite:"@storybook/react-vite"},"@storybook/preact":{webpack5:"@storybook/preact-webpack5",vite:"@storybook/preact-vite"},"@storybook/server":{webpack5:"@storybook/server-webpack5"},"@storybook/ember":{webpack5:"@storybook/ember"},"@storybook/angular":{webpack5:"@storybook/angular"},"@storybook/vue3":{webpack5:"@storybook/vue3-webpack5",vite:"@storybook/vue3-vite"},"@storybook/svelte":{webpack5:"@storybook/svelte-webpack5",vite:"@storybook/svelte-vite"},"@storybook/web-components":{webpack5:"@storybook/web-components-webpack5",vite:"@storybook/web-components-vite"},"@storybook/html":{webpack5:"@storybook/html-webpack5",vite:"@storybook/html-vite"}},communityFrameworks={vite:["storybook-framework-qwik","storybook-solidjs-vite"],webpack5:[]},viteConfigFiles2=["vite.config.js","vite.config.cjs","vite.config.mjs","vite.config.ts"],webpackConfigFiles2=["webpack.config.js","webpack.config.cjs","webpack.config.mjs","webpack.config.ts"],detectBuilderInfo=async({mainConfig,configDir,packageManager})=>{let builderName,builderOrFrameworkName,{core={},framework}=mainConfig,{builder}=core,builderPackageName=getBuilderPackageName(mainConfig),frameworkPackageName=getFrameworkPackageName(mainConfig),builderOptions=typeof builder!="string"?builder?.options??{}:{};if(builderPackageName?builderOrFrameworkName=builderPackageName:framework&&Object.keys(import_core_common13.frameworkPackages).includes(frameworkPackageName)&&(builderOrFrameworkName=frameworkPackageName,builderOptions=typeof framework=="object"?framework.options?.builder??{}:{}),!builderOrFrameworkName){let viteConfigFile2=await(0,import_find_up5.default)(viteConfigFiles2,{cwd:configDir});if(viteConfigFile2)logger17.info(`No builder or framework field, detected Storybook builder via: ${viteConfigFile2}`),builderOrFrameworkName="vite";else{let webpackConfigFile=await(0,import_find_up5.default)(webpackConfigFiles2,{cwd:configDir});webpackConfigFile&&(logger17.info(`No builder or framework field, detected Storybook builder via: ${webpackConfigFile}`),builderOrFrameworkName="webpack5")}}if(!builderOrFrameworkName){let storybookBuilderViteVersion=await packageManager.getPackageVersion("@storybook/builder-vite"),storybookBuilderVite2Version=await packageManager.getPackageVersion("storybook-builder-vite"),storybookBuilderWebpack5Version=await packageManager.getPackageVersion("@storybook/builder-webpack5"),storybookBuilderManagerWebpack5Version=await packageManager.getPackageVersion("@storybook/manager-webpack5");storybookBuilderViteVersion||storybookBuilderVite2Version?builderOrFrameworkName="vite":(storybookBuilderWebpack5Version||storybookBuilderManagerWebpack5Version)&&(builderOrFrameworkName="webpack5")}return builderOrFrameworkName?.includes("vite")||builderOrFrameworkName&&communityFrameworks.vite.includes(builderOrFrameworkName)?builderName="vite":(builderOrFrameworkName?.includes("webpack")||builderOrFrameworkName&&communityFrameworks.webpack5.includes(builderOrFrameworkName),builderName="webpack5"),{name:builderName,options:builderOptions}},getNextjsAddonOptions=addons=>{let nextjsAddon=addons?.find(addon=>typeof addon=="string"?addon==="storybook-addon-next":addon.name==="storybook-addon-next");return!nextjsAddon||typeof nextjsAddon=="string"?{}:nextjsAddon.options||{}};var import_core_common14=require("@storybook/core-common"),import_prompts6=__toESM(require("prompts")),detectRenderer=async packageJson=>{let allDependencies={...packageJson.dependencies,...packageJson.devDependencies,...packageJson.peerDependencies},matches=Object.keys(import_core_common14.rendererPackages).filter(pkg2=>!!allDependencies[pkg2]),[rendererPackage]=matches;return matches.length>1&&(rendererPackage=(await(0,import_prompts6.default)([{type:"select",name:"rendererPackage",hint:"> - Use arrow-keys. Return to submit. To automate this next time, you can pass the renderer to the CLI via the --renderer flag",message:"Tried to detect a Storybook renderer in your project but found multiple. This could happen in monorepos, when projects contain multiple Storybook packages in package.json. Please select the correct one:",choices:matches.map(type=>({title:type,value:type}))}])).rendererPackage),rendererPackage};var logger18=console,newFrameworks={id:"new-frameworks",versionRange:["<7",">=7"],async check({configDir,packageManager,mainConfig,mainConfigPath,rendererPackage}){if(typeof configDir>"u")return null;let packageJson=await packageManager.retrievePackageJson(),frameworkPackageName=getFrameworkPackageName(mainConfig),rendererPackageName=rendererPackage??await getRendererPackageNameFromFramework(frameworkPackageName)??await detectRenderer(packageJson),hasFrameworkInMainConfig=!!frameworkPackageName;frameworkPackageName&&Object.values(import_core_common15.rendererPackages).includes(frameworkPackageName)&&(hasFrameworkInMainConfig=!1);let builderConfig=mainConfig.core?.builder;if(!Object.keys(packagesMap).includes(rendererPackageName))return null;let allDependencies=await packageManager.getAllDependencies(),builderInfo=await detectBuilderInfo({mainConfig,configDir,packageManager}),newFrameworkPackage=Object.keys(import_core_common15.frameworkPackages).find(pkg2=>pkg2===frameworkPackageName);if(newFrameworkPackage||(newFrameworkPackage=packagesMap[rendererPackageName]?.[builderInfo.name]),!newFrameworkPackage)return null;let renderer=import_core_common15.rendererPackages[rendererPackageName],rendererOptions=mainConfig[`${renderer}Options`]||{},frameworkOptions=typeof mainConfig.framework=="string"?{}:mainConfig.framework?.options,dependenciesToRemove=["@storybook/builder-webpack5","@storybook/manager-webpack5","@storybook/builder-webpack4","@storybook/manager-webpack4","@storybook/builder-vite","storybook-builder-vite"],addonsToRemove=[],addonOptions={},metaFramework,nextVersion=await packageManager.getPackageVersion("next"),svelteKitVersion=await packageManager.getPackageVersion("@sveltejs/kit"),viteVersion=await packageManager.getPackageVersion("vite");if(rendererPackageName==="@storybook/react"&&nextVersion){let nextAddonOptions=getNextjsAddonOptions(mainConfig.addons);(nextVersion&&import_semver12.default.gte(nextVersion,"12.0.0")||Object.keys(nextAddonOptions).length>0)&&(metaFramework="nextjs",(newFrameworkPackage==="@storybook/react-webpack5"||newFrameworkPackage==="@storybook/nextjs")&&(newFrameworkPackage="@storybook/nextjs",addonsToRemove=["storybook-addon-next","storybook-addon-next-router"].filter(dep=>allDependencies[dep]||mainConfig.addons?.find(addon=>typeof addon=="string"?dep===addon:dep===addon.name)),addonOptions=nextAddonOptions,dependenciesToRemove.push("@storybook/react-webpack5","storybook-addon-next","storybook-addon-next-router")))}else rendererPackageName==="@storybook/svelte"&&svelteKitVersion&&import_semver12.default.gte(svelteKitVersion,"1.0.0")&&(metaFramework="sveltekit",newFrameworkPackage==="@storybook/svelte-vite"&&(newFrameworkPackage="@storybook/sveltekit",rendererOptions={},dependenciesToRemove.push("@storybook/svelte-vite")));let dependenciesToAdd=[newFrameworkPackage].filter(dep=>!allDependencies[dep]).filter(Boolean);if(dependenciesToRemove=dependenciesToRemove.filter(dep=>allDependencies[dep]).filter(Boolean),hasFrameworkInMainConfig&&!builderConfig&&!Object.keys(rendererOptions).length&&!Object.keys(addonOptions).length&&!dependenciesToRemove.length&&!dependenciesToAdd.length)return null;if(viteVersion&&import_semver12.default.lt(viteVersion,"3.0.0"))throw new Error(import_ts_dedent21.default`
291
+ ❌ Your project should be upgraded to use the framework package ${import_chalk15.default.bold(newFrameworkPackage)}, but we detected that you are using Vite ${import_chalk15.default.bold(viteVersion)}, which is unsupported since ${import_chalk15.default.bold("Storybook 7.0")}. Please upgrade Vite to ${import_chalk15.default.bold("3.0.0 or higher")} and rerun this migration.
307
292
  `);return(0,import_tiny_invariant4.default)(mainConfigPath,"Missing main config path."),{mainConfigPath,dependenciesToAdd,dependenciesToRemove,frameworkPackage:newFrameworkPackage,hasFrameworkInMainConfig,frameworkOptions:{...frameworkOptions,...rendererOptions,...addonOptions},rendererOptions,addonOptions,addonsToRemove,builderInfo,renderer,builderConfig,metaFramework}},prompt({dependenciesToRemove,dependenciesToAdd,hasFrameworkInMainConfig,mainConfigPath,frameworkPackage,addonOptions,renderer,rendererOptions,builderConfig,addonsToRemove,metaFramework}){let disclaimer="",migrationSteps="";return dependenciesToRemove.length>0&&(migrationSteps+=`- Remove the following dependencies:
308
- ${dependenciesToRemove.map(dep=>`- * ${import_chalk16.default.cyan(dep)}`).join(`
293
+ ${dependenciesToRemove.map(dep=>`- * ${import_chalk15.default.cyan(dep)}`).join(`
309
294
  `)}
310
295
  `),dependenciesToAdd.length>0&&(migrationSteps+=`- Add the following dependencies:
311
- ${dependenciesToAdd.map(dep=>`- * ${import_chalk16.default.cyan(dep)}`).join(`
296
+ ${dependenciesToAdd.map(dep=>`- * ${import_chalk15.default.cyan(dep)}`).join(`
312
297
  `)}
313
- `),hasFrameworkInMainConfig||(migrationSteps+=`- Update or specify the ${import_chalk16.default.yellow("framework")} field in ${import_chalk16.default.blue(mainConfigPath)} with the value of "${import_chalk16.default.cyan(frameworkPackage)}".
314
- `),Object.keys(rendererOptions).length>0&&(migrationSteps+=`- Move the ${import_chalk16.default.yellow(`${renderer}Options`)} field in ${import_chalk16.default.blue(mainConfigPath)} to ${import_chalk16.default.yellow("framework.options")}, and remove that field entirely.
315
- More info: ${import_chalk16.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#frameworkoptions-renamed")}
316
- `),addonsToRemove.length>0&&(migrationSteps+=`- Remove the following addons from your ${import_chalk16.default.blue(mainConfigPath)}, as the new framework also supports features provided by them:
317
- ${addonsToRemove.map(dep=>`- * ${import_chalk16.default.cyan(dep)}`).join(`
298
+ `),hasFrameworkInMainConfig||(migrationSteps+=`- Update or specify the ${import_chalk15.default.yellow("framework")} field in ${import_chalk15.default.blue(mainConfigPath)} with the value of "${import_chalk15.default.cyan(frameworkPackage)}".
299
+ `),Object.keys(rendererOptions).length>0&&(migrationSteps+=`- Move the ${import_chalk15.default.yellow(`${renderer}Options`)} field in ${import_chalk15.default.blue(mainConfigPath)} to ${import_chalk15.default.yellow("framework.options")}, and remove that field entirely.
300
+ More info: ${import_chalk15.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#frameworkoptions-renamed")}
301
+ `),addonsToRemove.length>0&&(migrationSteps+=`- Remove the following addons from your ${import_chalk15.default.blue(mainConfigPath)}, as the new framework also supports features provided by them:
302
+ ${addonsToRemove.map(dep=>`- * ${import_chalk15.default.cyan(dep)}`).join(`
318
303
  `)}
319
- `),Object.keys(addonOptions).length>0&&(migrationSteps+=`- Move the addon options "${import_chalk16.default.yellow(Object.keys(addonOptions).join(", "))}" in ${import_chalk16.default.blue(mainConfigPath)} to the ${import_chalk16.default.yellow("framework.options")} field.
320
- `),builderConfig&&(typeof builderConfig=="object"&&Object.keys(builderConfig.options||{}).length>0&&(migrationSteps+=`- Move the ${import_chalk16.default.yellow("core.builder.options")} field in ${import_chalk16.default.blue(mainConfigPath)} to ${import_chalk16.default.yellow("framework.options.builder")}
321
- `),migrationSteps+=`- Remove the ${import_chalk16.default.yellow("core.builder")} field in ${import_chalk16.default.blue(mainConfigPath)}.
322
- `),(dependenciesToRemove.includes("@storybook/builder-webpack4")||dependenciesToRemove.includes("@storybook/manager-webpack4"))&&(disclaimer=import_ts_dedent22.default`\n\n
323
- ${import_chalk16.default.underline(import_chalk16.default.bold(import_chalk16.default.cyan("Webpack 4 users")))}
304
+ `),Object.keys(addonOptions).length>0&&(migrationSteps+=`- Move the addon options "${import_chalk15.default.yellow(Object.keys(addonOptions).join(", "))}" in ${import_chalk15.default.blue(mainConfigPath)} to the ${import_chalk15.default.yellow("framework.options")} field.
305
+ `),builderConfig&&(typeof builderConfig=="object"&&Object.keys(builderConfig.options||{}).length>0&&(migrationSteps+=`- Move the ${import_chalk15.default.yellow("core.builder.options")} field in ${import_chalk15.default.blue(mainConfigPath)} to ${import_chalk15.default.yellow("framework.options.builder")}
306
+ `),migrationSteps+=`- Remove the ${import_chalk15.default.yellow("core.builder")} field in ${import_chalk15.default.blue(mainConfigPath)}.
307
+ `),(dependenciesToRemove.includes("@storybook/builder-webpack4")||dependenciesToRemove.includes("@storybook/manager-webpack4"))&&(disclaimer=import_ts_dedent21.default`\n\n
308
+ ${import_chalk15.default.underline(import_chalk15.default.bold(import_chalk15.default.cyan("Webpack 4 users")))}
324
309
 
325
310
  Unless you're using Storybook's Vite builder, this automigration will install a Webpack 5 based framework.
326
311
 
327
312
  Given you were using Storybook's Webpack 4 builder (default in 6.x, discontinued in 7.0), this could be a breaking change -- especially if your project has a custom webpack configuration.
328
313
 
329
- To learn more about migrating from Webpack4, see: ${import_chalk16.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack4-support-discontinued")}`),metaFramework==="nextjs"&&(dependenciesToRemove.includes("storybook-addon-next-router")&&(migrationSteps+=`- Migrate the usage of the ${import_chalk16.default.cyan("storybook-addon-next-router")} addon to use the APIs from the ${import_chalk16.default.magenta("@storybook/nextjs")} framework package instead. Follow the instructions below.`),frameworkPackage==="@storybook/react-vite"?disclaimer=import_ts_dedent22.default`\n\n
330
- ${import_chalk16.default.bold("Important")}: We've detected you are using Storybook in a Next.js project.
314
+ To learn more about migrating from Webpack4, see: ${import_chalk15.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack4-support-discontinued")}`),metaFramework==="nextjs"&&(dependenciesToRemove.includes("storybook-addon-next-router")&&(migrationSteps+=`- Migrate the usage of the ${import_chalk15.default.cyan("storybook-addon-next-router")} addon to use the APIs from the ${import_chalk15.default.magenta("@storybook/nextjs")} framework package instead. Follow the instructions below.`),frameworkPackage==="@storybook/react-vite"?disclaimer=import_ts_dedent21.default`\n\n
315
+ ${import_chalk15.default.bold("Important")}: We've detected you are using Storybook in a Next.js project.
331
316
 
332
- This migration is set to update your project to use the ${import_chalk16.default.magenta("@storybook/react-vite")} framework, but Storybook provides a framework package specifically for Next.js projects: ${import_chalk16.default.magenta("@storybook/nextjs")}.
317
+ This migration is set to update your project to use the ${import_chalk15.default.magenta("@storybook/react-vite")} framework, but Storybook provides a framework package specifically for Next.js projects: ${import_chalk15.default.magenta("@storybook/nextjs")}.
333
318
 
334
319
  This package provides a better, out of the box experience for Next.js users, however it is only compatible with the Webpack 5 builder, so we can't automigrate for you, as you are using the Vite builder. If you switch this project to use Webpack 5 and rerun this migration, we can update your project.
335
320
 
336
- If you are interested in using this package, see: ${import_chalk16.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/README.md")}
337
- `:frameworkPackage==="@storybook/nextjs"&&(disclaimer=import_ts_dedent22.default`\n\n
338
- The ${import_chalk16.default.magenta("@storybook/nextjs")} package provides great user experience for Next.js users, and we highly recommend you to read more about it at ${import_chalk16.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/README.md")}
339
- `)),metaFramework==="sveltekit"&&(frameworkPackage==="@storybook/svelte-webpack5"?disclaimer=import_ts_dedent22.default`\n\n
340
- ${import_chalk16.default.bold("Important")}: We've detected you are using Storybook in a SvelteKit project.
321
+ If you are interested in using this package, see: ${import_chalk15.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/README.md")}
322
+ `:frameworkPackage==="@storybook/nextjs"&&(disclaimer=import_ts_dedent21.default`\n\n
323
+ The ${import_chalk15.default.magenta("@storybook/nextjs")} package provides great user experience for Next.js users, and we highly recommend you to read more about it at ${import_chalk15.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/README.md")}
324
+ `)),metaFramework==="sveltekit"&&(frameworkPackage==="@storybook/svelte-webpack5"?disclaimer=import_ts_dedent21.default`\n\n
325
+ ${import_chalk15.default.bold("Important")}: We've detected you are using Storybook in a SvelteKit project.
341
326
 
342
- This migration is set to update your project to use the ${import_chalk16.default.magenta("@storybook/svelte-webpack5")} framework, but Storybook provides a framework package specifically for SvelteKit projects: ${import_chalk16.default.magenta("@storybook/sveltekit")}.
327
+ This migration is set to update your project to use the ${import_chalk15.default.magenta("@storybook/svelte-webpack5")} framework, but Storybook provides a framework package specifically for SvelteKit projects: ${import_chalk15.default.magenta("@storybook/sveltekit")}.
343
328
 
344
329
  This package provides a better experience for SvelteKit users, however it is only compatible with the Vite builder, so we can't automigrate for you, as you are using the Webpack builder.
345
330
 
346
- If you are interested in using this package, see: ${import_chalk16.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/sveltekit/README.md")}
347
- `:(migrationSteps+=`- Remove the ${import_chalk16.default.yellow(`${renderer}Options`)} field from ${import_chalk16.default.blue(mainConfigPath)}.
348
- More info: ${import_chalk16.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vite-builder-uses-vite-config-automatically")}
349
- `,disclaimer=import_ts_dedent22.default`\n\n
350
- The ${import_chalk16.default.magenta("@storybook/sveltekit")} package provides great user experience for SvelteKit users, and we highly recommend you to read more about it at ${import_chalk16.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/sveltekit/README.md")}
351
- `)),import_ts_dedent22.default`
352
- We've detected your project is not fully setup with Storybook's 7 new framework format.
331
+ If you are interested in using this package, see: ${import_chalk15.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/sveltekit/README.md")}
332
+ `:(migrationSteps+=`- Remove the ${import_chalk15.default.yellow(`${renderer}Options`)} field from ${import_chalk15.default.blue(mainConfigPath)}.
333
+ More info: ${import_chalk15.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vite-builder-uses-vite-config-automatically")}
334
+ `,disclaimer=import_ts_dedent21.default`\n\n
335
+ The ${import_chalk15.default.magenta("@storybook/sveltekit")} package provides great user experience for SvelteKit users, and we highly recommend you to read more about it at ${import_chalk15.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/sveltekit/README.md")}
336
+ `)),import_ts_dedent21.default`
337
+ We've detected your project is not fully setup with the new framework format, which was introduced in Storybook 7.
353
338
 
354
339
  Storybook 7 introduced the concept of frameworks, which abstracts configuration for renderers (e.g. React, Vue), builders (e.g. Webpack, Vite) and defaults to make integrations easier.
355
340
 
356
- Your project should be updated to use Storybook's framework: ${import_chalk16.default.magenta(frameworkPackage)}. We can attempt to do this for you automatically.
341
+ Your project should be updated to use Storybook's framework: ${import_chalk15.default.magenta(frameworkPackage)}. We can attempt to do this for you automatically.
357
342
 
358
343
  Here are the steps this migration will do to migrate your project:
359
344
  ${migrationSteps}
360
345
 
361
- To learn more about the new framework format, see: ${import_chalk16.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#new-framework-api")}${disclaimer}
362
- `},async run({result:{dependenciesToAdd,dependenciesToRemove,frameworkPackage,frameworkOptions,builderInfo,renderer,addonsToRemove},packageManager,dryRun,mainConfigPath,skipInstall}){let packageJson=await packageManager.retrievePackageJson();if(dependenciesToRemove.length>0&&(logger18.info(`\u2705 Removing dependencies: ${dependenciesToRemove.join(", ")}`),dryRun||await packageManager.removeDependencies({skipInstall:skipInstall||dependenciesToAdd.length>0,packageJson},dependenciesToRemove)),dependenciesToAdd.length>0&&(logger18.info(`\u2705 Installing new dependencies: ${dependenciesToAdd.join(", ")}`),!dryRun)){let versionToInstall=getStorybookVersionSpecifier(packageJson),depsToAdd=dependenciesToAdd.map(dep=>`${dep}@${versionToInstall}`);await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall,packageJson},depsToAdd)}await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger18.info("\u2705 Updating main.js"),logger18.info('\u2705 Updating "framework" field'),dryRun||main.setFieldValue(["framework","name"],frameworkPackage),dryRun||main.setFieldValue(["framework","options"],frameworkOptions),main.getFieldNode([`${renderer}Options`])&&(logger18.info(`\u2705 Moving "${renderer}Options" to "framework.options"`),dryRun||main.removeField([`${renderer}Options`])),main.getFieldNode(["core","builder"])&&(logger18.info('\u2705 Removing "core.builder" field'),dryRun||main.removeField(["core","builder"])),Object.keys(builderInfo.options).length>0&&(logger18.info('\u2705 Moving "core.builder.options" into "framework.options.builder"'),dryRun||main.setFieldValue(["framework","options","builder"],builderInfo.options));let currentCore=main.getFieldValue(["core"]);if(currentCore&&Object.keys(currentCore).length===0&&(logger18.info('\u2705 Removing "core" field'),dryRun||main.removeField(["core"])),addonsToRemove.length>0){let updatedAddons=main.getFieldValue(["addons"]).filter(addon=>typeof addon=="string"?!addonsToRemove.includes(addon):addon.name?!addonsToRemove.includes(addon.name):!1);logger18.info("\u2705 Removing unnecessary addons"),dryRun||main.setFieldValue(["addons"],updatedAddons)}})}};var import_chalk17=__toESM(require("chalk")),import_ts_dedent23=__toESM(require("ts-dedent")),import_fs_extra6=require("fs-extra"),RemovedAPIs=(RemovedAPIs2=>(RemovedAPIs2.addDecorator="addDecorator",RemovedAPIs2.addParameters="addParameters",RemovedAPIs2.addLoader="addLoader",RemovedAPIs2.getStorybook="getStorybook",RemovedAPIs2.setAddon="setAddon",RemovedAPIs2.clearDecorators="clearDecorators",RemovedAPIs2))(RemovedAPIs||{}),removedGlobalClientAPIs={id:"removedglobalclientapis",promptType:"manual",async check({previewConfigPath}){if(previewConfigPath){let contents=await(0,import_fs_extra6.readFile)(previewConfigPath,"utf8"),usedAPIs=Object.values(RemovedAPIs).reduce((acc,item)=>(contents.includes(item)&&acc.push(item),acc),[]);if(usedAPIs.length)return{usedAPIs,previewPath:previewConfigPath}}return null},prompt({usedAPIs,previewPath}){return import_ts_dedent23.default`
363
- ${import_chalk17.default.bold(import_chalk17.default.red("Attention"))}: We could not automatically make this change. You'll need to do it manually.
346
+ To learn more about the new framework format, see: ${import_chalk15.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#new-framework-api")}${disclaimer}
347
+ `},async run({result:{dependenciesToAdd,dependenciesToRemove,frameworkPackage,frameworkOptions,builderInfo,renderer,addonsToRemove},packageManager,dryRun,mainConfigPath,skipInstall}){let packageJson=await packageManager.retrievePackageJson();if(dependenciesToRemove.length>0&&(logger18.info(`\u2705 Removing dependencies: ${dependenciesToRemove.join(", ")}`),dryRun||await packageManager.removeDependencies({skipInstall:skipInstall||dependenciesToAdd.length>0,packageJson},dependenciesToRemove)),dependenciesToAdd.length>0&&(logger18.info(`\u2705 Installing new dependencies: ${dependenciesToAdd.join(", ")}`),!dryRun)){let versionToInstall=getStorybookVersionSpecifier(packageJson),depsToAdd=dependenciesToAdd.map(dep=>`${dep}@${versionToInstall}`);await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall,packageJson},depsToAdd)}await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger18.info("\u2705 Updating main.js"),logger18.info('\u2705 Updating "framework" field'),dryRun||main.setFieldValue(["framework","name"],frameworkPackage),dryRun||main.setFieldValue(["framework","options"],frameworkOptions),main.getFieldNode([`${renderer}Options`])&&(logger18.info(`\u2705 Moving "${renderer}Options" to "framework.options"`),dryRun||main.removeField([`${renderer}Options`])),main.getFieldNode(["core","builder"])&&(logger18.info('\u2705 Removing "core.builder" field'),dryRun||main.removeField(["core","builder"])),Object.keys(builderInfo.options).length>0&&(logger18.info('\u2705 Moving "core.builder.options" into "framework.options.builder"'),dryRun||main.setFieldValue(["framework","options","builder"],builderInfo.options));let currentCore=main.getFieldValue(["core"]);if(currentCore&&Object.keys(currentCore).length===0&&(logger18.info('\u2705 Removing "core" field'),dryRun||main.removeField(["core"])),addonsToRemove.length>0){let updatedAddons=main.getFieldValue(["addons"]).filter(addon=>typeof addon=="string"?!addonsToRemove.includes(addon):addon.name?!addonsToRemove.includes(addon.name):!1);logger18.info("\u2705 Removing unnecessary addons"),dryRun||main.setFieldValue(["addons"],updatedAddons)}})}};var import_chalk16=__toESM(require("chalk")),import_ts_dedent22=__toESM(require("ts-dedent")),import_fs_extra6=require("fs-extra"),RemovedAPIs=(RemovedAPIs2=>(RemovedAPIs2.addDecorator="addDecorator",RemovedAPIs2.addParameters="addParameters",RemovedAPIs2.addLoader="addLoader",RemovedAPIs2.getStorybook="getStorybook",RemovedAPIs2.setAddon="setAddon",RemovedAPIs2.clearDecorators="clearDecorators",RemovedAPIs2))(RemovedAPIs||{}),removedGlobalClientAPIs={id:"removedglobalclientapis",promptType:"manual",versionRange:["<7",">=7"],async check({previewConfigPath}){if(previewConfigPath){let contents=await(0,import_fs_extra6.readFile)(previewConfigPath,"utf8"),usedAPIs=Object.values(RemovedAPIs).reduce((acc,item)=>(contents.includes(item)&&acc.push(item),acc),[]);if(usedAPIs.length)return{usedAPIs,previewPath:previewConfigPath}}return null},prompt({usedAPIs,previewPath}){return import_ts_dedent22.default`
348
+ ${import_chalk16.default.bold(import_chalk16.default.red("Attention"))}: We could not automatically make this change. You'll need to do it manually.
364
349
 
365
- The following APIs (used in "${import_chalk17.default.yellow(previewPath)}") have been removed from Storybook:
350
+ The following APIs (used in "${import_chalk16.default.yellow(previewPath)}") have been removed from Storybook:
366
351
 
367
- ${usedAPIs.map(api=>`- ${import_chalk17.default.cyan(api)}`).join(`
352
+ ${usedAPIs.map(api=>`- ${import_chalk16.default.cyan(api)}`).join(`
368
353
  `)}
369
354
 
370
355
  Please see the migration guide for more information:
371
- ${import_chalk17.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#removed-global-client-apis")}
372
- `}};var import_chalk18=__toESM(require("chalk")),import_ts_dedent24=require("ts-dedent"),import_path13=require("path"),import_fs_extra7=__toESM(require("fs-extra")),import_globby2=__toESM(require("globby")),MDX1_STYLE_START=/<style>{`/g,MDX1_STYLE_END=/`}<\/style>/g,MDX1_COMMENT=/<!--(.+)-->/g,MDX1_CODEBLOCK=/(?:\n~~~(?:\n|.)*?\n~~~)|(?:\n```(?:\n|.)*?\n```)/g,fixMdxStyleTags=mdx=>mdx.replace(MDX1_STYLE_START,"<style>\n {`").replace(MDX1_STYLE_END," `}\n</style>"),fixMdxComments=mdx=>{let codeblocks=mdx.matchAll(MDX1_CODEBLOCK);return mdx.split(MDX1_CODEBLOCK).map(v=>v.replace(MDX1_COMMENT,(original,group)=>`{/*${group}*/}`)).reduce((acc,item,i)=>{let next=codeblocks.next();return next.done?acc+item:acc+item+next.value[0]},"")},logger19=console,mdx1to2={id:"mdx1to2",async check(){let storiesMdxFiles=await(0,import_globby2.default)("./!(node_modules)**/*.(story|stories).mdx");return storiesMdxFiles.length?{storiesMdxFiles}:null},prompt({storiesMdxFiles}){return import_ts_dedent24.dedent`
373
- We've found ${import_chalk18.default.yellow(storiesMdxFiles.length)} '.stories.mdx' files in your project.
374
-
375
- Storybook has upgraded to MDX2 (https://mdxjs.com/blog/v2/), which contains breaking changes from MDX1.
376
- We can try to automatically upgrade your MDX files to MDX2 format using some common patterns.
377
-
378
- After this install completes, and before you start Storybook, we strongly recommend reading the MDX2 section
379
- of the 7.0 migration guide. It contains useful tools for detecting and fixing any remaining issues.
380
-
381
- ${import_chalk18.default.cyan("https://storybook.js.org/migration-guides/7.0")}
382
- `},async run({result:{storiesMdxFiles},dryRun}){await Promise.all([...storiesMdxFiles.map(async fname=>{let contents=await import_fs_extra7.default.readFile(fname,"utf-8"),updated=fixMdxComments(fixMdxStyleTags(contents));updated===contents?logger19.info(`\u{1F197} Unmodified ${(0,import_path13.basename)(fname)}`):(logger19.info(`\u2705 Modified ${(0,import_path13.basename)(fname)}`),dryRun||await import_fs_extra7.default.writeFile(fname,updated))})])}};var import_chalk19=__toESM(require("chalk")),import_ts_dedent25=require("ts-dedent");var logger20=console,autodocsTrue={id:"autodocsTrue",async check({mainConfig}){let{docs}=mainConfig,docsPageToAutodocsMapping={true:"tag",automatic:!0,false:!1};if(docs?.docsPage){let oldValue=docs?.docsPage.toString();if(!(oldValue in docsPageToAutodocsMapping))throw new Error(`Unexpected value for docs.docsPage: ${oldValue}`);return{value:docsPageToAutodocsMapping[oldValue]}}return docs?.autodocs===void 0?{value:!0}:null},prompt({value}){let autodocsFormatted=import_chalk19.default.cyan(`docs: { autodocs: ${JSON.stringify(value??!0)} }`),tagWarning=import_ts_dedent25.dedent`
356
+ ${import_chalk16.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#removed-global-client-apis")}
357
+ `}};var import_chalk17=__toESM(require("chalk")),import_ts_dedent23=require("ts-dedent");var logger19=console,autodocsTrue={id:"autodocsTrue",versionRange:["<7",">=7"],async check({mainConfig}){let{docs}=mainConfig,docsPageToAutodocsMapping={true:"tag",automatic:!0,false:!1};if(docs?.docsPage){let oldValue=docs?.docsPage.toString();if(!(oldValue in docsPageToAutodocsMapping))throw new Error(`Unexpected value for docs.docsPage: ${oldValue}`);return{value:docsPageToAutodocsMapping[oldValue]}}return docs?.autodocs===void 0?{value:!0}:null},prompt({value}){let autodocsFormatted=import_chalk17.default.cyan(`docs: { autodocs: ${JSON.stringify(value??!0)} }`),tagWarning=import_ts_dedent23.dedent`
383
358
  NOTE: if you're upgrading from an older 7.0-beta using the 'docsPage' tag,
384
359
  please update your story files to use the 'autodocs' tag instead.
385
- `;return value?import_ts_dedent25.dedent`
360
+ `;return value?import_ts_dedent23.dedent`
386
361
  We've changed the configuration of autodocs (previous docsPage), so now the value:
387
362
  - docs.autodocs: true -- means automatically create docs for every CSF file
388
363
  - docs.autodocs: 'tag' -- means only create autodocs for CSF files with the 'autodocs' tag
@@ -392,49 +367,38 @@ Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||pro
392
367
 
393
368
  ${autodocsFormatted}
394
369
  ${value==="tag"?tagWarning:""}
395
- More info: ${import_chalk19.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#autodocs-changes")}
396
- `:import_ts_dedent25.dedent`
370
+ More info: ${import_chalk17.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#autodocs-changes")}
371
+ `:import_ts_dedent23.dedent`
397
372
  We've detected that your main.js configuration file has not configured autodocs. In 6.x we
398
373
  we defaulted to having a autodocs for every story, in 7.x you need to opt in per-component.
399
374
  However, we can set the \`docs.autodocs\` to true to approximate the old behaviour:
400
375
 
401
376
  ${autodocsFormatted}
402
377
 
403
- More info: ${import_chalk19.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#autodocs-changes")}
404
- `},async run({result:{value},dryRun,mainConfigPath}){logger20.info("\u2705 Setting 'docs.autodocs' to true in main.js"),dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{main.removeField(["docs","docsPage"]),main.setFieldValue(["docs","autodocs"],value??!0)})}};var import_ts_dedent26=require("ts-dedent"),import_semver16=__toESM(require("semver")),import_chalk20=__toESM(require("chalk")),import_prompts7=__toESM(require("prompts"));var angularBuilders={id:"angular-builders",async check({packageManager,mainConfig}){let angularVersion=await packageManager.getPackageVersion("@angular/core"),framewworkPackageName=getFrameworkPackageName(mainConfig);if(!angularVersion||await isNxProject()||framewworkPackageName!=="@storybook/angular")return null;if(import_semver16.default.lt(angularVersion,"15.0.0"))throw new Error(import_ts_dedent26.dedent`
405
- ❌ Your project uses Angular < 15.0.0. Storybook 8.0 for Angular requires Angular 15.0.0 or higher.
406
- Please upgrade your Angular version to at least version 15.0.0 to use Storybook 8.0 in your project.
407
- `);let angularJSON=new AngularJSON,{hasStorybookBuilder}=angularJSON;return hasStorybookBuilder||!angularJSON.rootProject&&Object.keys(angularJSON.projects).length>1?null:{mainConfig,packageManager}},prompt(){return import_ts_dedent26.dedent`
378
+ More info: ${import_chalk17.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#autodocs-changes")}
379
+ `},async run({result:{value},dryRun,mainConfigPath}){logger19.info("\u2705 Setting 'docs.autodocs' to true in main.js"),dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{main.removeField(["docs","docsPage"]),main.setFieldValue(["docs","autodocs"],value??!0)})}};var import_ts_dedent24=require("ts-dedent"),import_chalk18=__toESM(require("chalk")),import_prompts7=__toESM(require("prompts"));var angularBuilders={id:"angular-builders",versionRange:["<7",">=7"],async check({packageManager,mainConfig}){let angularVersion=await packageManager.getPackageVersion("@angular/core"),framewworkPackageName=getFrameworkPackageName(mainConfig);if(!angularVersion||await isNxProject()||framewworkPackageName!=="@storybook/angular")return null;let angularJSON=new AngularJSON,{hasStorybookBuilder}=angularJSON;return hasStorybookBuilder||!angularJSON.rootProject&&Object.keys(angularJSON.projects).length>1?null:{mainConfig,packageManager}},prompt(){return import_ts_dedent24.dedent`
408
380
  We have detected that your project does not use the Storybook Angular builder yet. In Storybook 6.4 we deprecated calling Storybook directly (npm run storybook) for Angular. In Storybook 7.0, we've removed it entirely.
409
381
 
410
382
  In order to use the Storybook Angular builder, we need to add a few entries to your angular.json file. Additionally, we will add the @compodoc/compodoc package to your devDependencies if you want and we will add a few scripts to your package.json file.
411
383
 
412
384
  Also feel free to remove the Compodoc script from your package.json file if you don't use it apart from Storybook anymore. Storybook uses Compodoc internally and you don't have to call in separately anymore.
413
385
 
414
- Read more about the Angular builder here: ${import_chalk20.default.yellow("https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular#how-do-i-migrate-to-an-angular-storybook-builder")}
415
- `},async run({result}){let angularJSON=new AngularJSON,{packageManager}=result,{useCompoDoc}=await(0,import_prompts7.default)({type:"confirm",name:"useCompoDoc",message:"Have you set up compodoc in Storybook previously?"}),angularProjectName=await angularJSON.getProjectName();angularJSON.addStorybookEntries({angularProjectName,storybookFolder:".storybook",useCompodoc:useCompoDoc,root:"."}),angularJSON.write(),await packageManager.addScripts({storybook:`ng run ${angularProjectName}:storybook`,"build-storybook":`ng run ${angularProjectName}:build-storybook`})}};var import_chalk21=__toESM(require("chalk")),import_ts_dedent27=__toESM(require("ts-dedent"));var import_semver17=__toESM(require("semver"));var import_core_common17=require("@storybook/core-common"),getIncompatibleAddons=async(mainConfig,packageManager=import_core_common17.JsPackageManagerFactory.getPackageManager())=>{let incompatibleList={"@storybook/addon-knobs":"6.4.0","@storybook/addon-postcss":"2.0.0","storybook-addon-next-router":"4.0.2","storybook-addon-outline":"1.4.2","@storybook/addon-info":"5.3.21","storybook-addon-designs":"6.3.1","storybook-addon-next":"1.7.0","storybook-docs-toc":"1.7.0","@storybook/addon-google-analytics":"6.2.9","storybook-addon-pseudo-states":"1.15.5","storybook-dark-mode":"2.1.1","storybook-addon-gatsby":"0.0.5","@etchteam/storybook-addon-css-variables-theme":"1.4.0","@storybook/addon-cssresources":"6.2.9","storybook-addon-grid":"0.3.1","storybook-multilevel-sort":"1.2.0","storybook-addon-i18next":"1.3.0","storybook-source-link":"2.0.8","babel-plugin-storybook-csf-title":"2.1.0","@urql/storybook-addon":"2.0.1","storybook-addon-intl":"2.4.1","storybook-addon-mock":"3.2.0","@chakra-ui/storybook-addon":"4.0.16","storybook-mobile-addon":"1.0.2","@storybook/addon-queryparams":"6.2.9"},addons=getAddonNames(mainConfig).filter(addon=>addon in incompatibleList),dependencies=await packageManager.getAllDependencies(),storybookPackages=Object.keys(dependencies).filter(dep=>dep.includes("storybook")),packagesToCheck=[...new Set([...addons,...storybookPackages])],addonVersions=await Promise.all(packagesToCheck.map(async addon=>({name:addon,version:await packageManager.getPackageVersion(addon)})));if(addonVersions.length===0)return[];let incompatibleAddons2=[];return addonVersions.forEach(({name,version:installedVersion})=>{if(installedVersion===null)return;let addonVersion=incompatibleList[name];try{import_semver17.default.lte(import_semver17.default.coerce(installedVersion),import_semver17.default.coerce(addonVersion))&&incompatibleAddons2.push({name,version:installedVersion})}catch{}}),incompatibleAddons2};var incompatibleAddons={id:"incompatible-addons",promptType:"manual",async check({mainConfig,packageManager}){let incompatibleAddonList=await getIncompatibleAddons(mainConfig,packageManager);return incompatibleAddonList.length>0?{incompatibleAddonList}:null},prompt({incompatibleAddonList}){return import_ts_dedent27.default`
416
- ${import_chalk21.default.bold("Attention")}: We've detected that you're using the following addons in versions which are known to be incompatible with Storybook 7:
417
-
418
- ${incompatibleAddonList.map(({name,version})=>`- ${import_chalk21.default.cyan(`${name}@${version}`)}`).join(`
419
- `)}
420
-
421
- Please be aware they might not work in Storybook 7. Reach out to their maintainers for updates and check the following Github issue for more information:
422
- ${import_chalk21.default.yellow("https://github.com/storybookjs/storybook/issues/20529")}
423
- `}};var import_ts_dedent28=require("ts-dedent"),import_semver18=__toESM(require("semver")),import_chalk22=__toESM(require("chalk"));var angularBuildersMultiproject={id:"angular-builders-multiproject",promptType:"manual",async check({packageManager,mainConfig}){let angularVersion=await packageManager.getPackageVersion("@angular/core"),frameworkPackageName=getFrameworkPackageName(mainConfig);if(await isNxProject()||frameworkPackageName!=="@storybook/angular"||!angularVersion||import_semver18.default.lt(angularVersion,"14.0.0"))return null;let angularJSON=new AngularJSON,{hasStorybookBuilder}=angularJSON;return hasStorybookBuilder||angularJSON.rootProject||Object.keys(angularJSON.projects).length===1?null:{}},prompt(){return import_ts_dedent28.dedent`
424
- In Storybook 6.4 we have deprecated calling Storybook directly (npm run storybook) for Angular. In Storybook 7.0, we've removed it entirely. Instead you have to set up the Storybook builder in your ${import_chalk22.default.yellow("angular.json")} and execute ${import_chalk22.default.yellow("ng run <your-project>:storybook")} to start Storybook.
386
+ Read more about the Angular builder here: ${import_chalk18.default.yellow("https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular#how-do-i-migrate-to-an-angular-storybook-builder")}
387
+ `},async run({result}){let angularJSON=new AngularJSON,{packageManager}=result,{useCompoDoc}=await(0,import_prompts7.default)({type:"confirm",name:"useCompoDoc",message:"Have you set up compodoc in Storybook previously?"}),angularProjectName=await angularJSON.getProjectName();angularJSON.addStorybookEntries({angularProjectName,storybookFolder:".storybook",useCompodoc:useCompoDoc,root:"."}),angularJSON.write(),await packageManager.addScripts({storybook:`ng run ${angularProjectName}:storybook`,"build-storybook":`ng run ${angularProjectName}:build-storybook`})}};var import_ts_dedent25=require("ts-dedent"),import_semver13=__toESM(require("semver")),import_chalk19=__toESM(require("chalk"));var angularBuildersMultiproject={id:"angular-builders-multiproject",promptType:"manual",versionRange:["<7",">=7"],async check({packageManager,mainConfig}){let angularVersion=await packageManager.getPackageVersion("@angular/core"),frameworkPackageName=getFrameworkPackageName(mainConfig);if(await isNxProject()||frameworkPackageName!=="@storybook/angular"||!angularVersion||import_semver13.default.lt(angularVersion,"14.0.0"))return null;let angularJSON=new AngularJSON,{hasStorybookBuilder}=angularJSON;return hasStorybookBuilder||angularJSON.rootProject||Object.keys(angularJSON.projects).length===1?null:{}},prompt(){return import_ts_dedent25.dedent`
388
+ In Storybook 6.4 we have deprecated calling Storybook directly (npm run storybook) for Angular. In Storybook 7.0, we've removed it entirely. Instead you have to set up the Storybook builder in your ${import_chalk19.default.yellow("angular.json")} and execute ${import_chalk19.default.yellow("ng run <your-project>:storybook")} to start Storybook.
425
389
 
426
- ❌ Your Angular workspace uses multiple projects defined in the ${import_chalk22.default.yellow("angular.json")} file and we were not able to detect a root project. Therefore we are not able to automigrate to use Angular Storybook builder. Instead, please visit ${import_chalk22.default.yellow("https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular")} to do the migration manually.
427
- `}};var import_chalk23=__toESM(require("chalk")),import_ts_dedent29=require("ts-dedent"),import_csf_tools6=require("@storybook/csf-tools");var t=__toESM(require("@babel/types")),defaultRequireWrapperName="getAbsolutePath";function doesVariableOrFunctionDeclarationExist(node,name){return t.isVariableDeclaration(node)&&node.declarations.length===1&&t.isVariableDeclarator(node.declarations[0])&&t.isIdentifier(node.declarations[0].id)&&node.declarations[0].id?.name===name||t.isFunctionDeclaration(node)&&t.isIdentifier(node.id)&&node.id.name===name}function getReferenceToRequireWrapper(config,value){return t.callExpression(t.identifier(getRequireWrapperName(config)??defaultRequireWrapperName),[t.stringLiteral(value)])}function getRequireWrapperName(config){let declarationName=config.getBodyDeclarations().flatMap(node=>doesVariableOrFunctionDeclarationExist(node,"wrapForPnp")?["wrapForPnp"]:doesVariableOrFunctionDeclarationExist(node,defaultRequireWrapperName)?[defaultRequireWrapperName]:[]);return declarationName.length?declarationName[0]:null}function isRequireWrapperNecessary(node,cb=()=>{}){if(t.isStringLiteral(node))return cb(node),!0;if(t.isObjectExpression(node)){let nameProperty=node.properties.find(property=>t.isObjectProperty(property)&&t.isIdentifier(property.key)&&property.key.name==="name");if(nameProperty&&t.isStringLiteral(nameProperty.value))return cb(nameProperty),!0}return t.isArrayExpression(node)&&node.elements.some(element=>element&&isRequireWrapperNecessary(element))?(cb(node),!0):!1}function getFieldsForRequireWrapper(config){let frameworkNode=config.getFieldNode(["framework"]),builderNode=config.getFieldNode(["core","builder"]),rendererNode=config.getFieldNode(["core","renderer"]),addons=config.getFieldNode(["addons"]);return[...frameworkNode?[frameworkNode]:[],...builderNode?[builderNode]:[],...rendererNode?[rendererNode]:[],...addons&&t.isArrayExpression(addons)?[addons]:[]]}function getRequireWrapperAsCallExpression(isConfigTypescript){let functionDeclaration2={...t.functionDeclaration(t.identifier(defaultRequireWrapperName),[{...t.identifier("value"),...isConfigTypescript?{typeAnnotation:t.tsTypeAnnotation(t.tSStringKeyword())}:{}}],t.blockStatement([t.returnStatement(t.callExpression(t.identifier("dirname"),[t.callExpression(t.memberExpression(t.identifier("require"),t.identifier("resolve")),[t.callExpression(t.identifier("join"),[t.identifier("value"),t.stringLiteral("package.json")])])]))])),...isConfigTypescript?{returnType:t.tSTypeAnnotation(t.tsAnyKeyword())}:{}};return t.addComment(functionDeclaration2,"leading",`*
390
+ ❌ Your Angular workspace uses multiple projects defined in the ${import_chalk19.default.yellow("angular.json")} file and we were not able to detect a root project. Therefore we are not able to automigrate to use Angular Storybook builder. Instead, please visit ${import_chalk19.default.yellow("https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular")} to do the migration manually.
391
+ `}};var import_chalk20=__toESM(require("chalk")),import_ts_dedent26=require("ts-dedent"),import_csf_tools6=require("@storybook/csf-tools");var t=__toESM(require("@babel/types")),defaultRequireWrapperName="getAbsolutePath";function doesVariableOrFunctionDeclarationExist(node,name){return t.isVariableDeclaration(node)&&node.declarations.length===1&&t.isVariableDeclarator(node.declarations[0])&&t.isIdentifier(node.declarations[0].id)&&node.declarations[0].id?.name===name||t.isFunctionDeclaration(node)&&t.isIdentifier(node.id)&&node.id.name===name}function getReferenceToRequireWrapper(config,value){return t.callExpression(t.identifier(getRequireWrapperName(config)??defaultRequireWrapperName),[t.stringLiteral(value)])}function getRequireWrapperName(config){let declarationName=config.getBodyDeclarations().flatMap(node=>doesVariableOrFunctionDeclarationExist(node,"wrapForPnp")?["wrapForPnp"]:doesVariableOrFunctionDeclarationExist(node,defaultRequireWrapperName)?[defaultRequireWrapperName]:[]);return declarationName.length?declarationName[0]:null}function isRequireWrapperNecessary(node,cb=()=>{}){if(t.isStringLiteral(node))return cb(node),!0;if(t.isObjectExpression(node)){let nameProperty=node.properties.find(property=>t.isObjectProperty(property)&&t.isIdentifier(property.key)&&property.key.name==="name");if(nameProperty&&t.isStringLiteral(nameProperty.value))return cb(nameProperty),!0}return t.isArrayExpression(node)&&node.elements.some(element=>element&&isRequireWrapperNecessary(element))?(cb(node),!0):!1}function getFieldsForRequireWrapper(config){let frameworkNode=config.getFieldNode(["framework"]),builderNode=config.getFieldNode(["core","builder"]),rendererNode=config.getFieldNode(["core","renderer"]),addons=config.getFieldNode(["addons"]);return[...frameworkNode?[frameworkNode]:[],...builderNode?[builderNode]:[],...rendererNode?[rendererNode]:[],...addons&&t.isArrayExpression(addons)?[addons]:[]]}function getRequireWrapperAsCallExpression(isConfigTypescript){let functionDeclaration2={...t.functionDeclaration(t.identifier(defaultRequireWrapperName),[{...t.identifier("value"),...isConfigTypescript?{typeAnnotation:t.tsTypeAnnotation(t.tSStringKeyword())}:{}}],t.blockStatement([t.returnStatement(t.callExpression(t.identifier("dirname"),[t.callExpression(t.memberExpression(t.identifier("require"),t.identifier("resolve")),[t.callExpression(t.identifier("join"),[t.identifier("value"),t.stringLiteral("package.json")])])]))])),...isConfigTypescript?{returnType:t.tSTypeAnnotation(t.tsAnyKeyword())}:{}};return t.addComment(functionDeclaration2,"leading",`*
428
392
  * This function is used to resolve the absolute path of a package.
429
393
  * It is needed in projects that use Yarn PnP or are set up within a monorepo.
430
- `),functionDeclaration2}function wrapValueWithRequireWrapper(config,node){isRequireWrapperNecessary(node,n=>{if(t.isStringLiteral(n)){let wrapperNode=getReferenceToRequireWrapper(config,n.value);Object.keys(n).forEach(k=>{delete n[k]}),Object.keys(wrapperNode).forEach(k=>{n[k]=wrapperNode[k]})}t.isObjectProperty(n)&&t.isStringLiteral(n.value)&&(n.value=getReferenceToRequireWrapper(config,n.value.value)),t.isArrayExpression(n)&&n.elements.forEach((element,index,elements)=>{t.isStringLiteral(element)&&(elements[index]=getReferenceToRequireWrapper(config,element.value))})})}var wrapRequire={id:"wrap-require",async check({packageManager,storybookVersion,mainConfigPath}){let isStorybookInMonorepo=await packageManager.isStorybookInMonorepo(),isPnp=await detectPnp();if(!mainConfigPath)return null;let config=await(0,import_csf_tools6.readConfig)(mainConfigPath);if(!isStorybookInMonorepo&&!isPnp||!getFieldsForRequireWrapper(config).some(node=>isRequireWrapperNecessary(node)))return null;let isConfigTypescript=mainConfigPath.endsWith(".ts")||mainConfigPath.endsWith(".tsx");return{storybookVersion,isStorybookInMonorepo,isPnp,isConfigTypescript}},prompt({storybookVersion,isStorybookInMonorepo}){let sbFormatted=import_chalk23.default.cyan(`Storybook ${storybookVersion}`);return import_ts_dedent29.dedent`We have detected that you're using ${sbFormatted} in a ${isStorybookInMonorepo?"monorepo":"PnP"} project.
394
+ `),functionDeclaration2}function wrapValueWithRequireWrapper(config,node){isRequireWrapperNecessary(node,n=>{if(t.isStringLiteral(n)){let wrapperNode=getReferenceToRequireWrapper(config,n.value);Object.keys(n).forEach(k=>{delete n[k]}),Object.keys(wrapperNode).forEach(k=>{n[k]=wrapperNode[k]})}t.isObjectProperty(n)&&t.isStringLiteral(n.value)&&(n.value=getReferenceToRequireWrapper(config,n.value.value)),t.isArrayExpression(n)&&n.elements.forEach((element,index,elements)=>{t.isStringLiteral(element)&&(elements[index]=getReferenceToRequireWrapper(config,element.value))})})}var wrapRequire={id:"wrap-require",versionRange:["<7.2.0-rc.0",">=7.2.0-rc.0"],async check({packageManager,storybookVersion,mainConfigPath}){let isStorybookInMonorepo=await packageManager.isStorybookInMonorepo(),isPnp=await detectPnp();if(!mainConfigPath)return null;let config=await(0,import_csf_tools6.readConfig)(mainConfigPath);if(!isStorybookInMonorepo&&!isPnp||!getFieldsForRequireWrapper(config).some(node=>isRequireWrapperNecessary(node)))return null;let isConfigTypescript=mainConfigPath.endsWith(".ts")||mainConfigPath.endsWith(".tsx");return{storybookVersion,isStorybookInMonorepo,isPnp,isConfigTypescript}},prompt({storybookVersion,isStorybookInMonorepo}){let sbFormatted=import_chalk20.default.cyan(`Storybook ${storybookVersion}`);return import_ts_dedent26.dedent`We have detected that you're using ${sbFormatted} in a ${isStorybookInMonorepo?"monorepo":"PnP"} project.
431
395
  For Storybook to work correctly, some fields in your main config must be updated. We can do this for you automatically.
432
396
 
433
- More info: https://storybook.js.org/docs/react/faq#how-do-i-fix-module-resolution-in-special-environments`},async run({dryRun,mainConfigPath,result}){return new Promise((resolve2,reject)=>{updateMainConfig({dryRun:!!dryRun,mainConfigPath},mainConfig=>{try{getFieldsForRequireWrapper(mainConfig).forEach(node=>{wrapValueWithRequireWrapper(mainConfig,node)}),getRequireWrapperName(mainConfig)===null&&(mainConfig?.fileName?.endsWith(".cjs")||mainConfig?.fileName?.endsWith(".cts")||mainConfig?.fileName?.endsWith(".cjsx")||mainConfig?.fileName?.endsWith(".ctsx")?mainConfig.setRequireImport(["dirname","join"],"path"):mainConfig.setImport(["dirname","join"],"path"),mainConfig.setBodyDeclaration(getRequireWrapperAsCallExpression(result.isConfigTypescript))),resolve2()}catch(e){reject(e)}})})}};var import_ts_dedent30=require("ts-dedent");var logger21=console,reactDocgen={id:"react-docgen",async check({mainConfig}){let{reactDocgenTypescriptOptions}=mainConfig.typescript||{};return reactDocgenTypescriptOptions?{reactDocgenTypescriptOptions}:null},prompt(){return import_ts_dedent30.dedent`
397
+ More info: https://storybook.js.org/docs/react/faq#how-do-i-fix-module-resolution-in-special-environments`},async run({dryRun,mainConfigPath,result}){return new Promise((resolve2,reject)=>{updateMainConfig({dryRun:!!dryRun,mainConfigPath},mainConfig=>{try{getFieldsForRequireWrapper(mainConfig).forEach(node=>{wrapValueWithRequireWrapper(mainConfig,node)}),getRequireWrapperName(mainConfig)===null&&(mainConfig?.fileName?.endsWith(".cjs")||mainConfig?.fileName?.endsWith(".cts")||mainConfig?.fileName?.endsWith(".cjsx")||mainConfig?.fileName?.endsWith(".ctsx")?mainConfig.setRequireImport(["dirname","join"],"path"):mainConfig.setImport(["dirname","join"],"path"),mainConfig.setBodyDeclaration(getRequireWrapperAsCallExpression(result.isConfigTypescript))),resolve2()}catch(e){reject(e)}})})}};var import_ts_dedent27=require("ts-dedent");var logger20=console,reactDocgen={id:"react-docgen",versionRange:["<8.0.0-alpha.1",">=8.0.0-alpha.1"],async check({mainConfig}){let{reactDocgenTypescriptOptions}=mainConfig.typescript||{};return reactDocgenTypescriptOptions?{reactDocgenTypescriptOptions}:null},prompt(){return import_ts_dedent27.dedent`
434
398
  You have "typescript.reactDocgenTypescriptOptions" configured in your main.js,
435
399
  but "typescript.reactDocgen" is unset.
436
400
 
437
- In Storybook 8.0, we changed the default React docgen analysis from
401
+ Since Storybook 8.0, we changed the default React docgen analysis from
438
402
  "react-docgen-typescript" to "react-docgen". We recommend "react-docgen"
439
403
  for most projects, since it is dramatically faster. However, it doesn't
440
404
  handle all TypeScript constructs, and may generate different results
@@ -443,88 +407,131 @@ Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||pro
443
407
  Should we update your config to continue to use "react-docgen-typescript"?
444
408
 
445
409
  https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-docgen-component-analysis-by-default
446
- `},async run({dryRun,mainConfigPath}){dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger21.info("\u2705 Setting typescript.reactDocgen"),dryRun||main.setFieldValue(["typescript","reactDocgen"],"react-docgen-typescript")})}};var import_ts_dedent31=__toESM(require("ts-dedent")),import_semver19=__toESM(require("semver"));var removeReactDependency={id:"remove-react-dependency",promptType:"manual",async check({packageManager,mainConfig,storybookVersion}){let frameworkPackageName=getFrameworkPackageName(mainConfig);if(frameworkPackageName?.includes("react")||frameworkPackageName?.includes("nextjs"))return null;let packageJson=await packageManager.retrievePackageJson();return!packageJson?.dependencies?.react&&!packageJson?.peerDependencies?.react&&!packageJson?.devDependencies?.react||!import_semver19.default.gte(storybookVersion,"8.0.0")?null:!0},prompt(){return import_ts_dedent31.default`
410
+ `},async run({dryRun,mainConfigPath}){dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger20.info("\u2705 Setting typescript.reactDocgen"),dryRun||main.setFieldValue(["typescript","reactDocgen"],"react-docgen-typescript")})}};var import_chalk21=__toESM(require("chalk")),import_ts_dedent28=__toESM(require("ts-dedent"));var import_codemod=require("@storybook/codemod"),import_prompts8=require("prompts");var import_brace_expansion=__toESM(require_brace_expansion(),1);var assertValidPattern=pattern=>{if(typeof pattern!="string")throw new TypeError("invalid pattern");if(pattern.length>65536)throw new TypeError("pattern is too long")};var posixClasses={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},braceEscape=s=>s.replace(/[[\]\\-]/g,"\\$&"),regexpEscape=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),rangesToString=ranges=>ranges.join(""),parseClass=(glob3,position)=>{let pos=position;if(glob3.charAt(pos)!=="[")throw new Error("not in a brace expression");let ranges=[],negs=[],i=pos+1,sawStart=!1,uflag=!1,escaping=!1,negate=!1,endPos=pos,rangeStart="";WHILE:for(;i<glob3.length;){let c=glob3.charAt(i);if((c==="!"||c==="^")&&i===pos+1){negate=!0,i++;continue}if(c==="]"&&sawStart&&!escaping){endPos=i+1;break}if(sawStart=!0,c==="\\"&&!escaping){escaping=!0,i++;continue}if(c==="["&&!escaping){for(let[cls,[unip,u,neg]]of Object.entries(posixClasses))if(glob3.startsWith(cls,i)){if(rangeStart)return["$.",!1,glob3.length-pos,!0];i+=cls.length,neg?negs.push(unip):ranges.push(unip),uflag=uflag||u;continue WHILE}}if(escaping=!1,rangeStart){c>rangeStart?ranges.push(braceEscape(rangeStart)+"-"+braceEscape(c)):c===rangeStart&&ranges.push(braceEscape(c)),rangeStart="",i++;continue}if(glob3.startsWith("-]",i+1)){ranges.push(braceEscape(c+"-")),i+=2;continue}if(glob3.startsWith("-",i+1)){rangeStart=c,i+=2;continue}ranges.push(braceEscape(c)),i++}if(endPos<i)return["",!1,0,!1];if(!ranges.length&&!negs.length)return["$.",!1,glob3.length-pos,!0];if(negs.length===0&&ranges.length===1&&/^\\?.$/.test(ranges[0])&&!negate){let r=ranges[0].length===2?ranges[0].slice(-1):ranges[0];return[regexpEscape(r),!1,endPos-pos,!1]}let sranges="["+(negate?"^":"")+rangesToString(ranges)+"]",snegs="["+(negate?"":"^")+rangesToString(negs)+"]";return[ranges.length&&negs.length?"("+sranges+"|"+snegs+")":ranges.length?sranges:snegs,uflag,endPos-pos,!0]};var unescape=(s,{windowsPathsNoEscape=!1}={})=>windowsPathsNoEscape?s.replace(/\[([^\/\\])\]/g,"$1"):s.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");var types=new Set(["!","?","+","*","@"]),isExtglobType=c=>types.has(c),startNoTraversal="(?!(?:^|/)\\.\\.?(?:$|/))",startNoDot="(?!\\.)",addPatternStart=new Set(["[","."]),justDots=new Set(["..","."]),reSpecials=new Set("().*{}+?[]^$\\!"),regExpEscape=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),qmark="[^/]",star=qmark+"*?",starNoEmpty=qmark+"+?",AST=class _AST{type;#root;#hasMagic;#uflag=!1;#parts=[];#parent;#parentIndex;#negs;#filledNegs=!1;#options;#toString;#emptyExt=!1;constructor(type,parent,options={}){this.type=type,type&&(this.#hasMagic=!0),this.#parent=parent,this.#root=this.#parent?this.#parent.#root:this,this.#options=this.#root===this?options:this.#root.#options,this.#negs=this.#root===this?[]:this.#root.#negs,type==="!"&&!this.#root.#filledNegs&&this.#negs.push(this),this.#parentIndex=this.#parent?this.#parent.#parts.length:0}get hasMagic(){if(this.#hasMagic!==void 0)return this.#hasMagic;for(let p of this.#parts)if(typeof p!="string"&&(p.type||p.hasMagic))return this.#hasMagic=!0;return this.#hasMagic}toString(){return this.#toString!==void 0?this.#toString:this.type?this.#toString=this.type+"("+this.#parts.map(p=>String(p)).join("|")+")":this.#toString=this.#parts.map(p=>String(p)).join("")}#fillNegs(){if(this!==this.#root)throw new Error("should only call on root");if(this.#filledNegs)return this;this.toString(),this.#filledNegs=!0;let n;for(;n=this.#negs.pop();){if(n.type!=="!")continue;let p=n,pp=p.#parent;for(;pp;){for(let i=p.#parentIndex+1;!pp.type&&i<pp.#parts.length;i++)for(let part of n.#parts){if(typeof part=="string")throw new Error("string part in extglob AST??");part.copyIn(pp.#parts[i])}p=pp,pp=p.#parent}}return this}push(...parts){for(let p of parts)if(p!==""){if(typeof p!="string"&&!(p instanceof _AST&&p.#parent===this))throw new Error("invalid part: "+p);this.#parts.push(p)}}toJSON(){let ret=this.type===null?this.#parts.slice().map(p=>typeof p=="string"?p:p.toJSON()):[this.type,...this.#parts.map(p=>p.toJSON())];return this.isStart()&&!this.type&&ret.unshift([]),this.isEnd()&&(this===this.#root||this.#root.#filledNegs&&this.#parent?.type==="!")&&ret.push({}),ret}isStart(){if(this.#root===this)return!0;if(!this.#parent?.isStart())return!1;if(this.#parentIndex===0)return!0;let p=this.#parent;for(let i=0;i<this.#parentIndex;i++){let pp=p.#parts[i];if(!(pp instanceof _AST&&pp.type==="!"))return!1}return!0}isEnd(){if(this.#root===this||this.#parent?.type==="!")return!0;if(!this.#parent?.isEnd())return!1;if(!this.type)return this.#parent?.isEnd();let pl=this.#parent?this.#parent.#parts.length:0;return this.#parentIndex===pl-1}copyIn(part){typeof part=="string"?this.push(part):this.push(part.clone(this))}clone(parent){let c=new _AST(this.type,parent);for(let p of this.#parts)c.copyIn(p);return c}static#parseAST(str,ast,pos,opt){let escaping=!1,inBrace=!1,braceStart=-1,braceNeg=!1;if(ast.type===null){let i2=pos,acc2="";for(;i2<str.length;){let c=str.charAt(i2++);if(escaping||c==="\\"){escaping=!escaping,acc2+=c;continue}if(inBrace){i2===braceStart+1?(c==="^"||c==="!")&&(braceNeg=!0):c==="]"&&!(i2===braceStart+2&&braceNeg)&&(inBrace=!1),acc2+=c;continue}else if(c==="["){inBrace=!0,braceStart=i2,braceNeg=!1,acc2+=c;continue}if(!opt.noext&&isExtglobType(c)&&str.charAt(i2)==="("){ast.push(acc2),acc2="";let ext2=new _AST(c,ast);i2=_AST.#parseAST(str,ext2,i2,opt),ast.push(ext2);continue}acc2+=c}return ast.push(acc2),i2}let i=pos+1,part=new _AST(null,ast),parts=[],acc="";for(;i<str.length;){let c=str.charAt(i++);if(escaping||c==="\\"){escaping=!escaping,acc+=c;continue}if(inBrace){i===braceStart+1?(c==="^"||c==="!")&&(braceNeg=!0):c==="]"&&!(i===braceStart+2&&braceNeg)&&(inBrace=!1),acc+=c;continue}else if(c==="["){inBrace=!0,braceStart=i,braceNeg=!1,acc+=c;continue}if(isExtglobType(c)&&str.charAt(i)==="("){part.push(acc),acc="";let ext2=new _AST(c,part);part.push(ext2),i=_AST.#parseAST(str,ext2,i,opt);continue}if(c==="|"){part.push(acc),acc="",parts.push(part),part=new _AST(null,ast);continue}if(c===")")return acc===""&&ast.#parts.length===0&&(ast.#emptyExt=!0),part.push(acc),acc="",ast.push(...parts,part),i;acc+=c}return ast.type=null,ast.#hasMagic=void 0,ast.#parts=[str.substring(pos-1)],i}static fromGlob(pattern,options={}){let ast=new _AST(null,void 0,options);return _AST.#parseAST(pattern,ast,0,options),ast}toMMPattern(){if(this!==this.#root)return this.#root.toMMPattern();let glob3=this.toString(),[re,body,hasMagic2,uflag]=this.toRegExpSource();if(!(hasMagic2||this.#hasMagic||this.#options.nocase&&!this.#options.nocaseMagicOnly&&glob3.toUpperCase()!==glob3.toLowerCase()))return body;let flags=(this.#options.nocase?"i":"")+(uflag?"u":"");return Object.assign(new RegExp(`^${re}$`,flags),{_src:re,_glob:glob3})}toRegExpSource(allowDot){let dot=allowDot??!!this.#options.dot;if(this.#root===this&&this.#fillNegs(),!this.type){let noEmpty=this.isStart()&&this.isEnd(),src=this.#parts.map(p=>{let[re,_,hasMagic2,uflag]=typeof p=="string"?_AST.#parseGlob(p,this.#hasMagic,noEmpty):p.toRegExpSource(allowDot);return this.#hasMagic=this.#hasMagic||hasMagic2,this.#uflag=this.#uflag||uflag,re}).join(""),start2="";if(this.isStart()&&typeof this.#parts[0]=="string"&&!(this.#parts.length===1&&justDots.has(this.#parts[0]))){let aps=addPatternStart,needNoTrav=dot&&aps.has(src.charAt(0))||src.startsWith("\\.")&&aps.has(src.charAt(2))||src.startsWith("\\.\\.")&&aps.has(src.charAt(4)),needNoDot=!dot&&!allowDot&&aps.has(src.charAt(0));start2=needNoTrav?startNoTraversal:needNoDot?startNoDot:""}let end="";return this.isEnd()&&this.#root.#filledNegs&&this.#parent?.type==="!"&&(end="(?:$|\\/)"),[start2+src+end,unescape(src),this.#hasMagic=!!this.#hasMagic,this.#uflag]}let repeated=this.type==="*"||this.type==="+",start=this.type==="!"?"(?:(?!(?:":"(?:",body=this.#partsToRegExp(dot);if(this.isStart()&&this.isEnd()&&!body&&this.type!=="!"){let s=this.toString();return this.#parts=[s],this.type=null,this.#hasMagic=void 0,[s,unescape(this.toString()),!1,!1]}let bodyDotAllowed=!repeated||allowDot||dot||!startNoDot?"":this.#partsToRegExp(!0);bodyDotAllowed===body&&(bodyDotAllowed=""),bodyDotAllowed&&(body=`(?:${body})(?:${bodyDotAllowed})*?`);let final="";if(this.type==="!"&&this.#emptyExt)final=(this.isStart()&&!dot?startNoDot:"")+starNoEmpty;else{let close=this.type==="!"?"))"+(this.isStart()&&!dot&&!allowDot?startNoDot:"")+star+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&bodyDotAllowed?")":this.type==="*"&&bodyDotAllowed?")?":`)${this.type}`;final=start+body+close}return[final,unescape(body),this.#hasMagic=!!this.#hasMagic,this.#uflag]}#partsToRegExp(dot){return this.#parts.map(p=>{if(typeof p=="string")throw new Error("string type in extglob ast??");let[re,_,_hasMagic,uflag]=p.toRegExpSource(dot);return this.#uflag=this.#uflag||uflag,re}).filter(p=>!(this.isStart()&&this.isEnd())||!!p).join("|")}static#parseGlob(glob3,hasMagic2,noEmpty=!1){let escaping=!1,re="",uflag=!1;for(let i=0;i<glob3.length;i++){let c=glob3.charAt(i);if(escaping){escaping=!1,re+=(reSpecials.has(c)?"\\":"")+c;continue}if(c==="\\"){i===glob3.length-1?re+="\\\\":escaping=!0;continue}if(c==="["){let[src,needUflag,consumed,magic]=parseClass(glob3,i);if(consumed){re+=src,uflag=uflag||needUflag,i+=consumed-1,hasMagic2=hasMagic2||magic;continue}}if(c==="*"){noEmpty&&glob3==="*"?re+=starNoEmpty:re+=star,hasMagic2=!0;continue}if(c==="?"){re+=qmark,hasMagic2=!0;continue}re+=regExpEscape(c)}return[re,unescape(glob3),!!hasMagic2,uflag]}};var escape=(s,{windowsPathsNoEscape=!1}={})=>windowsPathsNoEscape?s.replace(/[?*()[\]]/g,"[$&]"):s.replace(/[?*()[\]\\]/g,"\\$&");var minimatch=(p,pattern,options={})=>(assertValidPattern(pattern),!options.nocomment&&pattern.charAt(0)==="#"?!1:new Minimatch(pattern,options).match(p)),starDotExtRE=/^\*+([^+@!?\*\[\(]*)$/,starDotExtTest=ext2=>f=>!f.startsWith(".")&&f.endsWith(ext2),starDotExtTestDot=ext2=>f=>f.endsWith(ext2),starDotExtTestNocase=ext2=>(ext2=ext2.toLowerCase(),f=>!f.startsWith(".")&&f.toLowerCase().endsWith(ext2)),starDotExtTestNocaseDot=ext2=>(ext2=ext2.toLowerCase(),f=>f.toLowerCase().endsWith(ext2)),starDotStarRE=/^\*+\.\*+$/,starDotStarTest=f=>!f.startsWith(".")&&f.includes("."),starDotStarTestDot=f=>f!=="."&&f!==".."&&f.includes("."),dotStarRE=/^\.\*+$/,dotStarTest=f=>f!=="."&&f!==".."&&f.startsWith("."),starRE=/^\*+$/,starTest=f=>f.length!==0&&!f.startsWith("."),starTestDot=f=>f.length!==0&&f!=="."&&f!=="..",qmarksRE=/^\?+([^+@!?\*\[\(]*)?$/,qmarksTestNocase=([$0,ext2=""])=>{let noext=qmarksTestNoExt([$0]);return ext2?(ext2=ext2.toLowerCase(),f=>noext(f)&&f.toLowerCase().endsWith(ext2)):noext},qmarksTestNocaseDot=([$0,ext2=""])=>{let noext=qmarksTestNoExtDot([$0]);return ext2?(ext2=ext2.toLowerCase(),f=>noext(f)&&f.toLowerCase().endsWith(ext2)):noext},qmarksTestDot=([$0,ext2=""])=>{let noext=qmarksTestNoExtDot([$0]);return ext2?f=>noext(f)&&f.endsWith(ext2):noext},qmarksTest=([$0,ext2=""])=>{let noext=qmarksTestNoExt([$0]);return ext2?f=>noext(f)&&f.endsWith(ext2):noext},qmarksTestNoExt=([$0])=>{let len=$0.length;return f=>f.length===len&&!f.startsWith(".")},qmarksTestNoExtDot=([$0])=>{let len=$0.length;return f=>f.length===len&&f!=="."&&f!==".."},defaultPlatform=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",path6={win32:{sep:"\\"},posix:{sep:"/"}},sep=defaultPlatform==="win32"?path6.win32.sep:path6.posix.sep;minimatch.sep=sep;var GLOBSTAR=Symbol("globstar **");minimatch.GLOBSTAR=GLOBSTAR;var qmark2="[^/]",star2=qmark2+"*?",twoStarDot="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",twoStarNoDot="(?:(?!(?:\\/|^)\\.).)*?",filter=(pattern,options={})=>p=>minimatch(p,pattern,options);minimatch.filter=filter;var ext=(a,b={})=>Object.assign({},a,b),defaults=def=>{if(!def||typeof def!="object"||!Object.keys(def).length)return minimatch;let orig=minimatch;return Object.assign((p,pattern,options={})=>orig(p,pattern,ext(def,options)),{Minimatch:class extends orig.Minimatch{constructor(pattern,options={}){super(pattern,ext(def,options))}static defaults(options){return orig.defaults(ext(def,options)).Minimatch}},AST:class extends orig.AST{constructor(type,parent,options={}){super(type,parent,ext(def,options))}static fromGlob(pattern,options={}){return orig.AST.fromGlob(pattern,ext(def,options))}},unescape:(s,options={})=>orig.unescape(s,ext(def,options)),escape:(s,options={})=>orig.escape(s,ext(def,options)),filter:(pattern,options={})=>orig.filter(pattern,ext(def,options)),defaults:options=>orig.defaults(ext(def,options)),makeRe:(pattern,options={})=>orig.makeRe(pattern,ext(def,options)),braceExpand:(pattern,options={})=>orig.braceExpand(pattern,ext(def,options)),match:(list,pattern,options={})=>orig.match(list,pattern,ext(def,options)),sep:orig.sep,GLOBSTAR})};minimatch.defaults=defaults;var braceExpand=(pattern,options={})=>(assertValidPattern(pattern),options.nobrace||!/\{(?:(?!\{).)*\}/.test(pattern)?[pattern]:(0,import_brace_expansion.default)(pattern));minimatch.braceExpand=braceExpand;var makeRe=(pattern,options={})=>new Minimatch(pattern,options).makeRe();minimatch.makeRe=makeRe;var match=(list,pattern,options={})=>{let mm=new Minimatch(pattern,options);return list=list.filter(f=>mm.match(f)),mm.options.nonull&&!list.length&&list.push(pattern),list};minimatch.match=match;var globMagic=/[?*]|[+@!]\(.*?\)|\[|\]/,regExpEscape2=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Minimatch=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(pattern,options={}){assertValidPattern(pattern),options=options||{},this.options=options,this.pattern=pattern,this.platform=options.platform||defaultPlatform,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!options.windowsPathsNoEscape||options.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!options.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!options.nonegate,this.comment=!1,this.empty=!1,this.partial=!!options.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=options.windowsNoMagicRoot!==void 0?options.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let pattern of this.set)for(let part of pattern)if(typeof part!="string")return!0;return!1}debug(..._){}make(){let pattern=this.pattern,options=this.options;if(!options.nocomment&&pattern.charAt(0)==="#"){this.comment=!0;return}if(!pattern){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],options.debug&&(this.debug=(...args)=>console.error(...args)),this.debug(this.pattern,this.globSet);let rawGlobParts=this.globSet.map(s=>this.slashSplit(s));this.globParts=this.preprocess(rawGlobParts),this.debug(this.pattern,this.globParts);let set=this.globParts.map((s,_,__)=>{if(this.isWindows&&this.windowsNoMagicRoot){let isUNC=s[0]===""&&s[1]===""&&(s[2]==="?"||!globMagic.test(s[2]))&&!globMagic.test(s[3]),isDrive=/^[a-z]:/i.test(s[0]);if(isUNC)return[...s.slice(0,4),...s.slice(4).map(ss=>this.parse(ss))];if(isDrive)return[s[0],...s.slice(1).map(ss=>this.parse(ss))]}return s.map(ss=>this.parse(ss))});if(this.debug(this.pattern,set),this.set=set.filter(s=>s.indexOf(!1)===-1),this.isWindows)for(let i=0;i<this.set.length;i++){let p=this.set[i];p[0]===""&&p[1]===""&&this.globParts[i][2]==="?"&&typeof p[3]=="string"&&/^[a-z]:$/i.test(p[3])&&(p[2]="?")}this.debug(this.pattern,this.set)}preprocess(globParts){if(this.options.noglobstar)for(let i=0;i<globParts.length;i++)for(let j=0;j<globParts[i].length;j++)globParts[i][j]==="**"&&(globParts[i][j]="*");let{optimizationLevel=1}=this.options;return optimizationLevel>=2?(globParts=this.firstPhasePreProcess(globParts),globParts=this.secondPhasePreProcess(globParts)):optimizationLevel>=1?globParts=this.levelOneOptimize(globParts):globParts=this.adjascentGlobstarOptimize(globParts),globParts}adjascentGlobstarOptimize(globParts){return globParts.map(parts=>{let gs=-1;for(;(gs=parts.indexOf("**",gs+1))!==-1;){let i=gs;for(;parts[i+1]==="**";)i++;i!==gs&&parts.splice(gs,i-gs)}return parts})}levelOneOptimize(globParts){return globParts.map(parts=>(parts=parts.reduce((set,part)=>{let prev=set[set.length-1];return part==="**"&&prev==="**"?set:part===".."&&prev&&prev!==".."&&prev!=="."&&prev!=="**"?(set.pop(),set):(set.push(part),set)},[]),parts.length===0?[""]:parts))}levelTwoFileOptimize(parts){Array.isArray(parts)||(parts=this.slashSplit(parts));let didSomething=!1;do{if(didSomething=!1,!this.preserveMultipleSlashes){for(let i=1;i<parts.length-1;i++){let p=parts[i];i===1&&p===""&&parts[0]===""||(p==="."||p==="")&&(didSomething=!0,parts.splice(i,1),i--)}parts[0]==="."&&parts.length===2&&(parts[1]==="."||parts[1]==="")&&(didSomething=!0,parts.pop())}let dd=0;for(;(dd=parts.indexOf("..",dd+1))!==-1;){let p=parts[dd-1];p&&p!=="."&&p!==".."&&p!=="**"&&(didSomething=!0,parts.splice(dd-1,2),dd-=2)}}while(didSomething);return parts.length===0?[""]:parts}firstPhasePreProcess(globParts){let didSomething=!1;do{didSomething=!1;for(let parts of globParts){let gs=-1;for(;(gs=parts.indexOf("**",gs+1))!==-1;){let gss=gs;for(;parts[gss+1]==="**";)gss++;gss>gs&&parts.splice(gs+1,gss-gs);let next=parts[gs+1],p=parts[gs+2],p2=parts[gs+3];if(next!==".."||!p||p==="."||p===".."||!p2||p2==="."||p2==="..")continue;didSomething=!0,parts.splice(gs,1);let other=parts.slice(0);other[gs]="**",globParts.push(other),gs--}if(!this.preserveMultipleSlashes){for(let i=1;i<parts.length-1;i++){let p=parts[i];i===1&&p===""&&parts[0]===""||(p==="."||p==="")&&(didSomething=!0,parts.splice(i,1),i--)}parts[0]==="."&&parts.length===2&&(parts[1]==="."||parts[1]==="")&&(didSomething=!0,parts.pop())}let dd=0;for(;(dd=parts.indexOf("..",dd+1))!==-1;){let p=parts[dd-1];if(p&&p!=="."&&p!==".."&&p!=="**"){didSomething=!0;let splin=dd===1&&parts[dd+1]==="**"?["."]:[];parts.splice(dd-1,2,...splin),parts.length===0&&parts.push(""),dd-=2}}}}while(didSomething);return globParts}secondPhasePreProcess(globParts){for(let i=0;i<globParts.length-1;i++)for(let j=i+1;j<globParts.length;j++){let matched=this.partsMatch(globParts[i],globParts[j],!this.preserveMultipleSlashes);matched&&(globParts[i]=matched,globParts[j]=[])}return globParts.filter(gs=>gs.length)}partsMatch(a,b,emptyGSMatch=!1){let ai=0,bi=0,result=[],which="";for(;ai<a.length&&bi<b.length;)if(a[ai]===b[bi])result.push(which==="b"?b[bi]:a[ai]),ai++,bi++;else if(emptyGSMatch&&a[ai]==="**"&&b[bi]===a[ai+1])result.push(a[ai]),ai++;else if(emptyGSMatch&&b[bi]==="**"&&a[ai]===b[bi+1])result.push(b[bi]),bi++;else if(a[ai]==="*"&&b[bi]&&(this.options.dot||!b[bi].startsWith("."))&&b[bi]!=="**"){if(which==="b")return!1;which="a",result.push(a[ai]),ai++,bi++}else if(b[bi]==="*"&&a[ai]&&(this.options.dot||!a[ai].startsWith("."))&&a[ai]!=="**"){if(which==="a")return!1;which="b",result.push(b[bi]),ai++,bi++}else return!1;return a.length===b.length&&result}parseNegate(){if(this.nonegate)return;let pattern=this.pattern,negate=!1,negateOffset=0;for(let i=0;i<pattern.length&&pattern.charAt(i)==="!";i++)negate=!negate,negateOffset++;negateOffset&&(this.pattern=pattern.slice(negateOffset)),this.negate=negate}matchOne(file,pattern,partial=!1){let options=this.options;if(this.isWindows){let fileDrive=typeof file[0]=="string"&&/^[a-z]:$/i.test(file[0]),fileUNC=!fileDrive&&file[0]===""&&file[1]===""&&file[2]==="?"&&/^[a-z]:$/i.test(file[3]),patternDrive=typeof pattern[0]=="string"&&/^[a-z]:$/i.test(pattern[0]),patternUNC=!patternDrive&&pattern[0]===""&&pattern[1]===""&&pattern[2]==="?"&&typeof pattern[3]=="string"&&/^[a-z]:$/i.test(pattern[3]),fdi=fileUNC?3:fileDrive?0:void 0,pdi=patternUNC?3:patternDrive?0:void 0;if(typeof fdi=="number"&&typeof pdi=="number"){let[fd,pd]=[file[fdi],pattern[pdi]];fd.toLowerCase()===pd.toLowerCase()&&(pattern[pdi]=fd,pdi>fdi?pattern=pattern.slice(pdi):fdi>pdi&&(file=file.slice(fdi)))}}let{optimizationLevel=1}=this.options;optimizationLevel>=2&&(file=this.levelTwoFileOptimize(file)),this.debug("matchOne",this,{file,pattern}),this.debug("matchOne",file.length,pattern.length);for(var fi=0,pi=0,fl=file.length,pl=pattern.length;fi<fl&&pi<pl;fi++,pi++){this.debug("matchOne loop");var p=pattern[pi],f=file[fi];if(this.debug(pattern,p,f),p===!1)return!1;if(p===GLOBSTAR){this.debug("GLOBSTAR",[pattern,p,f]);var fr=fi,pr=pi+1;if(pr===pl){for(this.debug("** at the end");fi<fl;fi++)if(file[fi]==="."||file[fi]===".."||!options.dot&&file[fi].charAt(0)===".")return!1;return!0}for(;fr<fl;){var swallowee=file[fr];if(this.debug(`
411
+ globstar while`,file,fr,pattern,pr,swallowee),this.matchOne(file.slice(fr),pattern.slice(pr),partial))return this.debug("globstar found match!",fr,fl,swallowee),!0;if(swallowee==="."||swallowee===".."||!options.dot&&swallowee.charAt(0)==="."){this.debug("dot detected!",file,fr,pattern,pr);break}this.debug("globstar swallow a segment, and continue"),fr++}return!!(partial&&(this.debug(`
412
+ >>> no match, partial?`,file,fr,pattern,pr),fr===fl))}let hit;if(typeof p=="string"?(hit=f===p,this.debug("string match",p,f,hit)):(hit=p.test(f),this.debug("pattern match",p,f,hit)),!hit)return!1}if(fi===fl&&pi===pl)return!0;if(fi===fl)return partial;if(pi===pl)return fi===fl-1&&file[fi]==="";throw new Error("wtf?")}braceExpand(){return braceExpand(this.pattern,this.options)}parse(pattern){assertValidPattern(pattern);let options=this.options;if(pattern==="**")return GLOBSTAR;if(pattern==="")return"";let m,fastTest=null;(m=pattern.match(starRE))?fastTest=options.dot?starTestDot:starTest:(m=pattern.match(starDotExtRE))?fastTest=(options.nocase?options.dot?starDotExtTestNocaseDot:starDotExtTestNocase:options.dot?starDotExtTestDot:starDotExtTest)(m[1]):(m=pattern.match(qmarksRE))?fastTest=(options.nocase?options.dot?qmarksTestNocaseDot:qmarksTestNocase:options.dot?qmarksTestDot:qmarksTest)(m):(m=pattern.match(starDotStarRE))?fastTest=options.dot?starDotStarTestDot:starDotStarTest:(m=pattern.match(dotStarRE))&&(fastTest=dotStarTest);let re=AST.fromGlob(pattern,this.options).toMMPattern();return fastTest?Object.assign(re,{test:fastTest}):re}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let set=this.set;if(!set.length)return this.regexp=!1,this.regexp;let options=this.options,twoStar=options.noglobstar?star2:options.dot?twoStarDot:twoStarNoDot,flags=new Set(options.nocase?["i"]:[]),re=set.map(pattern=>{let pp=pattern.map(p=>{if(p instanceof RegExp)for(let f of p.flags.split(""))flags.add(f);return typeof p=="string"?regExpEscape2(p):p===GLOBSTAR?GLOBSTAR:p._src});return pp.forEach((p,i)=>{let next=pp[i+1],prev=pp[i-1];p!==GLOBSTAR||prev===GLOBSTAR||(prev===void 0?next!==void 0&&next!==GLOBSTAR?pp[i+1]="(?:\\/|"+twoStar+"\\/)?"+next:pp[i]=twoStar:next===void 0?pp[i-1]=prev+"(?:\\/|"+twoStar+")?":next!==GLOBSTAR&&(pp[i-1]=prev+"(?:\\/|\\/"+twoStar+"\\/)"+next,pp[i+1]=GLOBSTAR))}),pp.filter(p=>p!==GLOBSTAR).join("/")}).join("|"),[open,close]=set.length>1?["(?:",")"]:["",""];re="^"+open+re+close+"$",this.negate&&(re="^(?!"+re+").+$");try{this.regexp=new RegExp(re,[...flags].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(p){return this.preserveMultipleSlashes?p.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(p)?["",...p.split(/\/+/)]:p.split(/\/+/)}match(f,partial=this.partial){if(this.debug("match",f,this.pattern),this.comment)return!1;if(this.empty)return f==="";if(f==="/"&&partial)return!0;let options=this.options;this.isWindows&&(f=f.split("\\").join("/"));let ff=this.slashSplit(f);this.debug(this.pattern,"split",ff);let set=this.set;this.debug(this.pattern,"set",set);let filename=ff[ff.length-1];if(!filename)for(let i=ff.length-2;!filename&&i>=0;i--)filename=ff[i];for(let i=0;i<set.length;i++){let pattern=set[i],file=ff;if(options.matchBase&&pattern.length===1&&(file=[filename]),this.matchOne(file,pattern,partial))return options.flipNegate?!0:!this.negate}return options.flipNegate?!1:this.negate}static defaults(def){return minimatch.defaults(def).Minimatch}};minimatch.AST=AST;minimatch.Minimatch=Minimatch;minimatch.escape=escape;minimatch.unescape=unescape;var perf=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,warned=new Set,PROCESS=typeof process=="object"&&process?process:{},emitWarning=(msg,type,code,fn)=>{typeof PROCESS.emitWarning=="function"?PROCESS.emitWarning(msg,type,code,fn):console.error(`[${code}] ${type}: ${msg}`)},AC=globalThis.AbortController,AS=globalThis.AbortSignal;if(typeof AC>"u"){AS=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(_,fn){this._onabort.push(fn)}},AC=class{constructor(){warnACPolyfill()}signal=new AS;abort(reason){if(!this.signal.aborted){this.signal.reason=reason,this.signal.aborted=!0;for(let fn of this.signal._onabort)fn(reason);this.signal.onabort?.(reason)}}};let printACPolyfillWarning=PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",warnACPolyfill=()=>{printACPolyfillWarning&&(printACPolyfillWarning=!1,emitWarning("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",warnACPolyfill))}}var shouldWarn=code=>!warned.has(code),TYPE=Symbol("type"),isPosInt=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),getUintArray=max=>isPosInt(max)?max<=Math.pow(2,8)?Uint8Array:max<=Math.pow(2,16)?Uint16Array:max<=Math.pow(2,32)?Uint32Array:max<=Number.MAX_SAFE_INTEGER?ZeroArray:null:null,ZeroArray=class extends Array{constructor(size){super(size),this.fill(0)}},Stack=class _Stack{heap;length;static#constructing=!1;static create(max){let HeapCls=getUintArray(max);if(!HeapCls)return[];_Stack.#constructing=!0;let s=new _Stack(max,HeapCls);return _Stack.#constructing=!1,s}constructor(max,HeapCls){if(!_Stack.#constructing)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new HeapCls(max),this.length=0}push(n){this.heap[this.length++]=n}pop(){return this.heap[--this.length]}},LRUCache=class _LRUCache{#max;#maxSize;#dispose;#disposeAfter;#fetchMethod;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#size;#calculatedSize;#keyMap;#keyList;#valList;#next;#prev;#head;#tail;#free;#disposed;#sizes;#starts;#ttls;#hasDispose;#hasFetchMethod;#hasDisposeAfter;static unsafeExposeInternals(c){return{starts:c.#starts,ttls:c.#ttls,sizes:c.#sizes,keyMap:c.#keyMap,keyList:c.#keyList,valList:c.#valList,next:c.#next,prev:c.#prev,get head(){return c.#head},get tail(){return c.#tail},free:c.#free,isBackgroundFetch:p=>c.#isBackgroundFetch(p),backgroundFetch:(k,index,options,context)=>c.#backgroundFetch(k,index,options,context),moveToTail:index=>c.#moveToTail(index),indexes:options=>c.#indexes(options),rindexes:options=>c.#rindexes(options),isStale:index=>c.#isStale(index)}}get max(){return this.#max}get maxSize(){return this.#maxSize}get calculatedSize(){return this.#calculatedSize}get size(){return this.#size}get fetchMethod(){return this.#fetchMethod}get dispose(){return this.#dispose}get disposeAfter(){return this.#disposeAfter}constructor(options){let{max=0,ttl,ttlResolution=1,ttlAutopurge,updateAgeOnGet,updateAgeOnHas,allowStale,dispose,disposeAfter,noDisposeOnSet,noUpdateTTL,maxSize=0,maxEntrySize=0,sizeCalculation,fetchMethod,noDeleteOnFetchRejection,noDeleteOnStaleGet,allowStaleOnFetchRejection,allowStaleOnFetchAbort,ignoreFetchAbort}=options;if(max!==0&&!isPosInt(max))throw new TypeError("max option must be a nonnegative integer");let UintArray=max?getUintArray(max):Array;if(!UintArray)throw new Error("invalid max value: "+max);if(this.#max=max,this.#maxSize=maxSize,this.maxEntrySize=maxEntrySize||this.#maxSize,this.sizeCalculation=sizeCalculation,this.sizeCalculation){if(!this.#maxSize&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(fetchMethod!==void 0&&typeof fetchMethod!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#fetchMethod=fetchMethod,this.#hasFetchMethod=!!fetchMethod,this.#keyMap=new Map,this.#keyList=new Array(max).fill(void 0),this.#valList=new Array(max).fill(void 0),this.#next=new UintArray(max),this.#prev=new UintArray(max),this.#head=0,this.#tail=0,this.#free=Stack.create(max),this.#size=0,this.#calculatedSize=0,typeof dispose=="function"&&(this.#dispose=dispose),typeof disposeAfter=="function"?(this.#disposeAfter=disposeAfter,this.#disposed=[]):(this.#disposeAfter=void 0,this.#disposed=void 0),this.#hasDispose=!!this.#dispose,this.#hasDisposeAfter=!!this.#disposeAfter,this.noDisposeOnSet=!!noDisposeOnSet,this.noUpdateTTL=!!noUpdateTTL,this.noDeleteOnFetchRejection=!!noDeleteOnFetchRejection,this.allowStaleOnFetchRejection=!!allowStaleOnFetchRejection,this.allowStaleOnFetchAbort=!!allowStaleOnFetchAbort,this.ignoreFetchAbort=!!ignoreFetchAbort,this.maxEntrySize!==0){if(this.#maxSize!==0&&!isPosInt(this.#maxSize))throw new TypeError("maxSize must be a positive integer if specified");if(!isPosInt(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#initializeSizeTracking()}if(this.allowStale=!!allowStale,this.noDeleteOnStaleGet=!!noDeleteOnStaleGet,this.updateAgeOnGet=!!updateAgeOnGet,this.updateAgeOnHas=!!updateAgeOnHas,this.ttlResolution=isPosInt(ttlResolution)||ttlResolution===0?ttlResolution:1,this.ttlAutopurge=!!ttlAutopurge,this.ttl=ttl||0,this.ttl){if(!isPosInt(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#initializeTTLTracking()}if(this.#max===0&&this.ttl===0&&this.#maxSize===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#max&&!this.#maxSize){let code="LRU_CACHE_UNBOUNDED";shouldWarn(code)&&(warned.add(code),emitWarning("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",code,_LRUCache))}}getRemainingTTL(key){return this.#keyMap.has(key)?1/0:0}#initializeTTLTracking(){let ttls=new ZeroArray(this.#max),starts=new ZeroArray(this.#max);this.#ttls=ttls,this.#starts=starts,this.#setItemTTL=(index,ttl,start=perf.now())=>{if(starts[index]=ttl!==0?start:0,ttls[index]=ttl,ttl!==0&&this.ttlAutopurge){let t2=setTimeout(()=>{this.#isStale(index)&&this.delete(this.#keyList[index])},ttl+1);t2.unref&&t2.unref()}},this.#updateItemAge=index=>{starts[index]=ttls[index]!==0?perf.now():0},this.#statusTTL=(status,index)=>{if(ttls[index]){let ttl=ttls[index],start=starts[index];if(!ttl||!start)return;status.ttl=ttl,status.start=start,status.now=cachedNow||getNow();let age=status.now-start;status.remainingTTL=ttl-age}};let cachedNow=0,getNow=()=>{let n=perf.now();if(this.ttlResolution>0){cachedNow=n;let t2=setTimeout(()=>cachedNow=0,this.ttlResolution);t2.unref&&t2.unref()}return n};this.getRemainingTTL=key=>{let index=this.#keyMap.get(key);if(index===void 0)return 0;let ttl=ttls[index],start=starts[index];if(!ttl||!start)return 1/0;let age=(cachedNow||getNow())-start;return ttl-age},this.#isStale=index=>{let s=starts[index],t2=ttls[index];return!!t2&&!!s&&(cachedNow||getNow())-s>t2}}#updateItemAge=()=>{};#statusTTL=()=>{};#setItemTTL=()=>{};#isStale=()=>!1;#initializeSizeTracking(){let sizes=new ZeroArray(this.#max);this.#calculatedSize=0,this.#sizes=sizes,this.#removeItemSize=index=>{this.#calculatedSize-=sizes[index],sizes[index]=0},this.#requireSize=(k,v,size,sizeCalculation)=>{if(this.#isBackgroundFetch(v))return 0;if(!isPosInt(size))if(sizeCalculation){if(typeof sizeCalculation!="function")throw new TypeError("sizeCalculation must be a function");if(size=sizeCalculation(v,k),!isPosInt(size))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return size},this.#addItemSize=(index,size,status)=>{if(sizes[index]=size,this.#maxSize){let maxSize=this.#maxSize-sizes[index];for(;this.#calculatedSize>maxSize;)this.#evict(!0)}this.#calculatedSize+=sizes[index],status&&(status.entrySize=size,status.totalCalculatedSize=this.#calculatedSize)}}#removeItemSize=_i=>{};#addItemSize=(_i,_s,_st)=>{};#requireSize=(_k,_v,size,sizeCalculation)=>{if(size||sizeCalculation)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#indexes({allowStale=this.allowStale}={}){if(this.#size)for(let i=this.#tail;!(!this.#isValidIndex(i)||((allowStale||!this.#isStale(i))&&(yield i),i===this.#head));)i=this.#prev[i]}*#rindexes({allowStale=this.allowStale}={}){if(this.#size)for(let i=this.#head;!(!this.#isValidIndex(i)||((allowStale||!this.#isStale(i))&&(yield i),i===this.#tail));)i=this.#next[i]}#isValidIndex(index){return index!==void 0&&this.#keyMap.get(this.#keyList[index])===index}*entries(){for(let i of this.#indexes())this.#valList[i]!==void 0&&this.#keyList[i]!==void 0&&!this.#isBackgroundFetch(this.#valList[i])&&(yield[this.#keyList[i],this.#valList[i]])}*rentries(){for(let i of this.#rindexes())this.#valList[i]!==void 0&&this.#keyList[i]!==void 0&&!this.#isBackgroundFetch(this.#valList[i])&&(yield[this.#keyList[i],this.#valList[i]])}*keys(){for(let i of this.#indexes()){let k=this.#keyList[i];k!==void 0&&!this.#isBackgroundFetch(this.#valList[i])&&(yield k)}}*rkeys(){for(let i of this.#rindexes()){let k=this.#keyList[i];k!==void 0&&!this.#isBackgroundFetch(this.#valList[i])&&(yield k)}}*values(){for(let i of this.#indexes())this.#valList[i]!==void 0&&!this.#isBackgroundFetch(this.#valList[i])&&(yield this.#valList[i])}*rvalues(){for(let i of this.#rindexes())this.#valList[i]!==void 0&&!this.#isBackgroundFetch(this.#valList[i])&&(yield this.#valList[i])}[Symbol.iterator](){return this.entries()}find(fn,getOptions={}){for(let i of this.#indexes()){let v=this.#valList[i],value=this.#isBackgroundFetch(v)?v.__staleWhileFetching:v;if(value!==void 0&&fn(value,this.#keyList[i],this))return this.get(this.#keyList[i],getOptions)}}forEach(fn,thisp=this){for(let i of this.#indexes()){let v=this.#valList[i],value=this.#isBackgroundFetch(v)?v.__staleWhileFetching:v;value!==void 0&&fn.call(thisp,value,this.#keyList[i],this)}}rforEach(fn,thisp=this){for(let i of this.#rindexes()){let v=this.#valList[i],value=this.#isBackgroundFetch(v)?v.__staleWhileFetching:v;value!==void 0&&fn.call(thisp,value,this.#keyList[i],this)}}purgeStale(){let deleted=!1;for(let i of this.#rindexes({allowStale:!0}))this.#isStale(i)&&(this.delete(this.#keyList[i]),deleted=!0);return deleted}info(key){let i=this.#keyMap.get(key);if(i===void 0)return;let v=this.#valList[i],value=this.#isBackgroundFetch(v)?v.__staleWhileFetching:v;if(value===void 0)return;let entry={value};if(this.#ttls&&this.#starts){let ttl=this.#ttls[i],start=this.#starts[i];if(ttl&&start){let remain=ttl-(perf.now()-start);entry.ttl=remain,entry.start=Date.now()}}return this.#sizes&&(entry.size=this.#sizes[i]),entry}dump(){let arr=[];for(let i of this.#indexes({allowStale:!0})){let key=this.#keyList[i],v=this.#valList[i],value=this.#isBackgroundFetch(v)?v.__staleWhileFetching:v;if(value===void 0||key===void 0)continue;let entry={value};if(this.#ttls&&this.#starts){entry.ttl=this.#ttls[i];let age=perf.now()-this.#starts[i];entry.start=Math.floor(Date.now()-age)}this.#sizes&&(entry.size=this.#sizes[i]),arr.unshift([key,entry])}return arr}load(arr){this.clear();for(let[key,entry]of arr){if(entry.start){let age=Date.now()-entry.start;entry.start=perf.now()-age}this.set(key,entry.value,entry)}}set(k,v,setOptions={}){if(v===void 0)return this.delete(k),this;let{ttl=this.ttl,start,noDisposeOnSet=this.noDisposeOnSet,sizeCalculation=this.sizeCalculation,status}=setOptions,{noUpdateTTL=this.noUpdateTTL}=setOptions,size=this.#requireSize(k,v,setOptions.size||0,sizeCalculation);if(this.maxEntrySize&&size>this.maxEntrySize)return status&&(status.set="miss",status.maxEntrySizeExceeded=!0),this.delete(k),this;let index=this.#size===0?void 0:this.#keyMap.get(k);if(index===void 0)index=this.#size===0?this.#tail:this.#free.length!==0?this.#free.pop():this.#size===this.#max?this.#evict(!1):this.#size,this.#keyList[index]=k,this.#valList[index]=v,this.#keyMap.set(k,index),this.#next[this.#tail]=index,this.#prev[index]=this.#tail,this.#tail=index,this.#size++,this.#addItemSize(index,size,status),status&&(status.set="add"),noUpdateTTL=!1;else{this.#moveToTail(index);let oldVal=this.#valList[index];if(v!==oldVal){if(this.#hasFetchMethod&&this.#isBackgroundFetch(oldVal)){oldVal.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:s}=oldVal;s!==void 0&&!noDisposeOnSet&&(this.#hasDispose&&this.#dispose?.(s,k,"set"),this.#hasDisposeAfter&&this.#disposed?.push([s,k,"set"]))}else noDisposeOnSet||(this.#hasDispose&&this.#dispose?.(oldVal,k,"set"),this.#hasDisposeAfter&&this.#disposed?.push([oldVal,k,"set"]));if(this.#removeItemSize(index),this.#addItemSize(index,size,status),this.#valList[index]=v,status){status.set="replace";let oldValue=oldVal&&this.#isBackgroundFetch(oldVal)?oldVal.__staleWhileFetching:oldVal;oldValue!==void 0&&(status.oldValue=oldValue)}}else status&&(status.set="update")}if(ttl!==0&&!this.#ttls&&this.#initializeTTLTracking(),this.#ttls&&(noUpdateTTL||this.#setItemTTL(index,ttl,start),status&&this.#statusTTL(status,index)),!noDisposeOnSet&&this.#hasDisposeAfter&&this.#disposed){let dt=this.#disposed,task;for(;task=dt?.shift();)this.#disposeAfter?.(...task)}return this}pop(){try{for(;this.#size;){let val=this.#valList[this.#head];if(this.#evict(!0),this.#isBackgroundFetch(val)){if(val.__staleWhileFetching)return val.__staleWhileFetching}else if(val!==void 0)return val}}finally{if(this.#hasDisposeAfter&&this.#disposed){let dt=this.#disposed,task;for(;task=dt?.shift();)this.#disposeAfter?.(...task)}}}#evict(free){let head=this.#head,k=this.#keyList[head],v=this.#valList[head];return this.#hasFetchMethod&&this.#isBackgroundFetch(v)?v.__abortController.abort(new Error("evicted")):(this.#hasDispose||this.#hasDisposeAfter)&&(this.#hasDispose&&this.#dispose?.(v,k,"evict"),this.#hasDisposeAfter&&this.#disposed?.push([v,k,"evict"])),this.#removeItemSize(head),free&&(this.#keyList[head]=void 0,this.#valList[head]=void 0,this.#free.push(head)),this.#size===1?(this.#head=this.#tail=0,this.#free.length=0):this.#head=this.#next[head],this.#keyMap.delete(k),this.#size--,head}has(k,hasOptions={}){let{updateAgeOnHas=this.updateAgeOnHas,status}=hasOptions,index=this.#keyMap.get(k);if(index!==void 0){let v=this.#valList[index];if(this.#isBackgroundFetch(v)&&v.__staleWhileFetching===void 0)return!1;if(this.#isStale(index))status&&(status.has="stale",this.#statusTTL(status,index));else return updateAgeOnHas&&this.#updateItemAge(index),status&&(status.has="hit",this.#statusTTL(status,index)),!0}else status&&(status.has="miss");return!1}peek(k,peekOptions={}){let{allowStale=this.allowStale}=peekOptions,index=this.#keyMap.get(k);if(index===void 0||!allowStale&&this.#isStale(index))return;let v=this.#valList[index];return this.#isBackgroundFetch(v)?v.__staleWhileFetching:v}#backgroundFetch(k,index,options,context){let v=index===void 0?void 0:this.#valList[index];if(this.#isBackgroundFetch(v))return v;let ac=new AC,{signal}=options;signal?.addEventListener("abort",()=>ac.abort(signal.reason),{signal:ac.signal});let fetchOpts={signal:ac.signal,options,context},cb=(v2,updateCache=!1)=>{let{aborted}=ac.signal,ignoreAbort=options.ignoreFetchAbort&&v2!==void 0;if(options.status&&(aborted&&!updateCache?(options.status.fetchAborted=!0,options.status.fetchError=ac.signal.reason,ignoreAbort&&(options.status.fetchAbortIgnored=!0)):options.status.fetchResolved=!0),aborted&&!ignoreAbort&&!updateCache)return fetchFail(ac.signal.reason);let bf2=p;return this.#valList[index]===p&&(v2===void 0?bf2.__staleWhileFetching?this.#valList[index]=bf2.__staleWhileFetching:this.delete(k):(options.status&&(options.status.fetchUpdated=!0),this.set(k,v2,fetchOpts.options))),v2},eb=er=>(options.status&&(options.status.fetchRejected=!0,options.status.fetchError=er),fetchFail(er)),fetchFail=er=>{let{aborted}=ac.signal,allowStaleAborted=aborted&&options.allowStaleOnFetchAbort,allowStale=allowStaleAborted||options.allowStaleOnFetchRejection,noDelete=allowStale||options.noDeleteOnFetchRejection,bf2=p;if(this.#valList[index]===p&&(!noDelete||bf2.__staleWhileFetching===void 0?this.delete(k):allowStaleAborted||(this.#valList[index]=bf2.__staleWhileFetching)),allowStale)return options.status&&bf2.__staleWhileFetching!==void 0&&(options.status.returnedStale=!0),bf2.__staleWhileFetching;if(bf2.__returned===bf2)throw er},pcall=(res,rej)=>{let fmp=this.#fetchMethod?.(k,v,fetchOpts);fmp&&fmp instanceof Promise&&fmp.then(v2=>res(v2===void 0?void 0:v2),rej),ac.signal.addEventListener("abort",()=>{(!options.ignoreFetchAbort||options.allowStaleOnFetchAbort)&&(res(void 0),options.allowStaleOnFetchAbort&&(res=v2=>cb(v2,!0)))})};options.status&&(options.status.fetchDispatched=!0);let p=new Promise(pcall).then(cb,eb),bf=Object.assign(p,{__abortController:ac,__staleWhileFetching:v,__returned:void 0});return index===void 0?(this.set(k,bf,{...fetchOpts.options,status:void 0}),index=this.#keyMap.get(k)):this.#valList[index]=bf,bf}#isBackgroundFetch(p){if(!this.#hasFetchMethod)return!1;let b=p;return!!b&&b instanceof Promise&&b.hasOwnProperty("__staleWhileFetching")&&b.__abortController instanceof AC}async fetch(k,fetchOptions={}){let{allowStale=this.allowStale,updateAgeOnGet=this.updateAgeOnGet,noDeleteOnStaleGet=this.noDeleteOnStaleGet,ttl=this.ttl,noDisposeOnSet=this.noDisposeOnSet,size=0,sizeCalculation=this.sizeCalculation,noUpdateTTL=this.noUpdateTTL,noDeleteOnFetchRejection=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection=this.allowStaleOnFetchRejection,ignoreFetchAbort=this.ignoreFetchAbort,allowStaleOnFetchAbort=this.allowStaleOnFetchAbort,context,forceRefresh=!1,status,signal}=fetchOptions;if(!this.#hasFetchMethod)return status&&(status.fetch="get"),this.get(k,{allowStale,updateAgeOnGet,noDeleteOnStaleGet,status});let options={allowStale,updateAgeOnGet,noDeleteOnStaleGet,ttl,noDisposeOnSet,size,sizeCalculation,noUpdateTTL,noDeleteOnFetchRejection,allowStaleOnFetchRejection,allowStaleOnFetchAbort,ignoreFetchAbort,status,signal},index=this.#keyMap.get(k);if(index===void 0){status&&(status.fetch="miss");let p=this.#backgroundFetch(k,index,options,context);return p.__returned=p}else{let v=this.#valList[index];if(this.#isBackgroundFetch(v)){let stale=allowStale&&v.__staleWhileFetching!==void 0;return status&&(status.fetch="inflight",stale&&(status.returnedStale=!0)),stale?v.__staleWhileFetching:v.__returned=v}let isStale=this.#isStale(index);if(!forceRefresh&&!isStale)return status&&(status.fetch="hit"),this.#moveToTail(index),updateAgeOnGet&&this.#updateItemAge(index),status&&this.#statusTTL(status,index),v;let p=this.#backgroundFetch(k,index,options,context),staleVal=p.__staleWhileFetching!==void 0&&allowStale;return status&&(status.fetch=isStale?"stale":"refresh",staleVal&&isStale&&(status.returnedStale=!0)),staleVal?p.__staleWhileFetching:p.__returned=p}}get(k,getOptions={}){let{allowStale=this.allowStale,updateAgeOnGet=this.updateAgeOnGet,noDeleteOnStaleGet=this.noDeleteOnStaleGet,status}=getOptions,index=this.#keyMap.get(k);if(index!==void 0){let value=this.#valList[index],fetching=this.#isBackgroundFetch(value);return status&&this.#statusTTL(status,index),this.#isStale(index)?(status&&(status.get="stale"),fetching?(status&&allowStale&&value.__staleWhileFetching!==void 0&&(status.returnedStale=!0),allowStale?value.__staleWhileFetching:void 0):(noDeleteOnStaleGet||this.delete(k),status&&allowStale&&(status.returnedStale=!0),allowStale?value:void 0)):(status&&(status.get="hit"),fetching?value.__staleWhileFetching:(this.#moveToTail(index),updateAgeOnGet&&this.#updateItemAge(index),value))}else status&&(status.get="miss")}#connect(p,n){this.#prev[n]=p,this.#next[p]=n}#moveToTail(index){index!==this.#tail&&(index===this.#head?this.#head=this.#next[index]:this.#connect(this.#prev[index],this.#next[index]),this.#connect(this.#tail,index),this.#tail=index)}delete(k){let deleted=!1;if(this.#size!==0){let index=this.#keyMap.get(k);if(index!==void 0)if(deleted=!0,this.#size===1)this.clear();else{this.#removeItemSize(index);let v=this.#valList[index];if(this.#isBackgroundFetch(v)?v.__abortController.abort(new Error("deleted")):(this.#hasDispose||this.#hasDisposeAfter)&&(this.#hasDispose&&this.#dispose?.(v,k,"delete"),this.#hasDisposeAfter&&this.#disposed?.push([v,k,"delete"])),this.#keyMap.delete(k),this.#keyList[index]=void 0,this.#valList[index]=void 0,index===this.#tail)this.#tail=this.#prev[index];else if(index===this.#head)this.#head=this.#next[index];else{let pi=this.#prev[index];this.#next[pi]=this.#next[index];let ni=this.#next[index];this.#prev[ni]=this.#prev[index]}this.#size--,this.#free.push(index)}}if(this.#hasDisposeAfter&&this.#disposed?.length){let dt=this.#disposed,task;for(;task=dt?.shift();)this.#disposeAfter?.(...task)}return deleted}clear(){for(let index of this.#rindexes({allowStale:!0})){let v=this.#valList[index];if(this.#isBackgroundFetch(v))v.__abortController.abort(new Error("deleted"));else{let k=this.#keyList[index];this.#hasDispose&&this.#dispose?.(v,k,"delete"),this.#hasDisposeAfter&&this.#disposed?.push([v,k,"delete"])}}if(this.#keyMap.clear(),this.#valList.fill(void 0),this.#keyList.fill(void 0),this.#ttls&&this.#starts&&(this.#ttls.fill(0),this.#starts.fill(0)),this.#sizes&&this.#sizes.fill(0),this.#head=0,this.#tail=0,this.#free.length=0,this.#calculatedSize=0,this.#size=0,this.#hasDisposeAfter&&this.#disposed){let dt=this.#disposed,task;for(;task=dt?.shift();)this.#disposeAfter?.(...task)}}};var import_path13=require("path"),import_url=require("url"),actualFS=__toESM(require("fs"),1),import_fs5=require("fs"),import_promises2=require("fs/promises");var import_events=require("events"),import_stream=__toESM(require("stream"),1),import_string_decoder=require("string_decoder"),proc=typeof process=="object"&&process?process:{stdout:null,stderr:null},isStream=s=>!!s&&typeof s=="object"&&(s instanceof Minipass||s instanceof import_stream.default||isReadable(s)||isWritable(s)),isReadable=s=>!!s&&typeof s=="object"&&s instanceof import_events.EventEmitter&&typeof s.pipe=="function"&&s.pipe!==import_stream.default.Writable.prototype.pipe,isWritable=s=>!!s&&typeof s=="object"&&s instanceof import_events.EventEmitter&&typeof s.write=="function"&&typeof s.end=="function",EOF=Symbol("EOF"),MAYBE_EMIT_END=Symbol("maybeEmitEnd"),EMITTED_END=Symbol("emittedEnd"),EMITTING_END=Symbol("emittingEnd"),EMITTED_ERROR=Symbol("emittedError"),CLOSED=Symbol("closed"),READ=Symbol("read"),FLUSH=Symbol("flush"),FLUSHCHUNK=Symbol("flushChunk"),ENCODING=Symbol("encoding"),DECODER=Symbol("decoder"),FLOWING=Symbol("flowing"),PAUSED=Symbol("paused"),RESUME=Symbol("resume"),BUFFER=Symbol("buffer"),PIPES=Symbol("pipes"),BUFFERLENGTH=Symbol("bufferLength"),BUFFERPUSH=Symbol("bufferPush"),BUFFERSHIFT=Symbol("bufferShift"),OBJECTMODE=Symbol("objectMode"),DESTROYED=Symbol("destroyed"),ERROR=Symbol("error"),EMITDATA=Symbol("emitData"),EMITEND=Symbol("emitEnd"),EMITEND2=Symbol("emitEnd2"),ASYNC=Symbol("async"),ABORT=Symbol("abort"),ABORTED=Symbol("aborted"),SIGNAL=Symbol("signal"),DATALISTENERS=Symbol("dataListeners"),DISCARDED=Symbol("discarded"),defer=fn=>Promise.resolve().then(fn),nodefer=fn=>fn(),isEndish=ev=>ev==="end"||ev==="finish"||ev==="prefinish",isArrayBufferLike=b=>b instanceof ArrayBuffer||!!b&&typeof b=="object"&&b.constructor&&b.constructor.name==="ArrayBuffer"&&b.byteLength>=0,isArrayBufferView=b=>!Buffer.isBuffer(b)&&ArrayBuffer.isView(b),Pipe=class{src;dest;opts;ondrain;constructor(src,dest,opts){this.src=src,this.dest=dest,this.opts=opts,this.ondrain=()=>src[RESUME](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(_er){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},PipeProxyErrors=class extends Pipe{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(src,dest,opts){super(src,dest,opts),this.proxyErrors=er=>dest.emit("error",er),src.on("error",this.proxyErrors)}},isObjectModeOptions=o=>!!o.objectMode,isEncodingOptions=o=>!o.objectMode&&!!o.encoding&&o.encoding!=="buffer",Minipass=class extends import_events.EventEmitter{[FLOWING]=!1;[PAUSED]=!1;[PIPES]=[];[BUFFER]=[];[OBJECTMODE];[ENCODING];[ASYNC];[DECODER];[EOF]=!1;[EMITTED_END]=!1;[EMITTING_END]=!1;[CLOSED]=!1;[EMITTED_ERROR]=null;[BUFFERLENGTH]=0;[DESTROYED]=!1;[SIGNAL];[ABORTED]=!1;[DATALISTENERS]=0;[DISCARDED]=!1;writable=!0;readable=!0;constructor(...args){let options=args[0]||{};if(super(),options.objectMode&&typeof options.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");isObjectModeOptions(options)?(this[OBJECTMODE]=!0,this[ENCODING]=null):isEncodingOptions(options)?(this[ENCODING]=options.encoding,this[OBJECTMODE]=!1):(this[OBJECTMODE]=!1,this[ENCODING]=null),this[ASYNC]=!!options.async,this[DECODER]=this[ENCODING]?new import_string_decoder.StringDecoder(this[ENCODING]):null,options&&options.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[BUFFER]}),options&&options.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[PIPES]});let{signal}=options;signal&&(this[SIGNAL]=signal,signal.aborted?this[ABORT]():signal.addEventListener("abort",()=>this[ABORT]()))}get bufferLength(){return this[BUFFERLENGTH]}get encoding(){return this[ENCODING]}set encoding(_enc){throw new Error("Encoding must be set at instantiation time")}setEncoding(_enc){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[OBJECTMODE]}set objectMode(_om){throw new Error("objectMode must be set at instantiation time")}get async(){return this[ASYNC]}set async(a){this[ASYNC]=this[ASYNC]||!!a}[ABORT](){this[ABORTED]=!0,this.emit("abort",this[SIGNAL]?.reason),this.destroy(this[SIGNAL]?.reason)}get aborted(){return this[ABORTED]}set aborted(_){}write(chunk,encoding,cb){if(this[ABORTED])return!1;if(this[EOF])throw new Error("write after end");if(this[DESTROYED])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof encoding=="function"&&(cb=encoding,encoding="utf8"),encoding||(encoding="utf8");let fn=this[ASYNC]?defer:nodefer;if(!this[OBJECTMODE]&&!Buffer.isBuffer(chunk)){if(isArrayBufferView(chunk))chunk=Buffer.from(chunk.buffer,chunk.byteOffset,chunk.byteLength);else if(isArrayBufferLike(chunk))chunk=Buffer.from(chunk);else if(typeof chunk!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[OBJECTMODE]?(this[FLOWING]&&this[BUFFERLENGTH]!==0&&this[FLUSH](!0),this[FLOWING]?this.emit("data",chunk):this[BUFFERPUSH](chunk),this[BUFFERLENGTH]!==0&&this.emit("readable"),cb&&fn(cb),this[FLOWING]):chunk.length?(typeof chunk=="string"&&!(encoding===this[ENCODING]&&!this[DECODER]?.lastNeed)&&(chunk=Buffer.from(chunk,encoding)),Buffer.isBuffer(chunk)&&this[ENCODING]&&(chunk=this[DECODER].write(chunk)),this[FLOWING]&&this[BUFFERLENGTH]!==0&&this[FLUSH](!0),this[FLOWING]?this.emit("data",chunk):this[BUFFERPUSH](chunk),this[BUFFERLENGTH]!==0&&this.emit("readable"),cb&&fn(cb),this[FLOWING]):(this[BUFFERLENGTH]!==0&&this.emit("readable"),cb&&fn(cb),this[FLOWING])}read(n){if(this[DESTROYED])return null;if(this[DISCARDED]=!1,this[BUFFERLENGTH]===0||n===0||n&&n>this[BUFFERLENGTH])return this[MAYBE_EMIT_END](),null;this[OBJECTMODE]&&(n=null),this[BUFFER].length>1&&!this[OBJECTMODE]&&(this[BUFFER]=[this[ENCODING]?this[BUFFER].join(""):Buffer.concat(this[BUFFER],this[BUFFERLENGTH])]);let ret=this[READ](n||null,this[BUFFER][0]);return this[MAYBE_EMIT_END](),ret}[READ](n,chunk){if(this[OBJECTMODE])this[BUFFERSHIFT]();else{let c=chunk;n===c.length||n===null?this[BUFFERSHIFT]():typeof c=="string"?(this[BUFFER][0]=c.slice(n),chunk=c.slice(0,n),this[BUFFERLENGTH]-=n):(this[BUFFER][0]=c.subarray(n),chunk=c.subarray(0,n),this[BUFFERLENGTH]-=n)}return this.emit("data",chunk),!this[BUFFER].length&&!this[EOF]&&this.emit("drain"),chunk}end(chunk,encoding,cb){return typeof chunk=="function"&&(cb=chunk,chunk=void 0),typeof encoding=="function"&&(cb=encoding,encoding="utf8"),chunk!==void 0&&this.write(chunk,encoding),cb&&this.once("end",cb),this[EOF]=!0,this.writable=!1,(this[FLOWING]||!this[PAUSED])&&this[MAYBE_EMIT_END](),this}[RESUME](){this[DESTROYED]||(!this[DATALISTENERS]&&!this[PIPES].length&&(this[DISCARDED]=!0),this[PAUSED]=!1,this[FLOWING]=!0,this.emit("resume"),this[BUFFER].length?this[FLUSH]():this[EOF]?this[MAYBE_EMIT_END]():this.emit("drain"))}resume(){return this[RESUME]()}pause(){this[FLOWING]=!1,this[PAUSED]=!0,this[DISCARDED]=!1}get destroyed(){return this[DESTROYED]}get flowing(){return this[FLOWING]}get paused(){return this[PAUSED]}[BUFFERPUSH](chunk){this[OBJECTMODE]?this[BUFFERLENGTH]+=1:this[BUFFERLENGTH]+=chunk.length,this[BUFFER].push(chunk)}[BUFFERSHIFT](){return this[OBJECTMODE]?this[BUFFERLENGTH]-=1:this[BUFFERLENGTH]-=this[BUFFER][0].length,this[BUFFER].shift()}[FLUSH](noDrain=!1){do;while(this[FLUSHCHUNK](this[BUFFERSHIFT]())&&this[BUFFER].length);!noDrain&&!this[BUFFER].length&&!this[EOF]&&this.emit("drain")}[FLUSHCHUNK](chunk){return this.emit("data",chunk),this[FLOWING]}pipe(dest,opts){if(this[DESTROYED])return dest;this[DISCARDED]=!1;let ended=this[EMITTED_END];return opts=opts||{},dest===proc.stdout||dest===proc.stderr?opts.end=!1:opts.end=opts.end!==!1,opts.proxyErrors=!!opts.proxyErrors,ended?opts.end&&dest.end():(this[PIPES].push(opts.proxyErrors?new PipeProxyErrors(this,dest,opts):new Pipe(this,dest,opts)),this[ASYNC]?defer(()=>this[RESUME]()):this[RESUME]()),dest}unpipe(dest){let p=this[PIPES].find(p2=>p2.dest===dest);p&&(this[PIPES].length===1?(this[FLOWING]&&this[DATALISTENERS]===0&&(this[FLOWING]=!1),this[PIPES]=[]):this[PIPES].splice(this[PIPES].indexOf(p),1),p.unpipe())}addListener(ev,handler){return this.on(ev,handler)}on(ev,handler){let ret=super.on(ev,handler);if(ev==="data")this[DISCARDED]=!1,this[DATALISTENERS]++,!this[PIPES].length&&!this[FLOWING]&&this[RESUME]();else if(ev==="readable"&&this[BUFFERLENGTH]!==0)super.emit("readable");else if(isEndish(ev)&&this[EMITTED_END])super.emit(ev),this.removeAllListeners(ev);else if(ev==="error"&&this[EMITTED_ERROR]){let h=handler;this[ASYNC]?defer(()=>h.call(this,this[EMITTED_ERROR])):h.call(this,this[EMITTED_ERROR])}return ret}removeListener(ev,handler){return this.off(ev,handler)}off(ev,handler){let ret=super.off(ev,handler);return ev==="data"&&(this[DATALISTENERS]=this.listeners("data").length,this[DATALISTENERS]===0&&!this[DISCARDED]&&!this[PIPES].length&&(this[FLOWING]=!1)),ret}removeAllListeners(ev){let ret=super.removeAllListeners(ev);return(ev==="data"||ev===void 0)&&(this[DATALISTENERS]=0,!this[DISCARDED]&&!this[PIPES].length&&(this[FLOWING]=!1)),ret}get emittedEnd(){return this[EMITTED_END]}[MAYBE_EMIT_END](){!this[EMITTING_END]&&!this[EMITTED_END]&&!this[DESTROYED]&&this[BUFFER].length===0&&this[EOF]&&(this[EMITTING_END]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[CLOSED]&&this.emit("close"),this[EMITTING_END]=!1)}emit(ev,...args){let data=args[0];if(ev!=="error"&&ev!=="close"&&ev!==DESTROYED&&this[DESTROYED])return!1;if(ev==="data")return!this[OBJECTMODE]&&!data?!1:this[ASYNC]?(defer(()=>this[EMITDATA](data)),!0):this[EMITDATA](data);if(ev==="end")return this[EMITEND]();if(ev==="close"){if(this[CLOSED]=!0,!this[EMITTED_END]&&!this[DESTROYED])return!1;let ret2=super.emit("close");return this.removeAllListeners("close"),ret2}else if(ev==="error"){this[EMITTED_ERROR]=data,super.emit(ERROR,data);let ret2=!this[SIGNAL]||this.listeners("error").length?super.emit("error",data):!1;return this[MAYBE_EMIT_END](),ret2}else if(ev==="resume"){let ret2=super.emit("resume");return this[MAYBE_EMIT_END](),ret2}else if(ev==="finish"||ev==="prefinish"){let ret2=super.emit(ev);return this.removeAllListeners(ev),ret2}let ret=super.emit(ev,...args);return this[MAYBE_EMIT_END](),ret}[EMITDATA](data){for(let p of this[PIPES])p.dest.write(data)===!1&&this.pause();let ret=this[DISCARDED]?!1:super.emit("data",data);return this[MAYBE_EMIT_END](),ret}[EMITEND](){return this[EMITTED_END]?!1:(this[EMITTED_END]=!0,this.readable=!1,this[ASYNC]?(defer(()=>this[EMITEND2]()),!0):this[EMITEND2]())}[EMITEND2](){if(this[DECODER]){let data=this[DECODER].end();if(data){for(let p of this[PIPES])p.dest.write(data);this[DISCARDED]||super.emit("data",data)}}for(let p of this[PIPES])p.end();let ret=super.emit("end");return this.removeAllListeners("end"),ret}async collect(){let buf=Object.assign([],{dataLength:0});this[OBJECTMODE]||(buf.dataLength=0);let p=this.promise();return this.on("data",c=>{buf.push(c),this[OBJECTMODE]||(buf.dataLength+=c.length)}),await p,buf}async concat(){if(this[OBJECTMODE])throw new Error("cannot concat in objectMode");let buf=await this.collect();return this[ENCODING]?buf.join(""):Buffer.concat(buf,buf.dataLength)}async promise(){return new Promise((resolve2,reject)=>{this.on(DESTROYED,()=>reject(new Error("stream destroyed"))),this.on("error",er=>reject(er)),this.on("end",()=>resolve2())})}[Symbol.asyncIterator](){this[DISCARDED]=!1;let stopped=!1,stop=async()=>(this.pause(),stopped=!0,{value:void 0,done:!0});return{next:()=>{if(stopped)return stop();let res=this.read();if(res!==null)return Promise.resolve({done:!1,value:res});if(this[EOF])return stop();let resolve2,reject,onerr=er=>{this.off("data",ondata),this.off("end",onend),this.off(DESTROYED,ondestroy),stop(),reject(er)},ondata=value=>{this.off("error",onerr),this.off("end",onend),this.off(DESTROYED,ondestroy),this.pause(),resolve2({value,done:!!this[EOF]})},onend=()=>{this.off("error",onerr),this.off("data",ondata),this.off(DESTROYED,ondestroy),stop(),resolve2({done:!0,value:void 0})},ondestroy=()=>onerr(new Error("stream destroyed"));return new Promise((res2,rej)=>{reject=rej,resolve2=res2,this.once(DESTROYED,ondestroy),this.once("error",onerr),this.once("end",onend),this.once("data",ondata)})},throw:stop,return:stop,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[DISCARDED]=!1;let stopped=!1,stop=()=>(this.pause(),this.off(ERROR,stop),this.off(DESTROYED,stop),this.off("end",stop),stopped=!0,{done:!0,value:void 0}),next=()=>{if(stopped)return stop();let value=this.read();return value===null?stop():{done:!1,value}};return this.once("end",stop),this.once(ERROR,stop),this.once(DESTROYED,stop),{next,throw:stop,return:stop,[Symbol.iterator](){return this}}}destroy(er){if(this[DESTROYED])return er?this.emit("error",er):this.emit(DESTROYED),this;this[DESTROYED]=!0,this[DISCARDED]=!0,this[BUFFER].length=0,this[BUFFERLENGTH]=0;let wc=this;return typeof wc.close=="function"&&!this[CLOSED]&&wc.close(),er?this.emit("error",er):this.emit(DESTROYED),this}static get isStream(){return isStream}};var realpathSync=import_fs5.realpathSync.native,defaultFS={lstatSync:import_fs5.lstatSync,readdir:import_fs5.readdir,readdirSync:import_fs5.readdirSync,readlinkSync:import_fs5.readlinkSync,realpathSync,promises:{lstat:import_promises2.lstat,readdir:import_promises2.readdir,readlink:import_promises2.readlink,realpath:import_promises2.realpath}},fsFromOption=fsOption=>!fsOption||fsOption===defaultFS||fsOption===actualFS?defaultFS:{...defaultFS,...fsOption,promises:{...defaultFS.promises,...fsOption.promises||{}}},uncDriveRegexp=/^\\\\\?\\([a-z]:)\\?$/i,uncToDrive=rootPath=>rootPath.replace(/\//g,"\\").replace(uncDriveRegexp,"$1\\"),eitherSep=/[\\\/]/,UNKNOWN=0,IFIFO=1,IFCHR=2,IFDIR=4,IFBLK=6,IFREG=8,IFLNK=10,IFSOCK=12,IFMT=15,IFMT_UNKNOWN=~IFMT,READDIR_CALLED=16,LSTAT_CALLED=32,ENOTDIR=64,ENOENT=128,ENOREADLINK=256,ENOREALPATH=512,ENOCHILD=ENOTDIR|ENOENT|ENOREALPATH,TYPEMASK=1023,entToType=s=>s.isFile()?IFREG:s.isDirectory()?IFDIR:s.isSymbolicLink()?IFLNK:s.isCharacterDevice()?IFCHR:s.isBlockDevice()?IFBLK:s.isSocket()?IFSOCK:s.isFIFO()?IFIFO:UNKNOWN,normalizeCache=new Map,normalize=s=>{let c=normalizeCache.get(s);if(c)return c;let n=s.normalize("NFKD");return normalizeCache.set(s,n),n},normalizeNocaseCache=new Map,normalizeNocase=s=>{let c=normalizeNocaseCache.get(s);if(c)return c;let n=normalize(s.toLowerCase());return normalizeNocaseCache.set(s,n),n},ResolveCache=class extends LRUCache{constructor(){super({max:256})}},ChildrenCache=class extends LRUCache{constructor(maxSize=16*1024){super({maxSize,sizeCalculation:a=>a.length+1})}},setAsCwd=Symbol("PathScurry setAsCwd"),PathBase=class{name;root;roots;parent;nocase;#fs;#dev;get dev(){return this.#dev}#mode;get mode(){return this.#mode}#nlink;get nlink(){return this.#nlink}#uid;get uid(){return this.#uid}#gid;get gid(){return this.#gid}#rdev;get rdev(){return this.#rdev}#blksize;get blksize(){return this.#blksize}#ino;get ino(){return this.#ino}#size;get size(){return this.#size}#blocks;get blocks(){return this.#blocks}#atimeMs;get atimeMs(){return this.#atimeMs}#mtimeMs;get mtimeMs(){return this.#mtimeMs}#ctimeMs;get ctimeMs(){return this.#ctimeMs}#birthtimeMs;get birthtimeMs(){return this.#birthtimeMs}#atime;get atime(){return this.#atime}#mtime;get mtime(){return this.#mtime}#ctime;get ctime(){return this.#ctime}#birthtime;get birthtime(){return this.#birthtime}#matchName;#depth;#fullpath;#fullpathPosix;#relative;#relativePosix;#type;#children;#linkTarget;#realpath;get path(){return(this.parent||this).fullpath()}constructor(name,type=UNKNOWN,root,roots,nocase,children,opts){this.name=name,this.#matchName=nocase?normalizeNocase(name):normalize(name),this.#type=type&TYPEMASK,this.nocase=nocase,this.roots=roots,this.root=root||this,this.#children=children,this.#fullpath=opts.fullpath,this.#relative=opts.relative,this.#relativePosix=opts.relativePosix,this.parent=opts.parent,this.parent?this.#fs=this.parent.#fs:this.#fs=fsFromOption(opts.fs)}depth(){return this.#depth!==void 0?this.#depth:this.parent?this.#depth=this.parent.depth()+1:this.#depth=0}childrenCache(){return this.#children}resolve(path9){if(!path9)return this;let rootPath=this.getRootString(path9),dirParts=path9.substring(rootPath.length).split(this.splitSep);return rootPath?this.getRoot(rootPath).#resolveParts(dirParts):this.#resolveParts(dirParts)}#resolveParts(dirParts){let p=this;for(let part of dirParts)p=p.child(part);return p}children(){let cached=this.#children.get(this);if(cached)return cached;let children=Object.assign([],{provisional:0});return this.#children.set(this,children),this.#type&=~READDIR_CALLED,children}child(pathPart,opts){if(pathPart===""||pathPart===".")return this;if(pathPart==="..")return this.parent||this;let children=this.children(),name=this.nocase?normalizeNocase(pathPart):normalize(pathPart);for(let p of children)if(p.#matchName===name)return p;let s=this.parent?this.sep:"",fullpath=this.#fullpath?this.#fullpath+s+pathPart:void 0,pchild=this.newChild(pathPart,UNKNOWN,{...opts,parent:this,fullpath});return this.canReaddir()||(pchild.#type|=ENOENT),children.push(pchild),pchild}relative(){if(this.#relative!==void 0)return this.#relative;let name=this.name,p=this.parent;if(!p)return this.#relative=this.name;let pv=p.relative();return pv+(!pv||!p.parent?"":this.sep)+name}relativePosix(){if(this.sep==="/")return this.relative();if(this.#relativePosix!==void 0)return this.#relativePosix;let name=this.name,p=this.parent;if(!p)return this.#relativePosix=this.fullpathPosix();let pv=p.relativePosix();return pv+(!pv||!p.parent?"":"/")+name}fullpath(){if(this.#fullpath!==void 0)return this.#fullpath;let name=this.name,p=this.parent;if(!p)return this.#fullpath=this.name;let fp=p.fullpath()+(p.parent?this.sep:"")+name;return this.#fullpath=fp}fullpathPosix(){if(this.#fullpathPosix!==void 0)return this.#fullpathPosix;if(this.sep==="/")return this.#fullpathPosix=this.fullpath();if(!this.parent){let p2=this.fullpath().replace(/\\/g,"/");return/^[a-z]:\//i.test(p2)?this.#fullpathPosix=`//?/${p2}`:this.#fullpathPosix=p2}let p=this.parent,pfpp=p.fullpathPosix(),fpp=pfpp+(!pfpp||!p.parent?"":"/")+this.name;return this.#fullpathPosix=fpp}isUnknown(){return(this.#type&IFMT)===UNKNOWN}isType(type){return this[`is${type}`]()}getType(){return this.isUnknown()?"Unknown":this.isDirectory()?"Directory":this.isFile()?"File":this.isSymbolicLink()?"SymbolicLink":this.isFIFO()?"FIFO":this.isCharacterDevice()?"CharacterDevice":this.isBlockDevice()?"BlockDevice":this.isSocket()?"Socket":"Unknown"}isFile(){return(this.#type&IFMT)===IFREG}isDirectory(){return(this.#type&IFMT)===IFDIR}isCharacterDevice(){return(this.#type&IFMT)===IFCHR}isBlockDevice(){return(this.#type&IFMT)===IFBLK}isFIFO(){return(this.#type&IFMT)===IFIFO}isSocket(){return(this.#type&IFMT)===IFSOCK}isSymbolicLink(){return(this.#type&IFLNK)===IFLNK}lstatCached(){return this.#type&LSTAT_CALLED?this:void 0}readlinkCached(){return this.#linkTarget}realpathCached(){return this.#realpath}readdirCached(){let children=this.children();return children.slice(0,children.provisional)}canReadlink(){if(this.#linkTarget)return!0;if(!this.parent)return!1;let ifmt=this.#type&IFMT;return!(ifmt!==UNKNOWN&&ifmt!==IFLNK||this.#type&ENOREADLINK||this.#type&ENOENT)}calledReaddir(){return!!(this.#type&READDIR_CALLED)}isENOENT(){return!!(this.#type&ENOENT)}isNamed(n){return this.nocase?this.#matchName===normalizeNocase(n):this.#matchName===normalize(n)}async readlink(){let target=this.#linkTarget;if(target)return target;if(this.canReadlink()&&this.parent)try{let read=await this.#fs.promises.readlink(this.fullpath()),linkTarget=this.parent.resolve(read);if(linkTarget)return this.#linkTarget=linkTarget}catch(er){this.#readlinkFail(er.code);return}}readlinkSync(){let target=this.#linkTarget;if(target)return target;if(this.canReadlink()&&this.parent)try{let read=this.#fs.readlinkSync(this.fullpath()),linkTarget=this.parent.resolve(read);if(linkTarget)return this.#linkTarget=linkTarget}catch(er){this.#readlinkFail(er.code);return}}#readdirSuccess(children){this.#type|=READDIR_CALLED;for(let p=children.provisional;p<children.length;p++)children[p].#markENOENT()}#markENOENT(){this.#type&ENOENT||(this.#type=(this.#type|ENOENT)&IFMT_UNKNOWN,this.#markChildrenENOENT())}#markChildrenENOENT(){let children=this.children();children.provisional=0;for(let p of children)p.#markENOENT()}#markENOREALPATH(){this.#type|=ENOREALPATH,this.#markENOTDIR()}#markENOTDIR(){if(this.#type&ENOTDIR)return;let t2=this.#type;(t2&IFMT)===IFDIR&&(t2&=IFMT_UNKNOWN),this.#type=t2|ENOTDIR,this.#markChildrenENOENT()}#readdirFail(code=""){code==="ENOTDIR"||code==="EPERM"?this.#markENOTDIR():code==="ENOENT"?this.#markENOENT():this.children().provisional=0}#lstatFail(code=""){code==="ENOTDIR"?this.parent.#markENOTDIR():code==="ENOENT"&&this.#markENOENT()}#readlinkFail(code=""){let ter=this.#type;ter|=ENOREADLINK,code==="ENOENT"&&(ter|=ENOENT),(code==="EINVAL"||code==="UNKNOWN")&&(ter&=IFMT_UNKNOWN),this.#type=ter,code==="ENOTDIR"&&this.parent&&this.parent.#markENOTDIR()}#readdirAddChild(e,c){return this.#readdirMaybePromoteChild(e,c)||this.#readdirAddNewChild(e,c)}#readdirAddNewChild(e,c){let type=entToType(e),child=this.newChild(e.name,type,{parent:this}),ifmt=child.#type&IFMT;return ifmt!==IFDIR&&ifmt!==IFLNK&&ifmt!==UNKNOWN&&(child.#type|=ENOTDIR),c.unshift(child),c.provisional++,child}#readdirMaybePromoteChild(e,c){for(let p=c.provisional;p<c.length;p++){let pchild=c[p];if((this.nocase?normalizeNocase(e.name):normalize(e.name))===pchild.#matchName)return this.#readdirPromoteChild(e,pchild,p,c)}}#readdirPromoteChild(e,p,index,c){let v=p.name;return p.#type=p.#type&IFMT_UNKNOWN|entToType(e),v!==e.name&&(p.name=e.name),index!==c.provisional&&(index===c.length-1?c.pop():c.splice(index,1),c.unshift(p)),c.provisional++,p}async lstat(){if(!(this.#type&ENOENT))try{return this.#applyStat(await this.#fs.promises.lstat(this.fullpath())),this}catch(er){this.#lstatFail(er.code)}}lstatSync(){if(!(this.#type&ENOENT))try{return this.#applyStat(this.#fs.lstatSync(this.fullpath())),this}catch(er){this.#lstatFail(er.code)}}#applyStat(st){let{atime,atimeMs,birthtime,birthtimeMs,blksize,blocks,ctime,ctimeMs,dev:dev2,gid,ino,mode,mtime,mtimeMs,nlink,rdev,size,uid}=st;this.#atime=atime,this.#atimeMs=atimeMs,this.#birthtime=birthtime,this.#birthtimeMs=birthtimeMs,this.#blksize=blksize,this.#blocks=blocks,this.#ctime=ctime,this.#ctimeMs=ctimeMs,this.#dev=dev2,this.#gid=gid,this.#ino=ino,this.#mode=mode,this.#mtime=mtime,this.#mtimeMs=mtimeMs,this.#nlink=nlink,this.#rdev=rdev,this.#size=size,this.#uid=uid;let ifmt=entToType(st);this.#type=this.#type&IFMT_UNKNOWN|ifmt|LSTAT_CALLED,ifmt!==UNKNOWN&&ifmt!==IFDIR&&ifmt!==IFLNK&&(this.#type|=ENOTDIR)}#onReaddirCB=[];#readdirCBInFlight=!1;#callOnReaddirCB(children){this.#readdirCBInFlight=!1;let cbs=this.#onReaddirCB.slice();this.#onReaddirCB.length=0,cbs.forEach(cb=>cb(null,children))}readdirCB(cb,allowZalgo=!1){if(!this.canReaddir()){allowZalgo?cb(null,[]):queueMicrotask(()=>cb(null,[]));return}let children=this.children();if(this.calledReaddir()){let c=children.slice(0,children.provisional);allowZalgo?cb(null,c):queueMicrotask(()=>cb(null,c));return}if(this.#onReaddirCB.push(cb),this.#readdirCBInFlight)return;this.#readdirCBInFlight=!0;let fullpath=this.fullpath();this.#fs.readdir(fullpath,{withFileTypes:!0},(er,entries)=>{if(er)this.#readdirFail(er.code),children.provisional=0;else{for(let e of entries)this.#readdirAddChild(e,children);this.#readdirSuccess(children)}this.#callOnReaddirCB(children.slice(0,children.provisional))})}#asyncReaddirInFlight;async readdir(){if(!this.canReaddir())return[];let children=this.children();if(this.calledReaddir())return children.slice(0,children.provisional);let fullpath=this.fullpath();if(this.#asyncReaddirInFlight)await this.#asyncReaddirInFlight;else{let resolve2=()=>{};this.#asyncReaddirInFlight=new Promise(res=>resolve2=res);try{for(let e of await this.#fs.promises.readdir(fullpath,{withFileTypes:!0}))this.#readdirAddChild(e,children);this.#readdirSuccess(children)}catch(er){this.#readdirFail(er.code),children.provisional=0}this.#asyncReaddirInFlight=void 0,resolve2()}return children.slice(0,children.provisional)}readdirSync(){if(!this.canReaddir())return[];let children=this.children();if(this.calledReaddir())return children.slice(0,children.provisional);let fullpath=this.fullpath();try{for(let e of this.#fs.readdirSync(fullpath,{withFileTypes:!0}))this.#readdirAddChild(e,children);this.#readdirSuccess(children)}catch(er){this.#readdirFail(er.code),children.provisional=0}return children.slice(0,children.provisional)}canReaddir(){if(this.#type&ENOCHILD)return!1;let ifmt=IFMT&this.#type;return ifmt===UNKNOWN||ifmt===IFDIR||ifmt===IFLNK}shouldWalk(dirs,walkFilter){return(this.#type&IFDIR)===IFDIR&&!(this.#type&ENOCHILD)&&!dirs.has(this)&&(!walkFilter||walkFilter(this))}async realpath(){if(this.#realpath)return this.#realpath;if(!((ENOREALPATH|ENOREADLINK|ENOENT)&this.#type))try{let rp=await this.#fs.promises.realpath(this.fullpath());return this.#realpath=this.resolve(rp)}catch{this.#markENOREALPATH()}}realpathSync(){if(this.#realpath)return this.#realpath;if(!((ENOREALPATH|ENOREADLINK|ENOENT)&this.#type))try{let rp=this.#fs.realpathSync(this.fullpath());return this.#realpath=this.resolve(rp)}catch{this.#markENOREALPATH()}}[setAsCwd](oldCwd){if(oldCwd===this)return;let changed=new Set([]),rp=[],p=this;for(;p&&p.parent;)changed.add(p),p.#relative=rp.join(this.sep),p.#relativePosix=rp.join("/"),p=p.parent,rp.push("..");for(p=oldCwd;p&&p.parent&&!changed.has(p);)p.#relative=void 0,p.#relativePosix=void 0,p=p.parent}},PathWin32=class _PathWin32 extends PathBase{sep="\\";splitSep=eitherSep;constructor(name,type=UNKNOWN,root,roots,nocase,children,opts){super(name,type,root,roots,nocase,children,opts)}newChild(name,type=UNKNOWN,opts={}){return new _PathWin32(name,type,this.root,this.roots,this.nocase,this.childrenCache(),opts)}getRootString(path9){return import_path13.win32.parse(path9).root}getRoot(rootPath){if(rootPath=uncToDrive(rootPath.toUpperCase()),rootPath===this.root.name)return this.root;for(let[compare,root]of Object.entries(this.roots))if(this.sameRoot(rootPath,compare))return this.roots[rootPath]=root;return this.roots[rootPath]=new PathScurryWin32(rootPath,this).root}sameRoot(rootPath,compare=this.root.name){return rootPath=rootPath.toUpperCase().replace(/\//g,"\\").replace(uncDriveRegexp,"$1\\"),rootPath===compare}},PathPosix=class _PathPosix extends PathBase{splitSep="/";sep="/";constructor(name,type=UNKNOWN,root,roots,nocase,children,opts){super(name,type,root,roots,nocase,children,opts)}getRootString(path9){return path9.startsWith("/")?"/":""}getRoot(_rootPath){return this.root}newChild(name,type=UNKNOWN,opts={}){return new _PathPosix(name,type,this.root,this.roots,this.nocase,this.childrenCache(),opts)}},PathScurryBase=class{root;rootPath;roots;cwd;#resolveCache;#resolvePosixCache;#children;nocase;#fs;constructor(cwd=process.cwd(),pathImpl,sep2,{nocase,childrenCacheSize=16*1024,fs:fs6=defaultFS}={}){this.#fs=fsFromOption(fs6),(cwd instanceof URL||cwd.startsWith("file://"))&&(cwd=(0,import_url.fileURLToPath)(cwd));let cwdPath=pathImpl.resolve(cwd);this.roots=Object.create(null),this.rootPath=this.parseRootPath(cwdPath),this.#resolveCache=new ResolveCache,this.#resolvePosixCache=new ResolveCache,this.#children=new ChildrenCache(childrenCacheSize);let split=cwdPath.substring(this.rootPath.length).split(sep2);if(split.length===1&&!split[0]&&split.pop(),nocase===void 0)throw new TypeError("must provide nocase setting to PathScurryBase ctor");this.nocase=nocase,this.root=this.newRoot(this.#fs),this.roots[this.rootPath]=this.root;let prev=this.root,len=split.length-1,joinSep=pathImpl.sep,abs=this.rootPath,sawFirst=!1;for(let part of split){let l=len--;prev=prev.child(part,{relative:new Array(l).fill("..").join(joinSep),relativePosix:new Array(l).fill("..").join("/"),fullpath:abs+=(sawFirst?"":joinSep)+part}),sawFirst=!0}this.cwd=prev}depth(path9=this.cwd){return typeof path9=="string"&&(path9=this.cwd.resolve(path9)),path9.depth()}childrenCache(){return this.#children}resolve(...paths){let r="";for(let i=paths.length-1;i>=0;i--){let p=paths[i];if(!(!p||p===".")&&(r=r?`${p}/${r}`:p,this.isAbsolute(p)))break}let cached=this.#resolveCache.get(r);if(cached!==void 0)return cached;let result=this.cwd.resolve(r).fullpath();return this.#resolveCache.set(r,result),result}resolvePosix(...paths){let r="";for(let i=paths.length-1;i>=0;i--){let p=paths[i];if(!(!p||p===".")&&(r=r?`${p}/${r}`:p,this.isAbsolute(p)))break}let cached=this.#resolvePosixCache.get(r);if(cached!==void 0)return cached;let result=this.cwd.resolve(r).fullpathPosix();return this.#resolvePosixCache.set(r,result),result}relative(entry=this.cwd){return typeof entry=="string"&&(entry=this.cwd.resolve(entry)),entry.relative()}relativePosix(entry=this.cwd){return typeof entry=="string"&&(entry=this.cwd.resolve(entry)),entry.relativePosix()}basename(entry=this.cwd){return typeof entry=="string"&&(entry=this.cwd.resolve(entry)),entry.name}dirname(entry=this.cwd){return typeof entry=="string"&&(entry=this.cwd.resolve(entry)),(entry.parent||entry).fullpath()}async readdir(entry=this.cwd,opts={withFileTypes:!0}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes}=opts;if(entry.canReaddir()){let p=await entry.readdir();return withFileTypes?p:p.map(e=>e.name)}else return[]}readdirSync(entry=this.cwd,opts={withFileTypes:!0}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes=!0}=opts;return entry.canReaddir()?withFileTypes?entry.readdirSync():entry.readdirSync().map(e=>e.name):[]}async lstat(entry=this.cwd){return typeof entry=="string"&&(entry=this.cwd.resolve(entry)),entry.lstat()}lstatSync(entry=this.cwd){return typeof entry=="string"&&(entry=this.cwd.resolve(entry)),entry.lstatSync()}async readlink(entry=this.cwd,{withFileTypes}={withFileTypes:!1}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(withFileTypes=entry.withFileTypes,entry=this.cwd);let e=await entry.readlink();return withFileTypes?e:e?.fullpath()}readlinkSync(entry=this.cwd,{withFileTypes}={withFileTypes:!1}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(withFileTypes=entry.withFileTypes,entry=this.cwd);let e=entry.readlinkSync();return withFileTypes?e:e?.fullpath()}async realpath(entry=this.cwd,{withFileTypes}={withFileTypes:!1}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(withFileTypes=entry.withFileTypes,entry=this.cwd);let e=await entry.realpath();return withFileTypes?e:e?.fullpath()}realpathSync(entry=this.cwd,{withFileTypes}={withFileTypes:!1}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(withFileTypes=entry.withFileTypes,entry=this.cwd);let e=entry.realpathSync();return withFileTypes?e:e?.fullpath()}async walk(entry=this.cwd,opts={}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes=!0,follow=!1,filter:filter2,walkFilter}=opts,results=[];(!filter2||filter2(entry))&&results.push(withFileTypes?entry:entry.fullpath());let dirs=new Set,walk=(dir,cb)=>{dirs.add(dir),dir.readdirCB((er,entries)=>{if(er)return cb(er);let len=entries.length;if(!len)return cb();let next=()=>{--len===0&&cb()};for(let e of entries)(!filter2||filter2(e))&&results.push(withFileTypes?e:e.fullpath()),follow&&e.isSymbolicLink()?e.realpath().then(r=>r?.isUnknown()?r.lstat():r).then(r=>r?.shouldWalk(dirs,walkFilter)?walk(r,next):next()):e.shouldWalk(dirs,walkFilter)?walk(e,next):next()},!0)},start=entry;return new Promise((res,rej)=>{walk(start,er=>{if(er)return rej(er);res(results)})})}walkSync(entry=this.cwd,opts={}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes=!0,follow=!1,filter:filter2,walkFilter}=opts,results=[];(!filter2||filter2(entry))&&results.push(withFileTypes?entry:entry.fullpath());let dirs=new Set([entry]);for(let dir of dirs){let entries=dir.readdirSync();for(let e of entries){(!filter2||filter2(e))&&results.push(withFileTypes?e:e.fullpath());let r=e;if(e.isSymbolicLink()){if(!(follow&&(r=e.realpathSync())))continue;r.isUnknown()&&r.lstatSync()}r.shouldWalk(dirs,walkFilter)&&dirs.add(r)}}return results}[Symbol.asyncIterator](){return this.iterate()}iterate(entry=this.cwd,options={}){return typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(options=entry,entry=this.cwd),this.stream(entry,options)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(entry=this.cwd,opts={}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes=!0,follow=!1,filter:filter2,walkFilter}=opts;(!filter2||filter2(entry))&&(yield withFileTypes?entry:entry.fullpath());let dirs=new Set([entry]);for(let dir of dirs){let entries=dir.readdirSync();for(let e of entries){(!filter2||filter2(e))&&(yield withFileTypes?e:e.fullpath());let r=e;if(e.isSymbolicLink()){if(!(follow&&(r=e.realpathSync())))continue;r.isUnknown()&&r.lstatSync()}r.shouldWalk(dirs,walkFilter)&&dirs.add(r)}}}stream(entry=this.cwd,opts={}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes=!0,follow=!1,filter:filter2,walkFilter}=opts,results=new Minipass({objectMode:!0});(!filter2||filter2(entry))&&results.write(withFileTypes?entry:entry.fullpath());let dirs=new Set,queue=[entry],processing=0,process3=()=>{let paused=!1;for(;!paused;){let dir=queue.shift();if(!dir){processing===0&&results.end();return}processing++,dirs.add(dir);let onReaddir=(er,entries,didRealpaths=!1)=>{if(er)return results.emit("error",er);if(follow&&!didRealpaths){let promises=[];for(let e of entries)e.isSymbolicLink()&&promises.push(e.realpath().then(r=>r?.isUnknown()?r.lstat():r));if(promises.length){Promise.all(promises).then(()=>onReaddir(null,entries,!0));return}}for(let e of entries)e&&(!filter2||filter2(e))&&(results.write(withFileTypes?e:e.fullpath())||(paused=!0));processing--;for(let e of entries){let r=e.realpathCached()||e;r.shouldWalk(dirs,walkFilter)&&queue.push(r)}paused&&!results.flowing?results.once("drain",process3):sync2||process3()},sync2=!0;dir.readdirCB(onReaddir,!0),sync2=!1}};return process3(),results}streamSync(entry=this.cwd,opts={}){typeof entry=="string"?entry=this.cwd.resolve(entry):entry instanceof PathBase||(opts=entry,entry=this.cwd);let{withFileTypes=!0,follow=!1,filter:filter2,walkFilter}=opts,results=new Minipass({objectMode:!0}),dirs=new Set;(!filter2||filter2(entry))&&results.write(withFileTypes?entry:entry.fullpath());let queue=[entry],processing=0,process3=()=>{let paused=!1;for(;!paused;){let dir=queue.shift();if(!dir){processing===0&&results.end();return}processing++,dirs.add(dir);let entries=dir.readdirSync();for(let e of entries)(!filter2||filter2(e))&&(results.write(withFileTypes?e:e.fullpath())||(paused=!0));processing--;for(let e of entries){let r=e;if(e.isSymbolicLink()){if(!(follow&&(r=e.realpathSync())))continue;r.isUnknown()&&r.lstatSync()}r.shouldWalk(dirs,walkFilter)&&queue.push(r)}}paused&&!results.flowing&&results.once("drain",process3)};return process3(),results}chdir(path9=this.cwd){let oldCwd=this.cwd;this.cwd=typeof path9=="string"?this.cwd.resolve(path9):path9,this.cwd[setAsCwd](oldCwd)}},PathScurryWin32=class extends PathScurryBase{sep="\\";constructor(cwd=process.cwd(),opts={}){let{nocase=!0}=opts;super(cwd,import_path13.win32,"\\",{...opts,nocase}),this.nocase=nocase;for(let p=this.cwd;p;p=p.parent)p.nocase=this.nocase}parseRootPath(dir){return import_path13.win32.parse(dir).root.toUpperCase()}newRoot(fs6){return new PathWin32(this.rootPath,IFDIR,void 0,this.roots,this.nocase,this.childrenCache(),{fs:fs6})}isAbsolute(p){return p.startsWith("/")||p.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(p)}},PathScurryPosix=class extends PathScurryBase{sep="/";constructor(cwd=process.cwd(),opts={}){let{nocase=!1}=opts;super(cwd,import_path13.posix,"/",{...opts,nocase}),this.nocase=nocase}parseRootPath(_dir){return"/"}newRoot(fs6){return new PathPosix(this.rootPath,IFDIR,void 0,this.roots,this.nocase,this.childrenCache(),{fs:fs6})}isAbsolute(p){return p.startsWith("/")}},PathScurryDarwin=class extends PathScurryPosix{constructor(cwd=process.cwd(),opts={}){let{nocase=!0}=opts;super(cwd,{...opts,nocase})}},Path=process.platform==="win32"?PathWin32:PathPosix,PathScurry=process.platform==="win32"?PathScurryWin32:process.platform==="darwin"?PathScurryDarwin:PathScurryPosix;var import_url2=require("url");var isPatternList=pl=>pl.length>=1,isGlobList=gl=>gl.length>=1,Pattern=class _Pattern{#patternList;#globList;#index;length;#platform;#rest;#globString;#isDrive;#isUNC;#isAbsolute;#followGlobstar=!0;constructor(patternList,globList,index,platform){if(!isPatternList(patternList))throw new TypeError("empty pattern list");if(!isGlobList(globList))throw new TypeError("empty glob list");if(globList.length!==patternList.length)throw new TypeError("mismatched pattern list and glob list lengths");if(this.length=patternList.length,index<0||index>=this.length)throw new TypeError("index out of range");if(this.#patternList=patternList,this.#globList=globList,this.#index=index,this.#platform=platform,this.#index===0){if(this.isUNC()){let[p0,p1,p2,p3,...prest]=this.#patternList,[g0,g1,g2,g3,...grest]=this.#globList;prest[0]===""&&(prest.shift(),grest.shift());let p=[p0,p1,p2,p3,""].join("/"),g=[g0,g1,g2,g3,""].join("/");this.#patternList=[p,...prest],this.#globList=[g,...grest],this.length=this.#patternList.length}else if(this.isDrive()||this.isAbsolute()){let[p1,...prest]=this.#patternList,[g1,...grest]=this.#globList;prest[0]===""&&(prest.shift(),grest.shift());let p=p1+"/",g=g1+"/";this.#patternList=[p,...prest],this.#globList=[g,...grest],this.length=this.#patternList.length}}}pattern(){return this.#patternList[this.#index]}isString(){return typeof this.#patternList[this.#index]=="string"}isGlobstar(){return this.#patternList[this.#index]===GLOBSTAR}isRegExp(){return this.#patternList[this.#index]instanceof RegExp}globString(){return this.#globString=this.#globString||(this.#index===0?this.isAbsolute()?this.#globList[0]+this.#globList.slice(1).join("/"):this.#globList.join("/"):this.#globList.slice(this.#index).join("/"))}hasMore(){return this.length>this.#index+1}rest(){return this.#rest!==void 0?this.#rest:this.hasMore()?(this.#rest=new _Pattern(this.#patternList,this.#globList,this.#index+1,this.#platform),this.#rest.#isAbsolute=this.#isAbsolute,this.#rest.#isUNC=this.#isUNC,this.#rest.#isDrive=this.#isDrive,this.#rest):this.#rest=null}isUNC(){let pl=this.#patternList;return this.#isUNC!==void 0?this.#isUNC:this.#isUNC=this.#platform==="win32"&&this.#index===0&&pl[0]===""&&pl[1]===""&&typeof pl[2]=="string"&&!!pl[2]&&typeof pl[3]=="string"&&!!pl[3]}isDrive(){let pl=this.#patternList;return this.#isDrive!==void 0?this.#isDrive:this.#isDrive=this.#platform==="win32"&&this.#index===0&&this.length>1&&typeof pl[0]=="string"&&/^[a-z]:$/i.test(pl[0])}isAbsolute(){let pl=this.#patternList;return this.#isAbsolute!==void 0?this.#isAbsolute:this.#isAbsolute=pl[0]===""&&pl.length>1||this.isDrive()||this.isUNC()}root(){let p=this.#patternList[0];return typeof p=="string"&&this.isAbsolute()&&this.#index===0?p:""}checkFollowGlobstar(){return!(this.#index===0||!this.isGlobstar()||!this.#followGlobstar)}markFollowGlobstar(){return this.#index===0||!this.isGlobstar()||!this.#followGlobstar?!1:(this.#followGlobstar=!1,!0)}};var defaultPlatform2=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",Ignore=class{relative;relativeChildren;absolute;absoluteChildren;constructor(ignored,{nobrace,nocase,noext,noglobstar,platform=defaultPlatform2}){this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[];let mmopts={dot:!0,nobrace,nocase,noext,noglobstar,optimizationLevel:2,platform,nocomment:!0,nonegate:!0};for(let ign of ignored){let mm=new Minimatch(ign,mmopts);for(let i=0;i<mm.set.length;i++){let parsed=mm.set[i],globParts=mm.globParts[i];if(!parsed||!globParts)throw new Error("invalid pattern object");let p=new Pattern(parsed,globParts,0,platform),m=new Minimatch(p.globString(),mmopts),children=globParts[globParts.length-1]==="**",absolute=p.isAbsolute();absolute?this.absolute.push(m):this.relative.push(m),children&&(absolute?this.absoluteChildren.push(m):this.relativeChildren.push(m))}}}ignored(p){let fullpath=p.fullpath(),fullpaths=`${fullpath}/`,relative=p.relative()||".",relatives=`${relative}/`;for(let m of this.relative)if(m.match(relative)||m.match(relatives))return!0;for(let m of this.absolute)if(m.match(fullpath)||m.match(fullpaths))return!0;return!1}childrenIgnored(p){let fullpath=p.fullpath()+"/",relative=(p.relative()||".")+"/";for(let m of this.relativeChildren)if(m.match(relative))return!0;for(let m of this.absoluteChildren)if(m.match(fullpath))return!0;return!1}};var HasWalkedCache=class _HasWalkedCache{store;constructor(store=new Map){this.store=store}copy(){return new _HasWalkedCache(new Map(this.store))}hasWalked(target,pattern){return this.store.get(target.fullpath())?.has(pattern.globString())}storeWalked(target,pattern){let fullpath=target.fullpath(),cached=this.store.get(fullpath);cached?cached.add(pattern.globString()):this.store.set(fullpath,new Set([pattern.globString()]))}},MatchRecord=class{store=new Map;add(target,absolute,ifDir){let n=(absolute?2:0)|(ifDir?1:0),current=this.store.get(target);this.store.set(target,current===void 0?n:n&current)}entries(){return[...this.store.entries()].map(([path9,n])=>[path9,!!(n&2),!!(n&1)])}},SubWalks=class{store=new Map;add(target,pattern){if(!target.canReaddir())return;let subs=this.store.get(target);subs?subs.find(p=>p.globString()===pattern.globString())||subs.push(pattern):this.store.set(target,[pattern])}get(target){let subs=this.store.get(target);if(!subs)throw new Error("attempting to walk unknown path");return subs}entries(){return this.keys().map(k=>[k,this.store.get(k)])}keys(){return[...this.store.keys()].filter(t2=>t2.canReaddir())}},Processor=class _Processor{hasWalkedCache;matches=new MatchRecord;subwalks=new SubWalks;patterns;follow;dot;opts;constructor(opts,hasWalkedCache){this.opts=opts,this.follow=!!opts.follow,this.dot=!!opts.dot,this.hasWalkedCache=hasWalkedCache?hasWalkedCache.copy():new HasWalkedCache}processPatterns(target,patterns){this.patterns=patterns;let processingSet=patterns.map(p=>[target,p]);for(let[t2,pattern]of processingSet){this.hasWalkedCache.storeWalked(t2,pattern);let root=pattern.root(),absolute=pattern.isAbsolute()&&this.opts.absolute!==!1;if(root){t2=t2.resolve(root==="/"&&this.opts.root!==void 0?this.opts.root:root);let rest2=pattern.rest();if(rest2)pattern=rest2;else{this.matches.add(t2,!0,!1);continue}}if(t2.isENOENT())continue;let p,rest,changed=!1;for(;typeof(p=pattern.pattern())=="string"&&(rest=pattern.rest());)t2=t2.resolve(p),pattern=rest,changed=!0;if(p=pattern.pattern(),rest=pattern.rest(),changed){if(this.hasWalkedCache.hasWalked(t2,pattern))continue;this.hasWalkedCache.storeWalked(t2,pattern)}if(typeof p=="string"){let ifDir=p===".."||p===""||p===".";this.matches.add(t2.resolve(p),absolute,ifDir);continue}else if(p===GLOBSTAR){(!t2.isSymbolicLink()||this.follow||pattern.checkFollowGlobstar())&&this.subwalks.add(t2,pattern);let rp=rest?.pattern(),rrest=rest?.rest();if(!rest||(rp===""||rp===".")&&!rrest)this.matches.add(t2,absolute,rp===""||rp===".");else if(rp===".."){let tp=t2.parent||t2;rrest?this.hasWalkedCache.hasWalked(tp,rrest)||this.subwalks.add(tp,rrest):this.matches.add(tp,absolute,!0)}}else p instanceof RegExp&&this.subwalks.add(t2,pattern)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new _Processor(this.opts,this.hasWalkedCache)}filterEntries(parent,entries){let patterns=this.subwalks.get(parent),results=this.child();for(let e of entries)for(let pattern of patterns){let absolute=pattern.isAbsolute(),p=pattern.pattern(),rest=pattern.rest();p===GLOBSTAR?results.testGlobstar(e,pattern,rest,absolute):p instanceof RegExp?results.testRegExp(e,p,rest,absolute):results.testString(e,p,rest,absolute)}return results}testGlobstar(e,pattern,rest,absolute){if((this.dot||!e.name.startsWith("."))&&(pattern.hasMore()||this.matches.add(e,absolute,!1),e.canReaddir()&&(this.follow||!e.isSymbolicLink()?this.subwalks.add(e,pattern):e.isSymbolicLink()&&(rest&&pattern.checkFollowGlobstar()?this.subwalks.add(e,rest):pattern.markFollowGlobstar()&&this.subwalks.add(e,pattern)))),rest){let rp=rest.pattern();if(typeof rp=="string"&&rp!==".."&&rp!==""&&rp!==".")this.testString(e,rp,rest.rest(),absolute);else if(rp===".."){let ep=e.parent||e;this.subwalks.add(ep,rest)}else rp instanceof RegExp&&this.testRegExp(e,rp,rest.rest(),absolute)}}testRegExp(e,p,rest,absolute){p.test(e.name)&&(rest?this.subwalks.add(e,rest):this.matches.add(e,absolute,!1))}testString(e,p,rest,absolute){e.isNamed(p)&&(rest?this.subwalks.add(e,rest):this.matches.add(e,absolute,!1))}};var makeIgnore=(ignore,opts)=>typeof ignore=="string"?new Ignore([ignore],opts):Array.isArray(ignore)?new Ignore(ignore,opts):ignore,GlobUtil=class{path;patterns;opts;seen=new Set;paused=!1;aborted=!1;#onResume=[];#ignore;#sep;signal;maxDepth;constructor(patterns,path9,opts){this.patterns=patterns,this.path=path9,this.opts=opts,this.#sep=!opts.posix&&opts.platform==="win32"?"\\":"/",opts.ignore&&(this.#ignore=makeIgnore(opts.ignore,opts)),this.maxDepth=opts.maxDepth||1/0,opts.signal&&(this.signal=opts.signal,this.signal.addEventListener("abort",()=>{this.#onResume.length=0}))}#ignored(path9){return this.seen.has(path9)||!!this.#ignore?.ignored?.(path9)}#childrenIgnored(path9){return!!this.#ignore?.childrenIgnored?.(path9)}pause(){this.paused=!0}resume(){if(this.signal?.aborted)return;this.paused=!1;let fn;for(;!this.paused&&(fn=this.#onResume.shift());)fn()}onResume(fn){this.signal?.aborted||(this.paused?this.#onResume.push(fn):fn())}async matchCheck(e,ifDir){if(ifDir&&this.opts.nodir)return;let rpc;if(this.opts.realpath){if(rpc=e.realpathCached()||await e.realpath(),!rpc)return;e=rpc}let needStat=e.isUnknown()||this.opts.stat;return this.matchCheckTest(needStat?await e.lstat():e,ifDir)}matchCheckTest(e,ifDir){return e&&(this.maxDepth===1/0||e.depth()<=this.maxDepth)&&(!ifDir||e.canReaddir())&&(!this.opts.nodir||!e.isDirectory())&&!this.#ignored(e)?e:void 0}matchCheckSync(e,ifDir){if(ifDir&&this.opts.nodir)return;let rpc;if(this.opts.realpath){if(rpc=e.realpathCached()||e.realpathSync(),!rpc)return;e=rpc}let needStat=e.isUnknown()||this.opts.stat;return this.matchCheckTest(needStat?e.lstatSync():e,ifDir)}matchFinish(e,absolute){if(this.#ignored(e))return;let abs=this.opts.absolute===void 0?absolute:this.opts.absolute;this.seen.add(e);let mark=this.opts.mark&&e.isDirectory()?this.#sep:"";if(this.opts.withFileTypes)this.matchEmit(e);else if(abs){let abs2=this.opts.posix?e.fullpathPosix():e.fullpath();this.matchEmit(abs2+mark)}else{let rel=this.opts.posix?e.relativePosix():e.relative(),pre=this.opts.dotRelative&&!rel.startsWith(".."+this.#sep)?"."+this.#sep:"";this.matchEmit(rel?pre+rel+mark:"."+mark)}}async match(e,absolute,ifDir){let p=await this.matchCheck(e,ifDir);p&&this.matchFinish(p,absolute)}matchSync(e,absolute,ifDir){let p=this.matchCheckSync(e,ifDir);p&&this.matchFinish(p,absolute)}walkCB(target,patterns,cb){this.signal?.aborted&&cb(),this.walkCB2(target,patterns,new Processor(this.opts),cb)}walkCB2(target,patterns,processor,cb){if(this.#childrenIgnored(target))return cb();if(this.signal?.aborted&&cb(),this.paused){this.onResume(()=>this.walkCB2(target,patterns,processor,cb));return}processor.processPatterns(target,patterns);let tasks=1,next=()=>{--tasks===0&&cb()};for(let[m,absolute,ifDir]of processor.matches.entries())this.#ignored(m)||(tasks++,this.match(m,absolute,ifDir).then(()=>next()));for(let t2 of processor.subwalkTargets()){if(this.maxDepth!==1/0&&t2.depth()>=this.maxDepth)continue;tasks++;let childrenCached=t2.readdirCached();t2.calledReaddir()?this.walkCB3(t2,childrenCached,processor,next):t2.readdirCB((_,entries)=>this.walkCB3(t2,entries,processor,next),!0)}next()}walkCB3(target,entries,processor,cb){processor=processor.filterEntries(target,entries);let tasks=1,next=()=>{--tasks===0&&cb()};for(let[m,absolute,ifDir]of processor.matches.entries())this.#ignored(m)||(tasks++,this.match(m,absolute,ifDir).then(()=>next()));for(let[target2,patterns]of processor.subwalks.entries())tasks++,this.walkCB2(target2,patterns,processor.child(),next);next()}walkCBSync(target,patterns,cb){this.signal?.aborted&&cb(),this.walkCB2Sync(target,patterns,new Processor(this.opts),cb)}walkCB2Sync(target,patterns,processor,cb){if(this.#childrenIgnored(target))return cb();if(this.signal?.aborted&&cb(),this.paused){this.onResume(()=>this.walkCB2Sync(target,patterns,processor,cb));return}processor.processPatterns(target,patterns);let tasks=1,next=()=>{--tasks===0&&cb()};for(let[m,absolute,ifDir]of processor.matches.entries())this.#ignored(m)||this.matchSync(m,absolute,ifDir);for(let t2 of processor.subwalkTargets()){if(this.maxDepth!==1/0&&t2.depth()>=this.maxDepth)continue;tasks++;let children=t2.readdirSync();this.walkCB3Sync(t2,children,processor,next)}next()}walkCB3Sync(target,entries,processor,cb){processor=processor.filterEntries(target,entries);let tasks=1,next=()=>{--tasks===0&&cb()};for(let[m,absolute,ifDir]of processor.matches.entries())this.#ignored(m)||this.matchSync(m,absolute,ifDir);for(let[target2,patterns]of processor.subwalks.entries())tasks++,this.walkCB2Sync(target2,patterns,processor.child(),next);next()}},GlobWalker=class extends GlobUtil{matches;constructor(patterns,path9,opts){super(patterns,path9,opts),this.matches=new Set}matchEmit(e){this.matches.add(e)}async walk(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&await this.path.lstat(),await new Promise((res,rej)=>{this.walkCB(this.path,this.patterns,()=>{this.signal?.aborted?rej(this.signal.reason):res(this.matches)})}),this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>{if(this.signal?.aborted)throw this.signal.reason}),this.matches}},GlobStream=class extends GlobUtil{results;constructor(patterns,path9,opts){super(patterns,path9,opts),this.results=new Minipass({signal:this.signal,objectMode:!0}),this.results.on("drain",()=>this.resume()),this.results.on("resume",()=>this.resume())}matchEmit(e){this.results.write(e),this.results.flowing||this.pause()}stream(){let target=this.path;return target.isUnknown()?target.lstat().then(()=>{this.walkCB(target,this.patterns,()=>this.results.end())}):this.walkCB(target,this.patterns,()=>this.results.end()),this.results}streamSync(){return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}};var defaultPlatform3=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",Glob=class{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;opts;patterns;constructor(pattern,opts){if(!opts)throw new TypeError("glob options required");if(this.withFileTypes=!!opts.withFileTypes,this.signal=opts.signal,this.follow=!!opts.follow,this.dot=!!opts.dot,this.dotRelative=!!opts.dotRelative,this.nodir=!!opts.nodir,this.mark=!!opts.mark,opts.cwd?(opts.cwd instanceof URL||opts.cwd.startsWith("file://"))&&(opts.cwd=(0,import_url2.fileURLToPath)(opts.cwd)):this.cwd="",this.cwd=opts.cwd||"",this.root=opts.root,this.magicalBraces=!!opts.magicalBraces,this.nobrace=!!opts.nobrace,this.noext=!!opts.noext,this.realpath=!!opts.realpath,this.absolute=opts.absolute,this.noglobstar=!!opts.noglobstar,this.matchBase=!!opts.matchBase,this.maxDepth=typeof opts.maxDepth=="number"?opts.maxDepth:1/0,this.stat=!!opts.stat,this.ignore=opts.ignore,this.withFileTypes&&this.absolute!==void 0)throw new Error("cannot set absolute and withFileTypes:true");if(typeof pattern=="string"&&(pattern=[pattern]),this.windowsPathsNoEscape=!!opts.windowsPathsNoEscape||opts.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(pattern=pattern.map(p=>p.replace(/\\/g,"/"))),this.matchBase){if(opts.noglobstar)throw new TypeError("base matching requires globstar");pattern=pattern.map(p=>p.includes("/")?p:`./**/${p}`)}if(this.pattern=pattern,this.platform=opts.platform||defaultPlatform3,this.opts={...opts,platform:this.platform},opts.scurry){if(this.scurry=opts.scurry,opts.nocase!==void 0&&opts.nocase!==opts.scurry.nocase)throw new Error("nocase option contradicts provided scurry option")}else{let Scurry=opts.platform==="win32"?PathScurryWin32:opts.platform==="darwin"?PathScurryDarwin:opts.platform?PathScurryPosix:PathScurry;this.scurry=new Scurry(this.cwd,{nocase:opts.nocase,fs:opts.fs})}this.nocase=this.scurry.nocase;let nocaseMagicOnly=this.platform==="darwin"||this.platform==="win32",mmo={...opts,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly,nocomment:!0,noext:this.noext,nonegate:!0,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},mms=this.pattern.map(p=>new Minimatch(p,mmo)),[matchSet,globParts]=mms.reduce((set,m)=>(set[0].push(...m.set),set[1].push(...m.globParts),set),[[],[]]);this.patterns=matchSet.map((set,i)=>{let g=globParts[i];if(!g)throw new Error("invalid pattern object");return new Pattern(set,g,0,this.platform)})}async walk(){return[...await new GlobWalker(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase}).walk()]}walkSync(){return[...new GlobWalker(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase}).walkSync()]}stream(){return new GlobStream(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase}).stream()}streamSync(){return new GlobStream(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}};var hasMagic=(pattern,options={})=>{Array.isArray(pattern)||(pattern=[pattern]);for(let p of pattern)if(new Minimatch(p,options).hasMagic())return!0;return!1};function globStreamSync(pattern,options={}){return new Glob(pattern,options).streamSync()}function globStream(pattern,options={}){return new Glob(pattern,options).stream()}function globSync(pattern,options={}){return new Glob(pattern,options).walkSync()}async function glob_(pattern,options={}){return new Glob(pattern,options).walk()}function globIterateSync(pattern,options={}){return new Glob(pattern,options).iterateSync()}function globIterate(pattern,options={}){return new Glob(pattern,options).iterate()}var streamSync=globStreamSync,stream=Object.assign(globStream,{sync:globStreamSync}),iterateSync=globIterateSync,iterate=Object.assign(globIterate,{sync:globIterateSync}),sync=Object.assign(globSync,{stream:globStreamSync,iterate:globIterateSync}),glob2=Object.assign(glob_,{glob:glob_,globSync,sync,globStream,stream,globStreamSync,streamSync,globIterate,iterate,globIterateSync,iterateSync,Glob,hasMagic,escape,unescape});glob2.glob=glob2;var logger21=console,getNextGlob=globString=>{let extGlobsRegex=new RegExp(/(.*\.)(stories\.@.*)(\|mdx|mdx\|)(.*)$/i);if(globString.match(extGlobsRegex))return globString.replace(extGlobsRegex,"$1@(mdx|$2$4)");let allStoriesExtensionsRegex=new RegExp(/(.*\.)(stories\.\*)$/i);return globString.match(allStoriesExtensionsRegex)?globString.replace(allStoriesExtensionsRegex,"$1@(mdx|$2)"):globString.replaceAll(".stories.mdx",".mdx")},mdxToCSF={id:"mdx-to-csf",versionRange:["<7",">=7"],async check({mainConfig}){let existingStoriesEntries=mainConfig.stories;if(!existingStoriesEntries)throw new Error(import_ts_dedent28.default`
413
+ ❌ Unable to determine Storybook stories globs in ${import_chalk21.default.blue(mainConfig)}, skipping ${import_chalk21.default.cyan(this.id)} fix.
414
+
415
+ In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx.
416
+
417
+ Now, since Storybook 8.0, we have removed support for .stories.mdx files.
418
+
419
+ We were unable to automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx.
420
+ We suggest you make this change manually.
421
+ To learn more about this change, see: ${import_chalk21.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files")}
422
+ `);let files=[],nextStoriesEntries=await Promise.all(existingStoriesEntries.map(async entry=>{let isSpecifier=typeof entry!="string",globString=isSpecifier?entry.files:entry;if(!globString)return entry;files.push(...(await glob2(globString)).filter(file=>file.endsWith(".stories.mdx")));let nextGlob=getNextGlob(globString);return isSpecifier?{...entry,files:nextGlob}:nextGlob})),resultFromMainConfig=checkMainConfigStories(existingStoriesEntries,nextStoriesEntries);return nextStoriesEntries&&resultFromMainConfig||files.length>0?{existingStoriesEntries,nextStoriesEntries,files}:null},prompt({existingStoriesEntries,nextStoriesEntries}){let prettyExistingStoriesEntries=existingStoriesEntries.map(entry=>JSON.stringify(entry,null,2)).join(`
423
+ `),prettyNextStoriesEntries=nextStoriesEntries.map(entry=>JSON.stringify(entry,null,2)).join(`
424
+ `);return import_ts_dedent28.default`
425
+ We've detected your project has one or more globs in your 'stories' config that matches .stories.mdx files:
426
+ ${import_chalk21.default.cyan(prettyExistingStoriesEntries)}
427
+
428
+ In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx. Since Storybook 8, we have removed the support of story definition in MDX files entirely. Therefore '.stories.mdx' files aren't supported anymore.
429
+
430
+ Now, since Storybook 8.0, we have removed support for .stories.mdx files.
431
+
432
+ We can automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx.
433
+ That would result in the following 'stories' config:
434
+ ${import_chalk21.default.cyan(prettyNextStoriesEntries)}
435
+
436
+ Additionally, we will run the 'mdx-to-csf' codemod for you, which tries to transform '*.stories.mdx' files to '*.stories.js' and '*.mdx' files.
437
+
438
+ To learn more about this change, see: ${import_chalk21.default.yellow("https://storybook.js.org/docs/migration-guide#storiesmdx-to-mdxcsf")}
439
+ `},async run({dryRun,mainConfigPath,result:{nextStoriesEntries}}){if(logger21.info(import_ts_dedent28.default`✅ Setting 'stories' config:
440
+ ${JSON.stringify(nextStoriesEntries,null,2)}`),!dryRun){let{glob:globString}=await(0,import_prompts8.prompt)({type:"text",name:"glob",message:"Please enter the glob for your MDX stories",initial:"./src/**/*.stories.mdx"});globString&&await(0,import_codemod.runCodemod)("mdx-to-csf",{glob:globString,dryRun,logger:logger21}),await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{main.setFieldValue(["stories"],nextStoriesEntries)}),logger21.info(import_ts_dedent28.default`
441
+ The migration successfully updated your 'stories' config to include any .mdx file instead of just .stories.mdx.
442
+
443
+ It also ran the 'mdx-to-csf' codemod to convert your MDX stories to CSF format.
444
+ This codemod is not perfect however, so you may need to manually fix any issues it couldn't handle.
445
+ `)}}};function checkMainConfigStories(existingStoriesEntries,nextStoriesEntries){return existingStoriesEntries.length===nextStoriesEntries.length&&existingStoriesEntries.every((entry,index)=>{let nextEntry=nextStoriesEntries[index];return typeof entry=="string"?entry===nextEntry:typeof nextEntry=="string"?!1:entry.files===nextEntry.files})?null:!0}var import_ts_dedent29=__toESM(require("ts-dedent"));var minimumStorybookVersion="8.0.0-alpha.4",removeReactDependency={id:"remove-react-dependency",promptType:"manual",versionRange:[`^7 || <${minimumStorybookVersion}`,`>=${minimumStorybookVersion}`],async check({packageManager,mainConfig,storybookVersion}){let frameworkPackageName=getFrameworkPackageName(mainConfig);if(frameworkPackageName?.includes("react")||frameworkPackageName?.includes("nextjs"))return null;let{react}=await packageManager.getAllDependencies();return react?!0:null},prompt(){return import_ts_dedent29.default`
447
446
  We detected that your project has a dependency for "react" that it might not need.
448
447
  Nothing breaks by having it, you can safely ignore this message, if you wish.
449
448
 
450
- Storybook asked you to add "react" as a direct dependency in the past.
449
+ Storybook asked you to add "react" as a direct dependency in the past when upgrading from Storybook 6 to 7.
451
450
  However, since version 8.0, Storybook no longer requires you to provide "react" as a dependency.
452
451
  Some community addons might still wrongfully list "react" and "react-dom" as required peer dependencies, but since Storybook 7.6 it should not be needed in the majority of cases.
453
452
 
454
453
  If you know you are not using React outside of Storybook, it should be safe to remove the "react" and "react-dom" dependencies from your project's package.json.
455
454
  Storybook cannot do this automatically as removing it might break your project, so it should be done manually with care.
456
- `}};var import_chalk24=__toESM(require("chalk")),import_ts_dedent32=__toESM(require("ts-dedent")),storyshotsMigration={id:"storyshots-migration",promptType:"manual",async check({mainConfig,packageManager}){return((await packageManager.getAllDependencies())["@storybook/addon-storyshots"]||mainConfig.addons?.find(addon=>(typeof addon=="string"?addon:addon.name).includes("@storybook/addon-storyshots")))??null},prompt(){return import_ts_dedent32.default`
457
- ${import_chalk24.default.bold("Attention")}: Storyshots is now officially deprecated, is no longer being maintained, and was removed in Storybook 8.
455
+ `}};var import_chalk22=__toESM(require("chalk")),import_ts_dedent30=__toESM(require("ts-dedent")),storyshotsMigration={id:"storyshots",versionRange:["<8.0.0-alpha.0",">=8.0.0-alpha.0"],promptType:"manual",async check({mainConfig,packageManager}){return((await packageManager.getAllDependencies())["@storybook/addon-storyshots"]||mainConfig.addons?.find(addon=>(typeof addon=="string"?addon:addon.name).includes("@storybook/addon-storyshots")))??null},prompt(){return import_ts_dedent30.default`
456
+ ${import_chalk22.default.bold("Attention")}: Storyshots is now officially deprecated, is no longer being maintained, and was removed in Storybook 8.
458
457
 
459
458
  We recommend following the migration guide we've prepared to help you during this transition period:
460
- ${import_chalk24.default.yellow("https://storybook.js.org/docs/writing-tests/storyshots-migration-guide")}
461
- `}};var fs5=__toESM(require("fs/promises")),babel=__toESM(require("@babel/core")),import_csf_tools7=require("@storybook/csf-tools"),import_ts_dedent33=__toESM(require("ts-dedent")),import_chalk25=__toESM(require("chalk")),removeArgtypesRegex={id:"remove-argtypes-regex",promptType:"manual",async check({previewConfigPath}){if(!previewConfigPath)return null;let previewFile=await fs5.readFile(previewConfigPath,{encoding:"utf-8"}),file=new babel.File({filename:previewConfigPath},{code:previewFile,ast:(0,import_csf_tools7.babelParse)(previewFile)}),argTypesRegex;return file.path.traverse({Identifier:path9=>{path9.node.name==="argTypesRegex"&&(argTypesRegex=path9)}}),argTypesRegex?{argTypesRegex,previewConfigPath}:null},prompt({argTypesRegex,previewConfigPath}){let snippet=import_ts_dedent33.default`
462
- import { fn } from '@storybook/test';
463
- export default {
464
- args: { onClick: fn() }, // will log to the action panel when clicked
465
- };`,file=new babel.File({file:"story.tsx"},{code:snippet,ast:(0,import_csf_tools7.babelParse)(snippet)}),formattedSnippet;return file.path.traverse({Identifier:path9=>{path9.node.name==="fn"&&(formattedSnippet=path9.buildCodeFrameError("").message)}}),import_ts_dedent33.default`
466
- ${import_chalk25.default.bold("Attention")}: We've detected that you're using argTypesRegex:
459
+ ${import_chalk22.default.yellow("https://storybook.js.org/docs/writing-tests/storyshots-migration-guide")}
460
+ `}};var fs5=__toESM(require("fs/promises")),babel=__toESM(require("@babel/core")),import_csf_tools7=require("@storybook/csf-tools"),import_ts_dedent31=__toESM(require("ts-dedent")),import_chalk23=__toESM(require("chalk")),removeArgtypesRegex={id:"remove-argtypes-regex",promptType:"manual",versionRange:["<8.0.0-alpha.0",">=8.0.0-alpha.0"],async check({previewConfigPath}){if(!previewConfigPath)return null;let previewFile=await fs5.readFile(previewConfigPath,{encoding:"utf-8"}),file=new babel.File({filename:previewConfigPath},{code:previewFile,ast:(0,import_csf_tools7.babelParse)(previewFile)}),argTypesRegex;return file.path.traverse({Identifier:path9=>{path9.node.name==="argTypesRegex"&&(argTypesRegex=path9)}}),argTypesRegex?{argTypesRegex,previewConfigPath}:null},prompt({argTypesRegex,previewConfigPath}){return import_ts_dedent31.default`
461
+ ${import_chalk23.default.bold("Attention")}: We've detected that you're using argTypesRegex:
467
462
 
468
463
  ${argTypesRegex.buildCodeFrameError(`${previewConfigPath}`).message}
469
464
 
470
- In Storybook 8, we recommend removing this regex.
471
- Assign explicit spies with the ${import_chalk25.default.cyan("fn")} function instead:
472
- ${formattedSnippet}
473
-
474
- The above pattern is needed when using spies in the play function, ${import_chalk25.default.bold("even")} if you keep using argTypesRegex.
475
- Implicit spies (based on a combination of argTypesRegex and docgen) is not supported in Storybook 8.
465
+ In Storybook you can write so-called play functions, which are used to render your stories interactively.
466
+ Mocking action args in play functions was done implicitly by analyzing the argTypesRegex.
467
+
468
+ Since Storybook 8, implicit action args mocking isn't supported anymore.
476
469
 
477
- Use the following command to check for spy usages in your play functions:
478
- ${import_chalk25.default.cyan('npx storybook migrate find-implicit-spies --glob="**/*.stories.@(js|jsx|ts|tsx)"')}
470
+ Use the following command to check for mocked action usages in your play functions:
471
+ ${import_chalk23.default.cyan('npx storybook migrate find-implicit-spies --glob="**/*.stories.@(js|jsx|ts|tsx)"')}
479
472
 
480
- Make sure to assign an explicit ${import_chalk25.default.cyan("fn")} to your args for those usages.
481
-
482
- For more information please visit our migration guide: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#implicit-actions-can-not-be-used-during-rendering-for-example-in-the-play-function
483
- `}};var import_prompts8=__toESM(require("prompts")),import_core_common18=require("@storybook/core-common");var import_ts_dedent34=__toESM(require("ts-dedent")),import_chalk26=__toESM(require("chalk"));var webpack5CompilerSetup={id:"webpack5-compiler-setup",promptType(result){return result.isNextJs&&!result.shouldRemoveSWCFlag?"notification":"auto"},async check({mainConfig,packageManager}){if(getAddonNames(mainConfig).find(addon=>addon.includes("babel")||addon.includes("swc")))return null;let frameworkName=Object.entries(import_core_common18.frameworkPackages).find(([name])=>name===getFrameworkPackageName(mainConfig))?.[1],builderPackageName=getBuilderPackageName(mainConfig),customCoreBuilder=builderPackageName?builderNameToCoreBuilder[builderPackageName]:null,defaultCoreBuilder=frameworkName?frameworkToDefaultBuilder[frameworkName]:await(async()=>await packageManager.getPackageVersion("webpack")?"webpack5":"vite")();if((customCoreBuilder||defaultCoreBuilder)!=="webpack5"||(frameworkName?["angular","ember"].includes(frameworkName):!1)||!!await packageManager.getPackageVersion("react-scripts"))return null;let frameworkOptions=getFrameworkOptions(mainConfig),defaultCompiler=frameworkOptions?.builder?.useSWC?"swc":"babel",shouldRemoveSWCFlag=frameworkOptions?.builder?"useSWC"in frameworkOptions.builder:!1;return frameworkName==="nextjs"?{compiler:void 0,compilerPackageName:void 0,shouldRemoveSWCFlag,isNextJs:!0}:{defaultCompiler,shouldRemoveSWCFlag,isNextJs:!1}},prompt({defaultCompiler,shouldRemoveSWCFlag,isNextJs}){let message=[];return shouldRemoveSWCFlag&&message.push(import_ts_dedent34.default`
473
+ And follow the documentation to migrate your play functions:
474
+ ${import_chalk23.default.yellow("https://storybook.js.org/docs/8.0/essentials/actions#via-storybooktest-fn-spy-function")}
475
+ `}};var import_prompts9=__toESM(require("prompts")),import_core_common16=require("@storybook/core-common");var import_ts_dedent32=__toESM(require("ts-dedent")),import_chalk24=__toESM(require("chalk"));var webpack5CompilerSetup={id:"webpack5-compiler-setup",versionRange:["<8.0.0-alpha.9",">=8.0.0-alpha.9"],promptType(result){return result.isNextJs&&!result.shouldRemoveSWCFlag?"notification":"auto"},async check({mainConfig,packageManager}){if(getAddonNames(mainConfig).find(addon=>addon.includes("babel")||addon.includes("swc")))return null;let frameworkName=Object.entries(import_core_common16.frameworkPackages).find(([name])=>name===getFrameworkPackageName(mainConfig))?.[1],builderPackageName=getBuilderPackageName(mainConfig),customCoreBuilder=builderPackageName?builderNameToCoreBuilder[builderPackageName]:null,defaultCoreBuilder=frameworkName?frameworkToDefaultBuilder[frameworkName]:await(async()=>await packageManager.getPackageVersion("webpack")?"webpack5":"vite")();if((customCoreBuilder||defaultCoreBuilder)!=="webpack5"||(frameworkName?["angular","ember"].includes(frameworkName):!1)||!!await packageManager.getPackageVersion("react-scripts"))return null;let frameworkOptions=getFrameworkOptions(mainConfig),defaultCompiler=frameworkOptions?.builder?.useSWC?"swc":"babel",shouldRemoveSWCFlag=frameworkOptions?.builder?"useSWC"in frameworkOptions.builder:!1;return frameworkName==="nextjs"?{compiler:void 0,compilerPackageName:void 0,shouldRemoveSWCFlag,isNextJs:!0}:{defaultCompiler,shouldRemoveSWCFlag,isNextJs:!1}},prompt({defaultCompiler,shouldRemoveSWCFlag,isNextJs}){let message=[];return shouldRemoveSWCFlag&&message.push(import_ts_dedent32.default`
484
476
  We need to update your Storybook configuration for Webpack 5.
485
- The ${import_chalk26.default.yellow("framework.options.builder.useSWC")} flag will be removed.`),isNextJs?message.push(import_ts_dedent34.default`
477
+ The ${import_chalk24.default.yellow("framework.options.builder.useSWC")} flag will be removed.`),isNextJs?message.push(import_ts_dedent32.default`
486
478
  Storybook now detects whether it should use Babel or SWC as a compiler by applying the same logic as Next.js itself:\n
487
- - If you have a ${import_chalk26.default.yellow(".babelrc")} (or ${import_chalk26.default.yellow("babel.config.js")}) file in your project, Storybook will use Babel as the compiler.
488
- - If you have a ${import_chalk26.default.yellow(".babelrc")} (or ${import_chalk26.default.yellow("babel.config.js")}) file in your project and you have set
489
- ${import_chalk26.default.yellow("experimental.forceSwcTransforms = true")} in your ${import_chalk26.default.yellow("next.config.js")} file,
479
+ - If you have a ${import_chalk24.default.yellow(".babelrc")} (or ${import_chalk24.default.yellow("babel.config.js")}) file in your project, Storybook will use Babel as the compiler.
480
+ - If you have a ${import_chalk24.default.yellow(".babelrc")} (or ${import_chalk24.default.yellow("babel.config.js")}) file in your project and you have set
481
+ ${import_chalk24.default.yellow("experimental.forceSwcTransforms = true")} in your ${import_chalk24.default.yellow("next.config.js")} file,
490
482
  Storybook will use SWC as the compiler.
491
- - If you don't have a ${import_chalk26.default.yellow(".babelrc")} (or ${import_chalk26.default.yellow("babel.config.js")}) file in your project, Storybook will use SWC as the compiler.
492
- `):defaultCompiler==="babel"?message.push(import_ts_dedent34.default`
483
+ - If you don't have a ${import_chalk24.default.yellow(".babelrc")} (or ${import_chalk24.default.yellow("babel.config.js")}) file in your project, Storybook will use SWC as the compiler.
484
+ `):defaultCompiler==="babel"?message.push(import_ts_dedent32.default`
493
485
  Storybook's Webpack5 builder is now compiler agnostic, meaning you can choose a compiler addon that best fits your project:\n
494
486
  - Babel: A vast ecosystem and is battle-tested. It's a robust choice if you have an extensive Babel setup or need specific Babel plugins for your project.
495
487
  - SWC: Fast and easy to configure. Ideal if you want faster builds and have a straightforward configuration without the need for Babel's extensibility.\n
496
488
  In the next step, Storybook will ask you to choose a compiler to automatically set it up for you.\n
497
489
  After the migration, you can switch Webpack5 compilers by swapping the addon in your project.
498
- You can find more information here: ${import_chalk26.default.yellow("https://storybook.js.org/docs/8.0/builders/webpack#compiler-support")}
499
- `):message.push(import_ts_dedent34.default`
490
+ You can find more information here: ${import_chalk24.default.yellow("https://storybook.js.org/docs/8.0/builders/webpack#compiler-support")}
491
+ `):message.push(import_ts_dedent32.default`
500
492
  Storybook's Webpack5 builder is now compiler agnostic, meaning you have to install an additional addon to set up a compiler for Webpack5.\n
501
493
  We have detected, that you want to use SWC as the compiler for Webpack5.\n
502
494
  In the next step, Storybook will install @storybook/addon-webpack5-compiler-swc and will add it to your addons list in your Storybook config.\n
503
495
  After the migration, you can switch Webpack5 compilers by swapping the addon in your project.
504
- You can find more information here: ${import_chalk26.default.yellow("https://storybook.js.org/docs/8.0/builders/webpack#compiler-support")}
496
+ You can find more information here: ${import_chalk24.default.yellow("https://storybook.js.org/docs/8.0/builders/webpack#compiler-support")}
505
497
  `),message.join(`
506
498
 
507
- `)},async run({result,mainConfigPath,packageManager,skipInstall,dryRun}){let{defaultCompiler,shouldRemoveSWCFlag,isNextJs}=result;if(shouldRemoveSWCFlag&&await updateMainConfig({mainConfigPath,dryRun:!!dryRun},main=>{main.removeField(["framework","options","builder","useSWC"])}),!isNextJs){let compiler=defaultCompiler==="babel"?await askUserForCompilerChoice():"swc",compilerPackageName=Object.entries(compilerNameToCoreCompiler).find(([,coreCompiler])=>coreCompiler===compiler)[0];await add(compilerPackageName,{packageManager:packageManager.type,skipPostinstall:!!skipInstall})}}};async function askUserForCompilerChoice(){return(await(0,import_prompts8.default)({type:"select",name:"compiler",message:"Which compiler would you like to use?",choices:[{title:"Babel",description:"Choose Babel for a vast ecosystem and battle-tested reliability.",value:"babel"},{title:"SWC",description:"Choose SWC for fast builds and simple configuration.",value:"swc"}],initial:0})).compiler}var import_chalk27=__toESM(require("chalk")),import_ts_dedent35=__toESM(require("ts-dedent")),removeJestTestingLibrary={id:"remove-jest-testing-library",promptType:"manual",async check({mainConfig,packageManager}){let deps=await packageManager.getAllDependencies(),incompatiblePackages=Object.keys(deps).filter(it=>it==="@storybook/jest"||it==="@storybook/testing-library");return incompatiblePackages.length?{incompatiblePackages}:null},prompt({incompatiblePackages}){return import_ts_dedent35.default`
508
- ${import_chalk27.default.bold("Attention")}: We've detected that you're using the following packages which are known to be incompatible with Storybook 8:
499
+ `)},async run({result,mainConfigPath,packageManager,skipInstall,dryRun}){let{defaultCompiler,shouldRemoveSWCFlag,isNextJs}=result;if(shouldRemoveSWCFlag&&await updateMainConfig({mainConfigPath,dryRun:!!dryRun},main=>{main.removeField(["framework","options","builder","useSWC"])}),!isNextJs){let compiler=defaultCompiler==="babel"?await askUserForCompilerChoice():"swc",compilerPackageName=Object.entries(compilerNameToCoreCompiler).find(([,coreCompiler])=>coreCompiler===compiler)[0];await add(compilerPackageName,{packageManager:packageManager.type,skipPostinstall:!!skipInstall})}}};async function askUserForCompilerChoice(){return(await(0,import_prompts9.default)({type:"select",name:"compiler",message:"Which compiler would you like to use?",choices:[{title:"Babel",description:"Choose Babel for a vast ecosystem and battle-tested reliability.",value:"babel"},{title:"SWC",description:"Choose SWC for fast builds and simple configuration.",value:"swc"}],initial:0})).compiler}var import_chalk25=__toESM(require("chalk")),import_ts_dedent33=__toESM(require("ts-dedent"));var import_codemod2=require("@storybook/codemod"),import_prompts10=__toESM(require("prompts")),logger22=console,removeJestTestingLibrary={id:"remove-jest-testing-library",versionRange:["<8.0.0-alpha.0",">=8.0.0-alpha.0"],promptType:"auto",async check({packageManager}){let deps=await packageManager.getAllDependencies(),incompatiblePackages=Object.keys(deps).filter(it=>it==="@storybook/jest"||it==="@storybook/testing-library");return incompatiblePackages.length?{incompatiblePackages}:null},prompt({incompatiblePackages}){return import_ts_dedent33.default`
500
+ ${import_chalk25.default.bold("Attention")}: We've detected that you're using the following packages which are known to be incompatible since Storybook 8:
509
501
 
510
- ${incompatiblePackages.map(name=>`- ${import_chalk27.default.cyan(`${name}`)}`).join(`
502
+ ${incompatiblePackages.map(name=>`- ${import_chalk25.default.cyan(`${name}`)}`).join(`
511
503
  `)}
512
504
 
513
- Install the replacement for those packages: ${import_chalk27.default.cyan("@storybook/test")}
505
+ We will uninstall them for you and install ${import_chalk25.default.cyan("@storybook/test")} instead.
506
+
507
+ Also, we can help you migrate your stories to use the new package.
508
+ `},async run({packageManager,dryRun}){if(!dryRun){let packageJson=await packageManager.retrievePackageJson();await packageManager.removeDependencies({skipInstall:!0,packageJson},["@storybook/jest","@storybook/testing-library"]);let versionToInstall=getStorybookVersionSpecifier(packageJson);await packageManager.addDependencies({packageJson},[`@storybook/test@${versionToInstall}`]);let{glob:globString}=await(0,import_prompts10.default)({type:"text",name:"glob",message:"Please enter the glob for your stories to migrate to @storybook/test",initial:"./src/**/*.stories.*"});globString&&await(0,import_codemod2.runCodemod)("migrate-to-test-package",{glob:globString,dryRun,logger:logger22})}}};var import_chalk26=__toESM(require("chalk")),import_ts_dedent34=require("ts-dedent"),import_path14=require("path"),import_fs_extra7=__toESM(require("fs-extra")),import_globby2=__toESM(require("globby")),MDX1_STYLE_START=/<style>{`/g,MDX1_STYLE_END=/`}<\/style>/g,MDX1_COMMENT=/<!--(.+)-->/g,MDX1_CODEBLOCK=/(?:\n~~~(?:\n|.)*?\n~~~)|(?:\n```(?:\n|.)*?\n```)/g,fixMdxStyleTags=mdx=>mdx.replace(MDX1_STYLE_START,"<style>\n {`").replace(MDX1_STYLE_END," `}\n</style>"),fixMdxComments=mdx=>{let codeblocks=mdx.matchAll(MDX1_CODEBLOCK);return mdx.split(MDX1_CODEBLOCK).map(v=>v.replace(MDX1_COMMENT,(original,group)=>`{/*${group}*/}`)).reduce((acc,item,i)=>{let next=codeblocks.next();return next.done?acc+item:acc+item+next.value[0]},"")},logger23=console,mdx1to3={id:"mdx1to3",versionRange:["<7.0.0",">=8.0.0-alpha.0"],async check(){let storiesMdxFiles=await(0,import_globby2.default)("./!(node_modules)**/*.(story|stories).mdx");return storiesMdxFiles.length?{storiesMdxFiles}:null},prompt({storiesMdxFiles}){return import_ts_dedent34.dedent`
509
+ We've found ${import_chalk26.default.yellow(storiesMdxFiles.length)} '.stories.mdx' files in your project.
514
510
 
515
- And run the following codemod:
516
- ${import_chalk27.default.cyan('npx storybook migrate migrate-to-test-package --glob="**/*.stories.@(js|jsx|ts|tsx)"')}
517
- `}};var allFixes=[newFrameworks,cra5,webpack5,vue3,vite4,viteConfigFile,eslintPlugin,builderVite,sbBinary,sbScripts,incompatibleAddons,removeArgtypesRegex,removeJestTestingLibrary,removedGlobalClientAPIs,mdx1to2,mdxgfm,autodocsTrue,angularBuildersMultiproject,angularBuilders,wrapRequire,reactDocgen,storyshotsMigration,removeReactDependency,removeLegacyMDX1,webpack5CompilerSetup];var import_os=require("os"),ansiRegex2=({onlyFirst=!1}={})=>{let pattern=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(pattern,onlyFirst?void 0:"g")},cleanLog=str=>str.replace(ansiRegex2(),"").replace(/╮│/g,`\u256E
511
+ Storybook has upgraded to MDX3 (https://mdxjs.com/blog/v3/). MDX3 itself doesn't contain disruptive breaking changes, whereas the transition from MDX1 to MDX2 was a significant change.
512
+ We can try to automatically upgrade your MDX files to MDX3 format using some common patterns.
513
+
514
+ After this install completes, and before you start Storybook, we strongly recommend reading the MDX2 section
515
+ of the 7.0 migration guide. It contains useful tools for detecting and fixing any remaining issues.
516
+
517
+ ${import_chalk26.default.cyan("https://storybook.js.org/migration-guides/7.0")}
518
+ `},async run({result:{storiesMdxFiles},dryRun}){await Promise.all([...storiesMdxFiles.map(async fname=>{let contents=await import_fs_extra7.default.readFile(fname,"utf-8"),updated=fixMdxComments(fixMdxStyleTags(contents));updated===contents?logger23.info(`\u{1F197} Unmodified ${(0,import_path14.basename)(fname)}`):(logger23.info(`\u2705 Modified ${(0,import_path14.basename)(fname)}`),dryRun||await import_fs_extra7.default.writeFile(fname,updated))})])}};var import_chalk27=__toESM(require("chalk")),import_ts_dedent35=require("ts-dedent");var addonPostCSS={id:"addon-postcss",versionRange:["<7",">=7"],promptType:"notification",async check({mainConfig}){return!getAddonNames(mainConfig).find(addon=>addon.includes("@storybook/addon-postcss"))?null:{hasAddonPostcss:!0}},prompt(){return import_ts_dedent35.dedent`
519
+ ${import_chalk27.default.bold("Attention")}: We've detected that you're using the following package which are incompatible with Storybook 8 and beyond:
520
+
521
+ - ${import_chalk27.default.cyan("@storybook/addon-postcss")}
522
+
523
+ Please migrate to ${import_chalk27.default.cyan("@storybook/addon-styling-webpack")} once you're done upgrading.
524
+ `}};var allFixes=[newFrameworks,cra5,webpack5,vue3,addonPostCSS,viteConfigFile,eslintPlugin,builderVite,sbBinary,sbScripts,removeJestTestingLibrary,removeArgtypesRegex,removedGlobalClientAPIs,mdxgfm,mdxToCSF,autodocsTrue,angularBuildersMultiproject,angularBuilders,wrapRequire,reactDocgen,storyshotsMigration,removeReactDependency,removeLegacyMDX1,webpack5CompilerSetup,mdx1to3];var import_os=require("os"),ansiRegex2=({onlyFirst=!1}={})=>{let pattern=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(pattern,onlyFirst?void 0:"g")},cleanLog=str=>str.replace(ansiRegex2(),"").replace(/╮│/g,`\u256E
518
525
  \u2502`).replace(/││/g,`\u2502
519
526
  \u2502`).replace(/│╰/g,`\u2502
520
- \u2570`).replace(/⚠️ {2}failed to check/g,`${import_os.EOL}\u26A0\uFE0F failed to check`);var import_chalk29=__toESM(require("chalk"));var import_ts_dedent36=__toESM(require("ts-dedent"));var import_chalk28=__toESM(require("chalk")),import_core_common19=require("@storybook/core-common");var import_semver20=__toESM(require("semver"));function hasMultipleVersions(versions7){return versions7.find(v=>{let major=import_semver20.default.major(v);if(major===0){let minor=import_semver20.default.minor(v);if(minor===0){let patch=import_semver20.default.patch(v);return versions7.some(v2=>import_semver20.default.patch(v2)!==patch)}return versions7.some(v2=>import_semver20.default.minor(v2)!==minor)}return versions7.some(v2=>import_semver20.default.major(v2)!==major)})}var messageDivider=`
527
+ \u2570`).replace(/⚠️ {2}failed to check/g,`${import_os.EOL}\u26A0\uFE0F failed to check`);var import_chalk29=__toESM(require("chalk"));var import_ts_dedent36=__toESM(require("ts-dedent"));var import_chalk28=__toESM(require("chalk")),import_core_common17=require("@storybook/core-common");var import_semver14=__toESM(require("semver"));function hasMultipleVersions(versions6){return versions6.find(v=>{let major=import_semver14.default.major(v);if(major===0){let minor=import_semver14.default.minor(v);if(minor===0){let patch=import_semver14.default.patch(v);return versions6.some(v2=>import_semver14.default.patch(v2)!==patch)}return versions6.some(v2=>import_semver14.default.minor(v2)!==minor)}return versions6.some(v2=>import_semver14.default.major(v2)!==major)})}var messageDivider=`
521
528
 
522
- `,allowList=["@storybook/csf","@storybook/addons","@storybook/channel-postmessage","@storybook/channel-websocket","@storybook/client-api","@storybook/client-logger","@storybook/core-client","@storybook/preview-web","@storybook/preview-api","@storybook/store","@storybook/components","@storybook/router","@storybook/theming","@storybook/api","@storybook/manager-api"],disallowList=[Object.keys(import_core_common19.rendererPackages),Object.keys(import_core_common19.frameworkPackages),"@storybook/core-events","@storybook/instrumenter","@storybook/core-common","@storybook/core-server","@storybook/manager","@storybook/preview"];function getDuplicatedDepsWarnings(installationMetadata){try{if(!installationMetadata||!installationMetadata?.duplicatedDependencies||Object.keys(installationMetadata.duplicatedDependencies).length===0)return;let messages=[],{critical,trivial}=Object.entries(installationMetadata?.duplicatedDependencies).reduce((acc,[dep,packageVersions2])=>{if(allowList.includes(dep))return acc;let hasMultipleMajorVersions=hasMultipleVersions(packageVersions2);return disallowList.includes(dep)&&hasMultipleMajorVersions?acc.critical.push(`${import_chalk28.default.redBright(dep)}:
529
+ `,allowList=["@storybook/csf","@storybook/addons","@storybook/channel-postmessage","@storybook/channel-websocket","@storybook/client-api","@storybook/client-logger","@storybook/core-client","@storybook/preview-web","@storybook/preview-api","@storybook/store","@storybook/components","@storybook/router","@storybook/theming","@storybook/api","@storybook/manager-api"],disallowList=[Object.keys(import_core_common17.rendererPackages),Object.keys(import_core_common17.frameworkPackages),"@storybook/core-events","@storybook/instrumenter","@storybook/core-common","@storybook/core-server","@storybook/manager","@storybook/preview"];function getDuplicatedDepsWarnings(installationMetadata){try{if(!installationMetadata||!installationMetadata?.duplicatedDependencies||Object.keys(installationMetadata.duplicatedDependencies).length===0)return;let messages=[],{critical,trivial}=Object.entries(installationMetadata?.duplicatedDependencies).reduce((acc,[dep,packageVersions2])=>{if(allowList.includes(dep))return acc;let hasMultipleMajorVersions=hasMultipleVersions(packageVersions2);return disallowList.includes(dep)&&hasMultipleMajorVersions?acc.critical.push(`${import_chalk28.default.redBright(dep)}:
523
530
  ${packageVersions2.join(", ")}`):acc.trivial.push(`${import_chalk28.default.hex("#ff9800")(dep)}:
524
531
  ${packageVersions2.join(", ")}`),acc},{critical:[],trivial:[]});return critical.length===0&&trivial.length===0||(critical.length>0&&(messages.push(`${import_chalk28.default.bold("Critical:")} The following dependencies are duplicated and WILL cause unexpected behavior:`),messages.push(critical.join(messageDivider),`
525
532
  `)),trivial.length>0&&(messages.push(`${import_chalk28.default.bold("Attention:")} The following dependencies are duplicated which might cause unexpected behavior:`),messages.push(trivial.join(messageDivider))),messages.push(`
526
- `,`You can find more information for a given dependency by running ${import_chalk28.default.cyan(`${installationMetadata.infoCommand} <package-name>`)}`),messages.push(`
527
- `,`Please try de-duplicating these dependencies by running ${import_chalk28.default.cyan(`${installationMetadata.dedupeCommand}`)}`)),messages}catch{return}}var messageDivider2=`
533
+ `,`Please try de-duplicating these dependencies by running ${import_chalk28.default.cyan(`${installationMetadata.dedupeCommand}`)}`),messages.push(`
534
+ `,`You can find more information for a given dependency by running ${import_chalk28.default.cyan(`${installationMetadata.infoCommand} <package-name>`)}`)),messages}catch{return}}var messageDivider2=`
528
535
 
529
536
  `,segmentDivider=`
530
537
 
@@ -536,111 +543,97 @@ ${error}`).join(`
536
543
 
537
544
  The automigrations try to migrate common patterns in your project, but might not contain everything needed to migrate to the latest version of Storybook.
538
545
 
539
- Please check the changelog and migration guide for manual migrations and more information: ${import_chalk29.default.yellow("https://storybook.js.org/migration-guides/7.0")}
546
+ Please check the changelog and migration guide for manual migrations and more information: ${import_chalk29.default.yellow("https://storybook.js.org/docs/8.0/migration-guide")}
540
547
  And reach out on Discord if you need help: ${import_chalk29.default.yellow("https://discord.gg/storybook")}
541
- `);let duplicatedDepsMessage=installationMetadata?getDuplicatedDepsWarnings(installationMetadata):getDuplicatedDepsWarnings();duplicatedDepsMessage&&messages.push(duplicatedDepsMessage.join(messageDivider2));let hasNoFixes=Object.values(fixResults).every(r=>r==="unnecessary"),hasFailures=Object.values(fixResults).some(r=>r==="failed"||r==="check_failed"),title=hasNoFixes?"No migrations were applicable to your project":hasFailures?"Migration check ran with failures":"Migration check ran successfully";return boxen(messages.filter(Boolean).join(segmentDivider),{borderStyle:"round",padding:1,title,borderColor:hasFailures?"red":"green"})}var logger22=console,LOG_FILE_NAME="migration-storybook.log",LOG_FILE_PATH=(0,import_path14.join)(process.cwd(),LOG_FILE_NAME),TEMP_LOG_FILE_PATH="",originalStdOutWrite=process.stdout.write.bind(process.stdout),originalStdErrWrite=process.stderr.write.bind(process.stdout),augmentLogsToFile=()=>{TEMP_LOG_FILE_PATH=import_tempy.default.file({name:LOG_FILE_NAME});let logStream=(0,import_fs_extra8.createWriteStream)(TEMP_LOG_FILE_PATH);process.stdout.write=d=>(originalStdOutWrite(d),logStream.write(cleanLog(d))),process.stderr.write=d=>logStream.write(cleanLog(d))},cleanup=()=>{process.stdout.write=originalStdOutWrite,process.stderr.write=originalStdErrWrite},logAvailableMigrations=()=>{let availableFixes=allFixes.map(f=>import_chalk30.default.yellow(f.id)).join(", ");logger22.info(`
542
- The following migrations are available: ${availableFixes}`)},doAutomigrate=async options=>{let packageManager=import_core_common20.JsPackageManagerFactory.getPackageManager({force:options.packageManager}),[packageJson,storybookVersion]=await Promise.all([packageManager.retrievePackageJson(),(0,import_core_common20.getCoercedStorybookVersion)(packageManager)]),{configDir:inferredConfigDir,mainConfig:mainConfigPath}=(0,import_core_common20.getStorybookInfo)(packageJson,options.configDir),configDir=options.configDir||inferredConfigDir||".storybook";if(!storybookVersion)throw new Error("Could not determine Storybook version");if(!mainConfigPath)throw new Error("Could not determine main config path");return automigrate({...options,packageManager,storybookVersion,mainConfigPath,configDir})},automigrate=async({fixId,fixes:inputFixes,dryRun,yes,packageManager,list,configDir,mainConfigPath,storybookVersion,renderer:rendererPackage,skipInstall,hideMigrationSummary=!1})=>{if(list)return logAvailableMigrations(),null;let selectedFixes=inputFixes||allFixes,fixes=fixId?selectedFixes.filter(f=>f.id===fixId):selectedFixes;if(fixId&&fixes.length===0)return logger22.info(`\u{1F4ED} No migrations found for ${import_chalk30.default.magenta(fixId)}.`),logAvailableMigrations(),null;augmentLogsToFile(),logger22.info("\u{1F50E} checking possible migrations..");let{fixResults,fixSummary,preCheckFailure}=await runFixes({fixes,packageManager,rendererPackage,skipInstall,configDir,mainConfigPath,storybookVersion,dryRun,yes});if(Object.values(fixResults).some(r=>r==="failed"||r==="check_failed")?await(0,import_fs_extra8.move)(TEMP_LOG_FILE_PATH,(0,import_path14.join)(process.cwd(),LOG_FILE_NAME),{overwrite:!0}):await(0,import_fs_extra8.remove)(TEMP_LOG_FILE_PATH),!hideMigrationSummary){let installationMetadata=await packageManager.findInstallations(["@storybook/*","storybook"]);logger22.info(),logger22.info(getMigrationSummary({fixResults,fixSummary,logFile:LOG_FILE_PATH,installationMetadata})),logger22.info()}return cleanup(),{fixResults,preCheckFailure}};async function runFixes({fixes,dryRun,yes,rendererPackage,skipInstall,configDir,packageManager,mainConfigPath,storybookVersion}){let fixResults={},fixSummary={succeeded:[],failed:{},manual:[],skipped:[]};for(let i=0;i<fixes.length;i+=1){let f=fixes[i],result;try{let{mainConfig,previewConfigPath}=await getStorybookData({configDir,packageManager});result=await f.check({packageManager,configDir,rendererPackage,mainConfig,storybookVersion,previewConfigPath,mainConfigPath})}catch(error){logger22.info(`\u26A0\uFE0F failed to check fix ${import_chalk30.default.bold(f.id)}`),error instanceof Error&&(logger22.error(`
543
- ${error.stack}`),fixSummary.failed[f.id]=error.message),fixResults[f.id]="check_failed"}if(result){let promptType=typeof f.promptType=="function"?await f.promptType(result):f.promptType??"auto";logger22.info(`
544
- \u{1F50E} found a '${import_chalk30.default.cyan(f.id)}' migration:`);let message=f.prompt(result),getTitle=()=>{switch(promptType){case"auto":return"Automigration detected";case"manual":return"Manual migration detected";case"notification":return"Migration notification"}};logger22.info(boxen(message,{borderStyle:"round",padding:1,borderColor:"#F1618C",title:getTitle()}));let runAnswer;try{if(dryRun)runAnswer={fix:!1};else if(yes)runAnswer={fix:!0},promptType==="manual"&&(fixResults[f.id]="manual_succeeded",fixSummary.manual.push(f.id));else if(promptType==="manual"){fixResults[f.id]="manual_succeeded",fixSummary.manual.push(f.id),logger22.info();let{shouldContinue}=await(0,import_prompts9.default)({type:"toggle",name:"shouldContinue",message:"Select continue once you have made the required changes, or quit to exit the migration process",initial:!0,active:"continue",inactive:"quit"},{onCancel:()=>{throw new Error}});if(!shouldContinue){fixResults[f.id]="manual_skipped";break}}else promptType==="auto"?runAnswer=await(0,import_prompts9.default)({type:"confirm",name:"fix",message:`Do you want to run the '${import_chalk30.default.cyan(f.id)}' migration on your project?`,initial:!0},{onCancel:()=>{throw new Error}}):promptType==="notification"&&(runAnswer=await(0,import_prompts9.default)({type:"confirm",name:"fix",message:"Do you want to continue?",initial:!0},{onCancel:()=>{throw new Error}}))}catch{break}if(promptType==="auto")if((0,import_tiny_invariant5.default)(runAnswer,"runAnswer must be defined if not promptOnly"),runAnswer.fix)try{(0,import_tiny_invariant5.default)(typeof f.run=="function","run method should be available in fix."),(0,import_tiny_invariant5.default)(mainConfigPath,"Main config path should be defined to run migration."),await f.run({result,packageManager,dryRun,mainConfigPath,skipInstall}),logger22.info(`\u2705 ran ${import_chalk30.default.cyan(f.id)} migration`),fixResults[f.id]="succeeded",fixSummary.succeeded.push(f.id)}catch(error){fixResults[f.id]="failed",fixSummary.failed[f.id]=error instanceof Error?error.message:"Failed to run migration",logger22.info(`\u274C error when running ${import_chalk30.default.cyan(f.id)} migration`),logger22.info(error),logger22.info()}else fixResults[f.id]="skipped",fixSummary.skipped.push(f.id)}else fixResults[f.id]=fixResults[f.id]||"unnecessary"}return{fixResults,fixSummary}}var import_chalk31=__toESM(require("chalk")),import_ts_dedent37=__toESM(require("ts-dedent")),import_semver21=__toESM(require("semver"));var logger23=console,getNextGlob=glob3=>{let extGlobsRegex=new RegExp(/(.*\.)(stories\.@.*)(\|mdx|mdx\|)(.*)$/i);if(glob3.match(extGlobsRegex))return glob3.replace(extGlobsRegex,"$1@(mdx|$2$4)");let allStoriesExtensionsRegex=new RegExp(/(.*\.)(stories\.\*)$/i);return glob3.match(allStoriesExtensionsRegex)?glob3.replace(allStoriesExtensionsRegex,"$1@(mdx|$2)"):glob3.replaceAll(".stories.mdx",".mdx")},bareMdxStoriesGlob={id:"bare-mdx-stories-glob",async check({storybookVersion,mainConfig}){if(!import_semver21.default.gte(storybookVersion,"7.0.0"))return null;let existingStoriesEntries=mainConfig.stories;if(!existingStoriesEntries)throw new Error(import_ts_dedent37.default`
545
- ❌ Unable to determine Storybook stories globs in ${import_chalk31.default.blue(mainConfig)}, skipping ${import_chalk31.default.cyan(this.id)} fix.
546
-
547
- In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx.
548
+ `);let duplicatedDepsMessage=installationMetadata?getDuplicatedDepsWarnings(installationMetadata):getDuplicatedDepsWarnings();duplicatedDepsMessage&&messages.push(duplicatedDepsMessage.join(messageDivider2));let hasNoFixes=Object.values(fixResults).every(r=>r==="unnecessary"),hasFailures=Object.values(fixResults).some(r=>r==="failed"||r==="check_failed"),title=hasNoFixes?"No migrations were applicable to your project":hasFailures?"Migration check ran with failures":"Migration check ran successfully";return boxen(messages.filter(Boolean).join(segmentDivider),{borderStyle:"round",padding:1,title,borderColor:hasFailures?"red":"green"})}var import_chalk32=__toESM(require("chalk"));var import_fs_extra8=require("fs-extra"),import_tempy=__toESM(require("tempy")),import_ts_dedent37=__toESM(require("ts-dedent")),import_path15=require("path"),import_core_common20=require("@storybook/core-common");var import_chalk30=__toESM(require("chalk")),import_semver15=__toESM(require("semver")),import_core_common18=require("@storybook/core-common");function getPrimaryVersion(name,installationMetadata){if(!name)return;let packageMetadata=installationMetadata?.dependencies[name];if(packageMetadata)return packageMetadata[0]?.version}function getMismatchingVersionsWarnings(installationMetadata,allDependencies){if(!installationMetadata)return;let messages=[];try{let frameworkPackageName=Object.keys(installationMetadata?.dependencies||[]).find(packageName=>Object.keys(import_core_common18.frameworkPackages).includes(packageName)),cliVersion=getPrimaryVersion("@storybook/cli",installationMetadata)||getPrimaryVersion("storybook",installationMetadata),frameworkVersion=getPrimaryVersion(frameworkPackageName,installationMetadata);if(!cliVersion||!frameworkVersion||import_semver15.default.eq(cliVersion,frameworkVersion))return;messages.push(`${import_chalk30.default.bold("Attention:")} There seems to be a mismatch between your Storybook package versions. This can result in a broken Storybook installation.`);let versionToCompare,packageToDisplay;import_semver15.default.lt(cliVersion,frameworkVersion)?(versionToCompare=frameworkVersion,packageToDisplay=frameworkPackageName):(versionToCompare=cliVersion,packageToDisplay="storybook"),messages.push(`The version of your storybook core packages should align with ${import_chalk30.default.yellow(versionToCompare)} (from the ${import_chalk30.default.cyan(packageToDisplay)} package) or higher.`);let filteredDependencies=Object.entries(installationMetadata?.dependencies||[]).filter(([name,packages])=>Object.keys(import_core_common18.versions).includes(name)?packages[0].version!==versionToCompare:!1);if(filteredDependencies.length>0){let packageJsonSuffix="(in your package.json)";messages.push("Based on your lockfile, these dependencies should be aligned:",filteredDependencies.map(([name,dep])=>`${import_chalk30.default.hex("#ff9800")(name)}: ${dep[0].version} ${allDependencies?.[name]?packageJsonSuffix:""}`).sort((a,b)=>(b.includes(packageJsonSuffix)?1:0)-(a.includes(packageJsonSuffix)?1:0)).join(`
549
+ `))}return messages.push(`You can run ${import_chalk30.default.cyan("npx storybook@latest upgrade")} to upgrade all of your Storybook packages to the latest version.
548
550
 
549
- We were unable to automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx.
550
- We suggest you make this change manually.
551
+ Alternatively you can try manually changing the versions to match in your package.json. We also recommend regenerating your lockfile, or running the following command to possibly deduplicate your Storybook package versions: ${import_chalk30.default.cyan(installationMetadata?.dedupeCommand)}`),messages.join(`
551
552
 
552
- To learn more about this change, see: ${import_chalk31.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files")}
553
- `);let nextStoriesEntries=existingStoriesEntries.map(entry=>{let isSpecifier=typeof entry!="string",glob3=isSpecifier?entry.files:entry;if(!glob3)return entry;let nextGlob=getNextGlob(glob3);return isSpecifier?{...entry,files:nextGlob}:nextGlob});return existingStoriesEntries.length===nextStoriesEntries.length&&existingStoriesEntries.every((entry,index)=>{let nextEntry=nextStoriesEntries[index];return typeof entry=="string"?entry===nextEntry:typeof nextEntry=="string"?!1:entry.files===nextEntry.files})?null:{existingStoriesEntries,nextStoriesEntries}},prompt({existingStoriesEntries,nextStoriesEntries}){let prettyExistingStoriesEntries=existingStoriesEntries.map(entry=>JSON.stringify(entry,null,2)).join(`
554
- `),prettyNextStoriesEntries=nextStoriesEntries.map(entry=>JSON.stringify(entry,null,2)).join(`
555
- `);return import_ts_dedent37.default`
556
- We've detected your project has one or more globs in your 'stories' config that matches .stories.mdx files:
557
- ${import_chalk31.default.cyan(prettyExistingStoriesEntries)}
558
-
559
- In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx.
553
+ `)}catch{return}}var import_chalk31=__toESM(require("chalk")),import_semver16=__toESM(require("semver")),import_core_common19=require("@storybook/core-common"),isPackageIncompatible=(installedVersion,currentStorybookVersion)=>{let storybookVersion=import_semver16.default.coerce(currentStorybookVersion),packageVersion=import_semver16.default.coerce(installedVersion);return storybookVersion?.major!==packageVersion?.major},checkPackageCompatibility=async(dependency,context)=>{let{currentStorybookVersion,skipErrors,packageManager}=context;try{let dependencyPackageJson=await packageManager.getPackageJSON(dependency);if(dependencyPackageJson===null)return{packageName:dependency};let{version:packageVersion,name=dependency,dependencies,peerDependencies,homepage}=dependencyPackageJson,hasIncompatibleDependencies=!!Object.entries({...dependencies,...peerDependencies}).filter(([dep])=>import_core_common19.versions[dep]).find(([,version])=>version&&import_semver16.default.validRange(version)&&isPackageIncompatible(version,currentStorybookVersion)),isCorePackage3=import_core_common19.versions[name],availableUpdate;return isCorePackage3&&import_semver16.default.gt(currentStorybookVersion,packageVersion)&&(availableUpdate=currentStorybookVersion),{packageName:name,packageVersion,homepage,hasIncompatibleDependencies,availableUpdate}}catch(err){return skipErrors||console.log(`Error checking compatibility for ${dependency}, please report an issue:
554
+ `,err),{packageName:dependency}}},getIncompatibleStorybookPackages=async context=>{let packageManager=context.packageManager??import_core_common19.JsPackageManagerFactory.getPackageManager(),allDeps=await packageManager.getAllDependencies(),storybookLikeDeps=Object.keys(allDeps).filter(dep=>dep.includes("storybook"));if(storybookLikeDeps.length===0)throw new Error("No Storybook dependencies found in the package.json");return Promise.all(storybookLikeDeps.map(dep=>checkPackageCompatibility(dep,{...context,packageManager})))},getIncompatiblePackagesSummary=(dependencyAnalysis,currentStorybookVersion)=>{let summaryMessage=[],incompatiblePackages=dependencyAnalysis.filter(dep=>dep.hasIncompatibleDependencies);return incompatiblePackages.length>0&&(summaryMessage.push(`The following packages are incompatible with Storybook ${import_chalk31.default.bold(currentStorybookVersion)} as they depend on different major versions of Storybook packages:`),incompatiblePackages.forEach(({packageName:addonName,packageVersion:addonVersion,homepage,availableUpdate})=>{let packageDescription=`${import_chalk31.default.cyan(addonName)}@${import_chalk31.default.cyan(addonVersion)}`,updateMessage=availableUpdate?` (${availableUpdate} available!)`:"",packageRepo=homepage?`
555
+ Repo: ${import_chalk31.default.yellow(homepage)}`:"";summaryMessage.push(`- ${packageDescription}${updateMessage}${packageRepo}`)}),summaryMessage.push(`
556
+ `,"Please consider updating your packages or contacting the maintainers for compatibility details.","For more on Storybook 8 compatibility, see the linked GitHub issue:",import_chalk31.default.yellow("https://github.com/storybookjs/storybook/issues/26031"))),summaryMessage.join(`
557
+ `)};var isPrerelease=version=>version.includes("-");var logger24=console,LOG_FILE_NAME="doctor-storybook.log",LOG_FILE_PATH=(0,import_path15.join)(process.cwd(),LOG_FILE_NAME),TEMP_LOG_FILE_PATH="",originalStdOutWrite=process.stdout.write.bind(process.stdout),originalStdErrWrite=process.stderr.write.bind(process.stdout),augmentLogsToFile=()=>{TEMP_LOG_FILE_PATH=import_tempy.default.file({name:LOG_FILE_NAME});let logStream=(0,import_fs_extra8.createWriteStream)(TEMP_LOG_FILE_PATH);process.stdout.write=d=>(originalStdOutWrite(d),logStream.write(cleanLog(d))),process.stderr.write=d=>logStream.write(cleanLog(d))},cleanup=()=>{process.stdout.write=originalStdOutWrite,process.stderr.write=originalStdErrWrite},doctor=async({configDir:userSpecifiedConfigDir,packageManager:pkgMgr}={})=>{augmentLogsToFile();let foundIssues=!1,logDiagnostic=(title,message)=>{foundIssues=!0,logger24.info(boxen(message,{borderStyle:"round",padding:1,title,borderColor:"#F1618C"}))};logger24.info("\u{1FA7A} The doctor is checking the health of your Storybook..");let packageManager=import_core_common20.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),storybookVersion,mainConfig;try{let storybookData=await getStorybookData({configDir:userSpecifiedConfigDir,packageManager});storybookVersion=storybookData.storybookVersion,mainConfig=storybookData.mainConfig}catch(err){err.message.includes("No configuration files have been found")&&logger24.info(import_ts_dedent37.default`[Storybook doctor] Could not find or evaluate your Storybook main.js config directory at ${import_chalk32.default.blue(userSpecifiedConfigDir||".storybook")} so the doctor command cannot proceed. You might be running this command in a monorepo or a non-standard project structure. If that is the case, please rerun this command by specifying the path to your Storybook config directory via the --config-dir option.`),logger24.info(import_ts_dedent37.default`[Storybook doctor] ❌ ${err.message}`),logger24.info("Please fix the error and try again.")}if(storybookVersion||(logger24.info(import_ts_dedent37.default`
558
+ [Storybook doctor] ❌ Unable to determine Storybook version so the command will not proceed.
559
+ 🤔 Are you running storybook doctor from your project directory? Please specify your Storybook config directory with the --config-dir flag.
560
+ `),process.exit(1)),!mainConfig)throw new Error("mainConfig is undefined");let allDependencies=await packageManager.getAllDependencies(),incompatibleStorybookPackagesList=await getIncompatibleStorybookPackages({currentStorybookVersion:storybookVersion}),incompatiblePackagesMessage=getIncompatiblePackagesSummary(incompatibleStorybookPackagesList,storybookVersion);incompatiblePackagesMessage&&logDiagnostic("Incompatible packages found",incompatiblePackagesMessage);let installationMetadata=await packageManager.findInstallations(["@storybook/*","storybook"]);if(!incompatiblePackagesMessage){let mismatchingVersionMessage=getMismatchingVersionsWarnings(installationMetadata,allDependencies);if(mismatchingVersionMessage)logDiagnostic("Diagnostics",[mismatchingVersionMessage].join(`
560
561
 
561
- We can automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx.
562
- That would result in the following 'stories' config:
563
- ${import_chalk31.default.cyan(prettyNextStoriesEntries)}
562
+ -------
564
563
 
565
- To learn more about this change, see: ${import_chalk31.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files")}
566
- `},async run({dryRun,mainConfigPath,result:{nextStoriesEntries}}){logger23.info(import_ts_dedent37.default`✅ Setting 'stories' config:
567
- ${JSON.stringify(nextStoriesEntries,null,2)}`),dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{main.setFieldValue(["stories"],nextStoriesEntries)})}};var import_core_common21=require("@storybook/core-common");var logger24=console;async function migrate(migration,{glob:glob3,dryRun,list,rename,parser}){if(list)(0,import_codemod.listCodemods)().forEach(key=>logger24.log(key));else if(migration){if(migration==="mdx-to-csf"&&!dryRun){let packageManager=import_core_common21.JsPackageManagerFactory.getPackageManager(),[packageJson,storybookVersion]=await Promise.all([packageManager.retrievePackageJson(),(0,import_core_common21.getCoercedStorybookVersion)(packageManager)]),{configDir:inferredConfigDir,mainConfig:mainConfigPath}=(0,import_core_common21.getStorybookInfo)(packageJson),configDir=inferredConfigDir||".storybook";if(!storybookVersion)throw new Error("Could not determine Storybook version");if(!mainConfigPath)throw new Error("Could not determine main config path");await runFixes({fixes:[bareMdxStoriesGlob],configDir,mainConfigPath,packageManager,storybookVersion}),await addStorybookBlocksPackage()}await(0,import_codemod.runCodemod)(migration,{glob:glob3,dryRun,logger:logger24,rename,parser})}else throw new Error("Migrate: please specify a migration name or --list")}async function addStorybookBlocksPackage(){let packageManager=import_core_common21.JsPackageManagerFactory.getPackageManager(),packageJson=await packageManager.retrievePackageJson(),versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());logger24.info('\u2705 Adding "@storybook/blocks" package'),await packageManager.addDependencies({installAsDevDependencies:!0,packageJson},[`@storybook/blocks@${versionToInstall}`])}var import_cross_spawn=require("cross-spawn"),import_telemetry3=require("@storybook/telemetry"),import_semver24=__toESM(require("semver")),import_node_logger5=require("@storybook/node-logger"),import_core_server2=require("@storybook/core-server"),import_server_errors4=require("@storybook/core-events/server-errors"),import_chalk33=__toESM(require("chalk")),import_ts_dedent42=__toESM(require("ts-dedent"));var import_core_common22=require("@storybook/core-common");var import_node_logger4=require("@storybook/node-logger"),import_chalk32=__toESM(require("chalk"));var excludesFalse=x=>x!==!1,blockers=()=>[Promise.resolve().then(()=>(init_block_storystorev6(),block_storystorev6_exports)),Promise.resolve().then(()=>(init_block_stories_mdx(),block_stories_mdx_exports)),Promise.resolve().then(()=>(init_block_dependencies_versions(),block_dependencies_versions_exports)),Promise.resolve().then(()=>(init_block_node_version(),block_node_version_exports))],autoblock=async(options,list=blockers())=>{if(list.length===0)return null;import_node_logger4.logger.info("Checking for upgrade blockers...");let faults=(await Promise.all(list.map(async i=>{let{blocker:blocker5}=await i,result=await blocker5.check(options);return result?{id:blocker5.id,value:!0,log:blocker5.log(options,result)}:!1}))).filter(excludesFalse);if(faults.length>0){let messages={welcome:"Blocking your upgrade because of the following issues:",reminder:import_chalk32.default.yellow("Fix the above issues and try running the upgrade command again.")},borderColor="#FC521F";return import_node_logger4.logger.plain("Oh no.."),import_node_logger4.logger.plain(boxen([messages.welcome].concat(faults.map(i=>i.log)).concat([messages.reminder]).join(`
564
+ `));else{let list=installationMetadata?getDuplicatedDepsWarnings(installationMetadata):getDuplicatedDepsWarnings();Array.isArray(list)&&list.length>0&&logDiagnostic("Duplicated dependencies found",list?.join(`
565
+ `))}}let doctorCommand=isPrerelease(storybookVersion)?"npx storybook@next doctor":"npx storybook@latest doctor",commandMessage=`You can always recheck the health of your project by running:
566
+ ${import_chalk32.default.cyan(doctorCommand)}`;logger24.info(),foundIssues?(logger24.info(commandMessage),logger24.info(),logger24.info(`Full logs are available in ${import_chalk32.default.cyan(LOG_FILE_PATH)}`),await(0,import_fs_extra8.move)(TEMP_LOG_FILE_PATH,(0,import_path15.join)(process.cwd(),LOG_FILE_NAME),{overwrite:!0})):(logger24.info("\u{1F973} Your Storybook project looks good!"),logger24.info(commandMessage),await(0,import_fs_extra8.remove)(TEMP_LOG_FILE_PATH)),logger24.info(),cleanup()};var logger25=console,LOG_FILE_NAME2="migration-storybook.log",LOG_FILE_PATH2=(0,import_path16.join)(process.cwd(),LOG_FILE_NAME2),TEMP_LOG_FILE_PATH2="",originalStdOutWrite2=process.stdout.write.bind(process.stdout),originalStdErrWrite2=process.stderr.write.bind(process.stdout),augmentLogsToFile2=()=>{TEMP_LOG_FILE_PATH2=import_tempy2.default.file({name:LOG_FILE_NAME2});let logStream=(0,import_fs_extra9.createWriteStream)(TEMP_LOG_FILE_PATH2);process.stdout.write=d=>(originalStdOutWrite2(d),logStream.write(cleanLog(d))),process.stderr.write=d=>logStream.write(cleanLog(d))},cleanup2=()=>{process.stdout.write=originalStdOutWrite2,process.stderr.write=originalStdErrWrite2},logAvailableMigrations=()=>{let availableFixes=allFixes.map(f=>import_chalk33.default.yellow(f.id)).join(", ");logger25.info(`
567
+ The following migrations are available: ${availableFixes}`)},doAutomigrate=async options=>{let packageManager=import_core_common21.JsPackageManagerFactory.getPackageManager({force:options.packageManager}),[packageJson,storybookVersion]=await Promise.all([packageManager.retrievePackageJson(),(0,import_core_common21.getCoercedStorybookVersion)(packageManager)]),{configDir:inferredConfigDir,mainConfig:mainConfigPath}=(0,import_core_common21.getStorybookInfo)(packageJson,options.configDir),configDir=options.configDir||inferredConfigDir||".storybook";if(!storybookVersion)throw new Error("Could not determine Storybook version");if(!mainConfigPath)throw new Error("Could not determine main config path");await automigrate({...options,packageManager,storybookVersion,beforeVersion:storybookVersion,mainConfigPath,configDir,isUpgrade:!1}),await doctor({configDir,packageManager:options.packageManager})},automigrate=async({fixId,fixes:inputFixes,dryRun,yes,packageManager,list,configDir,mainConfigPath,storybookVersion,beforeVersion,renderer:rendererPackage,skipInstall,hideMigrationSummary=!1})=>{if(list)return logAvailableMigrations(),null;let selectedFixes=inputFixes||allFixes,fixes=fixId?selectedFixes.filter(f=>f.id===fixId):selectedFixes;if(fixId&&fixes.length===0)return logger25.info(`\u{1F4ED} No migrations found for ${import_chalk33.default.magenta(fixId)}.`),logAvailableMigrations(),null;augmentLogsToFile2(),logger25.info("\u{1F50E} checking possible migrations..");let{fixResults,fixSummary,preCheckFailure}=await runFixes({fixes,packageManager,rendererPackage,skipInstall,configDir,mainConfigPath,storybookVersion,beforeVersion,dryRun,yes});if(Object.values(fixResults).some(r=>r==="failed"||r==="check_failed")?await(0,import_fs_extra9.move)(TEMP_LOG_FILE_PATH2,(0,import_path16.join)(process.cwd(),LOG_FILE_NAME2),{overwrite:!0}):await(0,import_fs_extra9.remove)(TEMP_LOG_FILE_PATH2),!hideMigrationSummary){let installationMetadata=await packageManager.findInstallations(["@storybook/*","storybook"]);logger25.info(),logger25.info(getMigrationSummary({fixResults,fixSummary,logFile:LOG_FILE_PATH2,installationMetadata})),logger25.info()}return cleanup2(),{fixResults,preCheckFailure}};async function runFixes({fixes,dryRun,yes,rendererPackage,skipInstall,configDir,packageManager,mainConfigPath,storybookVersion,beforeVersion,isUpgrade}){let fixResults={},fixSummary={succeeded:[],failed:{},manual:[],skipped:[]};for(let i=0;i<fixes.length;i+=1){let f=fixes[i],result;try{let{mainConfig,previewConfigPath}=await getStorybookData({configDir,packageManager});(isUpgrade&&import_semver17.default.satisfies(beforeVersion,f.versionRange[0],{includePrerelease:!0})&&import_semver17.default.satisfies(storybookVersion,f.versionRange[1],{includePrerelease:!0})||!isUpgrade)&&(result=await f.check({packageManager,configDir,rendererPackage,mainConfig,storybookVersion,previewConfigPath,mainConfigPath}))}catch(error){logger25.info(`\u26A0\uFE0F failed to check fix ${import_chalk33.default.bold(f.id)}`),error instanceof Error&&(logger25.error(`
568
+ ${error.stack}`),fixSummary.failed[f.id]=error.message),fixResults[f.id]="check_failed"}if(result){let promptType=typeof f.promptType=="function"?await f.promptType(result):f.promptType??"auto";logger25.info(`
569
+ \u{1F50E} found a '${import_chalk33.default.cyan(f.id)}' migration:`);let message=f.prompt(result),getTitle=()=>{switch(promptType){case"auto":return"Automigration detected";case"manual":return"Manual migration detected";case"notification":return"Migration notification"}};logger25.info(boxen(message,{borderStyle:"round",padding:1,borderColor:"#F1618C",title:getTitle()}));let runAnswer;try{if(dryRun)runAnswer={fix:!1};else if(yes)runAnswer={fix:!0},promptType==="manual"&&(fixResults[f.id]="manual_succeeded",fixSummary.manual.push(f.id));else if(promptType==="manual"){fixResults[f.id]="manual_succeeded",fixSummary.manual.push(f.id),logger25.info();let{shouldContinue}=await(0,import_prompts11.default)({type:"toggle",name:"shouldContinue",message:"Select continue once you have made the required changes, or quit to exit the migration process",initial:!0,active:"continue",inactive:"quit"},{onCancel:()=>{throw new Error}});if(!shouldContinue){fixResults[f.id]="manual_skipped";break}}else promptType==="auto"?runAnswer=await(0,import_prompts11.default)({type:"confirm",name:"fix",message:`Do you want to run the '${import_chalk33.default.cyan(f.id)}' migration on your project?`,initial:!0},{onCancel:()=>{throw new Error}}):promptType==="notification"&&(runAnswer=await(0,import_prompts11.default)({type:"confirm",name:"fix",message:"Do you want to continue?",initial:!0},{onCancel:()=>{throw new Error}}))}catch{break}if(promptType==="auto")if((0,import_tiny_invariant5.default)(runAnswer,"runAnswer must be defined if not promptOnly"),runAnswer.fix)try{(0,import_tiny_invariant5.default)(typeof f.run=="function","run method should be available in fix."),(0,import_tiny_invariant5.default)(mainConfigPath,"Main config path should be defined to run migration."),await f.run({result,packageManager,dryRun,mainConfigPath,skipInstall}),logger25.info(`\u2705 ran ${import_chalk33.default.cyan(f.id)} migration`),fixResults[f.id]="succeeded",fixSummary.succeeded.push(f.id)}catch(error){fixResults[f.id]="failed",fixSummary.failed[f.id]=error instanceof Error?error.message:"Failed to run migration",logger25.info(`\u274C error when running ${import_chalk33.default.cyan(f.id)} migration`),logger25.info(error),logger25.info()}else fixResults[f.id]="skipped",fixSummary.skipped.push(f.id)}else fixResults[f.id]=fixResults[f.id]||"unnecessary"}return{fixResults,fixSummary}}var import_core_common22=require("@storybook/core-common");var logger26=console;async function migrate(migration,{glob:glob3,dryRun,list,rename,parser}){if(list)(0,import_codemod3.listCodemods)().forEach(key=>logger26.log(key));else if(migration){if(migration==="mdx-to-csf"&&!dryRun){let packageManager=import_core_common22.JsPackageManagerFactory.getPackageManager(),[packageJson,storybookVersion]=await Promise.all([packageManager.retrievePackageJson(),(0,import_core_common22.getCoercedStorybookVersion)(packageManager)]),{configDir:inferredConfigDir,mainConfig:mainConfigPath}=(0,import_core_common22.getStorybookInfo)(packageJson),configDir=inferredConfigDir||".storybook";if(!storybookVersion)throw new Error("Could not determine Storybook version");if(!mainConfigPath)throw new Error("Could not determine main config path");await runFixes({fixes:[mdxToCSF],configDir,mainConfigPath,packageManager,storybookVersion,beforeVersion:storybookVersion,isUpgrade:!1}),await addStorybookBlocksPackage()}await(0,import_codemod3.runCodemod)(migration,{glob:glob3,dryRun,logger:logger26,rename,parser})}else throw new Error("Migrate: please specify a migration name or --list")}async function addStorybookBlocksPackage(){let packageManager=import_core_common22.JsPackageManagerFactory.getPackageManager(),packageJson=await packageManager.retrievePackageJson(),versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());logger26.info('\u2705 Adding "@storybook/blocks" package'),await packageManager.addDependencies({installAsDevDependencies:!0,packageJson},[`@storybook/blocks@${versionToInstall}`])}var import_cross_spawn=require("cross-spawn"),import_telemetry3=require("@storybook/telemetry"),import_semver20=__toESM(require("semver")),import_node_logger6=require("@storybook/node-logger"),import_core_server2=require("@storybook/core-server"),import_server_errors4=require("@storybook/core-events/server-errors"),import_chalk38=__toESM(require("chalk")),import_ts_dedent41=__toESM(require("ts-dedent"));var import_core_common23=require("@storybook/core-common");var import_node_logger5=require("@storybook/node-logger"),import_chalk37=__toESM(require("chalk"));var excludesFalse=x=>x!==!1,blockers=()=>[Promise.resolve().then(()=>(init_block_storystorev6(),block_storystorev6_exports)),Promise.resolve().then(()=>(init_block_dependencies_versions(),block_dependencies_versions_exports)),Promise.resolve().then(()=>(init_block_node_version(),block_node_version_exports))],segmentDivider2=`
568
570
 
569
- `),{borderStyle:"round",padding:1,borderColor})),faults[0].id}return import_node_logger4.logger.plain("No blockers found."),import_node_logger4.logger.line(),null};var versionRegex=/(@storybook\/[^@]+)@(\S+)/,getStorybookVersion=line=>{if(line.startsWith("npm "))return null;let match2=versionRegex.exec(line);return!match2||!import_semver24.default.clean(match2[2])?null:{package:match2[1],version:match2[2]}},getInstalledStorybookVersion=async packageManager=>{let installations=await packageManager.findInstallations(["storybook","@storybook/cli"]);if(!installations)return;let cliVersion=installations.dependencies["@storybook/cli"]?.[0].version;return cliVersion||installations.dependencies.storybook?.[0].version},deprecatedPackages=[{minVersion:"6.0.0-alpha.0",url:"https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#60-deprecations",deprecations:["@storybook/addon-notes","@storybook/addon-info","@storybook/addon-contexts","@storybook/addon-options","@storybook/addon-centered"]}],formatPackage=pkg2=>`${pkg2.package}@${pkg2.version}`,warnPackages=pkgs=>pkgs.forEach(pkg2=>import_node_logger5.logger.warn(`- ${formatPackage(pkg2)}`)),checkVersionConsistency=()=>{let storybookPackages=(0,import_cross_spawn.sync)("npm",["ls"],{stdio:"pipe",shell:!0}).output.toString().split(`
570
- `).map(getStorybookVersion).filter(item=>!!item).filter(pkg2=>(0,import_core_common22.isCorePackage)(pkg2.package));if(!storybookPackages.length){import_node_logger5.logger.warn("No storybook core packages found."),import_node_logger5.logger.warn("'npm ls | grep storybook' can show if multiple versions are installed.");return}storybookPackages.sort((a,b)=>import_semver24.default.rcompare(a.version,b.version));let latestVersion=storybookPackages[0].version,outdated=storybookPackages.filter(pkg2=>pkg2.version!==latestVersion);outdated.length>0&&(import_node_logger5.logger.warn(`Found ${outdated.length} outdated packages (relative to '${formatPackage(storybookPackages[0])}')`),import_node_logger5.logger.warn("Please make sure your packages are updated to ensure a consistent experience."),warnPackages(outdated)),deprecatedPackages.forEach(({minVersion:minVersion2,url,deprecations})=>{if(import_semver24.default.gte(latestVersion,minVersion2)){let deprecated=storybookPackages.filter(pkg2=>deprecations.includes(pkg2.package));deprecated.length>0&&(import_node_logger5.logger.warn(`Found ${deprecated.length} deprecated packages since ${minVersion2}`),import_node_logger5.logger.warn(`See ${url}`),warnPackages(deprecated))}})},doUpgrade=async({skipCheck,packageManager:packageManagerName,dryRun,configDir:userSpecifiedConfigDir,yes,...options})=>{let packageManager=import_core_common22.JsPackageManagerFactory.getPackageManager({force:packageManagerName}),beforeVersion=await getInstalledStorybookVersion(packageManager)??"0.0.0",currentVersion=import_core_common22.versions["@storybook/cli"],isCanary=currentVersion.startsWith("0.0.0")||beforeVersion.startsWith("portal:")||beforeVersion.startsWith("workspace:");if(!isCanary&&(0,import_semver24.lt)(currentVersion,beforeVersion))throw new import_server_errors4.UpgradeStorybookToLowerVersionError({beforeVersion,currentVersion});if(!isCanary&&(0,import_semver24.eq)(currentVersion,beforeVersion))throw new import_server_errors4.UpgradeStorybookToSameVersionError({beforeVersion});let[latestVersion,packageJson,storybookVersion]=await Promise.all([packageManager.latestVersion("@storybook/cli"),packageManager.retrievePackageJson(),(0,import_core_common22.getCoercedStorybookVersion)(packageManager)]),isOutdated=(0,import_semver24.lt)(currentVersion,latestVersion),isPrerelease=(0,import_semver24.prerelease)(currentVersion)!==null,borderColor=isOutdated?"#FC521F":"#F1618C",messages={welcome:`Upgrading Storybook from version ${import_chalk33.default.bold(beforeVersion)} to version ${import_chalk33.default.bold(currentVersion)}..`,notLatest:import_chalk33.default.red(import_ts_dedent42.default`
571
- This version is behind the latest release, which is: ${import_chalk33.default.bold(latestVersion)}!
571
+ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
572
+
573
+ `,autoblock=async(options,list=blockers())=>{if(list.length===0)return null;import_node_logger5.logger.info("Checking for upgrade blockers...");let faults=(await Promise.all(list.map(async i=>{let{blocker:blocker4}=await i,result=await blocker4.check(options);return result?{id:blocker4.id,value:!0,log:blocker4.log(options,result)}:!1}))).filter(excludesFalse);if(faults.length>0){let messages={welcome:"Storybook has found potential blockers in your project that need to be resolved before upgrading:",reminder:import_chalk37.default.yellow("Fix the above issues and try running the upgrade command again.")},borderColor="#FC521F";return import_node_logger5.logger.plain(boxen([messages.welcome].concat([`
574
+
575
+ `]).concat([faults.map(i=>i.log).join(segmentDivider2)]).concat([segmentDivider2,messages.reminder]).join(""),{borderStyle:"round",padding:1,borderColor})),faults[0].id}return import_node_logger5.logger.plain("No blockers found."),import_node_logger5.logger.line(),null};var versionRegex=/(@storybook\/[^@]+)@(\S+)/,getStorybookVersion=line=>{if(line.startsWith("npm "))return null;let match2=versionRegex.exec(line);return!match2||!import_semver20.default.clean(match2[2])?null:{package:match2[1],version:match2[2]}},getInstalledStorybookVersion=async packageManager=>{let installations=await packageManager.findInstallations(Object.keys(import_core_common23.versions));if(installations)return Object.entries(installations.dependencies)[0]?.[1]?.[0].version},deprecatedPackages=[{minVersion:"6.0.0-alpha.0",url:"https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#60-deprecations",deprecations:["@storybook/addon-notes","@storybook/addon-info","@storybook/addon-contexts","@storybook/addon-options","@storybook/addon-centered"]}],formatPackage=pkg2=>`${pkg2.package}@${pkg2.version}`,warnPackages=pkgs=>pkgs.forEach(pkg2=>import_node_logger6.logger.warn(`- ${formatPackage(pkg2)}`)),checkVersionConsistency=()=>{let storybookPackages=(0,import_cross_spawn.sync)("npm",["ls"],{stdio:"pipe",shell:!0}).output.toString().split(`
576
+ `).map(getStorybookVersion).filter(item=>!!item).filter(pkg2=>(0,import_core_common23.isCorePackage)(pkg2.package));if(!storybookPackages.length){import_node_logger6.logger.warn("No storybook core packages found."),import_node_logger6.logger.warn("'npm ls | grep storybook' can show if multiple versions are installed.");return}storybookPackages.sort((a,b)=>import_semver20.default.rcompare(a.version,b.version));let latestVersion=storybookPackages[0].version,outdated=storybookPackages.filter(pkg2=>pkg2.version!==latestVersion);outdated.length>0&&(import_node_logger6.logger.warn(`Found ${outdated.length} outdated packages (relative to '${formatPackage(storybookPackages[0])}')`),import_node_logger6.logger.warn("Please make sure your packages are updated to ensure a consistent experience."),warnPackages(outdated)),deprecatedPackages.forEach(({minVersion:minVersion2,url,deprecations})=>{if(import_semver20.default.gte(latestVersion,minVersion2)){let deprecated=storybookPackages.filter(pkg2=>deprecations.includes(pkg2.package));deprecated.length>0&&(import_node_logger6.logger.warn(`Found ${deprecated.length} deprecated packages since ${minVersion2}`),import_node_logger6.logger.warn(`See ${url}`),warnPackages(deprecated))}})},doUpgrade=async({skipCheck,packageManager:packageManagerName,dryRun,configDir:userSpecifiedConfigDir,yes,...options})=>{let packageManager=import_core_common23.JsPackageManagerFactory.getPackageManager({force:packageManagerName}),beforeVersion=await getInstalledStorybookVersion(packageManager)??"0.0.0",currentVersion=import_core_common23.versions["@storybook/cli"],isCanary=currentVersion.startsWith("0.0.0")||beforeVersion.startsWith("portal:")||beforeVersion.startsWith("workspace:");if(!isCanary&&(0,import_semver20.lt)(currentVersion,beforeVersion))throw new import_server_errors4.UpgradeStorybookToLowerVersionError({beforeVersion,currentVersion});if(!isCanary&&(0,import_semver20.eq)(currentVersion,beforeVersion))throw new import_server_errors4.UpgradeStorybookToSameVersionError({beforeVersion});let[latestVersion,packageJson]=await Promise.all([packageManager.latestVersion("@storybook/cli"),packageManager.retrievePackageJson()]),isOutdated=(0,import_semver20.lt)(currentVersion,latestVersion),isPrerelease2=(0,import_semver20.prerelease)(currentVersion)!==null,borderColor=isOutdated?"#FC521F":"#F1618C",messages={welcome:`Upgrading Storybook from version ${import_chalk38.default.bold(beforeVersion)} to version ${import_chalk38.default.bold(currentVersion)}..`,notLatest:import_chalk38.default.red(import_ts_dedent41.default`
577
+ This version is behind the latest release, which is: ${import_chalk38.default.bold(latestVersion)}!
572
578
  You likely ran the upgrade command through npx, which can use a locally cached version, to upgrade to the latest version please run:
573
- ${import_chalk33.default.bold("npx storybook@latest upgrade")}
579
+ ${import_chalk38.default.bold("npx storybook@latest upgrade")}
574
580
 
575
581
  You may want to CTRL+C to stop, and run with the latest version instead.
576
- `),prelease:import_chalk33.default.yellow("This is a pre-release version.")};import_node_logger5.logger.plain(boxen([messages.welcome].concat(isOutdated&&!isPrerelease?[messages.notLatest]:[]).concat(isPrerelease?[messages.prelease]:[]).join(`
577
- `),{borderStyle:"round",padding:1,borderColor}));let results,{configDir:inferredConfigDir,mainConfig:mainConfigPath}=(0,import_core_common22.getStorybookInfo)(packageJson,userSpecifiedConfigDir),configDir=userSpecifiedConfigDir||inferredConfigDir||".storybook",mainConfig=await(0,import_core_common22.loadMainConfig)({configDir});if(!storybookVersion)throw new import_server_errors4.UpgradeStorybookUnknownCurrentVersionError;if(!results&&typeof mainConfig!="boolean"&&typeof mainConfigPath<"u"&&!options.force){let blockResult=await autoblock({packageManager,configDir,packageJson,mainConfig,mainConfigPath});blockResult&&(results={preCheckFailure:blockResult})}if(!dryRun&&!results){let toUpgradedDependencies=deps=>Object.keys(deps||{}).filter(dependency=>dependency in import_core_common22.versions).map(dependency=>`${dependency}@${(!isOutdated||isPrerelease)&&!isCanary?"^":""}${import_core_common22.versions[dependency]}`),upgradedDependencies=toUpgradedDependencies(packageJson.dependencies),upgradedDevDependencies=toUpgradedDependencies(packageJson.devDependencies);import_node_logger5.logger.info(`Updating dependencies in ${import_chalk33.default.cyan("package.json")}..`),upgradedDependencies.length>0&&await packageManager.addDependencies({installAsDevDependencies:!1,skipInstall:!0,packageJson},upgradedDependencies),upgradedDevDependencies.length>0&&await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall:!0,packageJson},upgradedDevDependencies),await packageManager.installDependencies()}if(!skipCheck&&!results&&mainConfigPath&&storybookVersion&&(checkVersionConsistency(),results=await automigrate({dryRun,yes,packageManager,configDir,mainConfigPath,storybookVersion})),!options.disableTelemetry){let{preCheckFailure,fixResults}=results||{};await(0,import_telemetry3.telemetry)("upgrade",{beforeVersion,afterVersion:currentVersion,...{automigrationResults:preCheckFailure?null:fixResults,automigrationPreCheckFailure:preCheckFailure||null}})}};async function upgrade(options){await(0,import_core_server2.withTelemetry)("upgrade",{cliOptions:options},()=>doUpgrade(options))}var import_prompts10=__toESM(require("prompts")),import_path16=__toESM(require("path")),import_chalk34=__toESM(require("chalk"));var import_ts_dedent43=require("ts-dedent"),import_giget=require("giget"),import_fs_extra9=require("fs-extra"),import_tiny_invariant6=__toESM(require("tiny-invariant")),import_semver25=require("semver");var baseTemplates={"cra/default-js":{name:"Create React App Latest (Webpack | JavaScript)",script:"npx create-react-app {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"cra/default-ts":{name:"Create React App Latest (Webpack | TypeScript)",script:"npx create-react-app {{beforeDir}} --template typescript",skipTasks:["smoke-test","bench"],expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"}},"nextjs/13-ts":{name:"Next.js v13.5 (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} -e https://github.com/vercel/next.js/tree/next-13/examples/hello-world && cd {{beforeDir}} && npm pkg set "dependencies.next"="^13.5.6" && yarn && git add . && git commit --amend --no-edit && cd ..',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/default-js":{name:"Next.js Latest (Webpack | JavaScript)",script:'yarn create next-app {{beforeDir}} --javascript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/default-ts":{name:"Next.js Latest (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} --typescript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/prerelease":{name:"Next.js Prerelease (Webpack | TypeScript)",script:'npx create-next-app@canary {{beforeDir}} --typescript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"react-vite/default-js":{name:"React Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template react",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"react-vite/default-ts":{name:"React Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template react-ts",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["bench"]},"react-webpack/18-ts":{name:"React Latest (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"react-webpack/17-ts":{name:"React v17 (Webpack | TypeScript)",script:'yarn create webpack5-react {{beforeDir}} --version-react="17" --version-react-dom="17"',expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"solid-vite/default-js":{name:"SolidJS Latest (Vite | JavaScript)",script:"npx degit solidjs/templates/js {{beforeDir}}",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev","bench"]},"solid-vite/default-ts":{name:"SolidJS Latest (Vite | TypeScript)",script:"npx degit solidjs/templates/ts {{beforeDir}}",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev","bench"]},"vue3-vite/default-js":{name:"Vue v3 (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template vue",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"vue3-vite/default-ts":{name:"Vue v3 (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template vue-ts",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"html-webpack/default":{name:"HTML Latest (Webpack | JavaScript)",script:"yarn create webpack5-html {{beforeDir}}",expected:{framework:"@storybook/html-webpack5",renderer:"@storybook/html",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"html-vite/default-js":{name:"HTML Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template vanilla && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"html-vite/default-ts":{name:"HTML Latest (Vite | TypeScript)",script:'npm create vite --yes {{beforeDir}} -- --template vanilla-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-vite/default-js":{name:"Svelte Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template svelte",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-vite/default-ts":{name:"Svelte Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template svelte-ts",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"angular-cli/prerelease":{name:"Angular CLI Prerelease (Webpack | TypeScript)",script:"npx -p @angular/cli@next ng new angular-v16 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn --ssr",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"angular-cli/default-ts":{name:"Angular CLI Latest (Webpack | TypeScript)",script:"npx -p @angular/cli ng new angular-latest --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn --ssr",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"angular-cli/15-ts":{name:"Angular CLI v15 (Webpack | TypeScript)",script:"npx -p @angular/cli@15 ng new angular-v15 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-js":{name:"SvelteKit Latest (Vite | JavaScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory={{beforeDir}} --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-ts":{name:"SvelteKit Latest (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/prerelease-ts":{name:"SvelteKit Prerelease (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/prerelease-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"lit-vite/default-js":{name:"Lit Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"lit-vite/default-ts":{name:"Lit Latest (Vite | TypeScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"vue-cli/default-js":{name:"Vue CLI v3 (Webpack | JavaScript)",script:'npx -p @vue/cli vue create {{beforeDir}} --default --packageManager=yarn --force --merge && cd {{beforeDir}} && echo "module.exports = {}" > webpack.config.js',expected:{framework:"@storybook/vue3-webpack5",renderer:"@storybook/vue3",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"preact-vite/default-js":{name:"Preact Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template preact",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"preact-vite/default-ts":{name:"Preact Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template preact-ts",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"qwik-vite/default-ts":{name:"Qwik CLI Latest (Vite | TypeScript)",script:"yarn create qwik basic {{beforeDir}}",inDevelopment:!0,expected:{framework:"storybook-framework-qwik",renderer:"storybook-framework-qwik",builder:"storybook-framework-qwik"},skipTasks:["e2e-tests","e2e-tests-dev","bench"]},"ember/3-js":{name:"Ember v3 (Webpack | JavaScript)",script:"npx --package ember-cli@3.28.1 ember new {{beforeDir}}",inDevelopment:!0,expected:{framework:"@storybook/ember",renderer:"@storybook/ember",builder:"@storybook/builder-webpack5"}},"ember/default-js":{name:"Ember v4 (Webpack | JavaScript)",script:"npx --package ember-cli@4.12.1 ember new {{beforeDir}} --yarn && cd {{beforeDir}} && yarn add --dev @storybook/ember-cli-storybook && yarn build",inDevelopment:!0,expected:{framework:"@storybook/ember",renderer:"@storybook/ember",builder:"@storybook/builder-webpack5"}}},internalTemplates={"internal/react18-webpack-babel":{name:"React with Babel Latest (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{extraDependencies:["@storybook/addon-webpack5-compiler-babel"],editAddons:addons=>[...addons,"@storybook/addon-webpack5-compiler-babel"].filter(a=>a!=="@storybook/addon-webpack5-compiler-swc")},isInternal:!0,skipTasks:["e2e-tests-dev","bench"]},"internal/react16-webpack":{name:"React 16 (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}} --version-react=16 --version-react-dom=16 --version-@types/react=16 --version-@types/react-dom=16",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"],isInternal:!0},"internal/server-webpack5":{name:"Server Webpack5",script:'yarn init -y && echo "module.exports = {}" > webpack.config.js',expected:{framework:"@storybook/server-webpack5",renderer:"@storybook/server",builder:"@storybook/builder-webpack5"},isInternal:!0,skipTasks:["bench"]}},benchTemplates={"bench/react-vite-default-ts":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts)",isInternal:!0,modifications:{skipTemplateStories:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-webpack-18-ts":{...baseTemplates["react-webpack/18-ts"],name:"Bench (react-webpack/18-ts)",isInternal:!0,modifications:{skipTemplateStories:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-vite-default-ts-nodocs":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts, no docs)",isInternal:!0,modifications:{skipTemplateStories:!0,disableDocs:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-vite-default-ts-test-build":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts, test-build)",isInternal:!0,modifications:{skipTemplateStories:!0,testBuild:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests"]},"bench/react-webpack-18-ts-test-build":{...baseTemplates["react-webpack/18-ts"],name:"Bench (react-webpack/18-ts, test-build)",isInternal:!0,modifications:{skipTemplateStories:!0,testBuild:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests"]}},allTemplates={...baseTemplates,...internalTemplates,...benchTemplates},normal=["cra/default-ts","react-vite/default-ts","angular-cli/default-ts","vue3-vite/default-ts","lit-vite/default-ts","svelte-vite/default-ts","svelte-kit/skeleton-ts","nextjs/default-ts","bench/react-vite-default-ts","bench/react-webpack-18-ts","bench/react-vite-default-ts-nodocs","bench/react-vite-default-ts-test-build","bench/react-webpack-18-ts-test-build","ember/default-js"],merged=[...normal,"react-webpack/18-ts","react-webpack/17-ts","angular-cli/15-ts","preact-vite/default-ts","html-webpack/default","html-vite/default-ts"],daily=[...merged,"angular-cli/prerelease","cra/default-js","react-vite/default-js","vue3-vite/default-js","vue-cli/default-js","lit-vite/default-js","svelte-kit/skeleton-js","svelte-vite/default-js","nextjs/13-ts","nextjs/default-js","nextjs/prerelease","qwik-vite/default-ts","preact-vite/default-js","html-vite/default-js","internal/react16-webpack","internal/react18-webpack-babel"];var import_core_common23=require("@storybook/core-common"),import_core_common24=require("@storybook/core-common");var logger27=console,toChoices=c=>({title:allTemplates[c].name,value:c}),sandbox=async({output:outputDirectory,filterValue,init,...options},pkg2)=>{let selectedConfig=allTemplates[filterValue],templateId=selectedConfig?filterValue:null,{packageManager:pkgMgr}=options,packageManager=import_core_common23.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("@storybook/cli"),nextVersion=await packageManager.latestVersion("@storybook/cli@next").catch(e=>"0.0.0"),currentVersion=import_core_common24.versions["@storybook/cli"],isPrerelease=(0,import_semver25.prerelease)(currentVersion),isOutdated=(0,import_semver25.lt)(currentVersion,isPrerelease?nextVersion:latestVersion),borderColor=isOutdated?"#FC521F":"#F1618C",downloadType=!isOutdated&&init?"after-storybook":"before-storybook",branch=isPrerelease?"next":"main",messages={welcome:`Creating a Storybook ${import_chalk34.default.bold(currentVersion)} sandbox..`,notLatest:import_chalk34.default.red(import_ts_dedent43.dedent`
578
- This version is behind the latest release, which is: ${import_chalk34.default.bold(latestVersion)}!
582
+ `),prelease:import_chalk38.default.yellow("This is a pre-release version.")};import_node_logger6.logger.plain(boxen([messages.welcome].concat(isOutdated&&!isPrerelease2?[messages.notLatest]:[]).concat(isPrerelease2?[messages.prelease]:[]).join(`
583
+ `),{borderStyle:"round",padding:1,borderColor}));let results,{configDir:inferredConfigDir,mainConfig:mainConfigPath}=(0,import_core_common23.getStorybookInfo)(packageJson,userSpecifiedConfigDir),configDir=userSpecifiedConfigDir||inferredConfigDir||".storybook",mainConfig=await(0,import_core_common23.loadMainConfig)({configDir});if(!beforeVersion)throw new import_server_errors4.UpgradeStorybookUnknownCurrentVersionError;if(!results&&typeof mainConfig!="boolean"&&typeof mainConfigPath<"u"&&!options.force){let blockResult=await autoblock({packageManager,configDir,packageJson,mainConfig,mainConfigPath});blockResult&&(results={preCheckFailure:blockResult})}if(!dryRun&&!results){let toUpgradedDependencies=deps=>Object.keys(deps||{}).filter(dependency=>dependency in import_core_common23.versions).map(dependency=>{let char="^";return isOutdated&&(char=""),isCanary&&(char=""),`${dependency}@${char}${import_core_common23.versions[dependency]}`}),upgradedDependencies=toUpgradedDependencies(packageJson.dependencies),upgradedDevDependencies=toUpgradedDependencies(packageJson.devDependencies);import_node_logger6.logger.info(`Updating dependencies in ${import_chalk38.default.cyan("package.json")}..`),upgradedDependencies.length>0&&await packageManager.addDependencies({installAsDevDependencies:!1,skipInstall:!0,packageJson},upgradedDependencies),upgradedDevDependencies.length>0&&await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall:!0,packageJson},upgradedDevDependencies),await packageManager.installDependencies()}if(!skipCheck&&!results&&mainConfigPath&&(checkVersionConsistency(),results=await automigrate({dryRun,yes,packageManager,configDir,mainConfigPath,beforeVersion,storybookVersion:currentVersion,isUpgrade:!0})),!options.disableTelemetry){let{preCheckFailure,fixResults}=results||{};await(0,import_telemetry3.telemetry)("upgrade",{beforeVersion,afterVersion:currentVersion,...{automigrationResults:preCheckFailure?null:fixResults,automigrationPreCheckFailure:preCheckFailure||null}})}};async function upgrade(options){await(0,import_core_server2.withTelemetry)("upgrade",{cliOptions:options},()=>doUpgrade(options))}var import_prompts12=__toESM(require("prompts")),import_path17=__toESM(require("path")),import_chalk39=__toESM(require("chalk"));var import_ts_dedent42=require("ts-dedent"),import_giget=require("giget"),import_fs_extra10=require("fs-extra"),import_tiny_invariant6=__toESM(require("tiny-invariant")),import_semver21=require("semver");var baseTemplates={"cra/default-js":{name:"Create React App Latest (Webpack | JavaScript)",script:"npx create-react-app {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"cra/default-ts":{name:"Create React App Latest (Webpack | TypeScript)",script:"npx create-react-app {{beforeDir}} --template typescript",skipTasks:["smoke-test","bench"],expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"}},"nextjs/13-ts":{name:"Next.js v13.5 (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} -e https://github.com/vercel/next.js/tree/next-13/examples/hello-world && cd {{beforeDir}} && npm pkg set "dependencies.next"="^13.5.6" && yarn && git add . && git commit --amend --no-edit && cd ..',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/default-js":{name:"Next.js Latest (Webpack | JavaScript)",script:'yarn create next-app {{beforeDir}} --javascript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/default-ts":{name:"Next.js Latest (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} --typescript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/prerelease":{name:"Next.js Prerelease (Webpack | TypeScript)",script:'npx create-next-app@canary {{beforeDir}} --typescript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"react-vite/default-js":{name:"React Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template react",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"react-vite/default-ts":{name:"React Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template react-ts",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["bench"]},"react-webpack/18-ts":{name:"React Latest (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"react-webpack/17-ts":{name:"React v17 (Webpack | TypeScript)",script:'yarn create webpack5-react {{beforeDir}} --version-react="17" --version-react-dom="17"',expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"solid-vite/default-js":{name:"SolidJS Latest (Vite | JavaScript)",script:"npx degit solidjs/templates/js {{beforeDir}}",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev","bench"]},"solid-vite/default-ts":{name:"SolidJS Latest (Vite | TypeScript)",script:"npx degit solidjs/templates/ts {{beforeDir}}",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev","bench"]},"vue3-vite/default-js":{name:"Vue v3 (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template vue",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"vue3-vite/default-ts":{name:"Vue v3 (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template vue-ts",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"html-webpack/default":{name:"HTML Latest (Webpack | JavaScript)",script:"yarn create webpack5-html {{beforeDir}}",expected:{framework:"@storybook/html-webpack5",renderer:"@storybook/html",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"html-vite/default-js":{name:"HTML Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template vanilla && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"html-vite/default-ts":{name:"HTML Latest (Vite | TypeScript)",script:'npm create vite --yes {{beforeDir}} -- --template vanilla-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-vite/default-js":{name:"Svelte Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template svelte",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-vite/default-ts":{name:"Svelte Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template svelte-ts",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"angular-cli/prerelease":{name:"Angular CLI Prerelease (Webpack | TypeScript)",script:"npx -p @angular/cli@next ng new angular-v16 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn --ssr",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"angular-cli/default-ts":{name:"Angular CLI Latest (Webpack | TypeScript)",script:"npx -p @angular/cli ng new angular-latest --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn --ssr",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"angular-cli/15-ts":{name:"Angular CLI v15 (Webpack | TypeScript)",script:"npx -p @angular/cli@15 ng new angular-v15 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-js":{name:"SvelteKit Latest (Vite | JavaScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory={{beforeDir}} --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-ts":{name:"SvelteKit Latest (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/prerelease-ts":{name:"SvelteKit Prerelease (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/prerelease-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"lit-vite/default-js":{name:"Lit Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"lit-vite/default-ts":{name:"Lit Latest (Vite | TypeScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"vue-cli/default-js":{name:"Vue CLI v3 (Webpack | JavaScript)",script:'npx -p @vue/cli vue create {{beforeDir}} --default --packageManager=yarn --force --merge && cd {{beforeDir}} && echo "module.exports = {}" > webpack.config.js',expected:{framework:"@storybook/vue3-webpack5",renderer:"@storybook/vue3",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"preact-vite/default-js":{name:"Preact Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template preact",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"preact-vite/default-ts":{name:"Preact Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template preact-ts",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"qwik-vite/default-ts":{name:"Qwik CLI Latest (Vite | TypeScript)",script:"yarn create qwik basic {{beforeDir}}",inDevelopment:!0,expected:{framework:"storybook-framework-qwik",renderer:"storybook-framework-qwik",builder:"storybook-framework-qwik"},skipTasks:["e2e-tests","e2e-tests-dev","bench"]},"ember/3-js":{name:"Ember v3 (Webpack | JavaScript)",script:"npx --package ember-cli@3.28.1 ember new {{beforeDir}}",inDevelopment:!0,expected:{framework:"@storybook/ember",renderer:"@storybook/ember",builder:"@storybook/builder-webpack5"}},"ember/default-js":{name:"Ember v4 (Webpack | JavaScript)",script:"npx --package ember-cli@4.12.1 ember new {{beforeDir}} --yarn && cd {{beforeDir}} && yarn add --dev @storybook/ember-cli-storybook && yarn build",inDevelopment:!0,expected:{framework:"@storybook/ember",renderer:"@storybook/ember",builder:"@storybook/builder-webpack5"}}},internalTemplates={"internal/react18-webpack-babel":{name:"React with Babel Latest (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{extraDependencies:["@storybook/addon-webpack5-compiler-babel"],editAddons:addons=>[...addons,"@storybook/addon-webpack5-compiler-babel"].filter(a=>a!=="@storybook/addon-webpack5-compiler-swc")},isInternal:!0,skipTasks:["e2e-tests-dev","bench"]},"internal/react16-webpack":{name:"React 16 (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}} --version-react=16 --version-react-dom=16 --version-@types/react=16 --version-@types/react-dom=16",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"],isInternal:!0},"internal/server-webpack5":{name:"Server Webpack5",script:'yarn init -y && echo "module.exports = {}" > webpack.config.js',expected:{framework:"@storybook/server-webpack5",renderer:"@storybook/server",builder:"@storybook/builder-webpack5"},isInternal:!0,skipTasks:["bench"]}},benchTemplates={"bench/react-vite-default-ts":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts)",isInternal:!0,modifications:{skipTemplateStories:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-webpack-18-ts":{...baseTemplates["react-webpack/18-ts"],name:"Bench (react-webpack/18-ts)",isInternal:!0,modifications:{skipTemplateStories:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-vite-default-ts-nodocs":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts, no docs)",isInternal:!0,modifications:{skipTemplateStories:!0,disableDocs:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-vite-default-ts-test-build":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts, test-build)",isInternal:!0,modifications:{skipTemplateStories:!0,testBuild:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests"]},"bench/react-webpack-18-ts-test-build":{...baseTemplates["react-webpack/18-ts"],name:"Bench (react-webpack/18-ts, test-build)",isInternal:!0,modifications:{skipTemplateStories:!0,testBuild:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests"]}},allTemplates={...baseTemplates,...internalTemplates,...benchTemplates},normal=["cra/default-ts","react-vite/default-ts","angular-cli/default-ts","vue3-vite/default-ts","lit-vite/default-ts","svelte-vite/default-ts","svelte-kit/skeleton-ts","nextjs/default-ts","bench/react-vite-default-ts","bench/react-webpack-18-ts","bench/react-vite-default-ts-nodocs","bench/react-vite-default-ts-test-build","bench/react-webpack-18-ts-test-build","ember/default-js"],merged=[...normal,"react-webpack/18-ts","react-webpack/17-ts","angular-cli/15-ts","preact-vite/default-ts","html-webpack/default","html-vite/default-ts"],daily=[...merged,"angular-cli/prerelease","cra/default-js","react-vite/default-js","vue3-vite/default-js","vue-cli/default-js","lit-vite/default-js","svelte-kit/skeleton-js","svelte-vite/default-js","nextjs/13-ts","nextjs/default-js","nextjs/prerelease","qwik-vite/default-ts","preact-vite/default-js","html-vite/default-js","internal/react16-webpack","internal/react18-webpack-babel"];var import_core_common24=require("@storybook/core-common"),import_core_common25=require("@storybook/core-common");var logger29=console,toChoices=c=>({title:allTemplates[c].name,value:c}),sandbox=async({output:outputDirectory,filterValue,init,...options},pkg2)=>{let selectedConfig=allTemplates[filterValue],templateId=selectedConfig?filterValue:null,{packageManager:pkgMgr}=options,packageManager=import_core_common24.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("@storybook/cli"),nextVersion=await packageManager.latestVersion("@storybook/cli@next").catch(e=>"0.0.0"),currentVersion=import_core_common25.versions["@storybook/cli"],isPrerelease2=(0,import_semver21.prerelease)(currentVersion),isOutdated=(0,import_semver21.lt)(currentVersion,isPrerelease2?nextVersion:latestVersion),borderColor=isOutdated?"#FC521F":"#F1618C",downloadType=!isOutdated&&init?"after-storybook":"before-storybook",branch=isPrerelease2?"next":"main",messages={welcome:`Creating a Storybook ${import_chalk39.default.bold(currentVersion)} sandbox..`,notLatest:import_chalk39.default.red(import_ts_dedent42.dedent`
584
+ This version is behind the latest release, which is: ${import_chalk39.default.bold(latestVersion)}!
579
585
  You likely ran the init command through npx, which can use a locally cached version, to get the latest please run:
580
- ${import_chalk34.default.bold("npx storybook@latest sandbox")}
586
+ ${import_chalk39.default.bold("npx storybook@latest sandbox")}
581
587
 
582
588
  You may want to CTRL+C to stop, and run with the latest version instead.
583
- `),longInitTime:import_chalk34.default.yellow("The creation of the sandbox will take longer, because we will need to run init."),prerelease:import_chalk34.default.yellow("This is a pre-release version.")};if(logger27.log(boxen([messages.welcome].concat(isOutdated&&!isPrerelease?[messages.notLatest]:[]).concat(init&&(isOutdated||isPrerelease)?[messages.longInitTime]:[]).concat(isPrerelease?[messages.prerelease]:[]).join(`
584
- `),{borderStyle:"round",padding:1,borderColor})),!selectedConfig){let filterRegex=new RegExp(`^${filterValue||""}`,"i"),keys=Object.keys(allTemplates),choices=keys.reduce((acc,group)=>{let current=allTemplates[group];return(!filterValue||current.name.match(filterRegex)||group.match(filterRegex)||current.expected.builder.match(filterRegex)||current.expected.framework.match(filterRegex)||current.expected.renderer.match(filterRegex))&&acc.push(group),acc},[]);if(choices.length===0&&(logger27.info(boxen(import_ts_dedent43.dedent`
589
+ `),longInitTime:import_chalk39.default.yellow("The creation of the sandbox will take longer, because we will need to run init."),prerelease:import_chalk39.default.yellow("This is a pre-release version.")};if(logger29.log(boxen([messages.welcome].concat(isOutdated&&!isPrerelease2?[messages.notLatest]:[]).concat(init&&(isOutdated||isPrerelease2)?[messages.longInitTime]:[]).concat(isPrerelease2?[messages.prerelease]:[]).join(`
590
+ `),{borderStyle:"round",padding:1,borderColor})),!selectedConfig){let filterRegex=new RegExp(`^${filterValue||""}`,"i"),keys=Object.keys(allTemplates),choices=keys.reduce((acc,group)=>{let current=allTemplates[group];return(!filterValue||current.name.match(filterRegex)||group.match(filterRegex)||current.expected.builder.match(filterRegex)||current.expected.framework.match(filterRegex)||current.expected.renderer.match(filterRegex))&&acc.push(group),acc},[]);if(choices.length===0&&(logger29.info(boxen(import_ts_dedent42.dedent`
585
591
  🔎 You filtered out all templates. 🔍
586
592
 
587
- After filtering all the templates with "${import_chalk34.default.yellow(filterValue)}", we found no results. Please try again with a different filter.
593
+ After filtering all the templates with "${import_chalk39.default.yellow(filterValue)}", we found no results. Please try again with a different filter.
588
594
 
589
595
  Available templates:
590
- ${keys.map(key=>import_chalk34.default.blue`- ${key}`).join(`
596
+ ${keys.map(key=>import_chalk39.default.blue`- ${key}`).join(`
591
597
  `)}
592
- `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),process.exit(1)),choices.length===1?[templateId]=choices:(logger27.info(boxen(import_ts_dedent43.dedent`
593
- 🤗 Welcome to ${import_chalk34.default.yellow("sb sandbox")}! 🤗
598
+ `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),process.exit(1)),choices.length===1?[templateId]=choices:(logger29.info(boxen(import_ts_dedent42.dedent`
599
+ 🤗 Welcome to ${import_chalk39.default.yellow("sb sandbox")}! 🤗
594
600
 
595
- Create a ${import_chalk34.default.green("new project")} to minimally reproduce Storybook issues.
601
+ Create a ${import_chalk39.default.green("new project")} to minimally reproduce Storybook issues.
596
602
 
597
603
  1. select an environment that most closely matches your project setup.
598
604
  2. select a location for the reproduction, outside of your project.
599
605
 
600
606
  After the reproduction is ready, we'll guide you through the next steps.
601
- `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),templateId=await promptSelectedTemplate(choices)),!!!(templateId??null)){logger27.error("Somehow we got no templates. Please rerun this command!");return}if(selectedConfig=templateId?allTemplates[templateId]:void 0,!selectedConfig)throw new Error("\u{1F6A8} Sandbox: please specify a valid template type")}let selectedDirectory=outputDirectory,outputDirectoryName=outputDirectory||templateId;if(selectedDirectory&&(0,import_fs_extra9.existsSync)(`${selectedDirectory}`)&&logger27.info(`\u26A0\uFE0F ${selectedDirectory} already exists! Overwriting...`),!selectedDirectory){let{directory:directory2}=await(0,import_prompts10.default)({type:"text",message:"Enter the output directory",name:"directory",initial:outputDirectoryName??void 0,validate:async directoryName=>(0,import_fs_extra9.existsSync)(directoryName)?`${directoryName} already exists. Please choose another name.`:!0},{onCancel:()=>{logger27.log("Command cancelled by the user. Exiting..."),process.exit(1)}});selectedDirectory=directory2}(0,import_tiny_invariant6.default)(selectedDirectory);try{let templateDestination=import_path16.default.isAbsolute(selectedDirectory)?selectedDirectory:import_path16.default.join(process.cwd(),selectedDirectory);logger27.info(`\u{1F3C3} Adding ${selectedConfig.name} into ${templateDestination}`),logger27.log(`\u{1F4E6} Downloading sandbox template (${import_chalk34.default.bold(downloadType)})...`);try{let gitPath=`github:storybookjs/sandboxes/${templateId}/${downloadType}#${branch}`;if(await(0,import_giget.downloadTemplate)(gitPath,{force:!0,dir:templateDestination}),(await(0,import_fs_extra9.readdir)(templateDestination)).length===0){let selected=import_chalk34.default.yellow(templateId);throw new Error(import_ts_dedent43.dedent`
602
- Template downloaded from ${import_chalk34.default.blue(gitPath)} is empty.
607
+ `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),templateId=await promptSelectedTemplate(choices)),!!!(templateId??null)){logger29.error("Somehow we got no templates. Please rerun this command!");return}if(selectedConfig=templateId?allTemplates[templateId]:void 0,!selectedConfig)throw new Error("\u{1F6A8} Sandbox: please specify a valid template type")}let selectedDirectory=outputDirectory,outputDirectoryName=outputDirectory||templateId;if(selectedDirectory&&(0,import_fs_extra10.existsSync)(`${selectedDirectory}`)&&logger29.info(`\u26A0\uFE0F ${selectedDirectory} already exists! Overwriting...`),!selectedDirectory){let{directory:directory2}=await(0,import_prompts12.default)({type:"text",message:"Enter the output directory",name:"directory",initial:outputDirectoryName??void 0,validate:async directoryName=>(0,import_fs_extra10.existsSync)(directoryName)?`${directoryName} already exists. Please choose another name.`:!0},{onCancel:()=>{logger29.log("Command cancelled by the user. Exiting..."),process.exit(1)}});selectedDirectory=directory2}(0,import_tiny_invariant6.default)(selectedDirectory);try{let templateDestination=import_path17.default.isAbsolute(selectedDirectory)?selectedDirectory:import_path17.default.join(process.cwd(),selectedDirectory);logger29.info(`\u{1F3C3} Adding ${selectedConfig.name} into ${templateDestination}`),logger29.log(`\u{1F4E6} Downloading sandbox template (${import_chalk39.default.bold(downloadType)})...`);try{let gitPath=`github:storybookjs/sandboxes/${templateId}/${downloadType}#${branch}`;if(await(0,import_giget.downloadTemplate)(gitPath,{force:!0,dir:templateDestination}),(await(0,import_fs_extra10.readdir)(templateDestination)).length===0){let selected=import_chalk39.default.yellow(templateId);throw new Error(import_ts_dedent42.dedent`
608
+ Template downloaded from ${import_chalk39.default.blue(gitPath)} is empty.
603
609
  Are you use it exists? Or did you want to set ${selected} to inDevelopment first?
604
- `)}if(downloadType==="before-storybook"&&init){let before=process.cwd();process.chdir(templateDestination),await doInitiate({...options},pkg2),process.chdir(before)}}catch(err){throw logger27.error(`\u{1F6A8} Failed to download sandbox template: ${String(err)}`),err}let initMessage=init?import_chalk34.default.yellow(import_ts_dedent43.dedent`
610
+ `)}if(downloadType==="before-storybook"&&init){let before=process.cwd();process.chdir(templateDestination),await doInitiate({...options},pkg2),process.chdir(before)}}catch(err){throw logger29.error(`\u{1F6A8} Failed to download sandbox template: ${String(err)}`),err}let initMessage=init?import_chalk39.default.yellow(import_ts_dedent42.dedent`
605
611
  yarn install
606
612
  yarn storybook
607
- `):`Recreate your setup, then ${import_chalk34.default.yellow("npx storybook@latest init")}`;logger27.info(boxen(import_ts_dedent43.dedent`
613
+ `):`Recreate your setup, then ${import_chalk39.default.yellow("npx storybook@latest init")}`;logger29.info(boxen(import_ts_dedent42.dedent`
608
614
  🎉 Your Storybook reproduction project is ready to use! 🎉
609
615
 
610
- ${import_chalk34.default.yellow(`cd ${selectedDirectory}`)}
616
+ ${import_chalk39.default.yellow(`cd ${selectedDirectory}`)}
611
617
  ${initMessage}
612
618
 
613
619
  Once you've recreated the problem you're experiencing, please:
614
620
 
615
- 1. Document any additional steps in ${import_chalk34.default.cyan("README.md")}
621
+ 1. Document any additional steps in ${import_chalk39.default.cyan("README.md")}
616
622
  2. Publish the repository to github
617
623
  3. Link to the repro repository in your issue
618
624
 
619
625
  Having a clean repro helps us solve your issue faster! 🙏
620
- `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"}))}catch(error){throw logger27.error("\u{1F6A8} Failed to create sandbox"),error}};async function promptSelectedTemplate(choices){let{template}=await(0,import_prompts10.default)({type:"select",message:"\u{1F308} Select the template",name:"template",choices:choices.map(toChoices)},{onCancel:()=>{logger27.log("Command cancelled by the user. Exiting..."),process.exit(1)}});return template||null}var import_fs_extra10=__toESM(require("fs-extra")),import_path17=__toESM(require("path")),import_cross_spawn2=require("cross-spawn"),import_node_logger6=require("@storybook/node-logger"),import_chalk35=__toESM(require("chalk")),exec2=async(command2,options={},{startMessage,errorMessage,dryRun}={})=>{if(startMessage&&import_node_logger6.logger.info(startMessage),dryRun){import_node_logger6.logger.info(`
626
+ `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"}))}catch(error){throw logger29.error("\u{1F6A8} Failed to create sandbox"),error}};async function promptSelectedTemplate(choices){let{template}=await(0,import_prompts12.default)({type:"select",message:"\u{1F308} Select the template",name:"template",choices:choices.map(toChoices)},{onCancel:()=>{logger29.log("Command cancelled by the user. Exiting..."),process.exit(1)}});return template||null}var import_fs_extra11=__toESM(require("fs-extra")),import_path18=__toESM(require("path")),import_cross_spawn2=require("cross-spawn"),import_node_logger7=require("@storybook/node-logger"),import_chalk40=__toESM(require("chalk")),exec2=async(command2,options={},{startMessage,errorMessage,dryRun}={})=>{if(startMessage&&import_node_logger7.logger.info(startMessage),dryRun){import_node_logger7.logger.info(`
621
627
  > ${command2}
622
- `);return}return import_node_logger6.logger.info(command2),new Promise((resolve2,reject)=>{let child=(0,import_cross_spawn2.spawn)(command2,{...options,shell:!0,stdio:"pipe"});child.stderr.pipe(process.stdout),child.stdout.pipe(process.stdout),child.on("exit",code=>{code===0?resolve2(void 0):(import_node_logger6.logger.error(import_chalk35.default.red(`An error occurred while executing: \`${command2}\``)),errorMessage&&import_node_logger6.logger.info(errorMessage),reject(new Error(`command exited with code: ${code}: `)))})})},link=async({target,local,start})=>{let storybookDir=process.cwd();try{if((await import_fs_extra10.default.readJSON("package.json")).name!=="@storybook/root")throw new Error}catch{throw new Error("Expected to run link from the root of the storybook monorepo")}let reproDir=target,reproName=import_path17.default.basename(target);if(!local){let reprosDir=import_path17.default.join(storybookDir,"../storybook-repros");import_node_logger6.logger.info(`Ensuring directory ${reprosDir}`),await import_fs_extra10.default.ensureDir(reprosDir),import_node_logger6.logger.info(`Cloning ${target}`),await exec2(`git clone ${target}`,{cwd:reprosDir}),reproName=import_path17.default.basename(target,import_path17.default.extname(target)),reproDir=import_path17.default.join(reprosDir,reproName)}let reproPackageJson=await import_fs_extra10.default.readJSON(import_path17.default.join(reproDir,"package.json")),version=(0,import_cross_spawn2.sync)("yarn",["--version"],{cwd:reproDir,stdio:"pipe",shell:!0}).stdout.toString();if(!/^[2-4]\./.test(version)){import_node_logger6.logger.warn(`\u{1F6A8} Expected yarn 2 or higher in ${reproDir}!`),import_node_logger6.logger.warn(""),import_node_logger6.logger.warn("Please set it up with `yarn set version berry`,"),import_node_logger6.logger.warn(`then link '${reproDir}' with the '--local' flag.`);return}import_node_logger6.logger.info(`Linking ${reproDir}`),await exec2(`yarn link --all ${storybookDir}`,{cwd:reproDir}),import_node_logger6.logger.info(`Installing ${reproName}`),await exec2("yarn install",{cwd:reproDir}),reproPackageJson.devDependencies?.vite||await exec2("yarn add -D webpack-hot-middleware",{cwd:reproDir}),await exec2("yarn add @types/node@18",{cwd:reproDir}),start&&(import_node_logger6.logger.info(`Running ${reproName} storybook`),await exec2("yarn run storybook",{cwd:reproDir}))};var import_ts_dedent44=require("ts-dedent"),import_read_pkg_up=require("read-pkg-up"),import_node_logger7=require("@storybook/node-logger"),import_core_server3=require("@storybook/core-server"),import_core_common25=require("@storybook/core-common"),import_tiny_invariant7=__toESM(require("tiny-invariant"));function printError(error){import_node_logger7.instance.heading="",error instanceof Error?error.error?import_node_logger7.logger.error(error.error):error.stats&&error.stats.compilation.errors?error.stats.compilation.errors.forEach(e=>import_node_logger7.logger.plain(e)):import_node_logger7.logger.error(error):error.compilation?.errors&&error.compilation.errors.forEach(e=>import_node_logger7.logger.plain(e)),import_node_logger7.logger.line(),import_node_logger7.logger.warn(error.close?import_ts_dedent44.dedent`
628
+ `);return}return import_node_logger7.logger.info(command2),new Promise((resolve2,reject)=>{let child=(0,import_cross_spawn2.spawn)(command2,{...options,shell:!0,stdio:"pipe"});child.stderr.pipe(process.stdout),child.stdout.pipe(process.stdout),child.on("exit",code=>{code===0?resolve2(void 0):(import_node_logger7.logger.error(import_chalk40.default.red(`An error occurred while executing: \`${command2}\``)),errorMessage&&import_node_logger7.logger.info(errorMessage),reject(new Error(`command exited with code: ${code}: `)))})})},link=async({target,local,start})=>{let storybookDir=process.cwd();try{if((await import_fs_extra11.default.readJSON("package.json")).name!=="@storybook/root")throw new Error}catch{throw new Error("Expected to run link from the root of the storybook monorepo")}let reproDir=target,reproName=import_path18.default.basename(target);if(!local){let reprosDir=import_path18.default.join(storybookDir,"../storybook-repros");import_node_logger7.logger.info(`Ensuring directory ${reprosDir}`),await import_fs_extra11.default.ensureDir(reprosDir),import_node_logger7.logger.info(`Cloning ${target}`),await exec2(`git clone ${target}`,{cwd:reprosDir}),reproName=import_path18.default.basename(target,import_path18.default.extname(target)),reproDir=import_path18.default.join(reprosDir,reproName)}let reproPackageJson=await import_fs_extra11.default.readJSON(import_path18.default.join(reproDir,"package.json")),version=(0,import_cross_spawn2.sync)("yarn",["--version"],{cwd:reproDir,stdio:"pipe",shell:!0}).stdout.toString();if(!/^[2-4]\./.test(version)){import_node_logger7.logger.warn(`\u{1F6A8} Expected yarn 2 or higher in ${reproDir}!`),import_node_logger7.logger.warn(""),import_node_logger7.logger.warn("Please set it up with `yarn set version berry`,"),import_node_logger7.logger.warn(`then link '${reproDir}' with the '--local' flag.`);return}import_node_logger7.logger.info(`Linking ${reproDir}`),await exec2(`yarn link --all ${storybookDir}`,{cwd:reproDir}),import_node_logger7.logger.info(`Installing ${reproName}`),await exec2("yarn install",{cwd:reproDir}),reproPackageJson.devDependencies?.vite||await exec2("yarn add -D webpack-hot-middleware",{cwd:reproDir}),await exec2("yarn add @types/node@18",{cwd:reproDir}),start&&(import_node_logger7.logger.info(`Running ${reproName} storybook`),await exec2("yarn run storybook",{cwd:reproDir}))};var import_ts_dedent43=require("ts-dedent"),import_read_pkg_up=require("read-pkg-up"),import_node_logger8=require("@storybook/node-logger"),import_core_server3=require("@storybook/core-server"),import_core_common26=require("@storybook/core-common"),import_tiny_invariant7=__toESM(require("tiny-invariant"));function printError(error){import_node_logger8.instance.heading="",error instanceof Error?error.error?import_node_logger8.logger.error(error.error):error.stats&&error.stats.compilation.errors?error.stats.compilation.errors.forEach(e=>import_node_logger8.logger.plain(e)):import_node_logger8.logger.error(error):error.compilation?.errors&&error.compilation.errors.forEach(e=>import_node_logger8.logger.plain(e)),import_node_logger8.logger.line(),import_node_logger8.logger.warn(error.close?import_ts_dedent43.dedent`
623
629
  FATAL broken build!, will close the process,
624
630
  Fix the error below and restart storybook.
625
- `:import_ts_dedent44.dedent`
631
+ `:import_ts_dedent43.dedent`
626
632
  Broken build, fix the error above.
627
633
  You may need to refresh the browser.
628
- `),import_node_logger7.logger.line()}var dev=async cliOptions=>{process.env.NODE_ENV=process.env.NODE_ENV||"development";let readUpResult2=(0,import_read_pkg_up.sync)({cwd:__dirname});(0,import_tiny_invariant7.default)(readUpResult2,"Failed to find the closest package.json file.");let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",configType:"DEVELOPMENT",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,cache:import_core_common25.cache,packageJson:(0,import_read_pkg_up.sync)({cwd:__dirname})?.packageJson};await(0,import_core_server3.withTelemetry)("dev",{cliOptions,presetOptions:options,printError},()=>(0,import_core_server3.buildDevStandalone)(options))};var import_read_pkg_up2=require("read-pkg-up"),import_core_server4=require("@storybook/core-server"),import_core_common26=require("@storybook/core-common"),import_tiny_invariant8=__toESM(require("tiny-invariant")),build=async cliOptions=>{let readUpResult2=(0,import_read_pkg_up2.sync)({cwd:__dirname});(0,import_tiny_invariant8.default)(readUpResult2,"Failed to find the closest package.json file.");let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",outputDir:cliOptions.outputDir||"./storybook-static",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,configType:"PRODUCTION",cache:import_core_common26.cache,packageJson:readUpResult2.packageJson};await(0,import_core_server4.withTelemetry)("build",{cliOptions,presetOptions:options},()=>(0,import_core_server4.buildStaticStandalone)(options))};var import_chalk37=__toESM(require("chalk"));var import_fs_extra11=require("fs-extra"),import_tempy2=__toESM(require("tempy")),import_ts_dedent45=__toESM(require("ts-dedent")),import_path18=require("path"),import_core_common28=require("@storybook/core-common");var import_chalk36=__toESM(require("chalk")),import_semver26=__toESM(require("semver")),import_core_common27=require("@storybook/core-common");function getPrimaryVersion(name,installationMetadata){if(!name)return;let packageMetadata=installationMetadata?.dependencies[name];if(packageMetadata)return packageMetadata[0]?.version}function getMismatchingVersionsWarnings(installationMetadata,allDependencies){if(!installationMetadata)return;let messages=[];try{let frameworkPackageName=Object.keys(installationMetadata?.dependencies||[]).find(packageName=>Object.keys(import_core_common27.frameworkPackages).includes(packageName)),cliVersion=getPrimaryVersion("@storybook/cli",installationMetadata)||getPrimaryVersion("storybook",installationMetadata),frameworkVersion=getPrimaryVersion(frameworkPackageName,installationMetadata);if(!cliVersion||!frameworkVersion||import_semver26.default.eq(cliVersion,frameworkVersion))return;messages.push(`${import_chalk36.default.bold("Attention:")} There seems to be a mismatch between your Storybook package versions. This can result in a broken Storybook installation.`);let versionToCompare,packageToDisplay;import_semver26.default.lt(cliVersion,frameworkVersion)?(versionToCompare=frameworkVersion,packageToDisplay=frameworkPackageName):(versionToCompare=cliVersion,packageToDisplay="storybook"),messages.push(`The version of your storybook core packages should align with ${import_chalk36.default.yellow(versionToCompare)} (from the ${import_chalk36.default.cyan(packageToDisplay)} package) or higher.`);let filteredDependencies=Object.entries(installationMetadata?.dependencies||[]).filter(([name,packages])=>Object.keys(import_core_common27.versions).includes(name)?packages[0].version!==versionToCompare:!1);if(filteredDependencies.length>0){let packageJsonSuffix="(in your package.json)";messages.push("Based on your lockfile, these dependencies should be upgraded:",filteredDependencies.map(([name,dep])=>`${import_chalk36.default.hex("#ff9800")(name)}: ${dep[0].version} ${allDependencies?.[name]?packageJsonSuffix:""}`).sort((a,b)=>(b.includes(packageJsonSuffix)?1:0)-(a.includes(packageJsonSuffix)?1:0)).join(`
629
- `))}return messages.push(`You can run ${import_chalk36.default.cyan("npx storybook@latest upgrade")} to upgrade all of your Storybook packages to the latest version.
630
-
631
- Alternatively you can try manually changing the versions to match in your package.json. We also recommend regenerating your lockfile, or running the following command to possibly deduplicate your Storybook package versions: ${import_chalk36.default.cyan(installationMetadata?.dedupeCommand)}`),messages.join(`
632
-
633
- `)}catch{return}}var logger30=console,LOG_FILE_NAME2="doctor-storybook.log",LOG_FILE_PATH2=(0,import_path18.join)(process.cwd(),LOG_FILE_NAME2),TEMP_LOG_FILE_PATH2="",originalStdOutWrite2=process.stdout.write.bind(process.stdout),originalStdErrWrite2=process.stderr.write.bind(process.stdout),augmentLogsToFile2=()=>{TEMP_LOG_FILE_PATH2=import_tempy2.default.file({name:LOG_FILE_NAME2});let logStream=(0,import_fs_extra11.createWriteStream)(TEMP_LOG_FILE_PATH2);process.stdout.write=d=>(originalStdOutWrite2(d),logStream.write(cleanLog(d))),process.stderr.write=d=>logStream.write(cleanLog(d))},cleanup2=()=>{process.stdout.write=originalStdOutWrite2,process.stderr.write=originalStdErrWrite2},doctor=async({configDir:userSpecifiedConfigDir,packageManager:pkgMgr}={})=>{augmentLogsToFile2();let diagnosticMessages=[];logger30.info("\u{1FA7A} checking the health of your Storybook..");let packageManager=import_core_common28.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),storybookVersion,mainConfig;try{let storybookData=await getStorybookData({configDir:userSpecifiedConfigDir,packageManager});storybookVersion=storybookData.storybookVersion,mainConfig=storybookData.mainConfig}catch(err){err.message.includes("No configuration files have been found")&&logger30.info(import_ts_dedent45.default`[Storybook doctor] Could not find or evaluate your Storybook main.js config directory at ${import_chalk37.default.blue(userSpecifiedConfigDir||".storybook")} so the doctor command cannot proceed. You might be running this command in a monorepo or a non-standard project structure. If that is the case, please rerun this command by specifying the path to your Storybook config directory via the --config-dir option.`),logger30.info(import_ts_dedent45.default`[Storybook doctor] ❌ ${err.message}`),logger30.info("Please fix the error and try again.")}if(storybookVersion||(logger30.info(import_ts_dedent45.default`
634
- [Storybook doctor] ❌ Unable to determine Storybook version so the command will not proceed.
635
- 🤔 Are you running storybook doctor from your project directory? Please specify your Storybook config directory with the --config-dir flag.
636
- `),process.exit(1)),!mainConfig)throw new Error("mainConfig is undefined");let incompatibleAddonList=await getIncompatibleAddons(mainConfig);incompatibleAddonList.length>0&&diagnosticMessages.push(incompatibleAddons.prompt({incompatibleAddonList}));let installationMetadata=await packageManager.findInstallations(["@storybook/*","storybook"]),allDependencies=await packageManager.getAllDependencies(),mismatchingVersionMessage=getMismatchingVersionsWarnings(installationMetadata,allDependencies);if(mismatchingVersionMessage)diagnosticMessages.push(mismatchingVersionMessage);else{let list=installationMetadata?getDuplicatedDepsWarnings(installationMetadata):getDuplicatedDepsWarnings();list&&diagnosticMessages.push(list?.join(`
637
- `))}logger30.info();let finalMessages=diagnosticMessages.filter(Boolean);finalMessages.length>0?(finalMessages.push(`You can find the full logs in ${import_chalk37.default.cyan(LOG_FILE_PATH2)}`),logger30.info(boxen(finalMessages.join(`
638
-
639
- -------
640
-
641
- `),{borderStyle:"round",padding:1,title:"Diagnostics",borderColor:"red"})),await(0,import_fs_extra11.move)(TEMP_LOG_FILE_PATH2,(0,import_path18.join)(process.cwd(),LOG_FILE_NAME2),{overwrite:!0})):(logger30.info("\u{1F973} Your Storybook project looks good!"),await(0,import_fs_extra11.remove)(TEMP_LOG_FILE_PATH2)),logger30.info(),cleanup2()};(0,import_telemetry4.addToGlobalContext)("cliVersion",import_core_common29.versions.storybook);var readUpResult=(0,import_read_pkg_up3.sync)({cwd:__dirname});(0,import_tiny_invariant9.default)(readUpResult,"Failed to find the closest package.json file.");var pkg=readUpResult.packageJson,consoleLogger=console,command=name=>import_commander.default.command(name).option("--disable-telemetry","Disable sending telemetry data",process.env.STORYBOOK_DISABLE_TELEMETRY&&process.env.STORYBOOK_DISABLE_TELEMETRY!=="false").option("--debug","Get more logs in debug mode",!1).option("--enable-crash-reports","Enable sending crash reports to telemetry data");command("init").description("Initialize Storybook into your project.").option("-f --force","Force add Storybook").option("-s --skip-install","Skip installing deps").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing deps").option("--use-pnp","Enable pnp mode for Yarn 2+").option("-p --parser <babel | babylon | flow | ts | tsx>","jscodeshift parser").option("-t --type <type>","Add Storybook for a specific project type").option("-y --yes","Answer yes to all prompts").option("-b --builder <webpack5 | vite>","Builder library").option("-l --linkable","Prepare installation for link (contributor helper)").action(options=>{initiate(options,pkg).catch(()=>process.exit(1))});command("add <addon>").description("Add an addon to your Storybook").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").option("-s --skip-postinstall","Skip package specific postinstall config modifications").action((addonName,options)=>add(addonName,options));command("remove <addon>").description("Remove an addon from your Storybook").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").action((addonName,options)=>(0,import_core_server5.withTelemetry)("remove",{cliOptions:options},async()=>{await(0,import_core_common29.removeAddon)(addonName,options),options.disableTelemetry||await(0,import_telemetry4.telemetry)("remove",{addon:addonName,source:"cli"})}));command("upgrade").description(`Upgrade your Storybook packages to v${import_core_common29.versions.storybook}`).option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").option("-y --yes","Skip prompting the user").option("-f --force","force the upgrade, skipping autoblockers").option("-n --dry-run","Only check for upgrades, do not install").option("-s --skip-check","Skip postinstall version and automigration checks").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").action(async options=>upgrade(options).catch(()=>process.exit(1)));command("info").description("Prints debugging information about the local environment").action(async()=>{consoleLogger.log(import_chalk38.default.bold(`
642
- Storybook Environment Info:`));let activePackageManager=(await import_core_common29.JsPackageManagerFactory.getPackageManager()).type.replace(/\d/,""),output=await import_envinfo.default.run({System:["OS","CPU","Shell"],Binaries:["Node","Yarn","npm","pnpm"],Browsers:["Chrome","Edge","Firefox","Safari"],npmPackages:"{@storybook/*,*storybook*,sb,chromatic}",npmGlobalPackages:"{@storybook/*,*storybook*,sb,chromatic}"}),activePackageManagerLine=output.match(new RegExp(`${activePackageManager}:.*`,"i"));consoleLogger.log(output.replace(activePackageManagerLine,import_chalk38.default.bold(`${activePackageManagerLine} <----- active`)))});command("migrate [migration]").description("Run a Storybook codemod migration on your source files").option("-l --list","List available migrations").option("-g --glob <glob>","Glob for files upon which to apply the migration","**/*.js").option("-p --parser <babel | babylon | flow | ts | tsx>","jscodeshift parser").option("-n --dry-run","Dry run: verify the migration exists and show the files to which it will be applied").option("-r --rename <from-to>",'Rename suffix of matching files after codemod has been applied, e.g. ".js:.ts"').action((migration,{configDir,glob:glob3,dryRun,list,rename,parser})=>{migrate(migration,{configDir,glob:glob3,dryRun,list,rename,parser,logger:consoleLogger}).catch(err=>{import_node_logger8.logger.error(err),process.exit(1)})});command("sandbox [filterValue]").alias("repro").description("Create a sandbox from a set of possible templates").option("-o --output <outDir>","Define an output directory").option("--no-init","Whether to download a template without an initialized Storybook",!1).action((filterValue,options)=>sandbox({filterValue,...options},pkg).catch(e=>{import_node_logger8.logger.error(e),process.exit(1)}));command("link <repo-url-or-directory>").description("Pull down a repro from a URL (or a local directory), link it, and run storybook").option("--local","Link a local directory already in your file system").option("--no-start","Start the storybook",!0).action((target,{local,start})=>link({target,local,start}).catch(e=>{import_node_logger8.logger.error(e),process.exit(1)}));command("automigrate [fixId]").description("Check storybook for incompatibilities or migrations and apply fixes").option("-y --yes","Skip prompting the user").option("-n --dry-run","Only check for fixes, do not actually run them").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-l --list","List available migrations").option("-c, --config-dir <dir-name>","Directory of Storybook configurations to migrate").option("-s --skip-install","Skip installing deps").option("--renderer <renderer-pkg-name>","The renderer package for the framework Storybook is using.").action(async(fixId,options)=>{await doAutomigrate({fixId,...options}).catch(e=>{import_node_logger8.logger.error(e),process.exit(1)})});command("doctor").description("Check Storybook for known problems and provide suggestions or fixes").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-c, --config-dir <dir-name>","Directory of Storybook configuration").action(async options=>{await doctor(options).catch(e=>{import_node_logger8.logger.error(e),process.exit(1)})});command("dev").option("-p, --port <number>","Port to run Storybook",str=>parseInt(str,10)).option("-h, --host <string>","Host to run Storybook").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").option("--https","Serve Storybook over HTTPS. Note: You must provide your own certificate information.").option("--ssl-ca <ca>","Provide an SSL certificate authority. (Optional with --https, required if using a self-signed certificate)",import_core_common29.parseList).option("--ssl-cert <cert>","Provide an SSL certificate. (Required with --https)").option("--ssl-key <key>","Provide an SSL key. (Required with --https)").option("--smoke-test","Exit after successful start").option("--ci","CI mode (skip interactive prompts, don't open browser)").option("--no-open","Do not open Storybook automatically in the browser").option("--loglevel <level>","Control level of logging during build").option("--quiet","Suppress verbose build output").option("--no-version-updates","Suppress update check",!0).option("--debug-webpack","Display final webpack configurations for debugging purposes").option("--webpack-stats-json [directory]","Write Webpack Stats JSON to disk").option("--preview-url <string>","Disables the default storybook preview and lets your use your own").option("--force-build-preview","Build the preview iframe even if you are using --preview-url").option("--docs","Build a documentation-only site using addon-docs").option("--exact-port","Exit early if the desired port is not available").option("--initial-path [path]","URL path to be appended when visiting Storybook for the first time").action(async options=>{import_node_logger8.logger.setLevel(import_commander.default.loglevel),consoleLogger.log(import_chalk38.default.bold(`${pkg.name} v${pkg.version}`)+import_chalk38.default.reset(`
643
- `)),(0,import_core_common29.getEnvConfig)(options,{port:"SBCONFIG_PORT",host:"SBCONFIG_HOSTNAME",staticDir:"SBCONFIG_STATIC_DIR",configDir:"SBCONFIG_CONFIG_DIR",ci:"CI"}),parseInt(`${options.port}`,10)&&(options.port=parseInt(`${options.port}`,10)),await dev({...options,packageJson:pkg}).catch(()=>process.exit(1))});command("build").option("-o, --output-dir <dir-name>","Directory where to store built files").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").option("--quiet","Suppress verbose build output").option("--loglevel <level>","Control level of logging during build").option("--debug-webpack","Display final webpack configurations for debugging purposes").option("--webpack-stats-json [directory]","Write Webpack Stats JSON to disk").option("--preview-url <string>","Disables the default storybook preview and lets your use your own").option("--force-build-preview","Build the preview iframe even if you are using --preview-url").option("--docs","Build a documentation-only site using addon-docs").option("--test","Build stories optimized for testing purposes.").action(async options=>{process.env.NODE_ENV=process.env.NODE_ENV||"production",import_node_logger8.logger.setLevel(import_commander.default.loglevel),consoleLogger.log(import_chalk38.default.bold(`${pkg.name} v${pkg.version}
644
- `)),(0,import_core_common29.getEnvConfig)(options,{staticDir:"SBCONFIG_STATIC_DIR",outputDir:"SBCONFIG_OUTPUT_DIR",configDir:"SBCONFIG_CONFIG_DIR"}),await build({...options,packageJson:pkg,test:!!options.test||process.env.SB_TESTBUILD==="true"}).catch(()=>process.exit(1))});import_commander.default.on("command:*",([invalidCmd])=>{consoleLogger.error(` Invalid command: %s.
634
+ `),import_node_logger8.logger.line()}var dev=async cliOptions=>{process.env.NODE_ENV=process.env.NODE_ENV||"development";let readUpResult2=(0,import_read_pkg_up.sync)({cwd:__dirname});(0,import_tiny_invariant7.default)(readUpResult2,"Failed to find the closest package.json file.");let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",configType:"DEVELOPMENT",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,cache:import_core_common26.cache,packageJson:(0,import_read_pkg_up.sync)({cwd:__dirname})?.packageJson};await(0,import_core_server3.withTelemetry)("dev",{cliOptions,presetOptions:options,printError},()=>(0,import_core_server3.buildDevStandalone)(options))};var import_read_pkg_up2=require("read-pkg-up"),import_core_server4=require("@storybook/core-server"),import_core_common27=require("@storybook/core-common"),import_tiny_invariant8=__toESM(require("tiny-invariant")),build=async cliOptions=>{let readUpResult2=(0,import_read_pkg_up2.sync)({cwd:__dirname});(0,import_tiny_invariant8.default)(readUpResult2,"Failed to find the closest package.json file.");let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",outputDir:cliOptions.outputDir||"./storybook-static",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,configType:"PRODUCTION",cache:import_core_common27.cache,packageJson:readUpResult2.packageJson};await(0,import_core_server4.withTelemetry)("build",{cliOptions,presetOptions:options},()=>(0,import_core_server4.buildStaticStandalone)(options))};(0,import_telemetry4.addToGlobalContext)("cliVersion",import_core_common28.versions.storybook);var readUpResult=(0,import_read_pkg_up3.sync)({cwd:__dirname});(0,import_tiny_invariant9.default)(readUpResult,"Failed to find the closest package.json file.");var pkg=readUpResult.packageJson,consoleLogger=console,command=name=>import_commander.default.command(name).option("--disable-telemetry","Disable sending telemetry data",process.env.STORYBOOK_DISABLE_TELEMETRY&&process.env.STORYBOOK_DISABLE_TELEMETRY!=="false").option("--debug","Get more logs in debug mode",!1).option("--enable-crash-reports","Enable sending crash reports to telemetry data");command("init").description("Initialize Storybook into your project.").option("-f --force","Force add Storybook").option("-s --skip-install","Skip installing deps").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing deps").option("--use-pnp","Enable pnp mode for Yarn 2+").option("-p --parser <babel | babylon | flow | ts | tsx>","jscodeshift parser").option("-t --type <type>","Add Storybook for a specific project type").option("-y --yes","Answer yes to all prompts").option("-b --builder <webpack5 | vite>","Builder library").option("-l --linkable","Prepare installation for link (contributor helper)").action(options=>{initiate(options,pkg).catch(()=>process.exit(1))});command("add <addon>").description("Add an addon to your Storybook").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").option("-s --skip-postinstall","Skip package specific postinstall config modifications").action((addonName,options)=>add(addonName,options));command("remove <addon>").description("Remove an addon from your Storybook").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").action((addonName,options)=>(0,import_core_server5.withTelemetry)("remove",{cliOptions:options},async()=>{await(0,import_core_common28.removeAddon)(addonName,options),options.disableTelemetry||await(0,import_telemetry4.telemetry)("remove",{addon:addonName,source:"cli"})}));command("upgrade").description(`Upgrade your Storybook packages to v${import_core_common28.versions.storybook}`).option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").option("-y --yes","Skip prompting the user").option("-f --force","force the upgrade, skipping autoblockers").option("-n --dry-run","Only check for upgrades, do not install").option("-s --skip-check","Skip postinstall version and automigration checks").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").action(async options=>upgrade(options).catch(()=>process.exit(1)));command("info").description("Prints debugging information about the local environment").action(async()=>{consoleLogger.log(import_chalk41.default.bold(`
635
+ Storybook Environment Info:`));let activePackageManager=(await import_core_common28.JsPackageManagerFactory.getPackageManager()).type.replace(/\d/,""),output=await import_envinfo.default.run({System:["OS","CPU","Shell"],Binaries:["Node","Yarn","npm","pnpm"],Browsers:["Chrome","Edge","Firefox","Safari"],npmPackages:"{@storybook/*,*storybook*,sb,chromatic}",npmGlobalPackages:"{@storybook/*,*storybook*,sb,chromatic}"}),activePackageManagerLine=output.match(new RegExp(`${activePackageManager}:.*`,"i"));consoleLogger.log(output.replace(activePackageManagerLine,import_chalk41.default.bold(`${activePackageManagerLine} <----- active`)))});command("migrate [migration]").description("Run a Storybook codemod migration on your source files").option("-l --list","List available migrations").option("-g --glob <glob>","Glob for files upon which to apply the migration","**/*.js").option("-p --parser <babel | babylon | flow | ts | tsx>","jscodeshift parser").option("-n --dry-run","Dry run: verify the migration exists and show the files to which it will be applied").option("-r --rename <from-to>",'Rename suffix of matching files after codemod has been applied, e.g. ".js:.ts"').action((migration,{configDir,glob:glob3,dryRun,list,rename,parser})=>{migrate(migration,{configDir,glob:glob3,dryRun,list,rename,parser,logger:consoleLogger}).catch(err=>{import_node_logger9.logger.error(err),process.exit(1)})});command("sandbox [filterValue]").alias("repro").description("Create a sandbox from a set of possible templates").option("-o --output <outDir>","Define an output directory").option("--no-init","Whether to download a template without an initialized Storybook",!1).action((filterValue,options)=>sandbox({filterValue,...options},pkg).catch(e=>{import_node_logger9.logger.error(e),process.exit(1)}));command("link <repo-url-or-directory>").description("Pull down a repro from a URL (or a local directory), link it, and run storybook").option("--local","Link a local directory already in your file system").option("--no-start","Start the storybook",!0).action((target,{local,start})=>link({target,local,start}).catch(e=>{import_node_logger9.logger.error(e),process.exit(1)}));command("automigrate [fixId]").description("Check storybook for incompatibilities or migrations and apply fixes").option("-y --yes","Skip prompting the user").option("-n --dry-run","Only check for fixes, do not actually run them").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-l --list","List available migrations").option("-c, --config-dir <dir-name>","Directory of Storybook configurations to migrate").option("-s --skip-install","Skip installing deps").option("--renderer <renderer-pkg-name>","The renderer package for the framework Storybook is using.").action(async(fixId,options)=>{await doAutomigrate({fixId,...options}).catch(e=>{import_node_logger9.logger.error(e),process.exit(1)})});command("doctor").description("Check Storybook for known problems and provide suggestions or fixes").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-c, --config-dir <dir-name>","Directory of Storybook configuration").action(async options=>{await doctor(options).catch(e=>{import_node_logger9.logger.error(e),process.exit(1)})});command("dev").option("-p, --port <number>","Port to run Storybook",str=>parseInt(str,10)).option("-h, --host <string>","Host to run Storybook").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").option("--https","Serve Storybook over HTTPS. Note: You must provide your own certificate information.").option("--ssl-ca <ca>","Provide an SSL certificate authority. (Optional with --https, required if using a self-signed certificate)",import_core_common28.parseList).option("--ssl-cert <cert>","Provide an SSL certificate. (Required with --https)").option("--ssl-key <key>","Provide an SSL key. (Required with --https)").option("--smoke-test","Exit after successful start").option("--ci","CI mode (skip interactive prompts, don't open browser)").option("--no-open","Do not open Storybook automatically in the browser").option("--loglevel <level>","Control level of logging during build").option("--quiet","Suppress verbose build output").option("--no-version-updates","Suppress update check",!0).option("--debug-webpack","Display final webpack configurations for debugging purposes").option("--webpack-stats-json [directory]","Write Webpack stats JSON to disk (synonym for `--stats-json`)").option("--stats-json [directory]","Write stats JSON to disk").option("--preview-url <string>","Disables the default storybook preview and lets your use your own").option("--force-build-preview","Build the preview iframe even if you are using --preview-url").option("--docs","Build a documentation-only site using addon-docs").option("--exact-port","Exit early if the desired port is not available").option("--initial-path [path]","URL path to be appended when visiting Storybook for the first time").action(async options=>{import_node_logger9.logger.setLevel(import_commander.default.loglevel),consoleLogger.log(import_chalk41.default.bold(`${pkg.name} v${pkg.version}`)+import_chalk41.default.reset(`
636
+ `)),(0,import_core_common28.getEnvConfig)(options,{port:"SBCONFIG_PORT",host:"SBCONFIG_HOSTNAME",staticDir:"SBCONFIG_STATIC_DIR",configDir:"SBCONFIG_CONFIG_DIR",ci:"CI"}),parseInt(`${options.port}`,10)&&(options.port=parseInt(`${options.port}`,10)),await dev({...options,packageJson:pkg}).catch(()=>process.exit(1))});command("build").option("-o, --output-dir <dir-name>","Directory where to store built files").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").option("--quiet","Suppress verbose build output").option("--loglevel <level>","Control level of logging during build").option("--debug-webpack","Display final webpack configurations for debugging purposes").option("--webpack-stats-json [directory]","Write Webpack stats JSON to disk (synonym for `--stats-json`)").option("--stats-json [directory]","Write stats JSON to disk").option("--preview-url <string>","Disables the default storybook preview and lets your use your own").option("--force-build-preview","Build the preview iframe even if you are using --preview-url").option("--docs","Build a documentation-only site using addon-docs").option("--test","Build stories optimized for testing purposes.").action(async options=>{process.env.NODE_ENV=process.env.NODE_ENV||"production",import_node_logger9.logger.setLevel(import_commander.default.loglevel),consoleLogger.log(import_chalk41.default.bold(`${pkg.name} v${pkg.version}
637
+ `)),(0,import_core_common28.getEnvConfig)(options,{staticDir:"SBCONFIG_STATIC_DIR",outputDir:"SBCONFIG_OUTPUT_DIR",configDir:"SBCONFIG_CONFIG_DIR"}),await build({...options,packageJson:pkg,test:!!options.test||process.env.SB_TESTBUILD==="true"}).catch(()=>process.exit(1))});import_commander.default.on("command:*",([invalidCmd])=>{consoleLogger.error(` Invalid command: %s.
645
638
  See --help for a list of available commands.`,invalidCmd);let suggestion=import_commander.default.commands.map(cmd=>cmd._name).find(cmd=>(0,import_leven.default)(cmd,invalidCmd)<3);suggestion&&consoleLogger.info(`
646
639
  Did you mean ${suggestion}?`),process.exit(1)});import_commander.default.usage("<command> [options]").version(pkg.version).parse(process.argv);