@storybook/cli 9.0.0-alpha.2 → 9.0.0-alpha.21
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/bin/index.cjs +2 -2
- package/dist/bin/index.cjs +230 -462
- package/package.json +5 -4
package/dist/bin/index.cjs
CHANGED
|
@@ -1,86 +1,121 @@
|
|
|
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_picocolors=__commonJS({"../../node_modules/picocolors/picocolors.js"(exports2,module2){"use strict";var p=process||{},argv=p.argv||[],env2=p.env||{},isColorSupported=!(env2.NO_COLOR||argv.includes("--no-color"))&&(!!env2.FORCE_COLOR||argv.includes("--color")||p.platform==="win32"||(p.stdout||{}).isTTY&&env2.TERM!=="dumb"||!!env2.CI),formatter=(open,close,replace=open)=>input=>{let string=""+input,index=string.indexOf(close,open.length);return~index?open+replaceClose(string,close,replace,index)+close:open+string+close},replaceClose=(string,close,replace,index)=>{let result="",cursor=0;do result+=string.substring(cursor,index)+replace,cursor=index+close.length,index=string.indexOf(close,cursor);while(~index);return result+string.substring(cursor)},createColors=(enabled=isColorSupported)=>{let f=enabled?formatter:()=>String;return{isColorSupported:enabled,reset:f("\x1B[0m","\x1B[0m"),bold:f("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:f("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:f("\x1B[3m","\x1B[23m"),underline:f("\x1B[4m","\x1B[24m"),inverse:f("\x1B[7m","\x1B[27m"),hidden:f("\x1B[8m","\x1B[28m"),strikethrough:f("\x1B[9m","\x1B[29m"),black:f("\x1B[30m","\x1B[39m"),red:f("\x1B[31m","\x1B[39m"),green:f("\x1B[32m","\x1B[39m"),yellow:f("\x1B[33m","\x1B[39m"),blue:f("\x1B[34m","\x1B[39m"),magenta:f("\x1B[35m","\x1B[39m"),cyan:f("\x1B[36m","\x1B[39m"),white:f("\x1B[37m","\x1B[39m"),gray:f("\x1B[90m","\x1B[39m"),bgBlack:f("\x1B[40m","\x1B[49m"),bgRed:f("\x1B[41m","\x1B[49m"),bgGreen:f("\x1B[42m","\x1B[49m"),bgYellow:f("\x1B[43m","\x1B[49m"),bgBlue:f("\x1B[44m","\x1B[49m"),bgMagenta:f("\x1B[45m","\x1B[49m"),bgCyan:f("\x1B[46m","\x1B[49m"),bgWhite:f("\x1B[47m","\x1B[49m"),blackBright:f("\x1B[90m","\x1B[39m"),redBright:f("\x1B[91m","\x1B[39m"),greenBright:f("\x1B[92m","\x1B[39m"),yellowBright:f("\x1B[93m","\x1B[39m"),blueBright:f("\x1B[94m","\x1B[39m"),magentaBright:f("\x1B[95m","\x1B[39m"),cyanBright:f("\x1B[96m","\x1B[39m"),whiteBright:f("\x1B[97m","\x1B[39m"),bgBlackBright:f("\x1B[100m","\x1B[49m"),bgRedBright:f("\x1B[101m","\x1B[49m"),bgGreenBright:f("\x1B[102m","\x1B[49m"),bgYellowBright:f("\x1B[103m","\x1B[49m"),bgBlueBright:f("\x1B[104m","\x1B[49m"),bgMagentaBright:f("\x1B[105m","\x1B[49m"),bgCyanBright:f("\x1B[106m","\x1B[49m"),bgWhiteBright:f("\x1B[107m","\x1B[49m")}};module2.exports=createColors();module2.exports.createColors=createColors}});var require_eastasianwidth=__commonJS({"../../node_modules/eastasianwidth/eastasianwidth.js"(exports2,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"(exports2,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"(exports2,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"(exports2,module2){"use strict";var cliBoxes2=require_boxes();module2.exports=cliBoxes2;module2.exports.default=cliBoxes2}});var require_ansi_regex=__commonJS({"../../node_modules/string-width/node_modules/ansi-regex/index.js"(exports2,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"(exports2,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"(exports2,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"(exports2,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"(exports2,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"(exports2,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
|
|
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_picocolors26,import_ts_dedent22,blocker,init_block_storystorev6=__esm({"src/autoblock/block-storystorev6.ts"(){"use strict";import_picocolors26=__toESM(require_picocolors(),1),import_ts_dedent22=require("ts-dedent");init_types();blocker={id:"storyStoreV7removal",async check({mainConfig}){let features=mainConfig?.features;return features===void 0?!1:!!Object.hasOwn(features,"storyStoreV7")},log(){return import_ts_dedent22.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
|
-
${
|
|
6
|
+
${import_picocolors26.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#storystorev6-and-storiesof-is-deprecated")}
|
|
7
7
|
|
|
8
8
|
In your Storybook configuration we found storyStoreV7 feature defined. For instance:
|
|
9
9
|
|
|
10
|
-
export default
|
|
10
|
+
export default {
|
|
11
11
|
features: {
|
|
12
|
-
${
|
|
12
|
+
${import_picocolors26.default.cyan("storyStoreV7: false")}, <--- ${import_picocolors26.default.bold("remove this line")}
|
|
13
13
|
},
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
You need to remove the storyStoreV7 property.
|
|
17
|
-
`}}}});var block_dependencies_versions_exports={};__export(block_dependencies_versions_exports,{blocker:()=>blocker2});var
|
|
17
|
+
`}}}});var block_dependencies_versions_exports={};__export(block_dependencies_versions_exports,{blocker:()=>blocker2});var import_picocolors27,import_semver8,import_ts_dedent23,minimalVersionsMap,typedKeys,blocker2,init_block_dependencies_versions=__esm({"src/autoblock/block-dependencies-versions.ts"(){"use strict";import_picocolors27=__toESM(require_picocolors(),1),import_semver8=require("semver"),import_ts_dedent23=require("ts-dedent");init_types();minimalVersionsMap={"@angular/core":"18.0.0","react-scripts":"5.0.0","@storybook/preact-webpack5":"9.0.0","@storybook/preset-preact-webpack":"9.0.0","@storybook/vue3-webpack5":"9.0.0","@storybook/preset-vue3-webpack":"9.0.0","@storybook/html-webpack5":"9.0.0","@storybook/preset-html-webpack":"9.0.0","@storybook/web-components-webpack5":"9.0.0",next:"14.1.0",preact:"10.0.0",svelte:"5.0.0",vue:"3.0.0",vite:"5.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_semver8.lt)(installedVersion,minimumVersion)?{installedVersion,packageName,minimumVersion}:acc),!1)},log(options,data){switch(data.packageName){case"react-scripts":return import_ts_dedent23.dedent`
|
|
18
18
|
Support for react-script < 5.0.0 has been removed.
|
|
19
19
|
Please see the migration guide for more information:
|
|
20
|
-
${
|
|
20
|
+
${import_picocolors27.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#create-react-app-dropped-cra4-support")}
|
|
21
21
|
|
|
22
22
|
Upgrade to the latest version of react-scripts.
|
|
23
|
-
`;case"
|
|
23
|
+
`;case"@storybook/preact-webpack5":case"@storybook/preset-preact-webpack":return import_ts_dedent23.dedent`
|
|
24
|
+
Support for Preact Webpack5 has been removed.
|
|
25
|
+
Please see the migration guide for more information:
|
|
26
|
+
${import_picocolors27.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropped-webpack5-builder-support-in-favor-of-vite")}
|
|
27
|
+
`;case"@storybook/vue3-webpack5":case"@storybook/preset-vue3-webpack":return import_ts_dedent23.dedent`
|
|
28
|
+
Support for Vue3 Webpack5 has been removed.
|
|
29
|
+
Please see the migration guide for more information:
|
|
30
|
+
${import_picocolors27.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropped-webpack5-builder-support-in-favor-of-vite")}
|
|
31
|
+
`;case"@storybook/html-webpack5":case"@storybook/preset-html-webpack":return import_ts_dedent23.dedent`
|
|
32
|
+
Support for HTML Webpack5 has been removed.
|
|
33
|
+
Please see the migration guide for more information:
|
|
34
|
+
${import_picocolors27.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropped-webpack5-builder-support-in-favor-of-vite")}
|
|
35
|
+
`;case"@storybook/web-components-webpack5":return import_ts_dedent23.dedent`
|
|
36
|
+
Support for Web Components Webpack5 has been removed.
|
|
37
|
+
Please see the migration guide for more information:
|
|
38
|
+
${import_picocolors27.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropped-webpack5-builder-support-in-favor-of-vite")}
|
|
39
|
+
`;case"vue":return import_ts_dedent23.dedent`
|
|
24
40
|
Support for Vue 2 has been removed.
|
|
25
41
|
Please see the migration guide for more information:
|
|
26
|
-
${
|
|
42
|
+
${import_picocolors27.default.yellow("https://v3-migration.vuejs.org/")}
|
|
27
43
|
|
|
28
44
|
Please upgrade to the latest version of Vue.
|
|
29
|
-
`;case"@angular/core":return
|
|
30
|
-
Support for Angular <
|
|
45
|
+
`;case"@angular/core":return import_ts_dedent23.dedent`
|
|
46
|
+
Support for Angular < 18 has been removed.
|
|
31
47
|
Please see the migration guide for more information:
|
|
32
|
-
${
|
|
48
|
+
${import_picocolors27.default.yellow("https://angular.io/guide/update-to-version-15")}
|
|
33
49
|
|
|
34
50
|
Please upgrade to the latest version of Angular.
|
|
35
|
-
`;case"next":return
|
|
36
|
-
Support for Next.js <
|
|
51
|
+
`;case"next":return import_ts_dedent23.dedent`
|
|
52
|
+
Support for Next.js < 14.1 has been removed.
|
|
37
53
|
Please see the migration guide for more information:
|
|
38
|
-
${
|
|
54
|
+
${import_picocolors27.default.yellow("https://nextjs.org/docs/pages/building-your-application/upgrading/version-13")}
|
|
39
55
|
|
|
40
56
|
Please upgrade to the latest version of Next.js.
|
|
41
|
-
`;default:return
|
|
57
|
+
`;default:return import_ts_dedent23.dedent`
|
|
42
58
|
Support for ${data.packageName} version < ${data.minimumVersion} has been removed.
|
|
43
59
|
Since version 8, Storybook needs a minimum version of ${data.minimumVersion}, but you have version ${data.installedVersion}.
|
|
44
60
|
|
|
45
61
|
Please update this dependency.
|
|
46
|
-
`}}}}});var block_node_version_exports={};__export(block_node_version_exports,{blocker:()=>blocker3});var
|
|
62
|
+
`}}}}});var block_node_version_exports={};__export(block_node_version_exports,{blocker:()=>blocker3});var import_picocolors28,import_semver9,import_ts_dedent24,blocker3,init_block_node_version=__esm({"src/autoblock/block-node-version.ts"(){"use strict";import_picocolors28=__toESM(require_picocolors(),1),import_semver9=require("semver"),import_ts_dedent24=require("ts-dedent");init_types();blocker3={id:"minimumNode20",async check(){let nodeVersion=process.versions.node;return nodeVersion&&(0,import_semver9.lt)(nodeVersion,"20.0.0")?{nodeVersion}:!1},log(options,data){return import_ts_dedent24.dedent`
|
|
47
63
|
We've detected you're using Node.js v${data.nodeVersion}.
|
|
48
|
-
Storybook needs Node.js
|
|
64
|
+
Storybook needs Node.js 20 or higher.
|
|
49
65
|
|
|
50
|
-
${
|
|
51
|
-
`}}}});var
|
|
52
|
-
|
|
53
|
-
|
|
66
|
+
${import_picocolors28.default.yellow("https://nodejs.org/en/download")}
|
|
67
|
+
`}}}});var block_svelte_webpack5_exports={};__export(block_svelte_webpack5_exports,{blocker:()=>blocker4});var import_picocolors29,import_ts_dedent25,blocker4,init_block_svelte_webpack5=__esm({"src/autoblock/block-svelte-webpack5.ts"(){"use strict";import_picocolors29=__toESM(require_picocolors(),1),import_ts_dedent25=require("ts-dedent");init_types();blocker4={id:"svelteWebpack5Removal",async check({packageJson}){return"@storybook/svelte-webpack5"in{...packageJson.dependencies,...packageJson.devDependencies}},log(){return import_ts_dedent25.dedent`
|
|
68
|
+
${import_picocolors29.default.bold("@storybook/svelte-webpack5")} is no longer supported in Storybook 9.
|
|
69
|
+
|
|
70
|
+
You need to migrate to ${import_picocolors29.default.bold("@storybook/svelte-vite")} instead.
|
|
71
|
+
|
|
72
|
+
Please follow the setup guide for @storybook/svelte-vite:
|
|
73
|
+
${import_picocolors29.default.yellow("https://storybook.js.org/docs/get-started/frameworks/svelte-vite")}
|
|
74
|
+
|
|
75
|
+
After migrating, you can remove @storybook/svelte-webpack5 from your project and try running the upgrade command again.
|
|
76
|
+
`}}}});var block_major_version_exports={};__export(block_major_version_exports,{blocker:()=>blocker5,checkUpgrade:()=>checkUpgrade});function checkUpgrade(currentVersion,targetVersion){if(!currentVersion||!targetVersion)return"ok";let current=(0,import_semver10.parse)(currentVersion),target=(0,import_semver10.parse)(targetVersion);return!current||!target||(0,import_semver10.prerelease)(currentVersion)||(0,import_semver10.prerelease)(targetVersion)||current.major===0||target.major===0?"ok":(0,import_semver10.gt)(currentVersion,targetVersion)?"downgrade":target.major-current.major>1?"gap-too-large":"ok"}var import_cli3,import_common23,import_picocolors30,import_semver10,import_ts_dedent26,blocker5,init_block_major_version=__esm({"src/autoblock/block-major-version.ts"(){"use strict";import_cli3=require("storybook/internal/cli"),import_common23=require("storybook/internal/common"),import_picocolors30=__toESM(require_picocolors(),1),import_semver10=require("semver"),import_ts_dedent26=require("ts-dedent");init_types();blocker5={id:"major-version-gap",async check(options){let{packageManager}=options,packageJson=await packageManager.retrievePackageJson();try{let current=(0,import_cli3.getStorybookVersionSpecifier)(packageJson);if(!current)return!1;let target=import_common23.versions.storybook,result=checkUpgrade(current,target);return result==="ok"?!1:{currentVersion:current,reason:result}}catch{return!1}},log(options,data){let coercedVersion=(0,import_semver10.coerce)(data.currentVersion);if(data.reason==="downgrade")return import_ts_dedent26.dedent`
|
|
77
|
+
${import_picocolors30.default.red("Downgrade Not Supported")}
|
|
78
|
+
Your Storybook version (v${data.currentVersion}) is newer than the target release (v${import_common23.versions.storybook}).
|
|
54
79
|
Downgrading is not supported.
|
|
55
80
|
|
|
56
81
|
For more information about upgrading and version compatibility, visit:
|
|
57
|
-
${
|
|
58
|
-
${
|
|
59
|
-
Your Storybook version (v${data.currentVersion}) is more than one major version behind the target release (v${
|
|
60
|
-
Please upgrade one major version at a time.`;if(coercedVersion){let nextMajor=(0,
|
|
82
|
+
${import_picocolors30.default.cyan("https://storybook.js.org/docs/configure/upgrading")}`;let message=import_ts_dedent26.dedent`
|
|
83
|
+
${import_picocolors30.default.red("Major Version Gap Detected")}
|
|
84
|
+
Your Storybook version (v${data.currentVersion}) is more than one major version behind the target release (v${import_common23.versions.storybook}).
|
|
85
|
+
Please upgrade one major version at a time.`;if(coercedVersion){let nextMajor=(0,import_semver10.major)(coercedVersion)+1,cmd=`npx storybook@${nextMajor} upgrade`;return import_ts_dedent26.dedent`
|
|
61
86
|
${message}
|
|
62
87
|
|
|
63
88
|
You can upgrade to version ${nextMajor} by running:
|
|
64
|
-
${
|
|
89
|
+
${import_picocolors30.default.cyan(cmd)}
|
|
65
90
|
|
|
66
91
|
For more information about upgrading, visit:
|
|
67
|
-
${
|
|
92
|
+
${import_picocolors30.default.cyan("https://storybook.js.org/docs/configure/upgrading")}`}return import_ts_dedent26.dedent`
|
|
68
93
|
${message}
|
|
69
94
|
|
|
70
95
|
For more information about upgrading, visit:
|
|
71
|
-
${
|
|
96
|
+
${import_picocolors30.default.cyan("https://storybook.js.org/docs/configure/upgrading")}`}}}});var block_experimental_addon_test_exports={};__export(block_experimental_addon_test_exports,{blocker:()=>blocker6});var import_picocolors31,import_semver11,import_ts_dedent27,blocker6,init_block_experimental_addon_test=__esm({"src/autoblock/block-experimental-addon-test.ts"(){"use strict";import_picocolors31=__toESM(require_picocolors(),1),import_semver11=__toESM(require("semver"),1),import_ts_dedent27=require("ts-dedent");init_types();blocker6={id:"experimentalAddonTestVitest",async check({packageJson,packageManager}){if(!("@storybook/experimental-addon-test"in{...packageJson.dependencies,...packageJson.devDependencies}))return!1;let vitestVersion=await packageManager.getInstalledVersion("vitest");return vitestVersion?import_semver11.default.lt(vitestVersion,"3.0.0"):!1},log(){return import_ts_dedent27.dedent`
|
|
97
|
+
${import_picocolors31.default.magenta("@storybook/experimental-addon-test")} is being stabilized in Storybook 9.
|
|
98
|
+
|
|
99
|
+
The addon will be renamed to ${import_picocolors31.default.magenta("@storybook/addon-vitest")} and as part of this stabilization, we have dropped support for Vitest 2.
|
|
100
|
+
|
|
101
|
+
You have two options to proceed:
|
|
102
|
+
1. Remove ${import_picocolors31.default.magenta("@storybook/experimental-addon-test")} if you don't need it
|
|
103
|
+
2. Upgrade to ${import_picocolors31.default.bold("Vitest 3")} to continue using the addon
|
|
104
|
+
|
|
105
|
+
After addressing this, you can try running the upgrade command again.
|
|
106
|
+
`}}}});var import_common25=require("storybook/internal/common"),import_core_server2=require("storybook/internal/core-server"),import_node_logger4=require("storybook/internal/node-logger"),import_telemetry2=require("storybook/internal/telemetry"),import_commander=require("commander"),import_envinfo=__toESM(require("envinfo"),1),import_leven=__toESM(require("leven"),1),import_picocolors34=__toESM(require_picocolors(),1);var version="9.0.0-alpha.21";var import_node_path2=require("path"),import_common3=require("storybook/internal/common"),import_csf_tools2=require("storybook/internal/csf-tools"),import_prompts=__toESM(require("prompts"),1),import_semver=__toESM(require("semver"),1),import_ts_dedent2=require("ts-dedent");var import_babel=require("storybook/internal/babel"),defaultRequireWrapperName="getAbsolutePath";function doesVariableOrFunctionDeclarationExist(node,name){return import_babel.types.isVariableDeclaration(node)&&node.declarations.length===1&&import_babel.types.isVariableDeclarator(node.declarations[0])&&import_babel.types.isIdentifier(node.declarations[0].id)&&node.declarations[0].id?.name===name||import_babel.types.isFunctionDeclaration(node)&&import_babel.types.isIdentifier(node.id)&&node.id.name===name}function getReferenceToRequireWrapper(config,value){return import_babel.types.callExpression(import_babel.types.identifier(getRequireWrapperName(config)??defaultRequireWrapperName),[import_babel.types.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(import_babel.types.isStringLiteral(node))return cb(node),!0;if(import_babel.types.isObjectExpression(node)){let nameProperty=node.properties.find(property=>import_babel.types.isObjectProperty(property)&&import_babel.types.isIdentifier(property.key)&&property.key.name==="name");if(nameProperty&&import_babel.types.isStringLiteral(nameProperty.value))return cb(nameProperty),!0}return import_babel.types.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&&import_babel.types.isArrayExpression(addons)?[addons]:[]]}function getRequireWrapperAsCallExpression(isConfigTypescript){let functionDeclaration={...import_babel.types.functionDeclaration(import_babel.types.identifier(defaultRequireWrapperName),[{...import_babel.types.identifier("value"),...isConfigTypescript?{typeAnnotation:import_babel.types.tsTypeAnnotation(import_babel.types.tSStringKeyword())}:{}}],import_babel.types.blockStatement([import_babel.types.returnStatement(import_babel.types.callExpression(import_babel.types.identifier("dirname"),[import_babel.types.callExpression(import_babel.types.memberExpression(import_babel.types.identifier("require"),import_babel.types.identifier("resolve")),[import_babel.types.callExpression(import_babel.types.identifier("join"),[import_babel.types.identifier("value"),import_babel.types.stringLiteral("package.json")])])]))])),...isConfigTypescript?{returnType:import_babel.types.tSTypeAnnotation(import_babel.types.tsAnyKeyword())}:{}};return import_babel.types.addComment(functionDeclaration,"leading",`*
|
|
72
107
|
* This function is used to resolve the absolute path of a package.
|
|
73
108
|
* It is needed in projects that use Yarn PnP or are set up within a monorepo.
|
|
74
|
-
`),functionDeclaration}function wrapValueWithRequireWrapper(config,node){isRequireWrapperNecessary(node,n=>{if(import_babel.types.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]})}import_babel.types.isObjectProperty(n)&&import_babel.types.isStringLiteral(n.value)&&(n.value=getReferenceToRequireWrapper(config,n.value.value)),import_babel.types.isArrayExpression(n)&&n.elements.forEach((element,index,elements)=>{import_babel.types.isStringLiteral(element)&&(elements[index]=getReferenceToRequireWrapper(config,element.value))})})}var import_node_path=require("path"),
|
|
109
|
+
`),functionDeclaration}function wrapValueWithRequireWrapper(config,node){isRequireWrapperNecessary(node,n=>{if(import_babel.types.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]})}import_babel.types.isObjectProperty(n)&&import_babel.types.isStringLiteral(n.value)&&(n.value=getReferenceToRequireWrapper(config,n.value.value)),import_babel.types.isArrayExpression(n)&&n.elements.forEach((element,index,elements)=>{import_babel.types.isStringLiteral(element)&&(elements[index]=getReferenceToRequireWrapper(config,element.value))})})}var import_node_path=require("path"),import_common=require("storybook/internal/common"),import_common2=require("storybook/internal/common"),import_csf_tools=require("storybook/internal/csf-tools"),import_picocolors=__toESM(require_picocolors(),1),import_ts_dedent=require("ts-dedent"),logger=console,getFrameworkPackageName=mainConfig=>{let packageNameOrPath=typeof mainConfig?.framework=="string"?mainConfig.framework:mainConfig?.framework?.name;return packageNameOrPath?(0,import_common.extractProperFrameworkName)(packageNameOrPath):null};var getStorybookData=async({packageManager,configDir:userDefinedConfigDir})=>{let packageJson=await packageManager.retrievePackageJson(),{mainConfig:mainConfigPath,version:storybookVersionSpecifier,configDir:configDirFromScript,previewConfig:previewConfigPath}=(0,import_common.getStorybookInfo)(packageJson,userDefinedConfigDir),storybookVersion=await(0,import_common2.getCoercedStorybookVersion)(packageManager),configDir=userDefinedConfigDir||configDirFromScript||".storybook",mainConfig;try{mainConfig=await(0,import_common.loadMainConfig)({configDir,noCache:!0})}catch(err){throw new Error(import_ts_dedent.dedent`Unable to find or evaluate ${import_picocolors.default.blue(mainConfigPath)}: ${String(err)}`)}return{configDir,mainConfig,storybookVersionSpecifier,storybookVersion,mainConfigPath,previewConfigPath,packageJson}},updateMainConfig=async({mainConfigPath,dryRun},callback)=>{try{let main=await(0,import_csf_tools.readConfig)(mainConfigPath);await callback(main),dryRun||await(0,import_csf_tools.writeConfig)(main)}catch(e){logger.info(`\u274C The migration failed to update your ${import_picocolors.default.blue(mainConfigPath)} on your behalf because of the following error:
|
|
75
110
|
${e}
|
|
76
|
-
`),logger.info(`\u26A0\uFE0F Storybook automigrations are based on AST parsing and it's possible that your ${import_picocolors.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.`)}};var postinstallAddon=async(addonName,options)=>{try{let modulePath=require.resolve(`${addonName}/postinstall`,{paths:[process.cwd()]}),postinstall=require(modulePath);try{console.log(`Running postinstall script for ${addonName}`),await postinstall(options)}catch(e){console.error(`Error running postinstall script for ${addonName}`),console.error(e)}}catch{}};var getVersionSpecifier=addon=>{let groups=/^(@{0,1}[^@]+)(?:@(.+))?$/.exec(addon);return groups?[groups[1],groups[2]]:[addon,void 0]};var checkInstalled=(addonName,main)=>!!main.addons?.find(entry=>(typeof entry=="string"?entry:entry.name)?.endsWith(addonName)),isCoreAddon=addonName=>Object.hasOwn(import_common3.versions,addonName);async function add(addon,{packageManager:pkgMgr,skipPostinstall,configDir:userSpecifiedConfigDir,yes},
|
|
111
|
+
`),logger.info(`\u26A0\uFE0F Storybook automigrations are based on AST parsing and it's possible that your ${import_picocolors.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.`)}};var postinstallAddon=async(addonName,options)=>{try{let modulePath=require.resolve(`${addonName}/postinstall`,{paths:[process.cwd()]}),postinstall=require(modulePath);try{console.log(`Running postinstall script for ${addonName}`),await postinstall(options)}catch(e){console.error(`Error running postinstall script for ${addonName}`),console.error(e)}}catch{}};var getVersionSpecifier=addon=>{let groups=/^(@{0,1}[^@]+)(?:@(.+))?$/.exec(addon);return groups?[groups[1],groups[2]]:[addon,void 0]};var checkInstalled=(addonName,main)=>!!main.addons?.find(entry=>(typeof entry=="string"?entry:entry.name)?.endsWith(addonName)),isCoreAddon=addonName=>Object.hasOwn(import_common3.versions,addonName);async function add(addon,{packageManager:pkgMgr,skipPostinstall,configDir:userSpecifiedConfigDir,yes},logger15=console){let[addonName,inputVersion]=getVersionSpecifier(addon),packageManager=import_common3.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),{mainConfig,mainConfigPath,configDir,previewConfigPath,storybookVersion}=await getStorybookData({packageManager,configDir:userSpecifiedConfigDir});if(typeof configDir>"u")throw new Error(import_ts_dedent2.dedent`
|
|
77
112
|
Unable to find storybook config directory. Please specify your Storybook config directory with the --config-dir flag.
|
|
78
|
-
`);if(!mainConfigPath){logger31.error("Unable to find Storybook main.js config");return}let shouldAddToMain=!0;if(checkInstalled(addonName,mainConfig)&&(shouldAddToMain=!1,!yes)){logger31.log(`The Storybook addon "${addonName}" is already present in ${mainConfigPath}.`);let{shouldForceInstall}=await(0,import_prompts.default)({type:"confirm",name:"shouldForceInstall",message:"Do you wish to install it again?"});if(!shouldForceInstall)return}let main=await(0,import_csf_tools2.readConfig)(mainConfigPath);logger31.log(`Verifying ${addonName}`);let version2=inputVersion;!version2&&isCoreAddon(addonName)&&storybookVersion&&(version2=storybookVersion),version2||(version2=await packageManager.latestVersion(addonName)),isCoreAddon(addonName)&&version2!==storybookVersion&&logger31.warn(`The version of ${addonName} (${version2}) you are installing is not the same as the version of Storybook you are using (${storybookVersion}). This may lead to unexpected behavior.`);let addonWithVersion=isValidVersion(version2)&&!version2.includes("-pr-")?`${addonName}@^${version2}`:`${addonName}@${version2}`;if(logger31.log(`Installing ${addonWithVersion}`),await packageManager.addDependencies({installAsDevDependencies:!0},[addonWithVersion]),shouldAddToMain){if(logger31.log(`Adding '${addon}' to the "addons" field in ${mainConfigPath}`),main.getFieldNode(["addons"])&&getRequireWrapperName(main)!==null){let addonNode=main.valueToNode(addonName);main.appendNodeToArray(["addons"],addonNode),wrapValueWithRequireWrapper(main,addonNode)}else main.appendValueToArray(["addons"],addonName);await(0,import_csf_tools2.writeConfig)(main)}try{await(0,import_common3.syncStorybookAddons)(mainConfig,previewConfigPath)}catch{}!skipPostinstall&&isCoreAddon(addonName)&&await postinstallAddon(addonName,{packageManager:packageManager.type,configDir,yes})}function isValidVersion(version2){return import_semver.default.valid(version2)||version2.match(/^\d+$/)}var import_node_fs2=require("fs"),import_promises7=require("fs/promises"),import_node_path7=require("path"),import_common21=require("storybook/internal/common");var import_node_process2=__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 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){return 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 import_node_process=__toESM(require("process"),1),import_node_os=__toESM(require("os"),1),import_node_tty=__toESM(require("tty"),1);function hasFlag(flag,argv=globalThis.Deno?globalThis.Deno.args:import_node_process.default.argv){let prefix=flag.startsWith("-")?"":flag.length===1?"-":"--",position=argv.indexOf(prefix+flag),terminatorPosition=argv.indexOf("--");return position!==-1&&(terminatorPosition===-1||position<terminatorPosition)}var{env}=import_node_process.default,flagForceColor;hasFlag("no-color")||hasFlag("no-colors")||hasFlag("color=false")||hasFlag("color=never")?flagForceColor=0:(hasFlag("color")||hasFlag("colors")||hasFlag("color=true")||hasFlag("color=always"))&&(flagForceColor=1);function envForceColor(){if("FORCE_COLOR"in env)return env.FORCE_COLOR==="true"?1:env.FORCE_COLOR==="false"?0:env.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(env.FORCE_COLOR,10),3)}function translateLevel(level){return level===0?!1:{level,hasBasic:!0,has256:level>=2,has16m:level>=3}}function _supportsColor(haveStream,{streamIsTTY,sniffFlags=!0}={}){let noFlagForceColor=envForceColor();noFlagForceColor!==void 0&&(flagForceColor=noFlagForceColor);let forceColor=sniffFlags?flagForceColor:noFlagForceColor;if(forceColor===0)return 0;if(sniffFlags){if(hasFlag("color=16m")||hasFlag("color=full")||hasFlag("color=truecolor"))return 3;if(hasFlag("color=256"))return 2}if("TF_BUILD"in env&&"AGENT_NAME"in env)return 1;if(haveStream&&!streamIsTTY&&forceColor===void 0)return 0;let min=forceColor||0;if(env.TERM==="dumb")return min;if(import_node_process.default.platform==="win32"){let osRelease=import_node_os.default.release().split(".");return Number(osRelease[0])>=10&&Number(osRelease[2])>=10586?Number(osRelease[2])>=14931?3:2:1}if("CI"in env)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(key=>key in env)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(sign=>sign in env)||env.CI_NAME==="codeship"?1:min;if("TEAMCITY_VERSION"in env)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION)?1:0;if(env.COLORTERM==="truecolor"||env.TERM==="xterm-kitty")return 3;if("TERM_PROGRAM"in env){let version2=Number.parseInt((env.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(env.TERM_PROGRAM){case"iTerm.app":return version2>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(env.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)||"COLORTERM"in env?1:min}function createSupportsColor(stream,options={}){let level=_supportsColor(stream,{streamIsTTY:stream&&stream.isTTY,...options});return translateLevel(level)}var supportsColor={stdout:createSupportsColor({isTTY:import_node_tty.default.isatty(1)}),stderr:createSupportsColor({isTTY:import_node_tty.default.isatty(2)})},supports_color_default=supportsColor;function stringReplaceAll(string,substring,replacer){let index=string.indexOf(substring);if(index===-1)return string;let substringLength=substring.length,endIndex=0,returnValue="";do returnValue+=string.slice(endIndex,index)+substring+replacer,endIndex=index+substringLength,index=string.indexOf(substring,endIndex);while(index!==-1);return returnValue+=string.slice(endIndex),returnValue}function stringEncaseCRLFWithFirstIndex(string,prefix,postfix,index){let endIndex=0,returnValue="";do{let gotCR=string[index-1]==="\r";returnValue+=string.slice(endIndex,gotCR?index-1:index)+prefix+(gotCR?`\r
|
|
113
|
+
`);if(!mainConfigPath){logger15.error("Unable to find Storybook main.js config");return}let shouldAddToMain=!0;if(checkInstalled(addonName,mainConfig)&&(shouldAddToMain=!1,!yes)){logger15.log(`The Storybook addon "${addonName}" is already present in ${mainConfigPath}.`);let{shouldForceInstall}=await(0,import_prompts.default)({type:"confirm",name:"shouldForceInstall",message:"Do you wish to install it again?"});if(!shouldForceInstall)return}let main=await(0,import_csf_tools2.readConfig)(mainConfigPath);logger15.log(`Verifying ${addonName}`);let version2=inputVersion;!version2&&isCoreAddon(addonName)&&storybookVersion&&(version2=storybookVersion),version2||(version2=await packageManager.latestVersion(addonName)),isCoreAddon(addonName)&&version2!==storybookVersion&&logger15.warn(`The version of ${addonName} (${version2}) you are installing is not the same as the version of Storybook you are using (${storybookVersion}). This may lead to unexpected behavior.`);let addonWithVersion=isValidVersion(version2)&&!version2.includes("-pr-")?`${addonName}@^${version2}`:`${addonName}@${version2}`;if(logger15.log(`Installing ${addonWithVersion}`),await packageManager.addDependencies({installAsDevDependencies:!0,writeOutputToFile:!1},[addonWithVersion]),shouldAddToMain){if(logger15.log(`Adding '${addon}' to the "addons" field in ${mainConfigPath}`),main.getFieldNode(["addons"])&&getRequireWrapperName(main)!==null){let addonNode=main.valueToNode(addonName);main.appendNodeToArray(["addons"],addonNode),wrapValueWithRequireWrapper(main,addonNode)}else main.appendValueToArray(["addons"],addonName);await(0,import_csf_tools2.writeConfig)(main)}try{await(0,import_common3.syncStorybookAddons)(mainConfig,previewConfigPath)}catch{}!skipPostinstall&&isCoreAddon(addonName)&&await postinstallAddon(addonName,{packageManager:packageManager.type,configDir,yes})}function isValidVersion(version2){return import_semver.default.valid(version2)||version2.match(/^\d+$/)}var import_node_fs3=require("fs"),import_promises7=require("fs/promises"),import_node_path6=require("path"),import_common20=require("storybook/internal/common");var import_node_process2=__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 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){return 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 import_node_process=__toESM(require("process"),1),import_node_os=__toESM(require("os"),1),import_node_tty=__toESM(require("tty"),1);function hasFlag(flag,argv=globalThis.Deno?globalThis.Deno.args:import_node_process.default.argv){let prefix=flag.startsWith("-")?"":flag.length===1?"-":"--",position=argv.indexOf(prefix+flag),terminatorPosition=argv.indexOf("--");return position!==-1&&(terminatorPosition===-1||position<terminatorPosition)}var{env}=import_node_process.default,flagForceColor;hasFlag("no-color")||hasFlag("no-colors")||hasFlag("color=false")||hasFlag("color=never")?flagForceColor=0:(hasFlag("color")||hasFlag("colors")||hasFlag("color=true")||hasFlag("color=always"))&&(flagForceColor=1);function envForceColor(){if("FORCE_COLOR"in env)return env.FORCE_COLOR==="true"?1:env.FORCE_COLOR==="false"?0:env.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(env.FORCE_COLOR,10),3)}function translateLevel(level){return level===0?!1:{level,hasBasic:!0,has256:level>=2,has16m:level>=3}}function _supportsColor(haveStream,{streamIsTTY,sniffFlags=!0}={}){let noFlagForceColor=envForceColor();noFlagForceColor!==void 0&&(flagForceColor=noFlagForceColor);let forceColor=sniffFlags?flagForceColor:noFlagForceColor;if(forceColor===0)return 0;if(sniffFlags){if(hasFlag("color=16m")||hasFlag("color=full")||hasFlag("color=truecolor"))return 3;if(hasFlag("color=256"))return 2}if("TF_BUILD"in env&&"AGENT_NAME"in env)return 1;if(haveStream&&!streamIsTTY&&forceColor===void 0)return 0;let min=forceColor||0;if(env.TERM==="dumb")return min;if(import_node_process.default.platform==="win32"){let osRelease=import_node_os.default.release().split(".");return Number(osRelease[0])>=10&&Number(osRelease[2])>=10586?Number(osRelease[2])>=14931?3:2:1}if("CI"in env)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(key=>key in env)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(sign=>sign in env)||env.CI_NAME==="codeship"?1:min;if("TEAMCITY_VERSION"in env)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION)?1:0;if(env.COLORTERM==="truecolor"||env.TERM==="xterm-kitty")return 3;if("TERM_PROGRAM"in env){let version2=Number.parseInt((env.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(env.TERM_PROGRAM){case"iTerm.app":return version2>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(env.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)||"COLORTERM"in env?1:min}function createSupportsColor(stream,options={}){let level=_supportsColor(stream,{streamIsTTY:stream&&stream.isTTY,...options});return translateLevel(level)}var supportsColor={stdout:createSupportsColor({isTTY:import_node_tty.default.isatty(1)}),stderr:createSupportsColor({isTTY:import_node_tty.default.isatty(2)})},supports_color_default=supportsColor;function stringReplaceAll(string,substring,replacer){let index=string.indexOf(substring);if(index===-1)return string;let substringLength=substring.length,endIndex=0,returnValue="";do returnValue+=string.slice(endIndex,index)+substring+replacer,endIndex=index+substringLength,index=string.indexOf(substring,endIndex);while(index!==-1);return returnValue+=string.slice(endIndex),returnValue}function stringEncaseCRLFWithFirstIndex(string,prefix,postfix,index){let endIndex=0,returnValue="";do{let gotCR=string[index-1]==="\r";returnValue+=string.slice(endIndex,gotCR?index-1:index)+prefix+(gotCR?`\r
|
|
79
114
|
`:`
|
|
80
115
|
`)+postfix,endIndex=index+1,index=string.indexOf(`
|
|
81
116
|
`,endIndex)}while(index!==-1);return returnValue+=string.slice(endIndex),returnValue}var{stdout:stdoutColor,stderr:stderrColor}=supports_color_default,GENERATOR=Symbol("GENERATOR"),STYLER=Symbol("STYLER"),IS_EMPTY=Symbol("IS_EMPTY"),levelMapping=["ansi","ansi","ansi256","ansi16m"],styles2=Object.create(null),applyOptions=(object,options={})=>{if(options.level&&!(Number.isInteger(options.level)&&options.level>=0&&options.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let colorLevel=stdoutColor?stdoutColor.level:0;object.level=options.level===void 0?colorLevel:options.level};var chalkFactory=options=>{let chalk2=(...strings)=>strings.join(" ");return applyOptions(chalk2,options),Object.setPrototypeOf(chalk2,createChalk.prototype),chalk2};function createChalk(options){return chalkFactory(options)}Object.setPrototypeOf(createChalk.prototype,Function.prototype);for(let[styleName,style]of Object.entries(ansi_styles_default))styles2[styleName]={get(){let builder=createBuilder(this,createStyler(style.open,style.close,this[STYLER]),this[IS_EMPTY]);return Object.defineProperty(this,styleName,{value:builder}),builder}};styles2.visible={get(){let builder=createBuilder(this,this[STYLER],!0);return Object.defineProperty(this,"visible",{value:builder}),builder}};var getModelAnsi=(model,level,type,...arguments_)=>model==="rgb"?level==="ansi16m"?ansi_styles_default[type].ansi16m(...arguments_):level==="ansi256"?ansi_styles_default[type].ansi256(ansi_styles_default.rgbToAnsi256(...arguments_)):ansi_styles_default[type].ansi(ansi_styles_default.rgbToAnsi(...arguments_)):model==="hex"?getModelAnsi("rgb",level,type,...ansi_styles_default.hexToRgb(...arguments_)):ansi_styles_default[type][model](...arguments_),usedModels=["rgb","hex","ansi256"];for(let model of usedModels){styles2[model]={get(){let{level}=this;return function(...arguments_){let styler=createStyler(getModelAnsi(model,levelMapping[level],"color",...arguments_),ansi_styles_default.color.close,this[STYLER]);return createBuilder(this,styler,this[IS_EMPTY])}}};let bgModel="bg"+model[0].toUpperCase()+model.slice(1);styles2[bgModel]={get(){let{level}=this;return function(...arguments_){let styler=createStyler(getModelAnsi(model,levelMapping[level],"bgColor",...arguments_),ansi_styles_default.bgColor.close,this[STYLER]);return createBuilder(this,styler,this[IS_EMPTY])}}}}var proto=Object.defineProperties(()=>{},{...styles2,level:{enumerable:!0,get(){return this[GENERATOR].level},set(level){this[GENERATOR].level=level}}}),createStyler=(open,close,parent)=>{let openAll,closeAll;return parent===void 0?(openAll=open,closeAll=close):(openAll=parent.openAll+open,closeAll=close+parent.closeAll),{open,close,openAll,closeAll,parent}},createBuilder=(self,_styler,_isEmpty)=>{let builder=(...arguments_)=>applyStyle(builder,arguments_.length===1?""+arguments_[0]:arguments_.join(" "));return Object.setPrototypeOf(builder,proto),builder[GENERATOR]=self,builder[STYLER]=_styler,builder[IS_EMPTY]=_isEmpty,builder},applyStyle=(self,string)=>{if(self.level<=0||!string)return self[IS_EMPTY]?"":string;let styler=self[STYLER];if(styler===void 0)return string;let{openAll,closeAll}=styler;if(string.includes("\x1B"))for(;styler!==void 0;)string=stringReplaceAll(string,styler.close,styler.open),styler=styler.parent;let lfIndex=string.indexOf(`
|
|
82
117
|
`);return lfIndex!==-1&&(string=stringEncaseCRLFWithFirstIndex(string,closeAll,openAll,lfIndex)),openAll+string+closeAll};Object.defineProperties(createChalk.prototype,styles2);var chalk=createChalk(),chalkStderr=createChalk({level:stderrColor?stderrColor.level:0});var source_default=chalk;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(`
|
|
83
|
-
`))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,(_,
|
|
118
|
+
`))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 wrapAnsi162=(offset=0)=>code=>`\x1B[${code+offset}m`,wrapAnsi2562=(offset=0)=>code=>`\x1B[${38+offset};5;${code}m`,wrapAnsi16m2=(offset=0)=>(red,green,blue)=>`\x1B[${38+offset};2;${red};${green};${blue}m`,styles3={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]}},modifierNames2=Object.keys(styles3.modifier),foregroundColorNames2=Object.keys(styles3.color),backgroundColorNames2=Object.keys(styles3.bgColor),colorNames2=[...foregroundColorNames2,...backgroundColorNames2];function assembleStyles2(){let codes=new Map;for(let[groupName,group]of Object.entries(styles3)){for(let[styleName,style]of Object.entries(group))styles3[styleName]={open:`\x1B[${style[0]}m`,close:`\x1B[${style[1]}m`},group[styleName]=styles3[styleName],codes.set(style[0],style[1]);Object.defineProperty(styles3,groupName,{value:group,enumerable:!1})}return Object.defineProperty(styles3,"codes",{value:codes,enumerable:!1}),styles3.color.close="\x1B[39m",styles3.bgColor.close="\x1B[49m",styles3.color.ansi=wrapAnsi162(),styles3.color.ansi256=wrapAnsi2562(),styles3.color.ansi16m=wrapAnsi16m2(),styles3.bgColor.ansi=wrapAnsi162(10),styles3.bgColor.ansi256=wrapAnsi2562(10),styles3.bgColor.ansi16m=wrapAnsi16m2(10),Object.defineProperties(styles3,{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=>styles3.rgbToAnsi256(...styles3.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)=>styles3.ansi256ToAnsi(styles3.rgbToAnsi256(red,green,blue)),enumerable:!1},hexToAnsi:{value:hex=>styles3.ansi256ToAnsi(styles3.hexToAnsi256(hex)),enumerable:!1}}),styles3}var ansiStyles2=assembleStyles2(),ansi_styles_default2=ansiStyles2;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(`
|
|
84
119
|
`)];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_default2.codes.get(Number(escapeCode));pre[index+1]===`
|
|
85
120
|
`?(escapeUrl&&(returnValue+=wrapAnsiHyperlink("")),escapeCode&&code&&(returnValue+=wrapAnsiCode(code))):character===`
|
|
86
121
|
`&&(escapeCode&&code&&(returnValue+=wrapAnsiCode(escapeCode)),escapeUrl&&(returnValue+=wrapAnsiHyperlink(escapeUrl)))}return returnValue};function wrapAnsi(string,columns,options){return String(string).normalize().replace(/\r\n/g,`
|
|
@@ -88,20 +123,22 @@
|
|
|
88
123
|
`).map(line=>exec(line,columns,options)).join(`
|
|
89
124
|
`)}var import_cli_boxes2=__toESM(require_cli_boxes(),1),NEWLINE=`
|
|
90
125
|
`,PAD=" ",NONE="none",terminalColumns=()=>{let{env:env2,stdout,stderr}=import_node_process2.default;return stdout?.columns?stdout.columns:stderr?.columns?stderr.columns:env2.COLUMNS?Number.parseInt(env2.COLUMNS,10):80},getObject=detail=>typeof detail=="number"?{top:detail,right:detail*3,bottom:detail,left:detail*3}:{top:0,right:0,bottom:0,left:0,...detail},getBorderWidth=borderStyle=>borderStyle===NONE?0:2,getBorderChars=borderStyle=>{let sides=["topLeft","topRight","bottomRight","bottomLeft","left","right","top","bottom"],characters;if(borderStyle===NONE){borderStyle={};for(let side of sides)borderStyle[side]=""}if(typeof borderStyle=="string"){if(characters=import_cli_boxes.default[borderStyle],!characters)throw new TypeError(`Invalid border style: ${borderStyle}`)}else{typeof borderStyle?.vertical=="string"&&(borderStyle.left=borderStyle.vertical,borderStyle.right=borderStyle.vertical),typeof borderStyle?.horizontal=="string"&&(borderStyle.top=borderStyle.horizontal,borderStyle.bottom=borderStyle.horizontal);for(let side of sides)if(borderStyle[side]===null||typeof borderStyle[side]!="string")throw new TypeError(`Invalid border style: ${side}`);characters=borderStyle}return characters},makeTitle=(text,horizontal,alignment)=>{let title="",textWidth=stringWidth(text);switch(alignment){case"left":{title=text+horizontal.slice(textWidth);break}case"right":{title=horizontal.slice(textWidth)+text;break}default:{horizontal=horizontal.slice(textWidth),horizontal.length%2===1?(horizontal=horizontal.slice(Math.floor(horizontal.length/2)),title=horizontal.slice(1)+text+horizontal):(horizontal=horizontal.slice(horizontal.length/2),title=horizontal+text+horizontal);break}}return title},makeContentText=(text,{padding,width,textAlignment,height})=>{text=(0,import_ansi_align.default)(text,{align:textAlignment});let lines=text.split(NEWLINE),textWidth=widestLine(text),max=width-padding.left-padding.right;if(textWidth>max){let newLines=[];for(let line of lines){let createdLines=wrapAnsi(line,max,{hard:!0}),alignedLinesArray=(0,import_ansi_align.default)(createdLines,{align:textAlignment}).split(`
|
|
91
|
-
`),longestLength=Math.max(...alignedLinesArray.map(s=>stringWidth(s)));for(let alignedLine of alignedLinesArray){let paddedLine;switch(textAlignment){case"center":{paddedLine=PAD.repeat((max-longestLength)/2)+alignedLine;break}case"right":{paddedLine=PAD.repeat(max-longestLength)+alignedLine;break}default:{paddedLine=alignedLine;break}}newLines.push(paddedLine)}}lines=newLines}textAlignment==="center"&&textWidth<max?lines=lines.map(line=>PAD.repeat((max-textWidth)/2)+line):textAlignment==="right"&&textWidth<max&&(lines=lines.map(line=>PAD.repeat(max-textWidth)+line));let paddingLeft=PAD.repeat(padding.left),paddingRight=PAD.repeat(padding.right);return lines=lines.map(line=>paddingLeft+line+paddingRight),lines=lines.map(line=>{if(width-stringWidth(line)>0)switch(textAlignment){case"center":return line+PAD.repeat(width-stringWidth(line));case"right":return line+PAD.repeat(width-stringWidth(line));default:return line+PAD.repeat(width-stringWidth(line))}return line}),padding.top>0&&(lines=[...Array.from({length:padding.top}).fill(PAD.repeat(width)),...lines]),padding.bottom>0&&(lines=[...lines,...Array.from({length:padding.bottom}).fill(PAD.repeat(width))]),height&&lines.length>height?lines=lines.slice(0,height):height&&lines.length<height&&(lines=[...lines,...Array.from({length:height-lines.length}).fill(PAD.repeat(width))]),lines.join(NEWLINE)},boxContent=(content,contentWidth,options)=>{let colorizeBorder=border=>{let newBorder=options.borderColor?getColorFn(options.borderColor)(border):border;return options.dimBorder?source_default.dim(newBorder):newBorder},colorizeContent=content2=>options.backgroundColor?getBGColorFn(options.backgroundColor)(content2):content2,chars=getBorderChars(options.borderStyle),columns=terminalColumns(),marginLeft=PAD.repeat(options.margin.left);if(options.float==="center"){let marginWidth=Math.max((columns-contentWidth-getBorderWidth(options.borderStyle))/2,0);marginLeft=PAD.repeat(marginWidth)}else if(options.float==="right"){let marginWidth=Math.max(columns-contentWidth-options.margin.right-getBorderWidth(options.borderStyle),0);marginLeft=PAD.repeat(marginWidth)}let result="";options.margin.top&&(result+=NEWLINE.repeat(options.margin.top)),(options.borderStyle!==NONE||options.title)&&(result+=colorizeBorder(marginLeft+chars.topLeft+(options.title?makeTitle(options.title,chars.top.repeat(contentWidth),options.titleAlignment):chars.top.repeat(contentWidth))+chars.topRight)+NEWLINE);let lines=content.split(NEWLINE);return result+=lines.map(line=>marginLeft+colorizeBorder(chars.left)+colorizeContent(line)+colorizeBorder(chars.right)).join(NEWLINE),options.borderStyle!==NONE&&(result+=NEWLINE+colorizeBorder(marginLeft+chars.bottomLeft+chars.bottom.repeat(contentWidth)+chars.bottomRight)),options.margin.bottom&&(result+=NEWLINE.repeat(options.margin.bottom)),result},sanitizeOptions=options=>{if(options.fullscreen&&import_node_process2.default?.stdout){let newDimensions=[import_node_process2.default.stdout.columns,import_node_process2.default.stdout.rows];typeof options.fullscreen=="function"&&(newDimensions=options.fullscreen(...newDimensions)),options.width||(options.width=newDimensions[0]),options.height||(options.height=newDimensions[1])}return options.width&&(options.width=Math.max(1,options.width-getBorderWidth(options.borderStyle))),options.height&&(options.height=Math.max(1,options.height-getBorderWidth(options.borderStyle))),options},formatTitle=(title,borderStyle)=>borderStyle===NONE?title:` ${title} `,determineDimensions=(text,options)=>{options=sanitizeOptions(options);let widthOverride=options.width!==void 0,columns=terminalColumns(),borderWidth=getBorderWidth(options.borderStyle),maxWidth=columns-options.margin.left-options.margin.right-borderWidth,widest=widestLine(wrapAnsi(text,columns-borderWidth,{hard:!0,trim:!1}))+options.padding.left+options.padding.right;if(options.title&&widthOverride?(options.title=options.title.slice(0,Math.max(0,options.width-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle))):options.title&&(options.title=options.title.slice(0,Math.max(0,maxWidth-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle),stringWidth(options.title)>widest&&(options.width=stringWidth(options.title)))),options.width=options.width?options.width:widest,!widthOverride){if(options.margin.left&&options.margin.right&&options.width>maxWidth){let multiplier=(columns-options.width-borderWidth)/(options.margin.left+options.margin.right);options.margin.left=Math.max(0,Math.floor(options.margin.left*multiplier)),options.margin.right=Math.max(0,Math.floor(options.margin.right*multiplier))}options.width=Math.min(options.width,columns-borderWidth-options.margin.left-options.margin.right)}return options.width-(options.padding.left+options.padding.right)<=0&&(options.padding.left=0,options.padding.right=0),options.height&&options.height-(options.padding.top+options.padding.bottom)<=0&&(options.padding.top=0,options.padding.bottom=0),options},isHex=color=>color.match(/^#(?:[0-f]{3}){1,2}$/i),isColorValid=color=>typeof color=="string"&&(source_default[color]??isHex(color)),getColorFn=color=>isHex(color)?source_default.hex(color):source_default[color],getBGColorFn=color=>isHex(color)?source_default.bgHex(color):source_default[camelCase(["bg",color])];function boxen(text,options){if(options={padding:0,borderStyle:"single",dimBorder:!1,textAlignment:"left",float:"left",titleAlignment:"left",...options},options.align&&(options.textAlignment=options.align),options.borderColor&&!isColorValid(options.borderColor))throw new Error(`${options.borderColor} is not a valid borderColor`);if(options.backgroundColor&&!isColorValid(options.backgroundColor))throw new Error(`${options.backgroundColor} is not a valid backgroundColor`);return options.padding=getObject(options.padding),options.margin=getObject(options.margin),options=determineDimensions(text,options),text=makeContentText(text,options),boxContent(text,options.width,options)}var
|
|
126
|
+
`),longestLength=Math.max(...alignedLinesArray.map(s=>stringWidth(s)));for(let alignedLine of alignedLinesArray){let paddedLine;switch(textAlignment){case"center":{paddedLine=PAD.repeat((max-longestLength)/2)+alignedLine;break}case"right":{paddedLine=PAD.repeat(max-longestLength)+alignedLine;break}default:{paddedLine=alignedLine;break}}newLines.push(paddedLine)}}lines=newLines}textAlignment==="center"&&textWidth<max?lines=lines.map(line=>PAD.repeat((max-textWidth)/2)+line):textAlignment==="right"&&textWidth<max&&(lines=lines.map(line=>PAD.repeat(max-textWidth)+line));let paddingLeft=PAD.repeat(padding.left),paddingRight=PAD.repeat(padding.right);return lines=lines.map(line=>paddingLeft+line+paddingRight),lines=lines.map(line=>{if(width-stringWidth(line)>0)switch(textAlignment){case"center":return line+PAD.repeat(width-stringWidth(line));case"right":return line+PAD.repeat(width-stringWidth(line));default:return line+PAD.repeat(width-stringWidth(line))}return line}),padding.top>0&&(lines=[...Array.from({length:padding.top}).fill(PAD.repeat(width)),...lines]),padding.bottom>0&&(lines=[...lines,...Array.from({length:padding.bottom}).fill(PAD.repeat(width))]),height&&lines.length>height?lines=lines.slice(0,height):height&&lines.length<height&&(lines=[...lines,...Array.from({length:height-lines.length}).fill(PAD.repeat(width))]),lines.join(NEWLINE)},boxContent=(content,contentWidth,options)=>{let colorizeBorder=border=>{let newBorder=options.borderColor?getColorFn(options.borderColor)(border):border;return options.dimBorder?source_default.dim(newBorder):newBorder},colorizeContent=content2=>options.backgroundColor?getBGColorFn(options.backgroundColor)(content2):content2,chars=getBorderChars(options.borderStyle),columns=terminalColumns(),marginLeft=PAD.repeat(options.margin.left);if(options.float==="center"){let marginWidth=Math.max((columns-contentWidth-getBorderWidth(options.borderStyle))/2,0);marginLeft=PAD.repeat(marginWidth)}else if(options.float==="right"){let marginWidth=Math.max(columns-contentWidth-options.margin.right-getBorderWidth(options.borderStyle),0);marginLeft=PAD.repeat(marginWidth)}let result="";options.margin.top&&(result+=NEWLINE.repeat(options.margin.top)),(options.borderStyle!==NONE||options.title)&&(result+=colorizeBorder(marginLeft+chars.topLeft+(options.title?makeTitle(options.title,chars.top.repeat(contentWidth),options.titleAlignment):chars.top.repeat(contentWidth))+chars.topRight)+NEWLINE);let lines=content.split(NEWLINE);return result+=lines.map(line=>marginLeft+colorizeBorder(chars.left)+colorizeContent(line)+colorizeBorder(chars.right)).join(NEWLINE),options.borderStyle!==NONE&&(result+=NEWLINE+colorizeBorder(marginLeft+chars.bottomLeft+chars.bottom.repeat(contentWidth)+chars.bottomRight)),options.margin.bottom&&(result+=NEWLINE.repeat(options.margin.bottom)),result},sanitizeOptions=options=>{if(options.fullscreen&&import_node_process2.default?.stdout){let newDimensions=[import_node_process2.default.stdout.columns,import_node_process2.default.stdout.rows];typeof options.fullscreen=="function"&&(newDimensions=options.fullscreen(...newDimensions)),options.width||(options.width=newDimensions[0]),options.height||(options.height=newDimensions[1])}return options.width&&(options.width=Math.max(1,options.width-getBorderWidth(options.borderStyle))),options.height&&(options.height=Math.max(1,options.height-getBorderWidth(options.borderStyle))),options},formatTitle=(title,borderStyle)=>borderStyle===NONE?title:` ${title} `,determineDimensions=(text,options)=>{options=sanitizeOptions(options);let widthOverride=options.width!==void 0,columns=terminalColumns(),borderWidth=getBorderWidth(options.borderStyle),maxWidth=columns-options.margin.left-options.margin.right-borderWidth,widest=widestLine(wrapAnsi(text,columns-borderWidth,{hard:!0,trim:!1}))+options.padding.left+options.padding.right;if(options.title&&widthOverride?(options.title=options.title.slice(0,Math.max(0,options.width-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle))):options.title&&(options.title=options.title.slice(0,Math.max(0,maxWidth-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle),stringWidth(options.title)>widest&&(options.width=stringWidth(options.title)))),options.width=options.width?options.width:widest,!widthOverride){if(options.margin.left&&options.margin.right&&options.width>maxWidth){let multiplier=(columns-options.width-borderWidth)/(options.margin.left+options.margin.right);options.margin.left=Math.max(0,Math.floor(options.margin.left*multiplier)),options.margin.right=Math.max(0,Math.floor(options.margin.right*multiplier))}options.width=Math.min(options.width,columns-borderWidth-options.margin.left-options.margin.right)}return options.width-(options.padding.left+options.padding.right)<=0&&(options.padding.left=0,options.padding.right=0),options.height&&options.height-(options.padding.top+options.padding.bottom)<=0&&(options.padding.top=0,options.padding.bottom=0),options},isHex=color=>color.match(/^#(?:[0-f]{3}){1,2}$/i),isColorValid=color=>typeof color=="string"&&(source_default[color]??isHex(color)),getColorFn=color=>isHex(color)?source_default.hex(color):source_default[color],getBGColorFn=color=>isHex(color)?source_default.bgHex(color):source_default[camelCase(["bg",color])];function boxen(text,options){if(options={padding:0,borderStyle:"single",dimBorder:!1,textAlignment:"left",float:"left",titleAlignment:"left",...options},options.align&&(options.textAlignment=options.align),options.borderColor&&!isColorValid(options.borderColor))throw new Error(`${options.borderColor} is not a valid borderColor`);if(options.backgroundColor&&!isColorValid(options.backgroundColor))throw new Error(`${options.backgroundColor} is not a valid backgroundColor`);return options.padding=getObject(options.padding),options.margin=getObject(options.margin),options=determineDimensions(text,options),text=makeContentText(text,options),boxContent(text,options.width,options)}var import_picocolors23=__toESM(require_picocolors(),1),import_prompts4=__toESM(require("prompts"),1),import_semver6=__toESM(require("semver"),1),import_tiny_invariant=__toESM(require("tiny-invariant"),1),import_ts_dedent20=require("ts-dedent");var import_node_fs=require("fs"),import_promises=require("fs/promises"),import_node_path3=require("path"),import_common7=require("storybook/internal/common");var import_picocolors5=__toESM(require_picocolors(),1),import_ts_dedent3=require("ts-dedent");var import_node_os2=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
|
|
92
127
|
\u2502`).replace(/││/g,`\u2502
|
|
93
128
|
\u2502`).replace(/│╰/g,`\u2502
|
|
94
|
-
\u2570`).replace(/⚠️ {2}failed to check/g,`${import_node_os2.EOL}\u26A0\uFE0F failed to check`);var import_common4=require("storybook/internal/common"),import_picocolors2=__toESM(require_picocolors(),1);var import_semver2=__toESM(require("semver"),1);function hasMultipleVersions(
|
|
129
|
+
\u2570`).replace(/⚠️ {2}failed to check/g,`${import_node_os2.EOL}\u26A0\uFE0F failed to check`);var import_common4=require("storybook/internal/common"),import_picocolors2=__toESM(require_picocolors(),1);var import_semver2=__toESM(require("semver"),1);function hasMultipleVersions(versions7){return versions7.find(v=>{let major2=import_semver2.default.major(v);if(major2===0){let minor=import_semver2.default.minor(v);if(minor===0){let patch=import_semver2.default.patch(v);return versions7.some(v2=>import_semver2.default.patch(v2)!==patch)}return versions7.some(v2=>import_semver2.default.minor(v2)!==minor)}return versions7.some(v2=>import_semver2.default.major(v2)!==major2)})}var messageDivider=`
|
|
95
130
|
|
|
96
131
|
`,allowList=["@storybook/csf","@storybook/addons","@storybook/channel-postmessage","@storybook/channel-websocket","@storybook/client-api","@storybook/core-client","@storybook/preview-web","@storybook/store","@storybook/components","@storybook/router","@storybook/theming","@storybook/api","@storybook/manager-api"],disallowList=[Object.keys(import_common4.rendererPackages),Object.keys(import_common4.frameworkPackages),"storybook","@storybook/instrumenter","@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,packageVersions])=>{if(allowList.includes(dep))return acc;let hasMultipleMajorVersions=hasMultipleVersions(packageVersions);return disallowList.includes(dep)&&hasMultipleMajorVersions?acc.critical.push(`${import_picocolors2.default.bold(import_picocolors2.default.red(dep))}:
|
|
97
132
|
${packageVersions.join(", ")}`):acc.trivial.push(`${import_picocolors2.default.yellow(dep)}:
|
|
98
133
|
${packageVersions.join(", ")}`),acc},{critical:[],trivial:[]});return critical.length===0&&trivial.length===0||(critical.length>0&&(messages.push(`${import_picocolors2.default.bold("Critical:")} The following dependencies are duplicated and WILL cause unexpected behavior:`),messages.push(critical.join(messageDivider),`
|
|
99
134
|
`)),trivial.length>0&&(messages.push(`${import_picocolors2.default.bold("Attention:")} The following dependencies are duplicated which might cause unexpected behavior:`),messages.push(trivial.join(messageDivider))),messages.push(`
|
|
100
135
|
`,`Please try de-duplicating these dependencies by running ${import_picocolors2.default.cyan(`${installationMetadata.dedupeCommand}`)}`),messages.push(`
|
|
101
|
-
`,`You can find more information for a given dependency by running ${import_picocolors2.default.cyan(`${installationMetadata.infoCommand} <package-name>`)}`)),messages}catch{return}}var import_common5=require("storybook/internal/common"),import_picocolors3=__toESM(require_picocolors(),1),import_semver3=__toESM(require("semver"),1),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,
|
|
102
|
-
`,err),{packageName:dependency}}},getIncompatibleStorybookPackages=async context=>{let packageManager=context.packageManager??import_common5.JsPackageManagerFactory.getPackageManager(),allDeps=await packageManager.getAllDependencies(),storybookLikeDeps=Object.keys(allDeps).filter(dep=>dep.includes("storybook"));if(storybookLikeDeps.length===0&&!context.skipErrors)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(`
|
|
103
|
-
Repo: ${import_picocolors3.default.yellow(homepage)}`:"";summaryMessage.push(`- ${packageDescription}${updateMessage}${packageRepo}`)}),summaryMessage.push(`
|
|
104
|
-
`,"Please consider updating your packages or contacting the maintainers for compatibility details.","For more on Storybook
|
|
136
|
+
`,`You can find more information for a given dependency by running ${import_picocolors2.default.cyan(`${installationMetadata.infoCommand} <package-name>`)}`)),messages}catch{return}}var import_common5=require("storybook/internal/common"),import_picocolors3=__toESM(require_picocolors(),1),import_semver3=__toESM(require("semver"),1),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,packageStorybookVersion=Object.entries({...dependencies,...peerDependencies}).filter(([dep])=>import_common5.versions[dep]).map(([_,versionRange])=>versionRange).find(versionRange=>versionRange&&import_semver3.default.validRange(versionRange)&&!import_semver3.default.satisfies(currentStorybookVersion,versionRange)),isCorePackage3=import_common5.versions[name],availableUpdate,availableCoreUpdate;return isCorePackage3&&packageVersion&&import_semver3.default.gt(currentStorybookVersion,packageVersion)&&(availableUpdate=currentStorybookVersion),isCorePackage3&&packageVersion&&import_semver3.default.gt(packageVersion,currentStorybookVersion)&&(availableCoreUpdate=packageVersion),{packageName:name,packageVersion,homepage,hasIncompatibleDependencies:packageStorybookVersion!=null,packageStorybookVersion,availableUpdate,availableCoreUpdate}}catch(err){return skipErrors||console.log(`Error checking compatibility for ${dependency}, please report an issue:
|
|
137
|
+
`,err),{packageName:dependency}}},getIncompatibleStorybookPackages=async context=>{let packageManager=context.packageManager??import_common5.JsPackageManagerFactory.getPackageManager(),allDeps=await packageManager.getAllDependencies(),storybookLikeDeps=Object.keys(allDeps).filter(dep=>dep.includes("storybook"));if(storybookLikeDeps.length===0&&!context.skipErrors)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(`You are currently using Storybook ${import_picocolors3.default.bold(currentStorybookVersion)} but you have packages which are incompatible with it:`),incompatiblePackages.forEach(({packageName:addonName,packageVersion:addonVersion,homepage,availableUpdate,packageStorybookVersion})=>{let packageDescription=`${import_picocolors3.default.cyan(addonName)}@${import_picocolors3.default.cyan(addonVersion)}`,updateMessage=availableUpdate?` (${availableUpdate} available!)`:"",dependsOnStorybook=packageStorybookVersion!=null?` which depends on ${import_picocolors3.default.red(packageStorybookVersion)}`:"",packageRepo=homepage?`
|
|
138
|
+
Repo: ${import_picocolors3.default.yellow(homepage)}`:"";summaryMessage.push(`- ${packageDescription}${updateMessage}${dependsOnStorybook}${packageRepo}`)}),summaryMessage.push(`
|
|
139
|
+
`,"Please consider updating your packages or contacting the maintainers for compatibility details.","For more on Storybook 9 compatibility, see the linked GitHub issue:",import_picocolors3.default.yellow("https://github.com/storybookjs/storybook/issues/30944")),incompatiblePackages.some(dep=>dep.availableCoreUpdate)&&summaryMessage.push(`
|
|
140
|
+
`,`The version of ${import_picocolors3.default.blue(`storybook@${currentStorybookVersion}`)} is behind the following core packages:`,`${incompatiblePackages.filter(dep=>dep.availableCoreUpdate).map(({packageName,packageVersion})=>`- ${import_picocolors3.default.blue(`${packageName}@${packageVersion}`)}`).join(`
|
|
141
|
+
`)}`,"Upgrade Storybook with:",import_picocolors3.default.blue("npx storybook@latest upgrade"))),summaryMessage.join(`
|
|
105
142
|
`)};var import_common6=require("storybook/internal/common"),import_picocolors4=__toESM(require_picocolors(),1),import_semver4=__toESM(require("semver"),1);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_common6.frameworkPackages).includes(packageName)),cliVersion=getPrimaryVersion("storybook",installationMetadata),frameworkVersion=getPrimaryVersion(frameworkPackageName,installationMetadata);if(!cliVersion||!frameworkVersion||import_semver4.default.eq(cliVersion,frameworkVersion))return;messages.push(`${import_picocolors4.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_semver4.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_picocolors4.default.yellow(versionToCompare)} (from the ${import_picocolors4.default.cyan(packageToDisplay)} package) or higher.`);let filteredDependencies=Object.entries(installationMetadata?.dependencies||[]).filter(([name,packages])=>Object.keys(import_common6.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_picocolors4.default.yellow(name)}: ${dep[0].version} ${allDependencies?.[name]?packageJsonSuffix:""}`).sort((a,b)=>(b.includes(packageJsonSuffix)?1:0)-(a.includes(packageJsonSuffix)?1:0)).join(`
|
|
106
143
|
`))}return messages.push(`You can run ${import_picocolors4.default.cyan("npx storybook@latest upgrade")} to upgrade all of your Storybook packages to the latest version.
|
|
107
144
|
|
|
@@ -143,10 +180,10 @@ ${err}`),info.source}let metaVariableName=csf._metaVariableName??"meta",programN
|
|
|
143
180
|
|
|
144
181
|
For more info, check out the docs:
|
|
145
182
|
${import_picocolors8.default.yellow("https://storybook.js.org/docs/api/csf/csf-factories")}
|
|
146
|
-
`))}};var import_common11=require("storybook/internal/common"),import_csf_tools5=require("storybook/internal/csf-tools"),import_fs2=require("fs"),jscodeshift=__toESM(require("jscodeshift"),1),import_path2=__toESM(require("path"),1),import_picocolors9=__toESM(require_picocolors(),1),import_ts_dedent5=require("ts-dedent");var ADDON_ID="storybook/
|
|
147
|
-
We have detected that you have ${import_picocolors9.default.magenta("@storybook/addon-a11y")} and ${import_picocolors9.default.magenta("@storybook/addon-
|
|
183
|
+
`))}};var import_common11=require("storybook/internal/common"),import_csf_tools5=require("storybook/internal/csf-tools"),import_fs2=require("fs"),jscodeshift=__toESM(require("jscodeshift"),1),import_path2=__toESM(require("path"),1),import_picocolors9=__toESM(require_picocolors(),1),import_ts_dedent5=require("ts-dedent");var ADDON_ID="storybook/a11y",PANEL_ID=`${ADDON_ID}/panel`;var RESULT=`${ADDON_ID}/result`,REQUEST=`${ADDON_ID}/request`,RUNNING=`${ADDON_ID}/running`,ERROR=`${ADDON_ID}/error`,MANUAL=`${ADDON_ID}/manual`,SELECT=`${ADDON_ID}/select`,DOCUMENTATION_LINK="writing-tests/accessibility-testing",DOCUMENTATION_DISCREPANCY_LINK=`${DOCUMENTATION_LINK}#why-are-my-tests-failing-in-different-environments`;var ADDON_ID2="storybook/test",TEST_PROVIDER_ID=`${ADDON_ID2}/test-provider`;var DOCUMENTATION_LINK2="writing-tests/test-addon",DOCUMENTATION_FATAL_ERROR_LINK=`${DOCUMENTATION_LINK2}#what-happens-if-vitest-itself-has-an-error`;var SUPPORTED_FRAMEWORKS=["@storybook/nextjs","@storybook/nextjs-vite","@storybook/react-vite","@storybook/svelte-vite","@storybook/vue3-vite","@storybook/html-vite","@storybook/web-components-vite","@storybook/sveltekit"],storeOptions={id:ADDON_ID2,initialState:{config:{coverage:!1,a11y:!1},watching:!1,cancelling:!1,fatalError:void 0,indexUrl:void 0,previewAnnotations:[],currentRun:{triggeredBy:void 0,config:{coverage:!1,a11y:!1},componentTestCount:{success:0,error:0},a11yCount:{success:0,warning:0,error:0},storyIds:void 0,totalTestCount:void 0,startedAt:void 0,finishedAt:void 0,unhandledErrors:[],coverageSummary:void 0}}},STORE_CHANNEL_EVENT_NAME=`UNIVERSAL_STORE:${storeOptions.id}`;var fileExtensions=[".js",".ts",".cts",".mts",".cjs",".mjs",".jsx",".tsx"],addonA11yAddonTest={id:"addonA11yAddonTest",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],promptType(result){return result.setupFile===null&&result.previewFile===null?"manual":"auto"},async check({mainConfig,configDir}){let addons=(0,import_common11.getAddonNames)(mainConfig),frameworkPackageName=getFrameworkPackageName(mainConfig),hasA11yAddon=!!addons.find(addon=>addon.includes("@storybook/addon-a11y")),hasTestAddon=!!addons.find(addon=>addon.includes("@storybook/addon-vitest"));if(!SUPPORTED_FRAMEWORKS.find(framework=>frameworkPackageName?.includes(framework))||!hasA11yAddon||!hasTestAddon||!configDir)return null;let vitestSetupFile=fileExtensions.map(ext=>import_path2.default.join(configDir,`vitest.setup${ext}`)).find(filePath=>(0,import_fs2.existsSync)(filePath))??null,previewFile=fileExtensions.map(ext=>import_path2.default.join(configDir,`preview${ext}`)).find(filePath=>(0,import_fs2.existsSync)(filePath))??null,skipVitestSetupTransformation=!1,skipPreviewTransformation=!1;if(vitestSetupFile&&previewFile){let vitestSetupSource=(0,import_fs2.readFileSync)(vitestSetupFile,"utf8"),previewSetupSource=(0,import_fs2.readFileSync)(previewFile,"utf8");if(skipVitestSetupTransformation=vitestSetupSource.includes("@storybook/addon-a11y"),skipPreviewTransformation=!shouldPreviewFileBeTransformed(previewSetupSource),skipVitestSetupTransformation&&skipPreviewTransformation)return null}let getTransformedSetupCode=()=>{if(!vitestSetupFile||skipVitestSetupTransformation)return null;try{let vitestSetupSource=(0,import_fs2.readFileSync)(vitestSetupFile,"utf8");return transformSetupFile(vitestSetupSource)}catch{return null}},getTransformedPreviewCode=()=>{if(!previewFile||skipPreviewTransformation)return null;try{let previewSetupSource=(0,import_fs2.readFileSync)(previewFile,"utf8");return transformPreviewFile(previewSetupSource,previewFile)}catch{return null}};return{setupFile:vitestSetupFile,previewFile,transformedSetupCode:getTransformedSetupCode(),transformedPreviewCode:await getTransformedPreviewCode(),skipVitestSetupTransformation,skipPreviewTransformation}},prompt({setupFile,previewFile,transformedSetupCode,transformedPreviewCode,skipPreviewTransformation,skipVitestSetupTransformation}){let prompt=[import_ts_dedent5.dedent`
|
|
184
|
+
We have detected that you have ${import_picocolors9.default.magenta("@storybook/addon-a11y")} and ${import_picocolors9.default.magenta("@storybook/addon-vitest")} installed.
|
|
148
185
|
|
|
149
|
-
${import_picocolors9.default.magenta("@storybook/addon-a11y")} now integrates with ${import_picocolors9.default.magenta("@storybook/addon-
|
|
186
|
+
${import_picocolors9.default.magenta("@storybook/addon-a11y")} now integrates with ${import_picocolors9.default.magenta("@storybook/addon-vitest")} to provide automatic accessibility checks for your stories, powered by Axe and Vitest.
|
|
150
187
|
`],counter=1;if(!skipVitestSetupTransformation)if(transformedSetupCode===null)prompt.push(import_ts_dedent5.dedent`
|
|
151
188
|
${counter++}) We couldn't find or automatically update ${import_picocolors9.default.cyan(".storybook/vitest.setup.<ts|js>")} in your project to smoothly set up project annotations from ${import_picocolors9.default.magenta("@storybook/addon-a11y")}.
|
|
152
189
|
Please manually update your ${import_picocolors9.default.cyan("vitest.setup.ts")} file to include the following:
|
|
@@ -183,518 +220,249 @@ ${err}`),info.source}let metaVariableName=csf._metaVariableName??"meta",programN
|
|
|
183
220
|
`),parametersLineIndex=lines.findIndex(line=>line.includes('test: "todo"')||line.includes("test: 'todo'"));if(parametersLineIndex===-1)return formattedPreviewConfig;let indentation=lines[parametersLineIndex]?.match(/^\s*/)?.[0],comment=`${indentation}// 'todo' - show a11y violations in the test UI only
|
|
184
221
|
${indentation}// 'error' - fail CI on a11y violations
|
|
185
222
|
${indentation}// 'off' - skip a11y checks entirely`;return lines.splice(parametersLineIndex,0,comment),(0,import_common11.formatFileContent)(filePath,lines.join(`
|
|
186
|
-
`))}function shouldPreviewFileBeTransformed(source){return!(0,import_csf_tools5.loadConfig)(source).parse().getFieldNode(["parameters","a11y","test"])}var
|
|
187
|
-
|
|
188
|
-
We've detected you're using ${import_picocolors10.default.cyan("@storybook/experimental-addon-test")}, which is now available as a stable addon.
|
|
189
|
-
|
|
190
|
-
We can automatically migrate your project to use ${import_picocolors10.default.cyan("@storybook/addon-test")} instead.
|
|
223
|
+
`))}function shouldPreviewFileBeTransformed(source){return!(0,import_csf_tools5.loadConfig)(source).parse().getFieldNode(["parameters","a11y","test"])}var import_promises2=require("fs/promises"),import_node_path4=require("path"),import_common12=require("storybook/internal/common"),import_csf_tools7=require("storybook/internal/csf-tools"),import_picocolors10=__toESM(require_picocolors(),1),import_ts_dedent6=require("ts-dedent");var import_csf_tools6=require("storybook/internal/csf-tools"),t5=__toESM(require("@babel/types"),1),isStoryAnnotation=(stmt,objectExports)=>t5.isExpressionStatement(stmt)&&t5.isAssignmentExpression(stmt.expression)&&t5.isMemberExpression(stmt.expression.left)&&t5.isIdentifier(stmt.expression.left.object)&&objectExports[stmt.expression.left.object.name];function migrateA11yParameters(obj){let parametersProp=obj.properties.find(prop=>t5.isObjectProperty(prop)&&t5.isIdentifier(prop.key)&&prop.key.name==="parameters");if(parametersProp&&t5.isObjectProperty(parametersProp)){let a11yProp=parametersProp.value.properties.find(prop=>t5.isObjectProperty(prop)&&t5.isIdentifier(prop.key)&&prop.key.name==="a11y");if(a11yProp&&t5.isObjectProperty(a11yProp)){let elementProp=a11yProp.value.properties.find(prop=>t5.isObjectProperty(prop)&&t5.isIdentifier(prop.key)&&prop.key.name==="element");if(elementProp&&t5.isObjectProperty(elementProp))return elementProp.key=t5.identifier("context"),!0}}return!1}function transformStoryA11yParameters(code){let parsed=(0,import_csf_tools6.loadCsf)(code,{makeTitle:title=>title}).parse(),hasChanges=!1;return t5.isObjectExpression(parsed._metaNode)&&migrateA11yParameters(parsed._metaNode)&&(hasChanges=!0),parsed._ast.program.body.forEach(stmt=>{let statement=stmt;isStoryAnnotation(statement,parsed._storyExports)&&t5.isExpressionStatement(statement)&&t5.isAssignmentExpression(statement.expression)&&t5.isObjectExpression(statement.expression.right)&&statement.expression.right.properties.forEach(param=>{if(t5.isObjectProperty(param)&&t5.isIdentifier(param.key)&¶m.key.name==="a11y"){let elementProp=param.value.properties.find(prop=>t5.isObjectProperty(prop)&&t5.isIdentifier(prop.key)&&prop.key.name==="element");elementProp&&t5.isObjectProperty(elementProp)&&(elementProp.key=t5.identifier("context"),hasChanges=!0)}})}),Object.values(parsed._storyExports).forEach(declaration=>{let declarator=declaration,init=t5.isVariableDeclarator(declarator)?declarator.init:void 0;(t5.isTSSatisfiesExpression(init)||t5.isTSAsExpression(init))&&(init=init.expression),t5.isObjectExpression(init)&&migrateA11yParameters(init)&&(hasChanges=!0)}),hasChanges?parsed:null}function transformPreviewA11yParameters(code){let parsed=(0,import_csf_tools6.loadConfig)(code).parse();return parsed._exportsObject&&t5.isObjectExpression(parsed._exportsObject)&&migrateA11yParameters(parsed._exportsObject)?parsed:null}var logger5=console,addonA11yParameters={id:"addon-a11y-parameters",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],check:async({mainConfig,previewConfigPath})=>{if(!mainConfig.addons?.some(addon=>typeof addon=="string"?addon==="@storybook/addon-a11y":addon.name==="@storybook/addon-a11y"))return null;let projectRoot=(0,import_common12.getProjectRoot)(),globby=(await import("globby")).globby,storyFiles=await globby([(0,import_node_path4.join)(projectRoot,"**/*.stor(y|ies).@(js|jsx|mjs|ts|tsx)")],{...(0,import_common12.commonGlobOptions)(""),cwd:projectRoot,gitignore:!0,absolute:!0}),storyFilesWithA11y=(await Promise.all(storyFiles.map(async file=>{let content=await(0,import_promises2.readFile)(file,"utf-8");return content.includes("a11y")&&content.includes("element")?file:null}))).filter(file=>file!==null),hasA11yConfigInPreview=!1;if(previewConfigPath){let content=await(0,import_promises2.readFile)(previewConfigPath,"utf-8");hasA11yConfigInPreview=content.includes("a11y")&&content.includes("element")}return storyFilesWithA11y.length===0&&!hasA11yConfigInPreview?null:{storyFilesToUpdate:storyFilesWithA11y,previewFileToUpdate:hasA11yConfigInPreview?previewConfigPath:void 0}},prompt:()=>import_ts_dedent6.dedent`
|
|
224
|
+
Found story or config files that may need to be updated.
|
|
191
225
|
|
|
192
|
-
|
|
193
|
-
${
|
|
194
|
-
... and ${fileCount-5} more files`:""}
|
|
195
|
-
`},async run({result:{matchingFiles},packageManager,dryRun}){for(let file of matchingFiles){let updatedContent=(0,import_fs3.readFileSync)(file,"utf-8").replace(/@storybook\/experimental-addon-test/g,"@storybook/addon-test");dryRun||(0,import_fs3.writeFileSync)(file,updatedContent,"utf-8")}if(!dryRun){let devDependencies=(await packageManager.retrievePackageJson()).devDependencies??{},storybookVersion=await packageManager.getPackageVersion("storybook"),isExperimentalAddonTestDevDependency=Object.keys(devDependencies).includes("@storybook/experimental-addon-test");await packageManager.removeDependencies({},["@storybook/experimental-addon-test"]),await packageManager.addDependencies({installAsDevDependencies:isExperimentalAddonTestDevDependency},[`@storybook/addon-test@${storybookVersion}`])}logger5.info(import_ts_dedent6.dedent`
|
|
196
|
-
✅ Successfully migrated from ${import_picocolors10.default.cyan("@storybook/experimental-addon-test")} to ${import_picocolors10.default.cyan("@storybook/addon-test")}
|
|
197
|
-
✅ Updated package.json dependency
|
|
198
|
-
✅ Updated ${matchingFiles.length} file(s)
|
|
199
|
-
`)}};var import_common12=require("storybook/internal/common"),import_picocolors11=__toESM(require_picocolors(),1),import_ts_dedent7=require("ts-dedent"),addonPostCSS={id:"addon-postcss",versionRange:["*","*"],promptType:"notification",async check({mainConfig}){return!(0,import_common12.getAddonNames)(mainConfig).find(addon=>addon.includes("@storybook/addon-postcss"))?null:{hasAddonPostcss:!0}},prompt(){return import_ts_dedent7.dedent`
|
|
200
|
-
${import_picocolors11.default.bold("Attention")}: We've detected that you're using the following package which is incompatible with Storybook 8 and beyond:
|
|
226
|
+
The a11y addon has removed the ${import_picocolors10.default.yellow("element")} parameter and replaced it with the ${import_picocolors10.default.yellow("context")} parameter:
|
|
227
|
+
${import_picocolors10.default.yellow("parameters.a11y.element")} -> ${import_picocolors10.default.yellow("parameters.a11y.context")}
|
|
201
228
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
Please migrate to ${import_picocolors11.default.cyan("@storybook/addon-styling-webpack")} once you're done upgrading.
|
|
205
|
-
`}};var import_picocolors12=__toESM(require_picocolors(),1),import_ts_dedent8=require("ts-dedent"),addonsAPI={id:"addons-api",versionRange:["*","*"],promptType:"notification",async check({packageManager}){return!(await packageManager.getAllDependencies())["@storybook/addons"]?null:{usesAddonsAPI:!0}},prompt(){return import_ts_dedent8.dedent`
|
|
206
|
-
${import_picocolors12.default.bold("Attention")}: We've detected that you're using the following package which is removed in Storybook 8 and beyond:
|
|
229
|
+
This change affects how accessibility checks are scoped in your stories and allows you to have more flexibility in defining the scope of your checks such as including or excluding multiple elements. We can update your code automatically.
|
|
207
230
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
This package has been deprecated and replaced with ${import_picocolors12.default.cyan("storybook/internal/preview-api")} and ${import_picocolors12.default.cyan("storybook/internal/manager-api")}.
|
|
231
|
+
More info: ${import_picocolors10.default.cyan("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#a11y-addon-replace-element-parameter-with-context-parameter")}
|
|
211
232
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
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.
|
|
218
|
-
|
|
219
|
-
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.
|
|
220
|
-
|
|
221
|
-
Read more about the Angular builder here: ${import_picocolors13.default.yellow("https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular#how-do-i-migrate-to-an-angular-storybook-builder")}
|
|
222
|
-
`},async run({result}){let angularJSON=new import_cli2.AngularJSON,{packageManager}=result,{useCompoDoc}=await(0,import_prompts3.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_cli3=require("storybook/internal/cli"),import_picocolors14=__toESM(require_picocolors(),1),import_semver5=__toESM(require("semver"),1),import_ts_dedent10=require("ts-dedent");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(0,import_cli3.isNxProject)()||frameworkPackageName!=="@storybook/angular"||!angularVersion||import_semver5.default.lt(angularVersion,"14.0.0"))return null;let angularJSON=new import_cli3.AngularJSON,{hasStorybookBuilder}=angularJSON;return hasStorybookBuilder||angularJSON.rootProject||Object.keys(angularJSON.projects).length===1?null:{}},prompt(){return import_ts_dedent10.dedent`
|
|
223
|
-
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_picocolors14.default.yellow("angular.json")} and execute ${import_picocolors14.default.yellow("ng run <your-project>:storybook")} to start Storybook.
|
|
224
|
-
|
|
225
|
-
❌ Your Angular workspace uses multiple projects defined in the ${import_picocolors14.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_picocolors14.default.yellow("https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular")} to do the migration manually.
|
|
226
|
-
`}};var import_csf_tools6=require("storybook/internal/csf-tools"),import_picocolors15=__toESM(require_picocolors(),1),import_ts_dedent11=require("ts-dedent");var logger6=console,MIGRATION="https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mainjs-docsautodocs-is-deprecated",autodocsTags={id:"autodocs-tags",versionRange:["*.*.*",">=8.0.*"],async check({mainConfig,mainConfigPath,previewConfigPath}){let autodocs=mainConfig?.docs?.autodocs;if(autodocs===void 0)return null;if(autodocs===!0&&!previewConfigPath)throw Error(import_ts_dedent11.dedent`
|
|
227
|
-
❌ Failed to remove the deprecated ${import_picocolors15.default.cyan("docs.autodocs")} setting from ${import_picocolors15.default.cyan(mainConfigPath)}.
|
|
233
|
+
Would you like to update these files to use the new parameter name?
|
|
234
|
+
`,run:async options=>{let{result,dryRun=!1}=options,{storyFilesToUpdate,previewFileToUpdate}=result,errors=[];if(previewFileToUpdate){let content=await(0,import_promises2.readFile)(previewFileToUpdate,"utf-8"),code=transformPreviewA11yParameters(content);if(code)if(dryRun)logger5.log("Would have updated",code.fileName);else try{await(0,import_csf_tools7.writeConfig)(code,previewFileToUpdate)}catch(error){errors.push({file:previewFileToUpdate,error})}}let{default:pLimit}=await import("p-limit"),limit=pLimit(10);if(await Promise.all(storyFilesToUpdate.map(file=>limit(async()=>{try{let content=await(0,import_promises2.readFile)(file,"utf-8"),code=transformStoryA11yParameters(content);code&&(dryRun?logger5.log("Would have updated",file):await(0,import_csf_tools7.writeCsf)(code,file))}catch(error){errors.push({file,error})}}))),errors.length>0)throw new Error(`Failed to process ${errors.length} files:
|
|
235
|
+
${errors.map(({file,error})=>`- ${file}: ${error.message}`).join(`
|
|
236
|
+
`)}`)}};var import_common13=require("storybook/internal/common"),import_picocolors11=__toESM(require_picocolors(),1),import_ts_dedent7=require("ts-dedent");var consolidatedAddons={"@storybook/addon-actions":"storybook/actions","@storybook/addon-controls":"storybook/internal/controls","@storybook/addon-toolbars":"storybook/internal/toolbars","@storybook/addon-highlight":"storybook/highlight","@storybook/addon-measure":"storybook/measure","@storybook/addon-outline":"storybook/outline","@storybook/addon-backgrounds":"storybook/backgrounds","@storybook/addon-viewport":"storybook/viewport"},addonEssentialsRemoveDocs={id:"addon-essentials-remove-docs",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],async check({mainConfigPath,mainConfig,packageManager}){if(!mainConfigPath)return null;try{let hasEssentialsAddon=!1,hasDocsAddon=!1,hasDocsDisabled=!1,additionalAddonsToRemove=[],CORE_ADDONS=["@storybook/addon-actions","@storybook/addon-backgrounds","@storybook/addon-controls","@storybook/addon-highlight","@storybook/addon-measure","@storybook/addon-outline","@storybook/addon-toolbars","@storybook/addon-viewport"];return await updateMainConfig({mainConfigPath,dryRun:!0},async main=>{let addons=main.getFieldValue(["addons"])||[],addonNames=(0,import_common13.getAddonNames)(mainConfig);hasEssentialsAddon=addonNames.includes("@storybook/addon-essentials"),hasDocsAddon=addonNames.includes("@storybook/addon-docs");let packageJson=await packageManager.retrievePackageJson(),installedAddons=Object.keys({...packageJson.dependencies,...packageJson.devDependencies});for(let addon of CORE_ADDONS)(addonNames.includes(addon)||installedAddons.includes(addon))&&additionalAddonsToRemove.push(addon);if(hasEssentialsAddon){let essentialsEntry=addons.find(addon=>typeof addon=="string"?addon.includes("@storybook/addon-essentials"):addon?.name.includes("@storybook/addon-essentials"));typeof essentialsEntry=="object"&&(hasDocsDisabled=(essentialsEntry.options||{}).docs===!1)}}),!hasEssentialsAddon&&additionalAddonsToRemove.length===0?null:{hasEssentials:hasEssentialsAddon,hasDocsDisabled,hasDocsAddon,additionalAddonsToRemove}}catch{return null}},prompt({hasDocsDisabled,additionalAddonsToRemove,hasEssentials}){let message="";hasEssentials&&(message=import_ts_dedent7.dedent`
|
|
237
|
+
We've detected that you have ${import_picocolors11.default.yellow("@storybook/addon-essentials")} installed.
|
|
228
238
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
Please perform the migration by hand: ${import_picocolors15.default.yellow(MIGRATION)}
|
|
232
|
-
`);return{autodocs,mainConfigPath,previewConfigPath}},prompt({autodocs,mainConfigPath,previewConfigPath}){let falseMessage="",trueMessage="";return autodocs===!1?falseMessage=import_ts_dedent11.dedent`
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
There is no ${import_picocolors15.default.cyan("docs.autodocs = false")} equivalent.
|
|
236
|
-
You'll need to check your stories to ensure none are tagged with ${import_picocolors15.default.cyan("autodocs")}.
|
|
237
|
-
`:autodocs===!0&&(trueMessage=` and update ${import_picocolors15.default.cyan(previewConfigPath)}`),import_ts_dedent11.dedent`
|
|
238
|
-
The ${import_picocolors15.default.cyan("docs.autodocs")} setting in ${import_picocolors15.default.cyan(mainConfigPath)} is deprecated.${falseMessage}
|
|
239
|
+
In Storybook 9.0, all features from ${import_picocolors11.default.yellow("@storybook/addon-essentials")} (except docs)
|
|
240
|
+
have been moved into Storybook's core. You no longer need to install or configure them separately.
|
|
239
241
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
please update your story files to use the 'autodocs' tag instead.
|
|
246
|
-
`;return value?import_ts_dedent12.dedent`
|
|
247
|
-
We've changed the configuration of autodocs (previous docsPage), so now the value:
|
|
248
|
-
- docs.autodocs: true -- means automatically create docs for every CSF file
|
|
249
|
-
- docs.autodocs: 'tag' -- means only create autodocs for CSF files with the 'autodocs' tag
|
|
250
|
-
- docs.autodocs: false -- means never create autodocs
|
|
251
|
-
|
|
252
|
-
Based on your prior configuration, we can set the \`docs.autodocs\` to keep your old behaviour:
|
|
253
|
-
|
|
254
|
-
${autodocsFormatted}
|
|
255
|
-
${value==="tag"?tagWarning:""}
|
|
256
|
-
More info: ${import_picocolors16.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#autodocs-changes")}
|
|
257
|
-
`:import_ts_dedent12.dedent`
|
|
258
|
-
We've detected that your main.js configuration file has not configured autodocs. In 6.x we
|
|
259
|
-
we defaulted to having a autodocs for every story, in 7.x you need to opt in per-component.
|
|
260
|
-
However, we can set the \`docs.autodocs\` to true to approximate the old behaviour:
|
|
261
|
-
|
|
262
|
-
${autodocsFormatted}
|
|
263
|
-
|
|
264
|
-
More info: ${import_picocolors16.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#autodocs-changes")}
|
|
265
|
-
`},async run({result:{value},dryRun,mainConfigPath}){logger7.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_cli4=require("storybook/internal/cli"),import_csf_tools7=require("storybook/internal/csf-tools"),import_picocolors17=__toESM(require_picocolors(),1),import_ts_dedent13=require("ts-dedent");var logger8=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_picocolors17.default.cyan(JSON.stringify(builder,null,2));return import_ts_dedent13.dedent`
|
|
266
|
-
We've detected you're using the community vite builder: ${builderFormatted}
|
|
267
|
-
|
|
268
|
-
'storybook-builder-vite' is deprecated and now located at ${import_picocolors17.default.cyan("@storybook/builder-vite")}.
|
|
269
|
-
|
|
270
|
-
We can upgrade your project to use the new builder automatically.
|
|
271
|
-
|
|
272
|
-
More info: ${import_picocolors17.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vite-builder-renamed")}
|
|
273
|
-
`},async run({result:{builder,packageJson},packageManager,dryRun,mainConfigPath}){let{dependencies={},devDependencies={}}=packageJson;if(logger8.info("\u2705 Removing existing 'storybook-builder-vite' dependency"),dryRun||(delete dependencies["storybook-builder-vite"],delete devDependencies["storybook-builder-vite"],await packageManager.writePackageJson(packageJson)),logger8.info("\u2705 Adding '@storybook/builder-vite' as dev dependency"),!dryRun){let versionToInstall=(0,import_cli4.getStorybookVersionSpecifier)(await packageManager.retrievePackageJson());await packageManager.addDependencies({installAsDevDependencies:!0},[`@storybook/builder-vite@${versionToInstall}`])}logger8.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_tools7.writeConfig)(main)})}};var import_picocolors20=__toESM(require_picocolors(),1),import_semver8=__toESM(require("semver"),1),import_ts_dedent16=require("ts-dedent");var import_picocolors18=__toESM(require_picocolors(),1),import_semver6=__toESM(require("semver"),1),import_ts_dedent14=require("ts-dedent");var logger9=console,checkWebpack5Builder=async({mainConfig,storybookVersion})=>{if(import_semver6.default.lt(storybookVersion,"6.3.0"))return logger9.warn(import_ts_dedent14.dedent`
|
|
274
|
-
Detected SB 6.3 or below, please upgrade storybook to use webpack5.
|
|
275
|
-
|
|
276
|
-
To upgrade to the latest stable release, run this from your project directory:
|
|
277
|
-
|
|
278
|
-
${import_picocolors18.default.cyan("npx storybook@latest upgrade")}
|
|
279
|
-
|
|
280
|
-
To upgrade to the latest pre-release, run this from your project directory:
|
|
281
|
-
|
|
282
|
-
${import_picocolors18.default.cyan("npx storybook@next upgrade")}
|
|
283
|
-
`.trim()),null;if(import_semver6.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 import_picocolors19=__toESM(require_picocolors(),1),import_semver7=__toESM(require("semver"),1),import_ts_dedent15=require("ts-dedent");var logger10=console,webpack5={id:"webpack5",versionRange:["<7",">=7"],async check({packageManager,mainConfig,storybookVersion}){let webpackVersion=await packageManager.getPackageVersion("webpack");if(!webpackVersion||import_semver7.default.lt(webpackVersion,"5.0.0")||import_semver7.default.gte(webpackVersion,"6.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{webpackVersion,...builderInfo}:null},prompt({webpackVersion}){let webpackFormatted=import_picocolors19.default.cyan(`webpack ${webpackVersion}`);return import_ts_dedent15.dedent`
|
|
284
|
-
We've detected you're running ${webpackFormatted}.
|
|
285
|
-
Your Storybook's main.js files specifies webpack4, which is incompatible.
|
|
286
|
-
|
|
287
|
-
To run Storybook in webpack5-mode, we can install Storybook's ${import_picocolors19.default.cyan("@storybook/builder-webpack5")} for you.
|
|
288
|
-
|
|
289
|
-
More info: ${import_picocolors19.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack-5-manager-build")}
|
|
290
|
-
`},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_semver8.default.lt(craVersion,"5.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{craVersion,...builderInfo}:null},prompt({craVersion}){let craFormatted=import_picocolors20.default.cyan(`Create React App (CRA) ${craVersion}`);return import_ts_dedent16.dedent`
|
|
291
|
-
We've detected you are running ${craFormatted} which is powered by webpack5.
|
|
292
|
-
Your Storybook's main.js files specifies webpack4, which is incompatible.
|
|
293
|
-
|
|
294
|
-
In order to work with your version of CRA, we need to install Storybook's ${import_picocolors20.default.cyan("@storybook/builder-webpack5")}.
|
|
295
|
-
|
|
296
|
-
More info: ${import_picocolors20.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#cra5-upgrade")}
|
|
297
|
-
`},async run(options){return webpack5.run({...options,result:{webpackVersion:null,...options.result}})}};var import_cli5=require("storybook/internal/cli"),import_picocolors21=__toESM(require_picocolors(),1),import_ts_dedent17=require("ts-dedent"),logger11=console,eslintPlugin={id:"eslintPlugin",versionRange:["<8",">=7"],async check({packageManager}){let{hasEslint,isStorybookPluginInstalled}=await(0,import_cli5.extractEslintInfo)(packageManager);if(isStorybookPluginInstalled||!hasEslint)return null;let eslintFile=null,unsupportedExtension;try{eslintFile=(0,import_cli5.findEslintFile)()}catch(err){unsupportedExtension=String(err)}return!eslintFile||!unsupportedExtension?(logger11.warn("Unable to find .eslintrc config file, skipping"),null):{eslintFile,unsupportedExtension}},prompt(){return import_ts_dedent17.dedent`
|
|
298
|
-
We've detected you are not using our eslint-plugin.
|
|
299
|
-
|
|
300
|
-
In order to have the best experience with Storybook and follow best practices, we advise you to install eslint-plugin-storybook.
|
|
301
|
-
|
|
302
|
-
More info: ${import_picocolors21.default.yellow("https://github.com/storybookjs/eslint-plugin-storybook#readme")}
|
|
303
|
-
`},async run({result:{eslintFile,unsupportedExtension},packageManager,dryRun,skipInstall}){let deps=["eslint-plugin-storybook"];if(logger11.info(`\u2705 Adding dependencies: ${deps}`),dryRun||await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall},deps),!dryRun&&unsupportedExtension){logger11.info(import_ts_dedent17.dedent`
|
|
304
|
-
⚠️ The plugin was successfully installed but failed to configure.
|
|
305
|
-
|
|
306
|
-
Found an eslint config file with an unsupported automigration format: .eslintrc.${unsupportedExtension}.
|
|
307
|
-
The supported formats for this automigration are: ${import_cli5.SUPPORTED_ESLINT_EXTENSIONS.join(", ")}.
|
|
308
|
-
|
|
309
|
-
Please refer to https://github.com/storybookjs/eslint-plugin-storybook#usage to finish setting up the plugin manually.
|
|
310
|
-
`);return}dryRun||await(0,import_cli5.configureEslintPlugin)(eslintFile,packageManager)}};var import_promises2=require("fs/promises"),import_csf_tools8=require("storybook/internal/csf-tools"),import_picocolors22=__toESM(require_picocolors(),1),import_ts_dedent18=require("ts-dedent"),MIGRATION2="https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#previewjs-globals-renamed-to-initialglobals",initialGlobals={id:"initial-globals",versionRange:["*.*.*",">=8.0.*"],async check({previewConfigPath}){if(!previewConfigPath)return null;let previewConfig=(0,import_csf_tools8.loadConfig)((await(0,import_promises2.readFile)(previewConfigPath)).toString()).parse(),globals=previewConfig.getFieldNode(["globals"]);return globals?{globals,previewConfig,previewConfigPath}:null},prompt({previewConfigPath}){return import_ts_dedent18.dedent`
|
|
311
|
-
The ${import_picocolors22.default.cyan("globals")} setting in ${import_picocolors22.default.cyan(previewConfigPath)} is deprecated
|
|
312
|
-
and has been renamed to ${import_picocolors22.default.cyan("initialGlobals")}.
|
|
242
|
+
We'll remove ${import_picocolors11.default.yellow("@storybook/addon-essentials")} from your configuration and dependencies.
|
|
243
|
+
`);let additionalAddonsMessage=additionalAddonsToRemove.length>0?import_ts_dedent7.dedent`
|
|
244
|
+
${hasEssentials?"":"In Storybook 9.0, several features have been moved into Storybook's core."}\n\nWe've detected the following addons that are now part of Storybook core:
|
|
245
|
+
${additionalAddonsToRemove.map(addon=>`
|
|
246
|
+
- ${import_picocolors11.default.yellow(addon)}`).join("")}
|
|
313
247
|
|
|
314
|
-
|
|
248
|
+
These will be removed as they are no longer needed.
|
|
249
|
+
|
|
250
|
+
We'll also need to update your code to use the new core addons.`:"";return hasDocsDisabled?`${message}${additionalAddonsMessage}`:hasEssentials?import_ts_dedent7.dedent`
|
|
251
|
+
${message}${additionalAddonsMessage}
|
|
315
252
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
253
|
+
Since you were using the docs feature, we'll install ${import_picocolors11.default.yellow("@storybook/addon-docs")}
|
|
254
|
+
separately and add it to your configuration.
|
|
255
|
+
`:additionalAddonsMessage},async run({result,dryRun,packageManager}){let{hasEssentials,hasDocsDisabled,hasDocsAddon,additionalAddonsToRemove}=result;if(!(!hasEssentials&&additionalAddonsToRemove.length===0)&&!dryRun){hasEssentials&&(console.log("Removing @storybook/addon-essentials..."),await packageManager.runPackageCommand("storybook",["remove","@storybook/addon-essentials"]));for(let addon of additionalAddonsToRemove)await packageManager.runPackageCommand("storybook",["remove",addon]);let errors=await(0,import_common13.scanAndTransformFiles)({dryRun:!!dryRun,transformFn:import_common13.transformImportFiles,transformOptions:consolidatedAddons});if(errors.length>0)throw new Error(`Failed to process ${errors.length} files:
|
|
256
|
+
${errors.map(({file,error})=>`- ${file}: ${error.message}`).join(`
|
|
257
|
+
`)}`);!hasDocsDisabled&&!hasDocsAddon&&(console.log("Adding @storybook/addon-docs..."),await packageManager.runPackageCommand("storybook",["add","@storybook/addon-docs"]))}}};var import_fs3=require("fs"),import_picocolors12=__toESM(require_picocolors(),1),import_ts_dedent8=require("ts-dedent"),logger6=console,addonExperimentalTest={id:"addon-experimental-test",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],promptType:"auto",async check({packageManager}){if(!await packageManager.getPackageVersion("@storybook/experimental-addon-test"))return null;let{globbySync}=await import("globby"),matchingFiles=globbySync(["**/.storybook/**/*.*","**/vitest.*.{js,ts,mjs,cjs}","**/vite.config.{js,ts,mjs,cjs}"],{ignore:["**/node_modules/**","**/dist/**"]}),filesWithExperimentalAddon=[];for(let file of matchingFiles)try{(0,import_fs3.readFileSync)(file,"utf-8").includes("@storybook/experimental-addon-test")&&filesWithExperimentalAddon.push(file)}catch{}return{matchingFiles:filesWithExperimentalAddon}},prompt({matchingFiles}){let fileCount=matchingFiles.length,fileList=matchingFiles.slice(0,5).map(file=>` - ${import_picocolors12.default.cyan(file)}`).join(`
|
|
258
|
+
`),hasMoreFiles=fileCount>5;return import_ts_dedent8.dedent`
|
|
259
|
+
We've detected you're using ${import_picocolors12.default.cyan("@storybook/experimental-addon-test")}, which is now available as a stable addon.
|
|
319
260
|
|
|
320
|
-
|
|
321
|
-
We can try to automatically upgrade your MDX files to MDX3 format using some common patterns.
|
|
261
|
+
We can automatically migrate your project to use ${import_picocolors12.default.cyan("@storybook/addon-vitest")} instead.
|
|
322
262
|
|
|
323
|
-
|
|
324
|
-
|
|
263
|
+
This will update ${fileCount} file(s) and your package.json:
|
|
264
|
+
${fileList}${hasMoreFiles?`
|
|
265
|
+
... and ${fileCount-5} more files`:""}
|
|
266
|
+
`},async run({result:{matchingFiles},packageManager,dryRun}){for(let file of matchingFiles){let updatedContent=(0,import_fs3.readFileSync)(file,"utf-8").replace(/@storybook\/experimental-addon-test/g,"@storybook/addon-vitest");dryRun||(0,import_fs3.writeFileSync)(file,updatedContent,"utf-8")}if(!dryRun){let devDependencies=(await packageManager.retrievePackageJson()).devDependencies??{},storybookVersion=await packageManager.getPackageVersion("storybook"),isExperimentalAddonTestDevDependency=Object.keys(devDependencies).includes("@storybook/experimental-addon-test");await packageManager.removeDependencies({},["@storybook/experimental-addon-test"]),await packageManager.addDependencies({installAsDevDependencies:isExperimentalAddonTestDevDependency},[`@storybook/addon-vitest@${storybookVersion}`])}logger6.info(import_ts_dedent8.dedent`
|
|
267
|
+
✅ Successfully migrated from ${import_picocolors12.default.cyan("@storybook/experimental-addon-test")} to ${import_picocolors12.default.cyan("@storybook/addon-vitest")}
|
|
268
|
+
✅ Updated package.json dependency
|
|
269
|
+
✅ Updated ${matchingFiles.length} file(s)
|
|
270
|
+
`)}};var import_common14=require("storybook/internal/common"),import_picocolors13=__toESM(require_picocolors(),1),import_ts_dedent9=require("ts-dedent"),addonMdxGfmRemove={id:"addon-mdx-gfm-remove",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],async check({mainConfigPath,mainConfig}){if(!mainConfigPath)return null;try{let hasMdxGfm=(0,import_common14.getAddonNames)(mainConfig).includes("@storybook/addon-mdx-gfm");return hasMdxGfm?{hasMdxGfm}:null}catch{return null}},prompt(){return import_ts_dedent9.dedent`
|
|
271
|
+
We've detected that you have ${import_picocolors13.default.yellow("@storybook/addon-mdx-gfm")} installed.
|
|
325
272
|
|
|
326
|
-
|
|
327
|
-
`},async run({
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
Storybook >= 8.0 uses MDX3 for compiling MDX, and thus no longer supports GFM out of the box.
|
|
331
|
-
Because of this you need to explicitly add the GFM plugin in the addon-docs options:
|
|
332
|
-
https://storybook.js.org/docs/writing-docs/mdx#markdown-tables-arent-rendering-correctly
|
|
333
|
-
|
|
334
|
-
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.
|
|
335
|
-
We'll install the addon and add it to your storybook config.
|
|
336
|
-
`},async run({packageManager,dryRun,mainConfigPath,skipInstall}){if(!dryRun){let packageJson=await packageManager.retrievePackageJson(),versionToInstall=(0,import_cli6.getStorybookVersionSpecifier)(await packageManager.retrievePackageJson());await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall,packageJson},[`@storybook/addon-mdx-gfm@${versionToInstall}`]),await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger13.info('\u2705 Adding "@storybook/addon-mdx-gfm" addon'),dryRun||main.appendValueToArray(["addons"],"@storybook/addon-mdx-gfm")})}}};var import_codemod2=require("@storybook/codemod"),import_glob=require("glob"),import_picocolors24=__toESM(require_picocolors(),1),import_prompts4=__toESM(require("prompts"),1),import_ts_dedent21=require("ts-dedent");var logger14=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_dedent21.dedent`
|
|
337
|
-
❌ Unable to determine Storybook stories globs in ${import_picocolors24.default.blue(JSON.stringify(mainConfig,null,2))}, skipping ${import_picocolors24.default.cyan(this.id)} fix.
|
|
338
|
-
|
|
339
|
-
In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx.
|
|
340
|
-
|
|
341
|
-
Now, since Storybook 8.0, we have removed support for .stories.mdx files.
|
|
342
|
-
|
|
343
|
-
We were unable to automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx.
|
|
344
|
-
We suggest you make this change manually.
|
|
345
|
-
To learn more about this change, see: ${import_picocolors24.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files")}
|
|
346
|
-
`);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(0,import_glob.glob)(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(`
|
|
347
|
-
`),prettyNextStoriesEntries=nextStoriesEntries.map(entry=>JSON.stringify(entry,null,2)).join(`
|
|
348
|
-
`);return import_ts_dedent21.dedent`
|
|
349
|
-
We've detected your project has one or more globs in your 'stories' config that matches .stories.mdx files:
|
|
350
|
-
${import_picocolors24.default.cyan(prettyExistingStoriesEntries)}
|
|
273
|
+
This package has been removed in Storybook 9.0. We'll remove it from your configuration and dependencies.
|
|
274
|
+
`},async run({packageManager}){await packageManager.runPackageCommand("storybook",["remove","@storybook/addon-mdx-gfm"])}};var import_common15=require("storybook/internal/common"),import_picocolors14=__toESM(require_picocolors(),1),import_ts_dedent10=require("ts-dedent");var addonStorysourceRemove={id:"addon-storysource-remove",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],async check({mainConfigPath,mainConfig}){if(!mainConfigPath)return null;try{let hasStorysource=!1;return await updateMainConfig({mainConfigPath,dryRun:!0},()=>{hasStorysource=(0,import_common15.getAddonNames)(mainConfig).includes("@storybook/addon-storysource")}),hasStorysource?{hasStorysource}:null}catch{return null}},prompt(){return import_ts_dedent10.dedent`
|
|
275
|
+
We've detected that you have ${import_picocolors14.default.yellow("@storybook/addon-storysource")} installed.
|
|
351
276
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
Now, since Storybook 8.0, we have removed support for .stories.mdx files.
|
|
277
|
+
This package has been removed in Storybook 9.0. We'll remove it from your configuration and dependencies.
|
|
355
278
|
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
To learn more about this change, see: ${import_picocolors24.default.yellow("https://storybook.js.org/docs/migration-guide#storiesmdx-to-mdxcsf")}
|
|
363
|
-
`},async run({dryRun,mainConfigPath,result:{nextStoriesEntries}}){if(logger14.info(import_ts_dedent21.dedent`✅ Setting 'stories' config:
|
|
364
|
-
${JSON.stringify(nextStoriesEntries,null,2)}`),!dryRun){let{glob:globString}=await import_prompts4.default.prompt({type:"text",name:"glob",message:"Please enter the glob for your MDX stories",initial:"./src/**/*.stories.mdx"});globString&&await(0,import_codemod2.runCodemod)("mdx-to-csf",{glob:globString,dryRun,logger:logger14}),await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{main.setFieldValue(["stories"],nextStoriesEntries)}),logger14.info(import_ts_dedent21.dedent`
|
|
365
|
-
The migration successfully updated your 'stories' config to include any .mdx file instead of just .stories.mdx.
|
|
366
|
-
|
|
367
|
-
It also ran the 'mdx-to-csf' codemod to convert your MDX stories to CSF format.
|
|
368
|
-
This codemod is not perfect however, so you may need to manually fix any issues it couldn't handle.
|
|
369
|
-
`)}}};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_promises4=require("fs/promises"),import_cli7=require("storybook/internal/cli"),import_picocolors25=__toESM(require_picocolors(),1),import_ts_dedent22=require("ts-dedent"),logger15=console,consolidatedPackages=["@storybook/channels","@storybook/client-logger","@storybook/core-common","@storybook/core-events","@storybook/csf-tools","@storybook/docs-tools","@storybook/node-logger","@storybook/preview-api","@storybook/router","@storybook/telemetry","@storybook/theming","@storybook/types","@storybook/manager-api","@storybook/manager","@storybook/preview","@storybook/core-server","@storybook/builder-manager","@storybook/components"];async function checkInstallations(packageManager,packages){let result={},promises=packages.map(pkg=>packageManager.findInstallations([pkg],{depth:0}));return(await Promise.all(promises)).forEach(analysis=>{analysis?.dependencies&&(result={...result,...analysis.dependencies})}),result}var missingStorybookDependencies={id:"missingStorybookDependencies",promptType:"auto",versionRange:["<8.2",">=8.2"],async check({packageManager}){let{globby}=await import("globby"),result=await checkInstallations(packageManager,consolidatedPackages);if(!result)return null;let installedDependencies=Object.keys(result).sort(),dependenciesToCheck=consolidatedPackages.filter(pkg=>!installedDependencies.includes(pkg)),files=await globby(["**/.storybook/*","**/*.stories.*","**/*.story.*"],{ignore:["**/node_modules/**"]}),packageUsage={};for(let file of files){let content=await(0,import_promises4.readFile)(file,"utf-8");dependenciesToCheck.forEach(pkg=>{new RegExp(`['"]${pkg}(/[^'"]*)?['"]`).test(content)&&(packageUsage[pkg]||(packageUsage[pkg]=[]),packageUsage[pkg].push(file))})}return Object.keys(packageUsage).length>0?{packageUsage}:null},prompt({packageUsage}){return import_ts_dedent22.dedent`
|
|
370
|
-
Found the following Storybook packages used in your project, but they are missing from your project dependencies:
|
|
371
|
-
${Object.entries(packageUsage).map(([pkg,files])=>`- ${import_picocolors25.default.cyan(pkg)}: (${files.length} ${files.length===1?"file":"files"})`).sort().join(`
|
|
279
|
+
For more information, see the migration guide:
|
|
280
|
+
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#migration-from-storybookaddon-storysource-to-code-panel
|
|
281
|
+
`},async run({result,packageManager}){await packageManager.runPackageCommand("storybook",["remove","@storybook/addon-storysource"])}};var import_promises3=require("fs/promises"),import_common16=require("storybook/internal/common"),import_picocolors15=__toESM(require_picocolors(),1),import_ts_dedent11=require("ts-dedent");var consolidatedPackages={"@storybook/channels":"storybook/internal/channels","@storybook/client-logger":"storybook/internal/client-logger","@storybook/core-common":"storybook/internal/common","@storybook/core-events":"storybook/internal/core-events","@storybook/csf-tools":"storybook/internal/csf-tools","@storybook/docs-tools":"storybook/internal/docs-tools","@storybook/node-logger":"storybook/internal/node-logger","@storybook/preview-api":"storybook/preview-api","@storybook/router":"storybook/internal/router","@storybook/telemetry":"storybook/internal/telemetry","@storybook/theming":"storybook/theming","@storybook/types":"storybook/internal/types","@storybook/manager-api":"storybook/manager-api","@storybook/manager":"storybook/internal/manager","@storybook/preview":"storybook/internal/preview","@storybook/core-server":"storybook/internal/core-server","@storybook/builder-manager":"storybook/internal/builder-manager","@storybook/components":"storybook/internal/components","@storybook/test":"storybook/test","@storybook/experimental-nextjs-vite":"@storybook/nextjs-vite","@storybook/instrumenter":"storybook/internal/instrumenter","@storybook/blocks":"@storybook/addon-docs/blocks"};function transformPackageJson(content){let packageJson=JSON.parse(content),hasChanges=!1,packagesToAdd=new Set,depTypes=["dependencies","devDependencies"],storybookVersion=null,storybookDepType=null;for(let depType of depTypes)if(packageJson[depType]?.storybook){storybookVersion=packageJson[depType].storybook,storybookDepType=depType;break}for(let depType of depTypes)if(packageJson[depType]){for(let[dep]of Object.entries(packageJson[depType]))if(dep in consolidatedPackages){let newPackage=consolidatedPackages[dep];!newPackage.startsWith("storybook/")&&!newPackage.match(/(?:.*\/){2,}/)&&packagesToAdd.add(newPackage),delete packageJson[depType][dep],hasChanges=!0}}if(packagesToAdd.size>0){let version2=storybookVersion??import_common16.versions["@storybook/nextjs-vite"],depType=storybookDepType??"devDependencies";packageJson[depType]=packageJson[depType]||{};for(let pkg of packagesToAdd)packageJson[depType][pkg]=version2;hasChanges=!0}return hasChanges?JSON.stringify(packageJson,null,2):null}var transformPackageJsonFiles=async(files,dryRun)=>{let errors=[],{default:pLimit}=await import("p-limit"),limit=pLimit(10);return await Promise.all(files.map(file=>limit(async()=>{try{let contents=await(0,import_promises3.readFile)(file,"utf-8"),transformed=transformPackageJson(contents);!dryRun&&transformed&&await(0,import_promises3.writeFile)(file,transformed)}catch(error){errors.push({file,error})}}))),errors},consolidatedImports={id:"consolidated-imports",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],check:async()=>{let projectRoot=(0,import_common16.getProjectRoot)(),globby=(await import("globby")).globby,packageJsonFiles=await globby(["**/package.json"],{...(0,import_common16.commonGlobOptions)(""),ignore:["**/node_modules/**"],cwd:projectRoot,gitignore:!0,absolute:!0}),consolidatedDeps=new Set,affectedPackageJSONFiles=new Set;return await Promise.all(packageJsonFiles.map(async file=>{let contents=await(0,import_promises3.readFile)(file,"utf-8"),packageJson=JSON.parse(contents),allDeps={...packageJson.dependencies||{},...packageJson.devDependencies||{}},hasConsolidatedDeps=!1;Object.keys(allDeps).forEach(dep=>{dep in consolidatedPackages&&(consolidatedDeps.add(dep),hasConsolidatedDeps=!0)}),hasConsolidatedDeps&&affectedPackageJSONFiles.add(file)})),consolidatedDeps.size===0?null:{consolidatedDeps,packageJsonFiles:Array.from(affectedPackageJSONFiles)}},prompt:result=>import_ts_dedent11.dedent`
|
|
282
|
+
Found package.json files that contain consolidated or renamed Storybook packages that need to be updated:
|
|
283
|
+
${result.packageJsonFiles.map(file=>`- ${file}`).join(`
|
|
372
284
|
`)}
|
|
373
285
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
More info: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#failed-to-resolve-import-storybookx-error
|
|
377
|
-
`},async run({result:{packageUsage},dryRun,packageManager}){if(logger15.info(`\u2705 Installing the following packages as devDependencies: ${Object.keys(packageUsage)}`),!dryRun){console.log(packageManager.retrievePackageJson());let dependenciesToInstall=Object.keys(packageUsage),versionToInstall=(0,import_cli7.getStorybookVersionSpecifier)(await packageManager.retrievePackageJson()),versionToInstallWithoutModifiers=versionToInstall?.replace(/[\^~]/,"");await packageManager.addDependencies({installAsDevDependencies:!0},dependenciesToInstall.map(pkg=>`${pkg}@${versionToInstallWithoutModifiers}`));let packageJson=await packageManager.retrievePackageJson();await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall:!0,packageJson},dependenciesToInstall.map(pkg=>`${pkg}@${versionToInstall}`))}}};var import_cli8=require("storybook/internal/cli"),import_common16=require("storybook/internal/common"),import_picocolors26=__toESM(require_picocolors(),1),import_semver9=__toESM(require("semver"),1),import_tiny_invariant=__toESM(require("tiny-invariant"),1),import_ts_dedent23=require("ts-dedent");var import_common14=require("storybook/internal/common"),import_prompts5=__toESM(require("prompts"),1),detectRenderer=async packageJson=>{let allDependencies={...packageJson.dependencies,...packageJson.devDependencies,...packageJson.peerDependencies},matches=Object.keys(import_common14.rendererPackages).filter(pkg=>!!allDependencies[pkg]),[rendererPackage]=matches;return matches.length>1&&(rendererPackage=(await(0,import_prompts5.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 import_common15=require("storybook/internal/common"),import_find_up=__toESM(require("find-up"),1);var logger16=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:[]},viteConfigFiles=["vite.config.js","vite.config.cjs","vite.config.mjs","vite.config.ts"],webpackConfigFiles=["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_common15.frameworkPackages).includes(frameworkPackageName)&&(builderOrFrameworkName=frameworkPackageName,builderOptions=typeof framework=="object"?framework.options?.builder??{}:{}),!builderOrFrameworkName){let viteConfigFile2=await(0,import_find_up.default)(viteConfigFiles,{cwd:configDir});if(viteConfigFile2)logger16.info(`No builder or framework field, detected Storybook builder via: ${viteConfigFile2}`),builderOrFrameworkName="vite";else{let webpackConfigFile=await(0,import_find_up.default)(webpackConfigFiles,{cwd:configDir});webpackConfigFile&&(logger16.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 logger17=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_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_common16.frameworkPackages).find(pkg=>pkg===frameworkPackageName);if(newFrameworkPackage||(newFrameworkPackage=packagesMap[rendererPackageName]?.[builderInfo.name]),!newFrameworkPackage)return null;let renderer=import_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_semver9.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_semver9.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_semver9.default.lt(viteVersion,"3.0.0"))throw new Error(import_ts_dedent23.dedent`
|
|
378
|
-
❌ Your project should be upgraded to use the framework package ${import_picocolors26.default.bold(newFrameworkPackage)}, but we detected that you are using Vite ${import_picocolors26.default.bold(viteVersion)}, which is unsupported since ${import_picocolors26.default.bold("Storybook 7.0")}. Please upgrade Vite to ${import_picocolors26.default.bold("3.0.0 or higher")} and rerun this migration.
|
|
379
|
-
`);return(0,import_tiny_invariant.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:
|
|
380
|
-
${dependenciesToRemove.map(dep=>`- * ${import_picocolors26.default.cyan(dep)}`).join(`
|
|
381
|
-
`)}
|
|
382
|
-
`),dependenciesToAdd.length>0&&(migrationSteps+=`- Add the following dependencies:
|
|
383
|
-
${dependenciesToAdd.map(dep=>`- * ${import_picocolors26.default.cyan(dep)}`).join(`
|
|
384
|
-
`)}
|
|
385
|
-
`),hasFrameworkInMainConfig||(migrationSteps+=`- Update or specify the ${import_picocolors26.default.yellow("framework")} field in ${import_picocolors26.default.blue(mainConfigPath)} with the value of "${import_picocolors26.default.cyan(frameworkPackage)}".
|
|
386
|
-
`),Object.keys(rendererOptions).length>0&&(migrationSteps+=`- Move the ${import_picocolors26.default.yellow(`${renderer}Options`)} field in ${import_picocolors26.default.blue(mainConfigPath)} to ${import_picocolors26.default.yellow("framework.options")}, and remove that field entirely.
|
|
387
|
-
More info: ${import_picocolors26.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#frameworkoptions-renamed")}
|
|
388
|
-
`),addonsToRemove.length>0&&(migrationSteps+=`- Remove the following addons from your ${import_picocolors26.default.blue(mainConfigPath)}, as the new framework also supports features provided by them:
|
|
389
|
-
${addonsToRemove.map(dep=>`- * ${import_picocolors26.default.cyan(dep)}`).join(`
|
|
286
|
+
We will automatically rename the following packages:
|
|
287
|
+
${Array.from(result.consolidatedDeps).map(dep=>`- ${import_picocolors15.default.red(dep)} -> ${import_picocolors15.default.cyan(consolidatedPackages[dep])}`).join(`
|
|
390
288
|
`)}
|
|
391
|
-
`),Object.keys(addonOptions).length>0&&(migrationSteps+=`- Move the addon options "${import_picocolors26.default.yellow(Object.keys(addonOptions).join(", "))}" in ${import_picocolors26.default.blue(mainConfigPath)} to the ${import_picocolors26.default.yellow("framework.options")} field.
|
|
392
|
-
`),builderConfig&&(typeof builderConfig=="object"&&Object.keys(builderConfig.options||{}).length>0&&(migrationSteps+=`- Move the ${import_picocolors26.default.yellow("core.builder.options")} field in ${import_picocolors26.default.blue(mainConfigPath)} to ${import_picocolors26.default.yellow("framework.options.builder")}
|
|
393
|
-
`),migrationSteps+=`- Remove the ${import_picocolors26.default.yellow("core.builder")} field in ${import_picocolors26.default.blue(mainConfigPath)}.
|
|
394
|
-
`),(dependenciesToRemove.includes("@storybook/builder-webpack4")||dependenciesToRemove.includes("@storybook/manager-webpack4"))&&(disclaimer=import_ts_dedent23.dedent`\n\n
|
|
395
|
-
${import_picocolors26.default.underline(import_picocolors26.default.bold(import_picocolors26.default.cyan("Webpack 4 users")))}
|
|
396
289
|
|
|
397
|
-
|
|
290
|
+
These packages have been renamed or consolidated into the main ${import_picocolors15.default.cyan("storybook")} package and should be removed.
|
|
291
|
+
The main ${import_picocolors15.default.cyan("storybook")} package will be added to devDependencies if not already present.
|
|
398
292
|
|
|
399
|
-
|
|
293
|
+
Would you like to:
|
|
294
|
+
1. Update these package.json files
|
|
295
|
+
2. Scan your codebase and update any imports from these updated packages
|
|
400
296
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
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.
|
|
407
|
-
|
|
408
|
-
If you are interested in using this package, see: ${import_picocolors26.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/README.md")}
|
|
409
|
-
`:frameworkPackage==="@storybook/nextjs"&&(disclaimer=import_ts_dedent23.dedent`\n\n
|
|
410
|
-
The ${import_picocolors26.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_picocolors26.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/README.md")}
|
|
411
|
-
`)),metaFramework==="sveltekit"&&(frameworkPackage==="@storybook/svelte-webpack5"?disclaimer=import_ts_dedent23.dedent`\n\n
|
|
412
|
-
${import_picocolors26.default.bold("Important")}: We've detected you are using Storybook in a SvelteKit project.
|
|
413
|
-
|
|
414
|
-
This migration is set to update your project to use the ${import_picocolors26.default.magenta("@storybook/svelte-webpack5")} framework, but Storybook provides a framework package specifically for SvelteKit projects: ${import_picocolors26.default.magenta("@storybook/sveltekit")}.
|
|
415
|
-
|
|
416
|
-
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.
|
|
417
|
-
|
|
418
|
-
If you are interested in using this package, see: ${import_picocolors26.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/sveltekit/README.md")}
|
|
419
|
-
`:(migrationSteps+=`- Remove the ${import_picocolors26.default.yellow(`${renderer}Options`)} field from ${import_picocolors26.default.blue(mainConfigPath)}.
|
|
420
|
-
More info: ${import_picocolors26.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vite-builder-uses-vite-config-automatically")}
|
|
421
|
-
`,disclaimer=import_ts_dedent23.dedent`\n\n
|
|
422
|
-
The ${import_picocolors26.default.magenta("@storybook/sveltekit")} package provides great user experience for SvelteKit users, and we highly recommend you to read more about it at ${import_picocolors26.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/sveltekit/README.md")}
|
|
423
|
-
`)),import_ts_dedent23.dedent`
|
|
424
|
-
We've detected your project is not fully setup with the new framework format, which was introduced in Storybook 7.
|
|
425
|
-
|
|
426
|
-
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.
|
|
427
|
-
|
|
428
|
-
Your project should be updated to use Storybook's framework: ${import_picocolors26.default.magenta(frameworkPackage)}. We can attempt to do this for you automatically.
|
|
429
|
-
|
|
430
|
-
Here are the steps this migration will do to migrate your project:
|
|
431
|
-
${migrationSteps}
|
|
432
|
-
|
|
433
|
-
To learn more about the new framework format, see: ${import_picocolors26.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#new-framework-api")}${disclaimer}
|
|
434
|
-
`},async run({result:{dependenciesToAdd,dependenciesToRemove,frameworkPackage,frameworkOptions,builderInfo,renderer,addonsToRemove},packageManager,dryRun,mainConfigPath,skipInstall}){let packageJson=await packageManager.retrievePackageJson();if(dependenciesToRemove.length>0&&(logger17.info(`\u2705 Removing dependencies: ${dependenciesToRemove.join(", ")}`),dryRun||await packageManager.removeDependencies({skipInstall:skipInstall||dependenciesToAdd.length>0,packageJson},dependenciesToRemove)),dependenciesToAdd.length>0&&(logger17.info(`\u2705 Installing new dependencies: ${dependenciesToAdd.join(", ")}`),!dryRun)){let versionToInstall=(0,import_cli8.getStorybookVersionSpecifier)(packageJson),depsToAdd=dependenciesToAdd.map(dep=>`${dep}@${versionToInstall}`);await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall,packageJson},depsToAdd)}await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger17.info("\u2705 Updating main.js"),logger17.info('\u2705 Updating "framework" field'),dryRun||main.setFieldValue(["framework","name"],frameworkPackage),dryRun||main.setFieldValue(["framework","options"],frameworkOptions),main.getFieldNode([`${renderer}Options`])&&(logger17.info(`\u2705 Moving "${renderer}Options" to "framework.options"`),dryRun||main.removeField([`${renderer}Options`])),main.getFieldNode(["core","builder"])&&(logger17.info('\u2705 Removing "core.builder" field'),dryRun||main.removeField(["core","builder"])),Object.keys(builderInfo.options).length>0&&(logger17.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&&(logger17.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);logger17.info("\u2705 Removing unnecessary addons"),dryRun||main.setFieldValue(["addons"],updatedAddons)}})}};var import_ts_dedent24=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_dedent24.dedent`
|
|
435
|
-
We detected that your project has a dependency for "react" that it might not need.
|
|
436
|
-
Nothing breaks by having it, you can safely ignore this message, if you wish.
|
|
297
|
+
This will ensure your project is properly updated to use the new updated package structure and to use the latest package names.
|
|
298
|
+
`,run:async options=>{let{result,dryRun=!1}=options,{packageJsonFiles}=result,errors=[],packageJsonErrors=await transformPackageJsonFiles(packageJsonFiles,dryRun);errors.push(...packageJsonErrors);let importErrors=await(0,import_common16.scanAndTransformFiles)({dryRun:!!dryRun,promptMessage:"Enter a custom glob pattern:",transformFn:import_common16.transformImportFiles,transformOptions:consolidatedPackages});if(errors.push(...importErrors),errors.length>0)throw new Error(`Failed to process ${errors.length} files:
|
|
299
|
+
${errors.map(({file,error})=>`- ${file}: ${error.message}`).join(`
|
|
300
|
+
`)}`);!dryRun&&result.packageJsonFiles.length>0&&await options.packageManager.installDependencies()}};var import_cli=require("storybook/internal/cli"),import_picocolors16=__toESM(require_picocolors(),1),import_ts_dedent12=require("ts-dedent"),logger7=console,eslintPlugin={id:"eslintPlugin",versionRange:["*","*"],async check({packageManager}){let{hasEslint,eslintConfigFile,isStorybookPluginInstalled,unsupportedExtension,isFlatConfig}=await(0,import_cli.extractEslintInfo)(packageManager);return isStorybookPluginInstalled||!hasEslint?null:eslintConfigFile?{eslintConfigFile,unsupportedExtension,isFlatConfig}:(logger7.warn("Unable to find eslint config file, skipping"),null)},prompt(){return import_ts_dedent12.dedent`
|
|
301
|
+
We've detected you are not using the Storybook ESLint plugin.
|
|
437
302
|
|
|
438
|
-
|
|
439
|
-
However, since version 8.0, Storybook no longer requires you to provide "react" as a dependency.
|
|
440
|
-
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.
|
|
441
|
-
|
|
442
|
-
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.
|
|
443
|
-
Storybook cannot do this automatically as removing it might break your project, so it should be done manually with care.
|
|
444
|
-
`}};var import_picocolors27=__toESM(require_picocolors(),1),import_ts_dedent25=require("ts-dedent");var logger18=console,reactDocgen={id:"react-docgen",versionRange:["<8.0.0-alpha.1",">=8.0.0-alpha.1"],async check({mainConfig}){let{reactDocgenTypescriptOptions,reactDocgen:rDocgen}=mainConfig.typescript||{};return getRendererName(mainConfig)!=="react"||rDocgen!==void 0?null:{reactDocgenTypescriptOptions,reactDocgen:rDocgen}},prompt({reactDocgenTypescriptOptions}){return reactDocgenTypescriptOptions?import_ts_dedent25.dedent`
|
|
445
|
-
You have "typescript.reactDocgenTypescriptOptions" configured in your main.js,
|
|
446
|
-
but "typescript.reactDocgen" is unset.
|
|
447
|
-
|
|
448
|
-
Since Storybook 8.0, we changed the default React docgen analysis from
|
|
449
|
-
"react-docgen-typescript" to "react-docgen". We recommend "react-docgen"
|
|
450
|
-
for most projects, since it is dramatically faster. However, it doesn't
|
|
451
|
-
handle all TypeScript constructs, and may generate different results
|
|
452
|
-
than "react-docgen-typescript".
|
|
453
|
-
|
|
454
|
-
Should we update your config to continue to use "react-docgen-typescript"?
|
|
455
|
-
|
|
456
|
-
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-docgen-component-analysis-by-default
|
|
457
|
-
`:import_ts_dedent25.dedent`
|
|
458
|
-
Since Storybook 8.0, ${import_picocolors27.default.cyan("react-docgen")} is now the default for generating component controls, replacing ${import_picocolors27.default.cyan("react-docgen-typescript")}.
|
|
459
|
-
This offers better performance and suits most cases.
|
|
460
|
-
However, for complex TypeScript types or specific type features, the generated controls might not be as precise.
|
|
461
|
-
|
|
462
|
-
For more on this change, check the migration guide:
|
|
463
|
-
${import_picocolors27.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-docgen-component-analysis-by-default")}
|
|
464
|
-
|
|
465
|
-
For known "react-docgen" limitations, see:
|
|
466
|
-
${import_picocolors27.default.yellow("https://github.com/storybookjs/storybook/issues/26606")}
|
|
467
|
-
|
|
468
|
-
Press Y to revert to ${import_picocolors27.default.cyan("react-docgen-typescript")}, press N to use ${import_picocolors27.default.cyan("react-docgen")}
|
|
469
|
-
`},async run({dryRun,mainConfigPath,result}){dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger18.info("\u2705 Setting typescript.reactDocgen"),main.setFieldValue(["typescript","reactDocgen"],"react-docgen-typescript")})}};var import_promises5=require("fs/promises"),import_csf_tools9=require("storybook/internal/csf-tools"),babel=__toESM(require("@babel/core"),1),import_picocolors28=__toESM(require_picocolors(),1),import_ts_dedent26=require("ts-dedent"),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(0,import_promises5.readFile)(previewConfigPath,{encoding:"utf-8"}),file=new babel.File({filename:previewConfigPath},{code:previewFile,ast:(0,import_csf_tools9.babelParse)(previewFile)}),argTypesRegex;return file.path.traverse({Identifier:path3=>{path3.node.name==="argTypesRegex"&&(argTypesRegex=path3)}}),argTypesRegex?{argTypesRegex,previewConfigPath}:null},prompt({argTypesRegex,previewConfigPath}){return import_ts_dedent26.dedent`
|
|
470
|
-
${import_picocolors28.default.bold("Attention")}: We've detected that you're using argTypesRegex:
|
|
471
|
-
|
|
472
|
-
${argTypesRegex.buildCodeFrameError(`${previewConfigPath}`).message}
|
|
303
|
+
In order to have the best experience with Storybook and follow best practices, we advise you to install eslint-plugin-storybook.
|
|
473
304
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
In the past, play functions mocked action args implicitly by analyzing the argTypesRegex
|
|
477
|
-
in your preview.js|ts file.
|
|
478
|
-
|
|
479
|
-
However, Storybook 8 changes this behavior, and we now recommend using the
|
|
480
|
-
(fn) function to mock your component's methods instead.
|
|
481
|
-
|
|
482
|
-
Use the following command to check for implied mocked actions in your play functions:
|
|
483
|
-
${import_picocolors28.default.cyan('npx storybook migrate find-implicit-spies --glob="**/*.stories.@(js|jsx|ts|tsx)"')}
|
|
484
|
-
|
|
485
|
-
Then, refer to our docs to migrate your play functions to Storybook 8:
|
|
486
|
-
${import_picocolors28.default.yellow("https://storybook.js.org/docs/essentials/actions#via-storybooktest-fn-spy-function")}
|
|
487
|
-
`}};var import_promises6=require("fs/promises"),import_picocolors29=__toESM(require_picocolors(),1),import_ts_dedent27=require("ts-dedent"),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_promises6.readFile)(previewConfigPath,{encoding:"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_dedent27.dedent`
|
|
488
|
-
${import_picocolors29.default.bold(import_picocolors29.default.red("Attention"))}: We could not automatically make this change. You'll need to do it manually.
|
|
489
|
-
|
|
490
|
-
The following APIs (used in "${import_picocolors29.default.yellow(previewPath)}") have been removed from Storybook:
|
|
491
|
-
|
|
492
|
-
${usedAPIs.map(api=>`- ${import_picocolors29.default.cyan(api)}`).join(`
|
|
493
|
-
`)}
|
|
305
|
+
We can set it up automatically for you.
|
|
494
306
|
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
307
|
+
More info: ${import_picocolors16.default.yellow("https://storybook.js.org/docs/configure/integration/eslint-plugin")}
|
|
308
|
+
`},async run({result:{eslintConfigFile,unsupportedExtension,isFlatConfig},packageManager,dryRun,skipInstall,storybookVersion}){let deps=[`eslint-plugin-storybook@${storybookVersion}`];if(logger7.info(`\u2705 Adding dependencies: ${deps}`),dryRun||await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall},deps),!dryRun&&unsupportedExtension){logger7.info(import_ts_dedent12.dedent`
|
|
309
|
+
⚠️ The plugin was successfully installed but failed to be configured.
|
|
310
|
+
|
|
311
|
+
Found an eslint config file with an unsupported automigration format: .eslintrc.${unsupportedExtension}.
|
|
312
|
+
The supported formats for this automigration are: ${import_cli.SUPPORTED_ESLINT_EXTENSIONS.join(", ")}.
|
|
499
313
|
|
|
500
|
-
|
|
314
|
+
Please refer to https://storybook.js.org/docs/configure/integration/eslint-plugin#configuration-eslintrc to finish setting up the plugin manually.
|
|
315
|
+
`);return}dryRun||await(0,import_cli.configureEslintPlugin)({eslintConfigFile,packageManager,isFlatConfig})}};var import_promises4=require("fs/promises"),import_csf_tools8=require("storybook/internal/csf-tools"),import_picocolors17=__toESM(require_picocolors(),1),import_ts_dedent13=require("ts-dedent"),MIGRATION="https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#previewjs-globals-renamed-to-initialglobals",initialGlobals={id:"initial-globals",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],async check({previewConfigPath}){if(!previewConfigPath)return null;let previewConfig=(0,import_csf_tools8.loadConfig)((await(0,import_promises4.readFile)(previewConfigPath)).toString()).parse(),globals=previewConfig.getFieldNode(["globals"]);return globals?{globals,previewConfig,previewConfigPath}:null},prompt({previewConfigPath}){return import_ts_dedent13.dedent`
|
|
316
|
+
The ${import_picocolors17.default.cyan("globals")} setting in ${import_picocolors17.default.cyan(previewConfigPath)} was removed
|
|
317
|
+
and has been renamed to ${import_picocolors17.default.cyan("initialGlobals")}.
|
|
318
|
+
|
|
319
|
+
Learn more: ${import_picocolors17.default.yellow(MIGRATION)}
|
|
320
|
+
|
|
321
|
+
Rename ${import_picocolors17.default.cyan("globals")} to ${import_picocolors17.default.cyan("initalGlobals")}?
|
|
322
|
+
`},async run({dryRun,result}){result.previewConfig.removeField(["globals"]),result.previewConfig.setFieldNode(["initialGlobals"],result.globals),dryRun||await(0,import_promises4.writeFile)(result.previewConfigPath,(0,import_csf_tools8.formatConfig)(result.previewConfig))}};var import_common17=require("storybook/internal/common"),import_picocolors18=__toESM(require_picocolors(),1),import_ts_dedent14=require("ts-dedent"),removeAddonInteractions={id:"removeAddonInteractions",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],async check({mainConfig}){return(0,import_common17.getAddonNames)(mainConfig).some(addon=>addon.includes("@storybook/addon-interactions"))?{}:null},prompt(){return import_ts_dedent14.dedent`
|
|
323
|
+
${import_picocolors18.default.magenta("@storybook/addon-interactions")} has been consolidated into Storybook core.
|
|
324
|
+
|
|
325
|
+
We'll remove it from your dependencies and unregister it from your Storybook configuration.
|
|
326
|
+
The functionality will continue to work as before, but now it's built into Storybook core.
|
|
327
|
+
`},async run({packageManager,dryRun}){dryRun||(console.log("Removing @storybook/addon-interactions..."),await packageManager.runPackageCommand("storybook",["remove","@storybook/addon-interactions"]))}};var import_promises5=require("fs/promises"),import_common18=require("storybook/internal/common"),import_prompts3=__toESM(require("prompts"),1),import_ts_dedent15=require("ts-dedent"),getAllDependencies=packageJson=>Object.keys({...packageJson.dependencies||{},...packageJson.devDependencies||{}}),detectFrameworks=dependencies=>Object.keys(import_common18.frameworkPackages).filter(pkg=>dependencies.includes(pkg)),detectRenderers=dependencies=>Object.keys(import_common18.rendererPackages).filter(pkg=>dependencies.includes(pkg)),replaceImports=(source,renderer,framework)=>{let regex2=new RegExp(`(['"])${renderer}(['"])`,"g");return regex2.test(source)?source.replace(regex2,`$1${framework}$2`):null},transformSourceFiles=async(files,renderer,framework,dryRun)=>{let errors=[],{default:pLimit}=await import("p-limit"),limit=pLimit(10);return await Promise.all(files.map(file=>limit(async()=>{try{let contents=await(0,import_promises5.readFile)(file,"utf-8"),transformed=replaceImports(contents,renderer,framework);!dryRun&&transformed&&await(0,import_promises5.writeFile)(file,transformed)}catch(error){errors.push({file,error})}}))),errors},removeRenderersInPackageJson=async(packageJsonPath,renderers,dryRun)=>{try{let content=await(0,import_promises5.readFile)(packageJsonPath,"utf-8"),packageJson=JSON.parse(content),hasChanges=!1;return renderers.forEach(renderer=>{packageJson.dependencies?.[renderer]&&(delete packageJson.dependencies[renderer],hasChanges=!0),packageJson.devDependencies?.[renderer]&&(delete packageJson.devDependencies[renderer],hasChanges=!0)}),!dryRun&&hasChanges&&await(0,import_promises5.writeFile)(packageJsonPath,JSON.stringify(packageJson,null,2)),hasChanges}catch(error){throw new Error(`Failed to update package.json: ${error}`)}},selectFramework=async frameworks=>frameworks.length===1?frameworks[0]:(await(0,import_prompts3.default)({type:"select",name:"framework",message:"Which framework would you like to use?",choices:frameworks.map(framework=>({title:framework,value:framework}))})).framework||null,checkPackageJson=async packageJsonPath=>{let content=await(0,import_promises5.readFile)(packageJsonPath,"utf-8"),packageJson=JSON.parse(content),dependencies=getAllDependencies(packageJson),frameworks=detectFrameworks(dependencies);if(frameworks.length===0)return null;let renderers=detectRenderers(dependencies);return renderers.length===0?null:{frameworks,renderers}},rendererToFramework={id:"renderer-to-framework",versionRange:["<9.0.0","^9.0.0-0"],promptType:"auto",async check(){let projectRoot=await(0,import_common18.getProjectRoot)(),{globby}=await import("globby"),packageJsonFiles=await globby(["**/package.json"],{...(0,import_common18.commonGlobOptions)(""),ignore:["**/node_modules/**"],cwd:projectRoot,gitignore:!0,absolute:!0}),validResults=(await Promise.all(packageJsonFiles.map(async file=>{try{return await checkPackageJson(file)}catch{return null}}))).filter(r=>r!==null&&r.renderers.length>0);return validResults.length===0?null:{frameworks:[...new Set(validResults.flatMap(r=>r.frameworks))],renderers:[...new Set(validResults.flatMap(r=>r.renderers))],packageJsonFiles:packageJsonFiles.filter((_,i)=>validResults[i]!==null)}},prompt(result){return result.frameworks.length>1?import_ts_dedent15.dedent`
|
|
328
|
+
As part of Storybook's evolution, we're moving from renderer-based to framework-based configuration.
|
|
329
|
+
We've detected multiple framework packages in your project: ${result.frameworks.join(", ")}.
|
|
330
|
+
You will be prompted to select which framework to use for your Storybook configuration.
|
|
331
|
+
This will update your imports and dependencies to use the framework-specific package.
|
|
332
|
+
Would you like to proceed with the migration?
|
|
333
|
+
`:import_ts_dedent15.dedent`
|
|
334
|
+
As part of Storybook's evolution, we're moving from renderer-based to framework-based configuration.
|
|
335
|
+
We've detected renderer packages (${result.renderers.join(", ")}) that can be replaced with the framework package "${result.frameworks[0]}".
|
|
336
|
+
|
|
337
|
+
This migration will:
|
|
338
|
+
1. Update your source files to use framework-specific imports
|
|
339
|
+
2. Remove the renderer packages from your package.json
|
|
340
|
+
3. Install the necessary framework dependencies
|
|
341
|
+
Would you like to proceed with these changes?
|
|
342
|
+
`},async run(options){let{result,dryRun=!1}=options,selectedFramework=await selectFramework(result.frameworks);if(!selectedFramework){console.log("Migration cancelled: No framework selected");return}let defaultGlob="**/*.{mjs,cjs,js,jsx,ts,tsx}",{glob}=await(0,import_prompts3.default)({type:"text",name:"glob",message:"Enter a custom glob pattern to scan (or press enter to use default):",initial:defaultGlob}),projectRoot=await(0,import_common18.getProjectRoot)();console.log("Scanning for affected files...");let globby=(await import("globby")).globby,sourceFiles=await globby([glob],{...(0,import_common18.commonGlobOptions)(""),ignore:["**/node_modules/**"],dot:!0,cwd:projectRoot,absolute:!0});console.log(`Scanning ${sourceFiles.length} files...`),await Promise.all(result.renderers.map(renderer=>transformSourceFiles(sourceFiles,renderer,selectedFramework,dryRun))),console.log("Updating package.json files..."),await Promise.all(result.packageJsonFiles.map(file=>removeRenderersInPackageJson(file,result.renderers,dryRun))),console.log("Installing dependencies..."),dryRun||await options.packageManager.installDependencies()}};var import_node_fs2=require("fs"),import_promises6=require("fs/promises"),import_node_path5=require("path"),import_picocolors19=__toESM(require_picocolors(),1),import_ts_dedent16=require("ts-dedent");async function renameInFile(filePath,oldText,newText){try{let updatedContent=(await(0,import_promises6.readFile)(filePath,"utf8")).replaceAll(oldText,newText);await(0,import_promises6.writeFile)(filePath,updatedContent,"utf8")}catch(error){console.error(`Error updating references in ${filePath}:`,error)}}var getDotStorybookReferences=async()=>{try{let{$}=await import("execa"),{stdout}=await $`git grep -l \\.storybook`;return stdout.split(`
|
|
343
|
+
`).filter(Boolean)}catch{return[]}},rnstorybookConfig={id:"rnstorybook-config",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],async check({packageManager,mainConfigPath}){if(!(await packageManager.getAllDependencies())["@storybook/react-native"])return null;let projectDir=mainConfigPath?(0,import_node_path5.join)(mainConfigPath,"..",".."):process.cwd(),storybookDir=(0,import_node_path5.join)(projectDir,".storybook"),rnStorybookDir=(0,import_node_path5.join)(projectDir,".rnstorybook"),{globby}=await import("globby"),requiresFiles=await globby((0,import_node_path5.join)(storybookDir,"storybook.requires.*"));if((0,import_node_fs2.existsSync)(storybookDir)&&requiresFiles.length>0&&!(0,import_node_fs2.existsSync)(rnStorybookDir)){let dotStorybookReferences=await getDotStorybookReferences();return{storybookDir,rnStorybookDir,dotStorybookReferences}}return null},prompt({dotStorybookReferences}){let references=dotStorybookReferences.length>0?import_ts_dedent16.dedent`
|
|
344
|
+
We will update the following files to reference ${import_picocolors19.default.yellow(".rnstorybook")}:
|
|
345
|
+
${dotStorybookReferences.map(ref=>import_picocolors19.default.cyan("- "+ref)).join(`
|
|
501
346
|
`)}
|
|
502
|
-
|
|
503
|
-
|
|
347
|
+
`.trim():import_ts_dedent16.dedent`
|
|
348
|
+
Oddly, we did not find any source files that reference the ${import_picocolors19.default.yellow(".storybook")} directory.
|
|
349
|
+
If they exist, please update them by hand to reference ${import_picocolors19.default.yellow(".rnstorybook")} instead.
|
|
350
|
+
`.trim();return import_ts_dedent16.dedent`
|
|
351
|
+
In Storybook 9, React Native projects use the ${import_picocolors19.default.yellow(".rnstorybook")} directory for
|
|
352
|
+
configuration instead of ${import_picocolors19.default.yellow(".storybook")}.
|
|
504
353
|
|
|
505
|
-
|
|
506
|
-
`},async run({packageManager,dryRun}){if(!dryRun){let packageJson=await packageManager.retrievePackageJson();await packageManager.removeDependencies({skipInstall:!0,packageJson},["@storybook/jest","@storybook/testing-library"]);let versionToInstall=(0,import_cli9.getStorybookVersionSpecifier)(packageJson);await packageManager.addDependencies({installAsDevDependencies:!0,packageJson},[`@storybook/test@${versionToInstall}`]);let{glob:globString}=await(0,import_prompts6.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_codemod3.runCodemod)("migrate-to-test-package",{glob:globString,dryRun,logger:logger19})}}};var import_csf_tools10=require("storybook/internal/csf-tools"),import_ts_dedent29=require("ts-dedent");var logger20=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_dedent29.dedent`
|
|
507
|
-
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?
|
|
354
|
+
${references}
|
|
508
355
|
|
|
509
|
-
|
|
510
|
-
`},async run({dryRun,mainConfigPath,skipInstall,packageManager}){if(logger20.info("\u2705 Removing legacyMdx1 feature"),!dryRun){await updateMainConfig({dryRun:!!dryRun,mainConfigPath},async main=>{main.removeField(["features","legacyMdx1"]),await(0,import_csf_tools10.writeConfig)(main)});let packageJson=await packageManager.retrievePackageJson();await packageManager.removeDependencies({skipInstall,packageJson},["@storybook/mdx1-csf"])}}};var import_cli10=require("storybook/internal/cli"),import_picocolors31=__toESM(require_picocolors(),1),import_ts_dedent30=require("ts-dedent"),logger21=console,sbBinary={id:"storybook-binary",versionRange:["*","*"],async check({packageManager,storybookVersion}){let packageJson=await packageManager.retrievePackageJson(),sbBinaryVersion=await packageManager.getPackageVersion("sb"),storybookBinaryVersion=await packageManager.getPackageVersion("storybook"),hasSbBinary=!!sbBinaryVersion,hasStorybookBinary=!!storybookBinaryVersion;return!hasSbBinary&&hasStorybookBinary?null:{hasSbBinary,hasStorybookBinary,storybookVersion,packageJson}},prompt({storybookVersion,hasSbBinary,hasStorybookBinary}){let sbFormatted=import_picocolors31.default.cyan(`Storybook ${storybookVersion}`),storybookBinaryMessage=hasStorybookBinary?"":`We've detected you are using ${sbFormatted} without Storybook's ${import_picocolors31.default.magenta("storybook")} binary. Starting in Storybook 7.0, it has to be installed.`;return import_ts_dedent30.dedent`
|
|
511
|
-
${storybookBinaryMessage}
|
|
512
|
-
${hasSbBinary?`You're using the 'sb' binary and it should be replaced, as 'storybook' is the recommended way to run Storybook.
|
|
513
|
-
`:""}
|
|
356
|
+
More info: ${import_picocolors19.default.cyan("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-native-config-dir-renamed")}
|
|
514
357
|
|
|
515
|
-
|
|
516
|
-
`},async run({result:{packageJson,hasSbBinary,hasStorybookBinary},packageManager,dryRun,skipInstall}){if(hasSbBinary&&(logger21.info("\u2705 Removing 'sb' dependency"),dryRun||await packageManager.removeDependencies({skipInstall:skipInstall||!hasStorybookBinary,packageJson},["sb"])),!hasStorybookBinary&&(logger21.log(),logger21.info("\u2705 Adding 'storybook' as dev dependency"),logger21.log(),!dryRun)){let versionToInstall=(0,import_cli10.getStorybookVersionSpecifier)(packageJson);await packageManager.addDependencies({installAsDevDependencies:!0,packageJson,skipInstall},[`storybook@${versionToInstall}`])}}};var import_picocolors32=__toESM(require_picocolors(),1),import_semver10=__toESM(require("semver"),1),import_ts_dedent31=require("ts-dedent"),logger22=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:["*","*"],async check({packageManager,storybookVersion}){let packageJson=await packageManager.retrievePackageJson(),{scripts={}}=packageJson;if(import_semver10.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_picocolors32.default.cyan(`Storybook ${storybookVersion}`),newScriptsMessage=Object.keys(storybookScripts).reduce((acc,scriptKey)=>(acc.push([import_picocolors32.default.bold(scriptKey),"from:",import_picocolors32.default.cyan(storybookScripts[scriptKey].before),"to:",import_picocolors32.default.cyan(storybookScripts[scriptKey].after)].join(`
|
|
517
|
-
`)),acc),[]);return import_ts_dedent31.dedent`
|
|
518
|
-
We've detected you are using ${sbFormatted} with scripts from previous versions of Storybook.
|
|
519
|
-
Starting in Storybook 7, the ${import_picocolors32.default.yellow("start-storybook")} and ${import_picocolors32.default.yellow("build-storybook")} binaries have changed to ${import_picocolors32.default.magenta("storybook dev")} and ${import_picocolors32.default.magenta("storybook build")} respectively.
|
|
520
|
-
In order to work with ${sbFormatted}, your storybook scripts have to be adjusted to use the binary. We can adjust them for you:
|
|
521
|
-
|
|
522
|
-
${newScriptsMessage.join(`
|
|
523
|
-
|
|
524
|
-
`)}
|
|
525
|
-
|
|
526
|
-
In case this migration did not cover all of your scripts, or you'd like more info: ${import_picocolors32.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#start-storybook--build-storybook-binaries-removed")}
|
|
527
|
-
`},async run({result:{storybookScripts},packageManager,dryRun}){if(logger22.info("\u2705 Updating scripts in package.json"),logger22.log(),!dryRun){let newScripts=Object.keys(storybookScripts).reduce((acc,scriptKey)=>(acc[scriptKey]=storybookScripts[scriptKey].after,acc),{});logger22.log(),await packageManager.addScripts(newScripts)}}};var import_picocolors33=__toESM(require_picocolors(),1),import_ts_dedent32=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_dedent32.dedent`
|
|
528
|
-
${import_picocolors33.default.bold("Attention")}: Storyshots is now officially deprecated, is no longer being maintained, and was removed in Storybook 8.
|
|
529
|
-
|
|
530
|
-
We recommend following the migration guide we've prepared to help you during this transition period:
|
|
531
|
-
${import_picocolors33.default.yellow("https://storybook.js.org/docs/writing-tests/storyshots-migration-guide")}
|
|
532
|
-
`}};var import_common17=require("storybook/internal/common"),import_picocolors34=__toESM(require_picocolors(),1),import_semver11=require("semver"),import_ts_dedent33=require("ts-dedent");async function getLatestVersions(packageManager,packages){return Promise.all(packages.map(async([packageName])=>({packageName,beforeVersion:await packageManager.getInstalledVersion(packageName).catch(()=>null),afterVersion:await packageManager.latestVersion(packageName).catch(()=>null)})))}var upgradeStorybookRelatedDependencies={id:"upgradeStorybookRelatedDependencies",versionRange:["*.*.*","*.*.*"],promptType:"auto",promptDefaultValue:!1,async check({packageManager,storybookVersion}){let analyzedPackages=await getIncompatibleStorybookPackages({currentStorybookVersion:storybookVersion,packageManager,skipErrors:!0}),allDependencies=await packageManager.getAllDependencies(),storybookDependencies=Object.keys(allDependencies).filter(dep=>dep.includes("storybook")).filter(dep=>!(0,import_common17.isCorePackage)(dep)),incompatibleDependencies=analyzedPackages.filter(pkg=>pkg.hasIncompatibleDependencies).map(pkg=>pkg.packageName),uniquePackages=Array.from(new Set([...storybookDependencies,...incompatibleDependencies])).map(packageName=>[packageName,allDependencies[packageName]]),upgradablePackages=(await getLatestVersions(packageManager,uniquePackages)).filter(({afterVersion,beforeVersion})=>beforeVersion===null||afterVersion===null?!1:(0,import_semver11.gt)(afterVersion,beforeVersion));return upgradablePackages.length>0?{upgradable:upgradablePackages}:null},prompt({upgradable}){return import_ts_dedent33.dedent`
|
|
358
|
+
Would you like to automatically move your config files to the new location?`},async run({result:{storybookDir,rnStorybookDir,dotStorybookReferences},dryRun}){dryRun||(await Promise.all(dotStorybookReferences.map(async ref=>{await renameInFile(ref,".storybook",".rnstorybook")})),await(0,import_promises6.rename)(storybookDir,rnStorybookDir))}};var import_common19=require("storybook/internal/common"),import_picocolors20=__toESM(require_picocolors(),1),import_semver5=require("semver"),import_ts_dedent17=require("ts-dedent");async function getLatestVersions(packageManager,packages){return Promise.all(packages.map(async([packageName])=>({packageName,beforeVersion:await packageManager.getInstalledVersion(packageName).catch(()=>null),afterVersion:await packageManager.latestVersion(packageName).catch(()=>null)})))}var upgradeStorybookRelatedDependencies={id:"upgradeStorybookRelatedDependencies",versionRange:["*.*.*","*.*.*"],promptType:"auto",promptDefaultValue:!1,async check({packageManager,storybookVersion}){let analyzedPackages=await getIncompatibleStorybookPackages({currentStorybookVersion:storybookVersion,packageManager,skipErrors:!0}),allDependencies=await packageManager.getAllDependencies(),storybookDependencies=Object.keys(allDependencies).filter(dep=>dep.includes("storybook")).filter(dep=>!(0,import_common19.isCorePackage)(dep)),incompatibleDependencies=analyzedPackages.filter(pkg=>pkg.hasIncompatibleDependencies).map(pkg=>pkg.packageName),uniquePackages=Array.from(new Set([...storybookDependencies,...incompatibleDependencies])).map(packageName=>[packageName,allDependencies[packageName]]),upgradablePackages=(await getLatestVersions(packageManager,uniquePackages)).filter(({afterVersion,beforeVersion})=>beforeVersion===null||afterVersion===null?!1:(0,import_semver5.gt)(afterVersion,beforeVersion));return upgradablePackages.length>0?{upgradable:upgradablePackages}:null},prompt({upgradable}){return import_ts_dedent17.dedent`
|
|
533
359
|
You're upgrading to the latest version of Storybook. We recommend upgrading the following packages:
|
|
534
|
-
${upgradable.map(({packageName,afterVersion,beforeVersion})=>`- ${(0,
|
|
360
|
+
${upgradable.map(({packageName,afterVersion,beforeVersion})=>`- ${(0,import_picocolors20.cyan)(packageName)}: ${(0,import_picocolors20.cyan)(beforeVersion)} => ${(0,import_picocolors20.cyan)(afterVersion)}`).join(`
|
|
535
361
|
`)}
|
|
536
362
|
|
|
537
363
|
After upgrading, we will run the dedupe command, which could possibly have effects on dependencies that are not Storybook related.
|
|
538
364
|
see: https://docs.npmjs.com/cli/commands/npm-dedupe
|
|
539
365
|
|
|
540
366
|
Do you want to proceed (upgrade the detected packages)?
|
|
541
|
-
`},async run({result:{upgradable},packageManager,dryRun}){if(dryRun){console.log(
|
|
367
|
+
`},async run({result:{upgradable},packageManager,dryRun}){if(dryRun){console.log(import_ts_dedent17.dedent`
|
|
542
368
|
We would have upgrade the following:
|
|
543
369
|
${upgradable.map(({packageName,afterVersion,beforeVersion})=>`${packageName}: ${beforeVersion} => ${afterVersion}`).join(`
|
|
544
370
|
`)}
|
|
545
|
-
`);return}if(upgradable.length>0){let packageJson=await packageManager.readPackageJson();upgradable.forEach(item=>{if(!item)return;let{packageName,afterVersion:version2}=item,prefixed=`^${version2}`;packageJson.dependencies?.[packageName]&&(packageJson.dependencies[packageName]=prefixed),packageJson.devDependencies?.[packageName]&&(packageJson.devDependencies[packageName]=prefixed),packageJson.peerDependencies?.[packageName]&&(packageJson.peerDependencies[packageName]=prefixed)}),await packageManager.writePackageJson(packageJson),await packageManager.installDependencies(),await packageManager.executeCommand({command:"dedupe",args:[],stdio:"ignore"}).catch(()=>{}),console.log(),console.log(
|
|
546
|
-
We upgraded ${(0,
|
|
547
|
-
${upgradable.map(({packageName,afterVersion,beforeVersion})=>`- ${(0,
|
|
371
|
+
`);return}if(upgradable.length>0){let packageJson=await packageManager.readPackageJson();upgradable.forEach(item=>{if(!item)return;let{packageName,afterVersion:version2}=item,prefixed=`^${version2}`;packageJson.dependencies?.[packageName]&&(packageJson.dependencies[packageName]=prefixed),packageJson.devDependencies?.[packageName]&&(packageJson.devDependencies[packageName]=prefixed),packageJson.peerDependencies?.[packageName]&&(packageJson.peerDependencies[packageName]=prefixed)}),await packageManager.writePackageJson(packageJson),await packageManager.installDependencies(),await packageManager.executeCommand({command:"dedupe",args:[],stdio:"ignore"}).catch(()=>{}),console.log(),console.log(import_ts_dedent17.dedent`
|
|
372
|
+
We upgraded ${(0,import_picocolors20.yellow)(upgradable.length)} packages:
|
|
373
|
+
${upgradable.map(({packageName,afterVersion,beforeVersion})=>`- ${(0,import_picocolors20.cyan)(packageName)}: ${(0,import_picocolors20.cyan)(beforeVersion)} => ${(0,import_picocolors20.cyan)(afterVersion)}`).join(`
|
|
548
374
|
`)}
|
|
549
|
-
`)}console.log()}};var
|
|
550
|
-
Since version 8.0.0, Storybook no longer ships with an in-built Vite config.
|
|
551
|
-
We've detected you do have a Vite config, but you may be missing the following plugins in it.
|
|
552
|
-
|
|
553
|
-
${plugins.map(plugin=>` - ${plugin}`).join(`
|
|
554
|
-
`)}
|
|
555
|
-
|
|
556
|
-
If you already have these plugins, you can ignore this message.
|
|
557
|
-
|
|
558
|
-
You can find more information on how to do this here:
|
|
559
|
-
https://storybook.js.org/docs/8.0/migration-guide#missing-viteconfigjs-file
|
|
560
|
-
|
|
561
|
-
This change was necessary to support newer versions of Vite.
|
|
562
|
-
`:import_ts_dedent34.dedent`
|
|
563
|
-
Since version 8.0.0, Storybook no longer ships with an in-built Vite config.
|
|
564
|
-
Please add a vite.config.js file to your project root.
|
|
565
|
-
|
|
566
|
-
You can find more information on how to do this here:
|
|
567
|
-
https://storybook.js.org/docs/8.0/migration-guide#missing-viteconfigjs-file
|
|
568
|
-
|
|
569
|
-
This change was necessary to support newer versions of Vite.
|
|
570
|
-
`}};var import_common19=require("storybook/internal/common"),import_picocolors35=__toESM(require_picocolors(),1),import_ts_dedent35=require("ts-dedent");var logger23=console,vta={id:"visual-tests-addon",versionRange:["<8.0.7",">=8.0.7"],async check({mainConfig}){return(0,import_common19.getAddonNames)(mainConfig).some(addon=>addon.includes("@chromatic-com/storybook"))?null:{}},prompt(){return import_ts_dedent35.dedent`
|
|
571
|
-
New to Storybook 8: Storybook's Visual Tests addon helps you catch unintentional changes/bugs in your stories. The addon is powered by Chromatic, a cloud-based testing tool developed by Storybook's core team.
|
|
572
|
-
|
|
573
|
-
Learn more: ${import_picocolors35.default.yellow("https://storybook.js.org/docs/writing-tests/visual-testing")}
|
|
574
|
-
|
|
575
|
-
Install Visual Tests addon in your project?
|
|
576
|
-
`},async run({packageManager,dryRun,mainConfigPath,skipInstall}){if(!dryRun){let packageJson=await packageManager.retrievePackageJson();await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall,packageJson},["@chromatic-com/storybook@^4.0.0-0"]),await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger23.info('\u2705 Adding "@chromatic-com/storybook" addon'),main.appendValueToArray(["addons"],"@chromatic-com/storybook")})}}};var import_picocolors36=__toESM(require_picocolors(),1),import_semver12=__toESM(require("semver"),1),import_ts_dedent36=require("ts-dedent");var vue3={id:"vue3",versionRange:["<7",">=7"],async check({packageManager,mainConfig,storybookVersion}){let vueVersion=await packageManager.getPackageVersion("vue");if(!vueVersion||import_semver12.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_picocolors36.default.cyan(`Vue ${vueVersion}`),sbFormatted=import_picocolors36.default.cyan(`Storybook ${storybookVersion}`);return import_ts_dedent36.dedent`
|
|
577
|
-
We've detected you are running ${vueFormatted} with Storybook.
|
|
578
|
-
${sbFormatted} runs webpack4 by default, which is incompatible.
|
|
579
|
-
|
|
580
|
-
In order to work with your version of Vue, we need to install Storybook's ${import_picocolors36.default.cyan("webpack5 builder")}.
|
|
581
|
-
|
|
582
|
-
More info: ${import_picocolors36.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vue3-upgrade")}
|
|
583
|
-
`},async run(options){return webpack5.run({...options,result:{webpackVersion:null,...options.result}})}};var import_cli12=require("storybook/internal/cli"),import_cli13=require("storybook/internal/cli"),import_common20=require("storybook/internal/common"),import_picocolors37=__toESM(require_picocolors(),1),import_prompts7=__toESM(require("prompts"),1),import_ts_dedent37=require("ts-dedent");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((0,import_common20.getAddonNames)(mainConfig).find(addon=>addon.includes(import_cli13.CoreWebpackCompilers.Babel)||addon.includes(import_cli13.CoreWebpackCompilers.SWC)))return null;let frameworkName=Object.entries(import_common20.frameworkPackages).find(([name])=>name===getFrameworkPackageName(mainConfig))?.[1],builderPackageName=getBuilderPackageName(mainConfig),customCoreBuilder=builderPackageName?import_cli13.builderNameToCoreBuilder[builderPackageName]:null,defaultCoreBuilder=frameworkName?import_cli12.frameworkToDefaultBuilder[frameworkName]:await(async()=>await packageManager.getPackageVersion("webpack")?import_cli13.CoreBuilder.Webpack5:import_cli13.CoreBuilder.Vite)();if((customCoreBuilder||defaultCoreBuilder)!==import_cli13.CoreBuilder.Webpack5||(frameworkName?["angular","ember"].includes(frameworkName):!1)||!!await packageManager.getPackageVersion("react-scripts"))return null;let frameworkOptions=getFrameworkOptions(mainConfig),defaultCompiler=frameworkOptions?.builder?.useSWC?import_cli13.CoreWebpackCompilers.SWC:import_cli13.CoreWebpackCompilers.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_dedent37.dedent`
|
|
584
|
-
We need to update your Storybook configuration for Webpack 5.
|
|
585
|
-
The ${import_picocolors37.default.yellow("framework.options.builder.useSWC")} flag will be removed.`),isNextJs?message.push(import_ts_dedent37.dedent`
|
|
586
|
-
Storybook now detects whether it should use Babel or SWC as a compiler by applying the same logic as Next.js itself:\n
|
|
587
|
-
- If you have a ${import_picocolors37.default.yellow(".babelrc")} (or ${import_picocolors37.default.yellow("babel.config.js")}) file in your project, Storybook will use Babel as the compiler.
|
|
588
|
-
- If you have a ${import_picocolors37.default.yellow(".babelrc")} (or ${import_picocolors37.default.yellow("babel.config.js")}) file in your project and you have set
|
|
589
|
-
${import_picocolors37.default.yellow("experimental.forceSwcTransforms = true")} in your ${import_picocolors37.default.yellow("next.config.js")} file,
|
|
590
|
-
Storybook will use SWC as the compiler.
|
|
591
|
-
- If you don't have a ${import_picocolors37.default.yellow(".babelrc")} (or ${import_picocolors37.default.yellow("babel.config.js")}) file in your project, Storybook will use SWC as the compiler.
|
|
592
|
-
`):defaultCompiler===import_cli13.CoreWebpackCompilers.Babel?message.push(import_ts_dedent37.dedent`
|
|
593
|
-
Storybook's Webpack5 builder is now compiler agnostic, meaning you can choose a compiler addon that best fits your project:\n
|
|
594
|
-
- 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.
|
|
595
|
-
- 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
|
|
596
|
-
In the next step, Storybook will ask you to choose a compiler to automatically set it up for you.\n
|
|
597
|
-
After the migration, you can switch Webpack5 compilers by swapping the addon in your project.
|
|
598
|
-
You can find more information here: ${import_picocolors37.default.yellow("https://storybook.js.org/docs/builders/webpack#compiler-support")}
|
|
599
|
-
`):message.push(import_ts_dedent37.dedent`
|
|
600
|
-
Storybook's Webpack5 builder is now compiler agnostic, meaning you have to install an additional addon to set up a compiler for Webpack5.\n
|
|
601
|
-
We have detected, that you want to use SWC as the compiler for Webpack5.\n
|
|
602
|
-
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
|
|
603
|
-
After the migration, you can switch Webpack5 compilers by swapping the addon in your project.
|
|
604
|
-
You can find more information here: ${import_picocolors37.default.yellow("https://storybook.js.org/docs/builders/webpack#compiler-support")}
|
|
605
|
-
`),message.join(`
|
|
606
|
-
|
|
607
|
-
`)},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===import_cli13.CoreWebpackCompilers.Babel?await askUserForCompilerChoice():import_cli13.CoreWebpackCompilers.SWC,compilerPackageName=Object.entries(import_cli13.compilerNameToCoreCompiler).find(([,coreCompiler])=>coreCompiler===compiler)[0];await add(compilerPackageName,{packageManager:packageManager.type,skipPostinstall:!!skipInstall})}}};async function askUserForCompilerChoice(){return(await(0,import_prompts7.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:import_cli13.CoreWebpackCompilers.Babel},{title:"SWC",description:"Choose SWC for fast builds and simple configuration.",value:import_cli13.CoreWebpackCompilers.SWC}],initial:0})).compiler}var import_cli14=require("storybook/internal/cli"),import_csf_tools11=require("storybook/internal/csf-tools"),import_picocolors38=__toESM(require_picocolors(),1),import_ts_dedent38=require("ts-dedent");var wrapRequire={id:"wrap-require",versionRange:["*","*"],async check({packageManager,storybookVersion,mainConfigPath}){let isStorybookInMonorepo=await packageManager.isStorybookInMonorepo(),isPnp=await(0,import_cli14.detectPnp)();if(!mainConfigPath)return null;let config=await(0,import_csf_tools11.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_picocolors38.default.cyan(`Storybook ${storybookVersion}`);return import_ts_dedent38.dedent`We have detected that you're using ${sbFormatted} in a ${isStorybookInMonorepo?"monorepo":"PnP"} project.
|
|
375
|
+
`)}console.log()}};var import_cli2=require("storybook/internal/cli"),import_csf_tools9=require("storybook/internal/csf-tools"),import_picocolors21=__toESM(require_picocolors(),1),import_ts_dedent18=require("ts-dedent");var wrapRequire={id:"wrap-require",versionRange:["*","*"],async check({packageManager,storybookVersion,mainConfigPath}){let isStorybookInMonorepo=await packageManager.isStorybookInMonorepo(),isPnp=await(0,import_cli2.detectPnp)();if(!mainConfigPath)return null;let config=await(0,import_csf_tools9.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_picocolors21.default.cyan(`Storybook ${storybookVersion}`);return import_ts_dedent18.dedent`We have detected that you're using ${sbFormatted} in a ${isStorybookInMonorepo?"monorepo":"PnP"} project.
|
|
608
376
|
For Storybook to work correctly, some fields in your main config must be updated. We can do this for you automatically.
|
|
609
377
|
|
|
610
|
-
More info: https://storybook.js.org/docs/faq#how-do-i-fix-module-resolution-in-special-environments`},async run({dryRun,mainConfigPath,result}){return new Promise((resolve,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))),resolve()}catch(e){reject(e)}})})}};var allFixes=[
|
|
378
|
+
More info: https://storybook.js.org/docs/faq#how-do-i-fix-module-resolution-in-special-environments`},async run({dryRun,mainConfigPath,result}){return new Promise((resolve,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))),resolve()}catch(e){reject(e)}})})}};var allFixes=[eslintPlugin,wrapRequire,addonMdxGfmRemove,addonStorysourceRemove,upgradeStorybookRelatedDependencies,initialGlobals,addonA11yAddonTest,consolidatedImports,addonExperimentalTest,rnstorybookConfig,removeAddonInteractions,rendererToFramework,addonEssentialsRemoveDocs,addonA11yParameters];var commandFixes=[csfFactories];var import_picocolors22=__toESM(require_picocolors(),1),import_ts_dedent19=require("ts-dedent");var messageDivider2=`
|
|
611
379
|
|
|
612
380
|
`,segmentDivider=`
|
|
613
381
|
|
|
614
382
|
\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
|
|
615
383
|
|
|
616
|
-
`;function getGlossaryMessages(fixSummary,fixResults,logFile){let messages=[];return fixSummary.succeeded.length>0&&(messages.push(
|
|
384
|
+
`;function getGlossaryMessages(fixSummary,fixResults,logFile){let messages=[];return fixSummary.succeeded.length>0&&(messages.push(import_picocolors22.default.bold("Successful migrations:")),messages.push(fixSummary.succeeded.map(m=>import_picocolors22.default.green(m)).join(", "))),Object.keys(fixSummary.failed).length>0&&(messages.push(import_picocolors22.default.bold("Failed migrations:")),messages.push(Object.entries(fixSummary.failed).map(([id,error])=>`${import_picocolors22.default.bold(import_picocolors22.default.red(id))}:
|
|
617
385
|
${error}`).join(`
|
|
618
|
-
`)),messages.push(`You can find the full logs in ${
|
|
386
|
+
`)),messages.push(`You can find the full logs in ${import_picocolors22.default.cyan(logFile)}`)),fixSummary.manual.length>0&&(messages.push(import_picocolors22.default.bold("Manual migrations:")),messages.push(fixSummary.manual.map(m=>fixResults[m]==="manual_succeeded"?import_picocolors22.default.green(m):import_picocolors22.default.blue(m)).join(", "))),fixSummary.skipped.length>0&&(messages.push(import_picocolors22.default.bold("Skipped migrations:")),messages.push(fixSummary.skipped.map(m=>import_picocolors22.default.cyan(m)).join(", "))),messages}function getMigrationSummary({fixResults,fixSummary,logFile,installationMetadata}){let messages=[];messages.push(getGlossaryMessages(fixSummary,fixResults,logFile).join(messageDivider2)),messages.push(import_ts_dedent19.dedent`If you'd like to run the migrations again, you can do so by running '${import_picocolors22.default.cyan("npx storybook automigrate")}'
|
|
619
387
|
|
|
620
388
|
The automigrations try to migrate common patterns in your project, but might not contain everything needed to migrate to the latest version of Storybook.
|
|
621
389
|
|
|
622
|
-
Please check the changelog and migration guide for manual migrations and more information: ${
|
|
623
|
-
And reach out on Discord if you need help: ${
|
|
624
|
-
`);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
|
|
625
|
-
`);console.log(),
|
|
390
|
+
Please check the changelog and migration guide for manual migrations and more information: ${import_picocolors22.default.yellow("https://storybook.js.org/docs/migration-guide")}
|
|
391
|
+
And reach out on Discord if you need help: ${import_picocolors22.default.yellow("https://discord.gg/storybook")}
|
|
392
|
+
`);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 logger8=console,LOG_FILE_NAME2="migration-storybook.log",LOG_FILE_PATH2=(0,import_node_path6.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=async()=>{TEMP_LOG_FILE_PATH2=await(0,import_common20.temporaryFile)({name:LOG_FILE_NAME2});let logStream=(0,import_node_fs3.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,...commandFixes].map(f=>import_picocolors23.default.yellow(f.id)).map(x=>`- ${x}`).join(`
|
|
393
|
+
`);console.log(),logger8.info(import_ts_dedent20.dedent`
|
|
626
394
|
The following migrations are available:
|
|
627
395
|
${availableFixes}
|
|
628
|
-
`)},doAutomigrate=async options=>{let packageManager=
|
|
629
|
-
${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";
|
|
630
|
-
\u{1F50E} found a '${
|
|
396
|
+
`)},doAutomigrate=async options=>{let packageManager=import_common20.JsPackageManagerFactory.getPackageManager({force:options.packageManager}),{mainConfig,mainConfigPath,previewConfigPath,storybookVersion,configDir,packageJson}=await getStorybookData({configDir:options.configDir,packageManager});if(!storybookVersion)throw new Error("Could not determine Storybook version");if(!mainConfigPath)throw new Error("Could not determine main config path");await automigrate({...options,packageJson,packageManager,storybookVersion,beforeVersion:storybookVersion,mainConfigPath,mainConfig,previewConfigPath,configDir,isUpgrade:!1,isLatest:!1})&&await doctor({configDir,packageManager:options.packageManager})},automigrate=async({fixId,fixes:inputFixes,dryRun,yes,packageManager,packageJson,list,configDir,mainConfig,mainConfigPath,previewConfigPath,storybookVersion,beforeVersion,renderer:rendererPackage,skipInstall,hideMigrationSummary=!1,isUpgrade,isLatest})=>{if(list)return logAvailableMigrations(),null;let commandFix=commandFixes.find(f=>f.id===fixId);if(commandFix)return logger8.info(`\u{1F50E} Running migration ${import_picocolors23.default.magenta(fixId)}..`),await commandFix.run({mainConfigPath,previewConfigPath,packageManager,packageJson,dryRun,mainConfig,result:null,storybookVersion}),null;let selectedFixes=inputFixes||allFixes.filter(fix=>!(fix.id===upgradeStorybookRelatedDependencies.id&&isLatest===!1&&fixId!==upgradeStorybookRelatedDependencies.id)),fixes=fixId?selectedFixes.filter(f=>f.id===fixId):selectedFixes;if(fixId&&fixes.length===0)return logger8.info(`\u{1F4ED} No migrations found for ${import_picocolors23.default.magenta(fixId)}.`),logAvailableMigrations(),null;await augmentLogsToFile2(),logger8.info("\u{1F50E} checking possible migrations..");let{fixResults,fixSummary,preCheckFailure}=await runFixes({fixes,packageManager,packageJson,rendererPackage,skipInstall,configDir,previewConfigPath,mainConfig,mainConfigPath,storybookVersion,beforeVersion,isUpgrade:!!isUpgrade,dryRun,yes});if(Object.values(fixResults).some(r=>r==="failed"||r==="check_failed")?await(0,import_promises7.rename)(TEMP_LOG_FILE_PATH2,(0,import_node_path6.join)(process.cwd(),LOG_FILE_NAME2)):await(0,import_promises7.rm)(TEMP_LOG_FILE_PATH2,{recursive:!0,force:!0}),!hideMigrationSummary){let installationMetadata=await packageManager.findInstallations(["@storybook/*","storybook"]);logger8.info(),logger8.info(getMigrationSummary({fixResults,fixSummary,logFile:LOG_FILE_PATH2,installationMetadata})),logger8.info()}return cleanup2(),{fixResults,preCheckFailure}};async function runFixes({fixes,dryRun,yes,rendererPackage,skipInstall,configDir,packageManager,packageJson,mainConfig,mainConfigPath,previewConfigPath,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{(isUpgrade&&import_semver6.default.satisfies(beforeVersion,f.versionRange[0],{includePrerelease:!0})&&import_semver6.default.satisfies(storybookVersion,f.versionRange[1],{includePrerelease:!0})||!isUpgrade)&&(result=await f.check({packageManager,configDir,rendererPackage,mainConfig,storybookVersion,previewConfigPath,mainConfigPath}))}catch(error){logger8.info(`\u26A0\uFE0F failed to check fix ${import_picocolors23.default.bold(f.id)}`),error instanceof Error&&(logger8.error(`
|
|
397
|
+
${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";logger8.info(`
|
|
398
|
+
\u{1F50E} found a '${import_picocolors23.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"}};logger8.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),logger8.info();let{shouldContinue}=await(0,import_prompts4.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_prompts4.default)({type:"confirm",name:"fix",message:`Do you want to run the '${import_picocolors23.default.cyan(f.id)}' migration on your project?`,initial:f.promptDefaultValue??!0},{onCancel:()=>{throw new Error}}):promptType==="notification"&&(runAnswer=await(0,import_prompts4.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_invariant.default)(runAnswer,"runAnswer must be defined if not promptOnly"),runAnswer.fix)try{(0,import_tiny_invariant.default)(typeof f.run=="function","run method should be available in fix."),(0,import_tiny_invariant.default)(mainConfigPath,"Main config path should be defined to run migration."),await f.run({result,packageManager,dryRun,mainConfigPath,previewConfigPath,packageJson,mainConfig,skipInstall,storybookVersion}),logger8.info(`\u2705 ran ${import_picocolors23.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",logger8.info(`\u274C error when running ${import_picocolors23.default.cyan(f.id)} migration`),logger8.info(error),logger8.info()}else fixResults[f.id]="skipped",fixSummary.skipped.push(f.id)}else fixResults[f.id]=fixResults[f.id]||"unnecessary"}return{fixResults,fixSummary}}var import_promises8=require("fs/promises"),import_node_path7=require("path"),import_node_logger=require("storybook/internal/node-logger"),import_cross_spawn=require("cross-spawn"),import_picocolors24=__toESM(require_picocolors(),1),exec2=async(command2,options={},{startMessage,errorMessage,dryRun}={})=>{if(startMessage&&import_node_logger.logger.info(startMessage),dryRun){import_node_logger.logger.info(`
|
|
631
399
|
> ${command2}
|
|
632
|
-
`);return}return import_node_logger.logger.info(command2),new Promise((resolve,reject)=>{let child=(0,import_cross_spawn.spawn)(command2,{...options,shell:!0,stdio:"pipe"});child.stderr.pipe(process.stdout),child.stdout.pipe(process.stdout),child.on("exit",code=>{code===0?resolve(void 0):(import_node_logger.logger.error(
|
|
400
|
+
`);return}return import_node_logger.logger.info(command2),new Promise((resolve,reject)=>{let child=(0,import_cross_spawn.spawn)(command2,{...options,shell:!0,stdio:"pipe"});child.stderr.pipe(process.stdout),child.stdout.pipe(process.stdout),child.on("exit",code=>{code===0?resolve(void 0):(import_node_logger.logger.error(import_picocolors24.default.red(`An error occurred while executing: \`${command2}\``)),errorMessage&&import_node_logger.logger.info(errorMessage),reject(new Error(`command exited with code: ${code}: `)))})})},link=async({target,local,start})=>{let storybookDir=process.cwd();try{if(JSON.parse(await(0,import_promises8.readFile)("package.json",{encoding:"utf8"})).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=(0,import_node_path7.basename)(target);if(!local){let reprosDir=(0,import_node_path7.join)(storybookDir,"../storybook-repros");import_node_logger.logger.info(`Ensuring directory ${reprosDir}`),await(0,import_promises8.mkdir)(reprosDir,{recursive:!0}),import_node_logger.logger.info(`Cloning ${target}`),await exec2(`git clone ${target}`,{cwd:reprosDir}),reproName=(0,import_node_path7.basename)(target,(0,import_node_path7.extname)(target)),reproDir=(0,import_node_path7.join)(reprosDir,reproName)}let version2=(0,import_cross_spawn.sync)("yarn",["--version"],{cwd:reproDir,stdio:"pipe",shell:!0}).stdout.toString();if(!/^[2-4]\./.test(version2)){import_node_logger.logger.warn(`\u{1F6A8} Expected yarn 2 or higher in ${reproDir}!`),import_node_logger.logger.warn(""),import_node_logger.logger.warn("Please set it up with `yarn set version berry`,"),import_node_logger.logger.warn(`then link '${reproDir}' with the '--local' flag.`);return}import_node_logger.logger.info(`Linking ${reproDir}`),await exec2(`yarn link --all --relative ${storybookDir}`,{cwd:reproDir}),import_node_logger.logger.info(`Installing ${reproName}`);let reproPackageJson=JSON.parse(await(0,import_promises8.readFile)((0,import_node_path7.join)(reproDir,"package.json"),{encoding:"utf8"}));reproPackageJson.devDependencies?.vite||(reproPackageJson.devDependencies={...reproPackageJson.devDependencies,"webpack-hot-middleware":"*"}),reproPackageJson.devDependencies={...reproPackageJson.devDependencies,"@types/node":"^22"},await(0,import_promises8.writeFile)((0,import_node_path7.join)(reproDir,"package.json"),JSON.stringify(reproPackageJson,null,2)),await exec2("yarn install",{cwd:reproDir}),start&&(import_node_logger.logger.info(`Running ${reproName} storybook`),await exec2("yarn run storybook",{cwd:reproDir}))};var import_codemod2=require("@storybook/codemod"),logger10=console;async function migrate(migration,{glob,dryRun,list,rename:rename4,parser,configDir:userSpecifiedConfigDir}){if(list)(0,import_codemod2.listCodemods)().forEach(key=>logger10.log(key));else if(migration)await(0,import_codemod2.runCodemod)(migration,{glob,dryRun,logger:logger10,rename:rename4,parser});else throw new Error("Migrate: please specify a migration name or --list")}var import_node_fs4=require("fs"),import_promises9=require("fs/promises"),import_node_path8=require("path"),import_common21=require("storybook/internal/common"),import_common22=require("storybook/internal/common");var import_giget=require("giget"),import_picocolors25=__toESM(require_picocolors(),1),import_prompts5=__toESM(require("prompts"),1),import_semver7=require("semver"),import_tiny_invariant2=__toESM(require("tiny-invariant"),1),import_ts_dedent21=require("ts-dedent");var baseTemplates={"cra/default-js":{name:"Create React App Latest (Webpack | JavaScript)",script:`
|
|
633
401
|
npx create-react-app {{beforeDir}} && cd {{beforeDir}} && jq '.browserslist.production[0] = ">0.9%"' package.json > tmp.json && mv tmp.json package.json
|
|
634
402
|
`,expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench","vitest-integration"],modifications:{useCsfFactory:!0,extraDependencies:["prop-types"],mainConfig:config=>({stories:config.getFieldValue(["stories"])?.map(s=>typeof s=="string"?s.replace(/\|(tsx?|ts)\b|\b(tsx?|ts)\|/g,""):s)})}},"cra/default-ts":{name:"Create React App Latest (Webpack | TypeScript)",script:`
|
|
635
403
|
npx create-react-app {{beforeDir}} --template typescript && cd {{beforeDir}} && jq '.browserslist.production[0] = ">0.9%"' package.json > tmp.json && mv tmp.json package.json
|
|
636
|
-
`,skipTasks:["smoke-test","bench","vitest-integration"],expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{useCsfFactory:!0,extraDependencies:["prop-types"]}},"nextjs/14-ts":{name:"Next.js v14.2 (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} -e https://github.com/vercel/next.js/tree/v14.2.17/examples/hello-world && cd {{beforeDir}} && npm pkg set "dependencies.next"="^14.2.17" && yarn && git add . && git commit --amend --no-edit && cd ..',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{useCsfFactory:!0,mainConfig:{features:{experimentalRSC:!0,developmentModeForBuild:!0}},extraDependencies:["server-only","prop-types"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"nextjs/default-ts":{name:"Next.js Latest (Webpack | TypeScript)",script:'npx create-next-app {{beforeDir}} --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{useCsfFactory:!0,mainConfig:{features:{experimentalRSC:!0,developmentModeForBuild:!0}},extraDependencies:["server-only","prop-types"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"nextjs/prerelease":{name:"Next.js Prerelease (Webpack | TypeScript)",script:'npx create-next-app@canary {{beforeDir}} --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{useCsfFactory:!0,mainConfig:{features:{experimentalRSC:!0,developmentModeForBuild:!0}},extraDependencies:["server-only","prop-types"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"
|
|
404
|
+
`,skipTasks:["smoke-test","bench","vitest-integration"],expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{useCsfFactory:!0,extraDependencies:["prop-types"]}},"nextjs/14-ts":{name:"Next.js v14.2 (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} -e https://github.com/vercel/next.js/tree/v14.2.17/examples/hello-world && cd {{beforeDir}} && npm pkg set "dependencies.next"="^14.2.17" && yarn && git add . && git commit --amend --no-edit && cd ..',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{useCsfFactory:!0,mainConfig:{features:{experimentalRSC:!0,developmentModeForBuild:!0}},extraDependencies:["server-only","prop-types"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"nextjs/default-ts":{name:"Next.js Latest (Webpack | TypeScript)",script:'npx create-next-app {{beforeDir}} --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{useCsfFactory:!0,mainConfig:{features:{experimentalRSC:!0,developmentModeForBuild:!0}},extraDependencies:["server-only","prop-types"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"nextjs/prerelease":{name:"Next.js Prerelease (Webpack | TypeScript)",script:'npx create-next-app@canary {{beforeDir}} --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{useCsfFactory:!0,mainConfig:{features:{experimentalRSC:!0,developmentModeForBuild:!0}},extraDependencies:["server-only","prop-types"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"nextjs-vite/14-ts":{name:"Next.js Latest (Vite | TypeScript)",script:'npx create-next-app@^14 {{beforeDir}} --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},modifications:{useCsfFactory:!0,mainConfig:{framework:"@storybook/nextjs-vite",features:{experimentalRSC:!0,developmentModeForBuild:!0}},extraDependencies:["server-only","@storybook/nextjs-vite","vite","prop-types"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs-vite/default-ts":{name:"Next.js Latest (Vite | TypeScript)",script:'npx create-next-app {{beforeDir}} --eslint --no-tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},modifications:{useCsfFactory:!0,mainConfig:{framework:"@storybook/nextjs-vite",features:{experimentalRSC:!0,developmentModeForBuild:!0}},extraDependencies:["server-only","@storybook/nextjs-vite","vite","prop-types"]},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"},modifications:{useCsfFactory:!0,extraDependencies:["prop-types"],mainConfig:{features:{developmentModeForBuild:!0}}},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"},modifications:{useCsfFactory:!0,extraDependencies:["prop-types"],mainConfig:{features:{developmentModeForBuild:!0}}},skipTasks:["bench"]},"react-vite/prerelease-ts":{name:"React Prerelease (Vite | TypeScript)",script:`
|
|
637
405
|
npm create vite --yes {{beforeDir}} -- --template react-ts && cd {{beforeDir}} && yarn add react@beta react-dom@beta && jq '.resolutions += {"@types/react": "npm:types-react@beta", "@types/react-dom": "npm:types-react-dom@beta"}' package.json > tmp.json && mv tmp.json package.json && yarn add --dev @types/react@npm:types-react@beta @types/react-dom@npm:types-react-dom@beta
|
|
638
406
|
`,expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},modifications:{useCsfFactory:!0,extraDependencies:["prop-types"],mainConfig:{features:{developmentModeForBuild:!0}}},skipTasks:["e2e-tests-dev","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"},modifications:{useCsfFactory:!0,extraDependencies:["prop-types"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"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"},modifications:{useCsfFactory:!0,extraDependencies:["prop-types"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"react-webpack/prerelease-ts":{name:"React Prerelease (Webpack | TypeScript)",script:`
|
|
639
407
|
yarn create webpack5-react {{beforeDir}} --version-react="beta" --version-react-dom="beta" && cd {{beforeDir}} && jq '.resolutions += {"@types/react": "npm:types-react@beta", "@types/react-dom": "npm:types-react-dom@beta"}' package.json > tmp.json && mv tmp.json package.json && yarn add --dev @types/react@npm:types-react@beta @types/react-dom@npm:types-react-dom@beta
|
|
640
|
-
`,expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{useCsfFactory:!0,extraDependencies:["prop-types"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"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","vitest-integration"]},"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"]},"nuxt-vite/default-ts":{name:"Nuxt v3 (Vite | TypeScript)",script:"npx nuxi init --packageManager yarn --gitInit false {{beforeDir}}",expected:{framework:"@storybook-vue/nuxt",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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"},modifications:{extraDependencies:["preact-render-to-string"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"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"},modifications:{extraDependencies:["preact-render-to-string"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"qwik-vite/default-ts":{name:"Qwik CLI Latest (Vite | TypeScript)",script:"npm create qwik playground {{beforeDir}}",inDevelopment:!0,expected:{framework:"storybook-framework-qwik",renderer:"storybook-framework-qwik",builder:"storybook-framework-qwik"},skipTasks:["e2e-tests","e2e-tests-dev","bench","vitest-integration"]},"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"}},"react-native-web-vite/expo-ts":{name:"React Native Expo Latest (Vite | TypeScript)",script:"npx create-expo-app -y {{beforeDir}}",expected:{framework:"@storybook/react-native-web-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},modifications:{useCsfFactory:!0},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"react-native-web-vite/rn-cli-ts":{name:"React Native CLI Latest (Vite | TypeScript)",script:"npx @react-native-community/cli@latest init --install-pods=false --directory={{beforeDir}} rnapp",expected:{framework:"@storybook/react-native-web-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench","vitest-integration"]}},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:{useCsfFactory:!0,extraDependencies:["@storybook/addon-webpack5-compiler-babel","prop-types"],editAddons:addons=>[...addons,"@storybook/addon-webpack5-compiler-babel"].filter(a=>a!=="@storybook/addon-webpack5-compiler-swc")},isInternal:!0,skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"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"},modifications:{useCsfFactory:!0,extraDependencies:["prop-types"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"],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","vitest-integration"]}},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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]}},allTemplates={...baseTemplates,...internalTemplates,...benchTemplates},normal=["react-vite/default-ts","angular-cli/default-ts","vue3-vite/default-ts","nuxt-vite/default-ts","lit-vite/default-ts","svelte-vite/default-ts","nextjs/default-ts","experimental-nextjs-vite/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","react-vite/default-js","react-vite/prerelease-ts","react-webpack/prerelease-ts","vue3-vite/default-js","vue-cli/default-js","lit-vite/default-js","svelte-kit/prerelease-ts","svelte-vite/default-js","nextjs/prerelease","qwik-vite/default-ts","preact-vite/default-js","html-vite/default-js","internal/react16-webpack","internal/react18-webpack-babel","react-native-web-vite/expo-ts"];var logger27=console,toChoices=c=>({title:allTemplates[c].name,value:c}),sandbox=async({output:outputDirectory,filterValue,init,...options})=>{let selectedConfig=allTemplates[filterValue],templateId=selectedConfig?filterValue:null,{packageManager:pkgMgr}=options,packageManager=import_common23.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("storybook"),nextVersion=await packageManager.latestVersion("storybook@next").catch(e=>"0.0.0"),currentVersion=import_common24.versions.storybook,isPrerelease=(0,import_semver14.prerelease)(currentVersion),isOutdated=(0,import_semver14.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_picocolors42.default.bold(currentVersion)} sandbox..`,notLatest:import_picocolors42.default.red(import_ts_dedent41.dedent`
|
|
641
|
-
This version is behind the latest release, which is: ${
|
|
408
|
+
`,expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{useCsfFactory:!0,extraDependencies:["prop-types"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"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","vitest-integration"]},"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"]},"nuxt-vite/default-ts":{name:"Nuxt v3 (Vite | TypeScript)",script:"npx nuxi init --packageManager yarn --gitInit false -M @nuxt/ui {{beforeDir}}",expected:{framework:"@storybook-vue/nuxt",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"svelte-kit/skeleton-ts":{name:"SvelteKit Latest (Vite | TypeScript)",script:"npx sv@latest create --template minimal --types ts --no-add-ons --no-install {{beforeDir}}",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","vitest-integration"]},"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","vitest-integration"]},"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"},modifications:{extraDependencies:["preact-render-to-string"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"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"},modifications:{extraDependencies:["preact-render-to-string"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"qwik-vite/default-ts":{name:"Qwik CLI Latest (Vite | TypeScript)",script:"npm create qwik playground {{beforeDir}}",inDevelopment:!0,expected:{framework:"storybook-framework-qwik",renderer:"storybook-framework-qwik",builder:"storybook-framework-qwik"},skipTasks:["e2e-tests","e2e-tests-dev","bench","vitest-integration"]},"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"}},"react-native-web-vite/expo-ts":{name:"React Native Expo Latest (Vite | TypeScript)",script:"npx create-expo-app -y {{beforeDir}}",expected:{framework:"@storybook/react-native-web-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},modifications:{useCsfFactory:!0},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"react-native-web-vite/rn-cli-ts":{name:"React Native CLI Latest (Vite | TypeScript)",script:"npx @react-native-community/cli@latest init --install-pods=false --directory={{beforeDir}} rnapp",expected:{framework:"@storybook/react-native-web-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench","vitest-integration"]}},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:{useCsfFactory:!0,extraDependencies:["@storybook/addon-webpack5-compiler-babel","prop-types"],editAddons:addons=>[...addons,"@storybook/addon-webpack5-compiler-babel"].filter(a=>a!=="@storybook/addon-webpack5-compiler-swc")},isInternal:!0,skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"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"},modifications:{useCsfFactory:!0,extraDependencies:["prop-types"]},skipTasks:["e2e-tests-dev","bench","vitest-integration"],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","vitest-integration"]}},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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]},"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","vitest-integration"]}},allTemplates={...baseTemplates,...internalTemplates,...benchTemplates},normal=["react-vite/default-ts","angular-cli/default-ts","vue3-vite/default-ts","nuxt-vite/default-ts","lit-vite/default-ts","svelte-vite/default-ts","svelte-kit/skeleton-ts","nextjs/default-ts","nextjs-vite/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","preact-vite/default-ts","html-vite/default-ts"],daily=[...merged,"angular-cli/prerelease","react-vite/default-js","react-vite/prerelease-ts","react-webpack/prerelease-ts","vue3-vite/default-js","lit-vite/default-js","svelte-vite/default-js","nextjs/prerelease","qwik-vite/default-ts","preact-vite/default-js","html-vite/default-js","internal/react16-webpack","internal/react18-webpack-babel","react-native-web-vite/expo-ts"];var logger11=console,toChoices=c=>({title:allTemplates[c].name,value:c}),sandbox=async({output:outputDirectory,filterValue,init,...options})=>{let selectedConfig=allTemplates[filterValue],templateId=selectedConfig?filterValue:null,{packageManager:pkgMgr}=options,packageManager=import_common21.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("storybook"),nextVersion=await packageManager.latestVersion("storybook@next").catch(e=>"0.0.0"),currentVersion=import_common22.versions.storybook,isPrerelease=(0,import_semver7.prerelease)(currentVersion),isOutdated=(0,import_semver7.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_picocolors25.default.bold(currentVersion)} sandbox..`,notLatest:import_picocolors25.default.red(import_ts_dedent21.dedent`
|
|
409
|
+
This version is behind the latest release, which is: ${import_picocolors25.default.bold(latestVersion)}!
|
|
642
410
|
You likely ran the init command through npx, which can use a locally cached version, to get the latest please run:
|
|
643
|
-
${
|
|
411
|
+
${import_picocolors25.default.bold("npx storybook@latest sandbox")}
|
|
644
412
|
|
|
645
413
|
You may want to CTRL+C to stop, and run with the latest version instead.
|
|
646
|
-
`),longInitTime:
|
|
647
|
-
`),{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&&(
|
|
414
|
+
`),longInitTime:import_picocolors25.default.yellow("The creation of the sandbox will take longer, because we will need to run init."),prerelease:import_picocolors25.default.yellow("This is a pre-release version.")};if(logger11.log(boxen([messages.welcome].concat(isOutdated&&!isPrerelease?[messages.notLatest]:[]).concat(init&&(isOutdated||isPrerelease)?[messages.longInitTime]:[]).concat(isPrerelease?[messages.prerelease]:[]).join(`
|
|
415
|
+
`),{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&&(logger11.info(boxen(import_ts_dedent21.dedent`
|
|
648
416
|
🔎 You filtered out all templates. 🔍
|
|
649
417
|
|
|
650
|
-
After filtering all the templates with "${
|
|
418
|
+
After filtering all the templates with "${import_picocolors25.default.yellow(filterValue)}", we found no results. Please try again with a different filter.
|
|
651
419
|
|
|
652
420
|
Available templates:
|
|
653
|
-
${keys.map(key=>
|
|
421
|
+
${keys.map(key=>import_picocolors25.default.blue(`- ${key}`)).join(`
|
|
654
422
|
`)}
|
|
655
|
-
`.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),process.exit(1)),choices.length===1?[templateId]=choices:(
|
|
656
|
-
🤗 Welcome to ${
|
|
423
|
+
`.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),process.exit(1)),choices.length===1?[templateId]=choices:(logger11.info(boxen(import_ts_dedent21.dedent`
|
|
424
|
+
🤗 Welcome to ${import_picocolors25.default.yellow("sb sandbox")}! 🤗
|
|
657
425
|
|
|
658
|
-
Create a ${
|
|
426
|
+
Create a ${import_picocolors25.default.green("new project")} to minimally reproduce Storybook issues.
|
|
659
427
|
|
|
660
428
|
1. select an environment that most closely matches your project setup.
|
|
661
429
|
2. select a location for the reproduction, outside of your project.
|
|
662
430
|
|
|
663
431
|
After the reproduction is ready, we'll guide you through the next steps.
|
|
664
|
-
`.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),templateId=await promptSelectedTemplate(choices)),!!!(templateId??null)){
|
|
665
|
-
Template downloaded from ${
|
|
432
|
+
`.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),templateId=await promptSelectedTemplate(choices)),!!!(templateId??null)){logger11.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_node_fs4.existsSync)(`${selectedDirectory}`)&&(logger11.info(`\u26A0\uFE0F ${selectedDirectory} already exists! Overwriting...`),await(0,import_promises9.rm)(selectedDirectory,{recursive:!0,force:!0})),!selectedDirectory){let{directory}=await(0,import_prompts5.default)({type:"text",message:"Enter the output directory",name:"directory",initial:outputDirectoryName??void 0,validate:async directoryName=>(0,import_node_fs4.existsSync)(directoryName)?`${directoryName} already exists. Please choose another name.`:!0},{onCancel:()=>{logger11.log("Command cancelled by the user. Exiting..."),process.exit(1)}});selectedDirectory=directory}(0,import_tiny_invariant2.default)(selectedDirectory);try{let templateDestination=(0,import_node_path8.isAbsolute)(selectedDirectory)?selectedDirectory:(0,import_node_path8.join)(process.cwd(),selectedDirectory);logger11.info(`\u{1F3C3} Adding ${selectedConfig.name} into ${templateDestination}`),logger11.log(`\u{1F4E6} Downloading sandbox template (${import_picocolors25.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_promises9.readdir)(templateDestination)).length===0){let selected=import_picocolors25.default.yellow(templateId);throw new Error(import_ts_dedent21.dedent`
|
|
433
|
+
Template downloaded from ${import_picocolors25.default.blue(gitPath)} is empty.
|
|
666
434
|
Are you use it exists? Or did you want to set ${selected} to inDevelopment first?
|
|
667
|
-
`)}if(downloadType==="before-storybook"&&init){let before=process.cwd();process.chdir(templateDestination);let{initiate}=await import("create-storybook");await initiate({dev:process.env.CI!=="true"&&process.env.
|
|
435
|
+
`)}if(downloadType==="before-storybook"&&init){let before=process.cwd();process.chdir(templateDestination);let{initiate}=await import("create-storybook");await initiate({dev:process.env.CI!=="true"&&process.env.IN_STORYBOOK_SANDBOX!=="true",...options,features:["docs","test"]}),process.chdir(before)}}catch(err){throw logger11.error(`\u{1F6A8} Failed to download sandbox template: ${String(err)}`),err}let initMessage=init?import_picocolors25.default.yellow(import_ts_dedent21.dedent`
|
|
668
436
|
yarn install
|
|
669
437
|
yarn storybook
|
|
670
|
-
`):`Recreate your setup, then ${
|
|
438
|
+
`):`Recreate your setup, then ${import_picocolors25.default.yellow("npx storybook@latest init")}`;logger11.info(boxen(import_ts_dedent21.dedent`
|
|
671
439
|
🎉 Your Storybook reproduction project is ready to use! 🎉
|
|
672
440
|
|
|
673
|
-
${
|
|
441
|
+
${import_picocolors25.default.yellow(`cd ${selectedDirectory}`)}
|
|
674
442
|
${initMessage}
|
|
675
443
|
|
|
676
444
|
Once you've recreated the problem you're experiencing, please:
|
|
677
445
|
|
|
678
|
-
1. Document any additional steps in ${
|
|
446
|
+
1. Document any additional steps in ${import_picocolors25.default.cyan("README.md")}
|
|
679
447
|
2. Publish the repository to github
|
|
680
448
|
3. Link to the repro repository in your issue
|
|
681
449
|
|
|
682
450
|
Having a clean repro helps us solve your issue faster! 🙏
|
|
683
|
-
`.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"}))}catch(error){throw
|
|
451
|
+
`.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"}))}catch(error){throw logger11.error("\u{1F6A8} Failed to create sandbox"),error}};async function promptSelectedTemplate(choices){let{template}=await(0,import_prompts5.default)({type:"select",message:"\u{1F308} Select the template",name:"template",choices:choices.map(toChoices)},{onCancel:()=>{logger11.log("Command cancelled by the user. Exiting..."),process.exit(1)}});return template||null}var import_cli4=require("storybook/internal/cli"),import_common24=require("storybook/internal/common"),import_core_server=require("storybook/internal/core-server"),import_node_logger3=require("storybook/internal/node-logger"),import_server_errors=require("storybook/internal/server-errors"),import_telemetry=require("storybook/internal/telemetry");var import_cross_spawn2=require("cross-spawn"),import_picocolors33=__toESM(require_picocolors(),1),import_semver12=__toESM(require("semver"),1),import_ts_dedent28=require("ts-dedent");var import_node_logger2=require("storybook/internal/node-logger");var import_picocolors32=__toESM(require_picocolors(),1),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)),Promise.resolve().then(()=>(init_block_svelte_webpack5(),block_svelte_webpack5_exports)),Promise.resolve().then(()=>(init_block_major_version(),block_major_version_exports)),Promise.resolve().then(()=>(init_block_experimental_addon_test(),block_experimental_addon_test_exports))],segmentDivider2=`
|
|
684
452
|
|
|
685
453
|
\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
|
|
686
454
|
|
|
687
|
-
`,autoblock=async(options,list=blockers())=>{if(list.length===0)return null;import_node_logger2.logger.info("Checking for upgrade blockers...");let faults=(await Promise.all(list.map(async i=>{let{blocker:
|
|
455
|
+
`,autoblock=async(options,list=blockers())=>{if(list.length===0)return null;import_node_logger2.logger.info("Checking for upgrade blockers...");let faults=(await Promise.all(list.map(async i=>{let{blocker:blocker7}=await i,result=await blocker7.check(options);return result?{id:blocker7.id,value:!0,log:blocker7.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_picocolors32.default.yellow("Fix the above issues and try running the upgrade command again.")};return import_node_logger2.logger.plain(boxen([messages.welcome].concat([`
|
|
688
456
|
|
|
689
|
-
`]).concat([faults.map(i=>i.log).join(segmentDivider2)]).concat([segmentDivider2,messages.reminder]).join(""),{borderStyle:"round",padding:1,borderColor:"#FC521F"})),faults[0].id}return import_node_logger2.logger.plain("No blockers found."),import_node_logger2.logger.line(),null};var versionRegex=/(@storybook\/[^@]+)@(\S+)/,getStorybookVersion=line=>{if(line.startsWith("npm "))return null;let match=versionRegex.exec(line);return!match||!(0,
|
|
690
|
-
`).map(getStorybookVersion).filter(item=>!!item).filter(pkg=>(0,
|
|
691
|
-
This version is behind the latest release, which is: ${
|
|
457
|
+
`]).concat([faults.map(i=>i.log).join(segmentDivider2)]).concat([segmentDivider2,messages.reminder]).join(""),{borderStyle:"round",padding:1,borderColor:"#FC521F"})),faults[0].id}return import_node_logger2.logger.plain("No blockers found."),import_node_logger2.logger.line(),null};var versionRegex=/(@storybook\/[^@]+)@(\S+)/,getStorybookVersion=line=>{if(line.startsWith("npm "))return null;let match=versionRegex.exec(line);return!match||!(0,import_semver12.clean)(match[2])?null:{package:match[1],version:match[2]}},getInstalledStorybookVersion=async packageManager=>{let installations=await packageManager.findInstallations(Object.keys(import_common24.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=pkg=>`${pkg.package}@${pkg.version}`,warnPackages=pkgs=>pkgs.forEach(pkg=>import_node_logger3.logger.warn(`- ${formatPackage(pkg)}`)),checkVersionConsistency=()=>{let storybookPackages=(0,import_cross_spawn2.sync)("npm",["ls"],{stdio:"pipe",shell:!0}).output.toString().split(`
|
|
458
|
+
`).map(getStorybookVersion).filter(item=>!!item).filter(pkg=>(0,import_common24.isCorePackage)(pkg.package));if(!storybookPackages.length){import_node_logger3.logger.warn("No storybook core packages found."),import_node_logger3.logger.warn("'npm ls | grep storybook' can show if multiple versions are installed.");return}storybookPackages.sort((a,b)=>import_semver12.default.rcompare(a.version,b.version));let latestVersion=storybookPackages[0].version,outdated=storybookPackages.filter(pkg=>pkg.version!==latestVersion);outdated.length>0&&(import_node_logger3.logger.warn(`Found ${outdated.length} outdated packages (relative to '${formatPackage(storybookPackages[0])}')`),import_node_logger3.logger.warn("Please make sure your packages are updated to ensure a consistent experience."),warnPackages(outdated)),deprecatedPackages.forEach(({minVersion,url,deprecations})=>{if(import_semver12.default.gte(latestVersion,minVersion)){let deprecated=storybookPackages.filter(pkg=>deprecations.includes(pkg.package));deprecated.length>0&&(import_node_logger3.logger.warn(`Found ${deprecated.length} deprecated packages since ${minVersion}`),import_node_logger3.logger.warn(`See ${url}`),warnPackages(deprecated))}})},doUpgrade=async({skipCheck,packageManager:packageManagerName,dryRun,configDir:userSpecifiedConfigDir,yes,...options})=>{let packageManager=import_common24.JsPackageManagerFactory.getPackageManager({force:packageManagerName}),beforeVersion=await getInstalledStorybookVersion(packageManager)??"0.0.0",currentCLIVersion=import_common24.versions.storybook,isCanary=currentCLIVersion.startsWith("0.0.0")||beforeVersion.startsWith("portal:")||beforeVersion.startsWith("workspace:");if(!await(0,import_cli4.hasStorybookDependencies)(packageManager))throw new import_server_errors.UpgradeStorybookInWrongWorkingDirectory;if(!isCanary&&(0,import_semver12.lt)(currentCLIVersion,beforeVersion))throw new import_server_errors.UpgradeStorybookToLowerVersionError({beforeVersion,currentVersion:currentCLIVersion});!isCanary&&(0,import_semver12.eq)(currentCLIVersion,beforeVersion)&&import_node_logger3.logger.warn(new import_server_errors.UpgradeStorybookToSameVersionError({beforeVersion}).message);let latestCLIVersionOnNPM=await packageManager.latestVersion("storybook"),isCLIOutdated=(0,import_semver12.lt)(currentCLIVersion,latestCLIVersionOnNPM),isCLIExactLatest=currentCLIVersion===latestCLIVersionOnNPM,isCLIPrerelease=(0,import_semver12.prerelease)(currentCLIVersion)!==null,isUpgrade=(0,import_semver12.lt)(beforeVersion,currentCLIVersion),borderColor=isCLIOutdated?"#FC521F":"#F1618C",messages={welcome:`Upgrading Storybook from version ${import_picocolors33.default.bold(beforeVersion)} to version ${import_picocolors33.default.bold(currentCLIVersion)}..`,notLatest:import_picocolors33.default.red(import_ts_dedent28.dedent`
|
|
459
|
+
This version is behind the latest release, which is: ${import_picocolors33.default.bold(latestCLIVersionOnNPM)}!
|
|
692
460
|
You likely ran the upgrade command through npx, which can use a locally cached version, to upgrade to the latest version please run:
|
|
693
|
-
${
|
|
461
|
+
${import_picocolors33.default.bold("npx storybook@latest upgrade")}
|
|
694
462
|
|
|
695
463
|
You may want to CTRL+C to stop, and run with the latest version instead.
|
|
696
|
-
`),prerelease:
|
|
697
|
-
`),{borderStyle:"round",padding:1,borderColor}));let results,{configDir,mainConfig,mainConfigPath,previewConfigPath,packageJson}=await getStorybookData({packageManager,configDir:userSpecifiedConfigDir});if(!beforeVersion)throw new import_server_errors.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
|
|
698
|
-
Storybook Environment Info:`));let activePackageManager=(await
|
|
464
|
+
`),prerelease:import_picocolors33.default.yellow("This is a pre-release version.")};import_node_logger3.logger.plain(boxen([messages.welcome].concat(isCLIOutdated&&!isCLIPrerelease?[messages.notLatest]:[]).concat(isCLIPrerelease?[messages.prerelease]:[]).join(`
|
|
465
|
+
`),{borderStyle:"round",padding:1,borderColor}));let results,{configDir,mainConfig,mainConfigPath,previewConfigPath,packageJson}=await getStorybookData({packageManager,configDir:userSpecifiedConfigDir});if(!beforeVersion)throw new import_server_errors.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_common24.versions).map(dependency=>{let char="^";return isCLIOutdated&&(char=""),isCanary&&(char=""),`${dependency}@${char}${import_common24.versions[dependency]}`}),upgradedDependencies=toUpgradedDependencies(packageJson.dependencies),upgradedDevDependencies=toUpgradedDependencies(packageJson.devDependencies);if(packageManager.type==="npm")try{packageJson.overrides||(packageJson.overrides={}),packageJson.overrides.storybook="$storybook",dryRun||(await packageManager.writePackageJson(packageJson),import_node_logger3.logger.info(`Added Storybook overrides to ${import_picocolors33.default.cyan("package.json")} to ensure consistent dependency resolution`))}catch{import_node_logger3.logger.warn("Failed to add Storybook overrides to package.json")}if(packageManager.type==="npm"){let getPackageName=dep=>{let lastAtIndex=dep.lastIndexOf("@");return lastAtIndex>0?dep.slice(0,lastAtIndex):dep};await packageManager.removeDependencies({skipInstall:!1},[...upgradedDependencies,...upgradedDevDependencies].map(getPackageName).filter(dep=>dep!=="storybook"));let findStorybookPackage=deps=>deps.find(dep=>getPackageName(dep)==="storybook"),storybookDep=findStorybookPackage(upgradedDependencies),storybookDevDep=findStorybookPackage(upgradedDevDependencies);storybookDep&&await packageManager.addDependencies({installAsDevDependencies:!1},[storybookDep]),storybookDevDep&&await packageManager.addDependencies({installAsDevDependencies:!0},[storybookDevDep])}import_node_logger3.logger.info(`Updating dependencies in ${import_picocolors33.default.cyan("package.json")}..`);let addDeps=async(deps,isDev)=>{deps.length>0&&await packageManager.addDependencies({installAsDevDependencies:isDev,skipInstall:!0,packageJson},deps)};await addDeps(upgradedDependencies,!1),await addDeps(upgradedDevDependencies,!0),await packageManager.installDependencies()}if(!skipCheck&&!results&&mainConfigPath&&(checkVersionConsistency(),results=await automigrate({dryRun,yes,packageManager,packageJson,mainConfig,configDir,previewConfigPath,mainConfigPath,beforeVersion,storybookVersion:currentCLIVersion,isUpgrade,isLatest:isCLIExactLatest})),!options.disableTelemetry){let{preCheckFailure,fixResults}=results||{};await(0,import_telemetry.telemetry)("upgrade",{beforeVersion,afterVersion:currentCLIVersion,...{automigrationResults:preCheckFailure?null:fixResults,automigrationPreCheckFailure:preCheckFailure||null}})}};async function upgrade(options){await(0,import_core_server.withTelemetry)("upgrade",{cliOptions:options},()=>doUpgrade(options))}(0,import_telemetry2.addToGlobalContext)("cliVersion",import_common25.versions.storybook);var consoleLogger=console,command=name=>import_commander.program.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)").option("--dev","Launch the development server after completing initialization. Enabled by default (default: true)",process.env.CI!=="true"&&process.env.IN_STORYBOOK_SANDBOX!=="true").option("--no-dev","Complete the initialization of Storybook without launching the Storybook development server");command("add <addon>").description("Add an addon to your Storybook").option("--package-manager <npm|pnpm|yarn1|yarn2|bun>","Force package manager for installing dependencies").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").option("-s --skip-postinstall","Skip package specific postinstall config modifications").option("-y --yes","Skip prompting the user").action((addonName,options)=>add(addonName,options));command("remove <addon>").description("Remove an addon from your Storybook").option("--package-manager <npm|pnpm|yarn1|yarn2|bun>","Force package manager for installing dependencies").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").action((addonName,options)=>(0,import_core_server2.withTelemetry)("remove",{cliOptions:options},async()=>{await(0,import_common25.removeAddon)(addonName,options),options.disableTelemetry||await(0,import_telemetry2.telemetry)("remove",{addon:addonName,source:"cli"})}));command("upgrade").description(`Upgrade your Storybook packages to v${import_common25.versions.storybook}`).option("--package-manager <npm|pnpm|yarn1|yarn2|bun>","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_picocolors34.default.bold(`
|
|
466
|
+
Storybook Environment Info:`));let activePackageManager=(await import_common25.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_picocolors34.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("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").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,dryRun,list,rename:rename4,parser})=>{migrate(migration,{configDir,glob,dryRun,list,rename:rename4,parser}).catch(err=>{import_node_logger4.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}).catch(e=>{import_node_logger4.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_logger4.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|bun>","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_logger4.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|bun>","Force package manager").option("-c, --config-dir <dir-name>","Directory of Storybook configuration").action(async options=>{await doctor(options).catch(e=>{import_node_logger4.logger.error(e),process.exit(1)})});import_commander.program.on("command:*",([invalidCmd])=>{consoleLogger.error(` Invalid command: %s.
|
|
699
467
|
See --help for a list of available commands.`,invalidCmd);let suggestion=import_commander.program.commands.map(cmd=>cmd.name()).find(cmd=>(0,import_leven.default)(cmd,invalidCmd)<3);suggestion&&consoleLogger.info(`
|
|
700
468
|
Did you mean ${suggestion}?`),process.exit(1)});import_commander.program.usage("<command> [options]").version(String(version)).parse(process.argv);
|