@storybook/cli 8.4.0-alpha.2 → 8.4.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin/index.js CHANGED
@@ -1,9 +1,8 @@
1
- import { __commonJS, __toESM, __require } from '../chunk-JBWKEMOK.js';
1
+ import { __commonJS, __toESM, require_picocolors, __require } from '../chunk-3VVDG2YT.js';
2
2
  import { versions, removeAddon, JsPackageManagerFactory, getStorybookInfo, getCoercedStorybookVersion, serverRequire, loadMainConfig, frameworkPackages, temporaryFile, isCorePackage, rendererPackages, commonGlobOptions, extractProperFrameworkName, builderPackages } from 'storybook/internal/common';
3
3
  import { withTelemetry } from 'storybook/internal/core-server';
4
4
  import { logger as logger$1 } from 'storybook/internal/node-logger';
5
5
  import { addToGlobalContext, telemetry } from 'storybook/internal/telemetry';
6
- import chalk22, { cyan, yellow } from 'chalk';
7
6
  import { program } from 'commander';
8
7
  import envinfo from 'envinfo';
9
8
  import { findPackageSync } from 'fd-package-json';
@@ -17,8 +16,9 @@ import { dedent } from 'ts-dedent';
17
16
  import { types } from 'storybook/internal/babel';
18
17
  import { existsSync, createWriteStream } from 'node:fs';
19
18
  import { rename, rm, readFile, mkdir, readdir, writeFile } from 'node:fs/promises';
20
- import process2 from 'node:process';
21
- import { EOL } from 'node:os';
19
+ import process3 from 'node:process';
20
+ import os, { EOL } from 'node:os';
21
+ import tty from 'node:tty';
22
22
  import { getStorybookVersionSpecifier, hasStorybookDependencies, isNxProject, AngularJSON, extractEslintInfo, findEslintFile, SUPPORTED_ESLINT_EXTENSIONS, configureEslintPlugin, frameworkToRenderer, CoreWebpackCompilers, builderNameToCoreBuilder, frameworkToDefaultBuilder, CoreBuilder, compilerNameToCoreCompiler, detectPnp } from 'storybook/internal/cli';
23
23
  import { listCodemods, runCodemod } from '@storybook/codemod';
24
24
  import { glob } from 'glob';
@@ -30,98 +30,102 @@ import { downloadTemplate } from 'giget';
30
30
  import { UpgradeStorybookInWrongWorkingDirectory, UpgradeStorybookToLowerVersionError, UpgradeStorybookToSameVersionError, UpgradeStorybookUnknownCurrentVersionError } from 'storybook/internal/server-errors';
31
31
 
32
32
  var require_eastasianwidth=__commonJS({"../../node_modules/eastasianwidth/eastasianwidth.js"(exports,module){var eaw={};typeof module>"u"?window.eastasianwidth=eaw:module.exports=eaw;eaw.eastAsianWidth=function(character){var x=character.charCodeAt(0),y=character.length==2?character.charCodeAt(1):0,codePoint=x;return 55296<=x&&x<=56319&&56320<=y&&y<=57343&&(x&=1023,y&=1023,codePoint=x<<10|y,codePoint+=65536),codePoint==12288||65281<=codePoint&&codePoint<=65376||65504<=codePoint&&codePoint<=65510?"F":codePoint==8361||65377<=codePoint&&codePoint<=65470||65474<=codePoint&&codePoint<=65479||65482<=codePoint&&codePoint<=65487||65490<=codePoint&&codePoint<=65495||65498<=codePoint&&codePoint<=65500||65512<=codePoint&&codePoint<=65518?"H":4352<=codePoint&&codePoint<=4447||4515<=codePoint&&codePoint<=4519||4602<=codePoint&&codePoint<=4607||9001<=codePoint&&codePoint<=9002||11904<=codePoint&&codePoint<=11929||11931<=codePoint&&codePoint<=12019||12032<=codePoint&&codePoint<=12245||12272<=codePoint&&codePoint<=12283||12289<=codePoint&&codePoint<=12350||12353<=codePoint&&codePoint<=12438||12441<=codePoint&&codePoint<=12543||12549<=codePoint&&codePoint<=12589||12593<=codePoint&&codePoint<=12686||12688<=codePoint&&codePoint<=12730||12736<=codePoint&&codePoint<=12771||12784<=codePoint&&codePoint<=12830||12832<=codePoint&&codePoint<=12871||12880<=codePoint&&codePoint<=13054||13056<=codePoint&&codePoint<=19903||19968<=codePoint&&codePoint<=42124||42128<=codePoint&&codePoint<=42182||43360<=codePoint&&codePoint<=43388||44032<=codePoint&&codePoint<=55203||55216<=codePoint&&codePoint<=55238||55243<=codePoint&&codePoint<=55291||63744<=codePoint&&codePoint<=64255||65040<=codePoint&&codePoint<=65049||65072<=codePoint&&codePoint<=65106||65108<=codePoint&&codePoint<=65126||65128<=codePoint&&codePoint<=65131||110592<=codePoint&&codePoint<=110593||127488<=codePoint&&codePoint<=127490||127504<=codePoint&&codePoint<=127546||127552<=codePoint&&codePoint<=127560||127568<=codePoint&&codePoint<=127569||131072<=codePoint&&codePoint<=194367||177984<=codePoint&&codePoint<=196605||196608<=codePoint&&codePoint<=262141?"W":32<=codePoint&&codePoint<=126||162<=codePoint&&codePoint<=163||165<=codePoint&&codePoint<=166||codePoint==172||codePoint==175||10214<=codePoint&&codePoint<=10221||10629<=codePoint&&codePoint<=10630?"Na":codePoint==161||codePoint==164||167<=codePoint&&codePoint<=168||codePoint==170||173<=codePoint&&codePoint<=174||176<=codePoint&&codePoint<=180||182<=codePoint&&codePoint<=186||188<=codePoint&&codePoint<=191||codePoint==198||codePoint==208||215<=codePoint&&codePoint<=216||222<=codePoint&&codePoint<=225||codePoint==230||232<=codePoint&&codePoint<=234||236<=codePoint&&codePoint<=237||codePoint==240||242<=codePoint&&codePoint<=243||247<=codePoint&&codePoint<=250||codePoint==252||codePoint==254||codePoint==257||codePoint==273||codePoint==275||codePoint==283||294<=codePoint&&codePoint<=295||codePoint==299||305<=codePoint&&codePoint<=307||codePoint==312||319<=codePoint&&codePoint<=322||codePoint==324||328<=codePoint&&codePoint<=331||codePoint==333||338<=codePoint&&codePoint<=339||358<=codePoint&&codePoint<=359||codePoint==363||codePoint==462||codePoint==464||codePoint==466||codePoint==468||codePoint==470||codePoint==472||codePoint==474||codePoint==476||codePoint==593||codePoint==609||codePoint==708||codePoint==711||713<=codePoint&&codePoint<=715||codePoint==717||codePoint==720||728<=codePoint&&codePoint<=731||codePoint==733||codePoint==735||768<=codePoint&&codePoint<=879||913<=codePoint&&codePoint<=929||931<=codePoint&&codePoint<=937||945<=codePoint&&codePoint<=961||963<=codePoint&&codePoint<=969||codePoint==1025||1040<=codePoint&&codePoint<=1103||codePoint==1105||codePoint==8208||8211<=codePoint&&codePoint<=8214||8216<=codePoint&&codePoint<=8217||8220<=codePoint&&codePoint<=8221||8224<=codePoint&&codePoint<=8226||8228<=codePoint&&codePoint<=8231||codePoint==8240||8242<=codePoint&&codePoint<=8243||codePoint==8245||codePoint==8251||codePoint==8254||codePoint==8308||codePoint==8319||8321<=codePoint&&codePoint<=8324||codePoint==8364||codePoint==8451||codePoint==8453||codePoint==8457||codePoint==8467||codePoint==8470||8481<=codePoint&&codePoint<=8482||codePoint==8486||codePoint==8491||8531<=codePoint&&codePoint<=8532||8539<=codePoint&&codePoint<=8542||8544<=codePoint&&codePoint<=8555||8560<=codePoint&&codePoint<=8569||codePoint==8585||8592<=codePoint&&codePoint<=8601||8632<=codePoint&&codePoint<=8633||codePoint==8658||codePoint==8660||codePoint==8679||codePoint==8704||8706<=codePoint&&codePoint<=8707||8711<=codePoint&&codePoint<=8712||codePoint==8715||codePoint==8719||codePoint==8721||codePoint==8725||codePoint==8730||8733<=codePoint&&codePoint<=8736||codePoint==8739||codePoint==8741||8743<=codePoint&&codePoint<=8748||codePoint==8750||8756<=codePoint&&codePoint<=8759||8764<=codePoint&&codePoint<=8765||codePoint==8776||codePoint==8780||codePoint==8786||8800<=codePoint&&codePoint<=8801||8804<=codePoint&&codePoint<=8807||8810<=codePoint&&codePoint<=8811||8814<=codePoint&&codePoint<=8815||8834<=codePoint&&codePoint<=8835||8838<=codePoint&&codePoint<=8839||codePoint==8853||codePoint==8857||codePoint==8869||codePoint==8895||codePoint==8978||9312<=codePoint&&codePoint<=9449||9451<=codePoint&&codePoint<=9547||9552<=codePoint&&codePoint<=9587||9600<=codePoint&&codePoint<=9615||9618<=codePoint&&codePoint<=9621||9632<=codePoint&&codePoint<=9633||9635<=codePoint&&codePoint<=9641||9650<=codePoint&&codePoint<=9651||9654<=codePoint&&codePoint<=9655||9660<=codePoint&&codePoint<=9661||9664<=codePoint&&codePoint<=9665||9670<=codePoint&&codePoint<=9672||codePoint==9675||9678<=codePoint&&codePoint<=9681||9698<=codePoint&&codePoint<=9701||codePoint==9711||9733<=codePoint&&codePoint<=9734||codePoint==9737||9742<=codePoint&&codePoint<=9743||9748<=codePoint&&codePoint<=9749||codePoint==9756||codePoint==9758||codePoint==9792||codePoint==9794||9824<=codePoint&&codePoint<=9825||9827<=codePoint&&codePoint<=9829||9831<=codePoint&&codePoint<=9834||9836<=codePoint&&codePoint<=9837||codePoint==9839||9886<=codePoint&&codePoint<=9887||9918<=codePoint&&codePoint<=9919||9924<=codePoint&&codePoint<=9933||9935<=codePoint&&codePoint<=9953||codePoint==9955||9960<=codePoint&&codePoint<=9983||codePoint==10045||codePoint==10071||10102<=codePoint&&codePoint<=10111||11093<=codePoint&&codePoint<=11097||12872<=codePoint&&codePoint<=12879||57344<=codePoint&&codePoint<=63743||65024<=codePoint&&codePoint<=65039||codePoint==65533||127232<=codePoint&&codePoint<=127242||127248<=codePoint&&codePoint<=127277||127280<=codePoint&&codePoint<=127337||127344<=codePoint&&codePoint<=127386||917760<=codePoint&&codePoint<=917999||983040<=codePoint&&codePoint<=1048573||1048576<=codePoint&&codePoint<=1114109?"A":"N"};eaw.characterLength=function(character){var code=this.eastAsianWidth(character);return code=="F"||code=="W"||code=="A"?2:1};function stringToArray(string){return string.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}eaw.length=function(string){for(var characters=stringToArray(string),len=0,i=0;i<characters.length;i++)len=len+this.characterLength(characters[i]);return len};eaw.slice=function(text,start,end){textLen=eaw.length(text),start=start||0,end=end||1,start<0&&(start=textLen+start),end<0&&(end=textLen+end);for(var result="",eawLen=0,chars=stringToArray(text),i=0;i<chars.length;i++){var char=chars[i],charLen=eaw.length(char);if(eawLen>=start-(charLen==2?1:0))if(eawLen+charLen<=end)result+=char;else break;eawLen+=charLen;}return result};}});var require_emoji_regex=__commonJS({"../../node_modules/emoji-regex/index.js"(exports,module){module.exports=function(){return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g};}});var require_boxes=__commonJS({"../../node_modules/cli-boxes/boxes.json"(exports,module){module.exports={single:{topLeft:"\u250C",top:"\u2500",topRight:"\u2510",right:"\u2502",bottomRight:"\u2518",bottom:"\u2500",bottomLeft:"\u2514",left:"\u2502"},double:{topLeft:"\u2554",top:"\u2550",topRight:"\u2557",right:"\u2551",bottomRight:"\u255D",bottom:"\u2550",bottomLeft:"\u255A",left:"\u2551"},round:{topLeft:"\u256D",top:"\u2500",topRight:"\u256E",right:"\u2502",bottomRight:"\u256F",bottom:"\u2500",bottomLeft:"\u2570",left:"\u2502"},bold:{topLeft:"\u250F",top:"\u2501",topRight:"\u2513",right:"\u2503",bottomRight:"\u251B",bottom:"\u2501",bottomLeft:"\u2517",left:"\u2503"},singleDouble:{topLeft:"\u2553",top:"\u2500",topRight:"\u2556",right:"\u2551",bottomRight:"\u255C",bottom:"\u2500",bottomLeft:"\u2559",left:"\u2551"},doubleSingle:{topLeft:"\u2552",top:"\u2550",topRight:"\u2555",right:"\u2502",bottomRight:"\u255B",bottom:"\u2550",bottomLeft:"\u2558",left:"\u2502"},classic:{topLeft:"+",top:"-",topRight:"+",right:"|",bottomRight:"+",bottom:"-",bottomLeft:"+",left:"|"},arrow:{topLeft:"\u2198",top:"\u2193",topRight:"\u2199",right:"\u2190",bottomRight:"\u2196",bottom:"\u2191",bottomLeft:"\u2197",left:"\u2192"}};}});var require_cli_boxes=__commonJS({"../../node_modules/cli-boxes/index.js"(exports,module){var cliBoxes2=require_boxes();module.exports=cliBoxes2;module.exports.default=cliBoxes2;}});var require_ansi_regex=__commonJS({"../../node_modules/string-width/node_modules/ansi-regex/index.js"(exports,module){module.exports=({onlyFirst=!1}={})=>{let pattern=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(pattern,onlyFirst?void 0:"g")};}});var require_strip_ansi=__commonJS({"../../node_modules/string-width/node_modules/strip-ansi/index.js"(exports,module){var ansiRegex3=require_ansi_regex();module.exports=string=>typeof string=="string"?string.replace(ansiRegex3(),""):string;}});var require_is_fullwidth_code_point=__commonJS({"../../node_modules/is-fullwidth-code-point/index.js"(exports,module){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);module.exports=isFullwidthCodePoint;module.exports.default=isFullwidthCodePoint;}});var require_emoji_regex2=__commonJS({"../../node_modules/string-width/node_modules/emoji-regex/index.js"(exports,module){module.exports=function(){return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g};}});var require_string_width=__commonJS({"../../node_modules/string-width/index.js"(exports,module){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};module.exports=stringWidth4;module.exports.default=stringWidth4;}});var require_ansi_align=__commonJS({"../../node_modules/ansi-align/index.js"(exports,module){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||`
33
- `,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"})};module.exports=ansiAlign2;function halfDiff(maxWidth,curWidth){return Math.floor((maxWidth-curWidth)/2)}function fullDiff(maxWidth,curWidth){return maxWidth-curWidth}}});var defaultRequireWrapperName="getAbsolutePath";function doesVariableOrFunctionDeclarationExist(node,name){return types.isVariableDeclaration(node)&&node.declarations.length===1&&types.isVariableDeclarator(node.declarations[0])&&types.isIdentifier(node.declarations[0].id)&&node.declarations[0].id?.name===name||types.isFunctionDeclaration(node)&&types.isIdentifier(node.id)&&node.id.name===name}function getReferenceToRequireWrapper(config,value){return types.callExpression(types.identifier(getRequireWrapperName(config)??defaultRequireWrapperName),[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(types.isStringLiteral(node))return cb(node),!0;if(types.isObjectExpression(node)){let nameProperty=node.properties.find(property=>types.isObjectProperty(property)&&types.isIdentifier(property.key)&&property.key.name==="name");if(nameProperty&&types.isStringLiteral(nameProperty.value))return cb(nameProperty),!0}return 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&&types.isArrayExpression(addons)?[addons]:[]]}function getRequireWrapperAsCallExpression(isConfigTypescript){let functionDeclaration={...types.functionDeclaration(types.identifier(defaultRequireWrapperName),[{...types.identifier("value"),...isConfigTypescript?{typeAnnotation:types.tsTypeAnnotation(types.tSStringKeyword())}:{}}],types.blockStatement([types.returnStatement(types.callExpression(types.identifier("dirname"),[types.callExpression(types.memberExpression(types.identifier("require"),types.identifier("resolve")),[types.callExpression(types.identifier("join"),[types.identifier("value"),types.stringLiteral("package.json")])])]))])),...isConfigTypescript?{returnType:types.tSTypeAnnotation(types.tsAnyKeyword())}:{}};return types.addComment(functionDeclaration,"leading",`*
33
+ `,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"})};module.exports=ansiAlign2;function halfDiff(maxWidth,curWidth){return Math.floor((maxWidth-curWidth)/2)}function fullDiff(maxWidth,curWidth){return maxWidth-curWidth}}});var import_picocolors40=__toESM(require_picocolors(),1);var defaultRequireWrapperName="getAbsolutePath";function doesVariableOrFunctionDeclarationExist(node,name){return types.isVariableDeclaration(node)&&node.declarations.length===1&&types.isVariableDeclarator(node.declarations[0])&&types.isIdentifier(node.declarations[0].id)&&node.declarations[0].id?.name===name||types.isFunctionDeclaration(node)&&types.isIdentifier(node.id)&&node.id.name===name}function getReferenceToRequireWrapper(config,value){return types.callExpression(types.identifier(getRequireWrapperName(config)??defaultRequireWrapperName),[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(types.isStringLiteral(node))return cb(node),!0;if(types.isObjectExpression(node)){let nameProperty=node.properties.find(property=>types.isObjectProperty(property)&&types.isIdentifier(property.key)&&property.key.name==="name");if(nameProperty&&types.isStringLiteral(nameProperty.value))return cb(nameProperty),!0}return 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&&types.isArrayExpression(addons)?[addons]:[]]}function getRequireWrapperAsCallExpression(isConfigTypescript){let functionDeclaration={...types.functionDeclaration(types.identifier(defaultRequireWrapperName),[{...types.identifier("value"),...isConfigTypescript?{typeAnnotation:types.tsTypeAnnotation(types.tSStringKeyword())}:{}}],types.blockStatement([types.returnStatement(types.callExpression(types.identifier("dirname"),[types.callExpression(types.memberExpression(types.identifier("require"),types.identifier("resolve")),[types.callExpression(types.identifier("join"),[types.identifier("value"),types.stringLiteral("package.json")])])]))])),...isConfigTypescript?{returnType:types.tSTypeAnnotation(types.tsAnyKeyword())}:{}};return types.addComment(functionDeclaration,"leading",`*
34
34
  * This function is used to resolve the absolute path of a package.
35
35
  * It is needed in projects that use Yarn PnP or are set up within a monorepo.
36
36
  `),functionDeclaration}function wrapValueWithRequireWrapper(config,node){isRequireWrapperNecessary(node,n=>{if(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];});}types.isObjectProperty(n)&&types.isStringLiteral(n.value)&&(n.value=getReferenceToRequireWrapper(config,n.value.value)),types.isArrayExpression(n)&&n.elements.forEach((element,index,elements)=>{types.isStringLiteral(element)&&(elements[index]=getReferenceToRequireWrapper(config,element.value));});});}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]},requireMain=configDir=>{let absoluteConfigDir=isAbsolute(configDir)?configDir:join(process.cwd(),configDir),mainFile=join(absoluteConfigDir,"main");return serverRequire(mainFile)??{}},checkInstalled=(addonName,main)=>!!main.addons?.find(entry=>(typeof entry=="string"?entry:entry.name)?.endsWith(addonName)),isCoreAddon=addonName=>Object.hasOwn(versions,addonName);async function add(addon,{packageManager:pkgMgr,skipPostinstall,configDir:userSpecifiedConfigDir},logger28=console){let[addonName,inputVersion]=getVersionSpecifier(addon),packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),packageJson=await packageManager.retrievePackageJson(),{mainConfig,configDir:inferredConfigDir}=getStorybookInfo(packageJson,userSpecifiedConfigDir),configDir=userSpecifiedConfigDir||inferredConfigDir||".storybook";if(typeof configDir>"u")throw new Error(dedent`
37
37
  Unable to find storybook config directory. Please specify your Storybook config directory with the --config-dir flag.
38
- `);if(!mainConfig){logger28.error("Unable to find Storybook main.js config");return}let shouldAddToMain=!0;if(checkInstalled(addonName,requireMain(configDir))){let{shouldForceInstall}=await prompts6({type:"confirm",name:"shouldForceInstall",message:`The Storybook addon "${addonName}" is already present in ${mainConfig}. Do you wish to install it again?`});if(!shouldForceInstall)return;shouldAddToMain=!1;}let main=await readConfig(mainConfig);logger28.log(`Verifying ${addonName}`);let storybookVersion=await getCoercedStorybookVersion(packageManager),version=inputVersion;!version&&isCoreAddon(addonName)&&storybookVersion&&(version=storybookVersion),version||(version=await packageManager.latestVersion(addonName)),isCoreAddon(addonName)&&version!==storybookVersion&&logger28.warn(`The version of ${addonName} you are installing is not the same as the version of Storybook you are using. This may lead to unexpected behavior.`);let addonWithVersion=isValidVersion(version)?`${addonName}@^${version}`:`${addonName}@${version}`;if(logger28.log(`Installing ${addonWithVersion}`),await packageManager.addDependencies({installAsDevDependencies:!0},[addonWithVersion]),shouldAddToMain){if(logger28.log(`Adding '${addon}' to the "addons" field in ${mainConfig}`),main.getFieldNode(["addons"])&&getRequireWrapperName(main)!==null){let addonNode=main.valueToNode(addonName);main.appendNodeToArray(["addons"],addonNode),wrapValueWithRequireWrapper(main,addonNode);}else main.appendValueToArray(["addons"],addonName);await writeConfig(main);}!skipPostinstall&&isCoreAddon(addonName)&&await postinstallAddon(addonName,{packageManager:packageManager.type,configDir});}function isValidVersion(version){return semver.valid(version)||version.match(/^\d+$/)}function ansiRegex({onlyFirst=!1}={}){let pattern=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(pattern,onlyFirst?void 0:"g")}var regex=ansiRegex();function stripAnsi(string){if(typeof string!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);return string.replace(regex,"")}var import_eastasianwidth=__toESM(require_eastasianwidth(),1),import_emoji_regex=__toESM(require_emoji_regex(),1);function stringWidth(string,options={}){if(typeof string!="string"||string.length===0||(options={ambiguousIsNarrow:!0,...options},string=stripAnsi(string),string.length===0))return 0;string=string.replace((0, import_emoji_regex.default)()," ");let ambiguousCharacterWidth=options.ambiguousIsNarrow?1:2,width=0;for(let character of string){let codePoint=character.codePointAt(0);if(codePoint<=31||codePoint>=127&&codePoint<=159||codePoint>=768&&codePoint<=879)continue;switch(import_eastasianwidth.default.eastAsianWidth(character)){case"F":case"W":width+=2;break;case"A":width+=ambiguousCharacterWidth;break;default:width+=1;}}return width}var import_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(`
39
- `))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,(_,identifier)=>toUpperCase(identifier)).replace(NUMBERS_AND_IDENTIFIER,m=>toUpperCase(m)));function camelCase(input,options){if(!(typeof input=="string"||Array.isArray(input)))throw new TypeError("Expected the input to be `string | string[]`");if(options={pascalCase:!1,preserveConsecutiveUppercase:!1,...options},Array.isArray(input)?input=input.map(x=>x.trim()).filter(x=>x.length).join("-"):input=input.trim(),input.length===0)return "";let toLowerCase=options.locale===!1?string=>string.toLowerCase():string=>string.toLocaleLowerCase(options.locale),toUpperCase=options.locale===!1?string=>string.toUpperCase():string=>string.toLocaleUpperCase(options.locale);return input.length===1?SEPARATORS.test(input)?"":options.pascalCase?toUpperCase(input):toLowerCase(input):(input!==toLowerCase(input)&&(input=preserveCamelCase(input,toLowerCase,toUpperCase,options.preserveConsecutiveUppercase)),input=input.replace(LEADING_SEPARATORS,""),input=options.preserveConsecutiveUppercase?preserveConsecutiveUppercase(input,toLowerCase):toLowerCase(input),options.pascalCase&&(input=toUpperCase(input.charAt(0))+input.slice(1)),postProcess(input,toUpperCase))}var import_ansi_align=__toESM(require_ansi_align(),1);var import_eastasianwidth3=__toESM(require_eastasianwidth(),1),import_emoji_regex3=__toESM(require_emoji_regex(),1);function stringWidth3(string,options={}){if(typeof string!="string"||string.length===0||(options={ambiguousIsNarrow:!0,...options},string=stripAnsi(string),string.length===0))return 0;string=string.replace((0, import_emoji_regex3.default)()," ");let ambiguousCharacterWidth=options.ambiguousIsNarrow?1:2,width=0;for(let character of string){let codePoint=character.codePointAt(0);if(codePoint<=31||codePoint>=127&&codePoint<=159||codePoint>=768&&codePoint<=879)continue;switch(import_eastasianwidth3.default.eastAsianWidth(character)){case"F":case"W":width+=2;break;case"A":width+=ambiguousCharacterWidth;break;default:width+=1;}}return width}var wrapAnsi16=(offset=0)=>code=>`\x1B[${code+offset}m`,wrapAnsi256=(offset=0)=>code=>`\x1B[${38+offset};5;${code}m`,wrapAnsi16m=(offset=0)=>(red,green,blue)=>`\x1B[${38+offset};2;${red};${green};${blue}m`,styles={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(styles.modifier);var foregroundColorNames=Object.keys(styles.color),backgroundColorNames=Object.keys(styles.bgColor);[...foregroundColorNames,...backgroundColorNames];function assembleStyles(){let codes=new Map;for(let[groupName,group]of Object.entries(styles)){for(let[styleName,style]of Object.entries(group))styles[styleName]={open:`\x1B[${style[0]}m`,close:`\x1B[${style[1]}m`},group[styleName]=styles[styleName],codes.set(style[0],style[1]);Object.defineProperty(styles,groupName,{value:group,enumerable:!1});}return Object.defineProperty(styles,"codes",{value:codes,enumerable:!1}),styles.color.close="\x1B[39m",styles.bgColor.close="\x1B[49m",styles.color.ansi=wrapAnsi16(),styles.color.ansi256=wrapAnsi256(),styles.color.ansi16m=wrapAnsi16m(),styles.bgColor.ansi=wrapAnsi16(10),styles.bgColor.ansi256=wrapAnsi256(10),styles.bgColor.ansi16m=wrapAnsi16m(10),Object.defineProperties(styles,{rgbToAnsi256:{value:(red,green,blue)=>red===green&&green===blue?red<8?16:red>248?231:Math.round((red-8)/247*24)+232:16+36*Math.round(red/255*5)+6*Math.round(green/255*5)+Math.round(blue/255*5),enumerable:!1},hexToRgb:{value:hex=>{let matches=/[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));if(!matches)return [0,0,0];let[colorString]=matches;colorString.length===3&&(colorString=[...colorString].map(character=>character+character).join(""));let integer=Number.parseInt(colorString,16);return [integer>>16&255,integer>>8&255,integer&255]},enumerable:!1},hexToAnsi256:{value:hex=>styles.rgbToAnsi256(...styles.hexToRgb(hex)),enumerable:!1},ansi256ToAnsi:{value:code=>{if(code<8)return 30+code;if(code<16)return 90+(code-8);let red,green,blue;if(code>=232)red=((code-232)*10+8)/255,green=red,blue=red;else {code-=16;let remainder=code%36;red=Math.floor(code/36)/5,green=Math.floor(remainder/6)/5,blue=remainder%6/5;}let value=Math.max(red,green,blue)*2;if(value===0)return 30;let result=30+(Math.round(blue)<<2|Math.round(green)<<1|Math.round(red));return value===2&&(result+=60),result},enumerable:!1},rgbToAnsi:{value:(red,green,blue)=>styles.ansi256ToAnsi(styles.rgbToAnsi256(red,green,blue)),enumerable:!1},hexToAnsi:{value:hex=>styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),enumerable:!1}}),styles}var ansiStyles=assembleStyles(),ansi_styles_default=ansiStyles;var ESCAPES=new Set(["\x1B","\x9B"]),END_CODE=39,ANSI_ESCAPE_BELL="\x07",ANSI_CSI="[",ANSI_OSC="]",ANSI_SGR_TERMINATOR="m",ANSI_ESCAPE_LINK=`${ANSI_OSC}8;;`,wrapAnsiCode=code=>`${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`,wrapAnsiHyperlink=uri=>`${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`,wordLengths=string=>string.split(" ").map(character=>stringWidth3(character)),wrapWord=(rows,word,columns)=>{let characters=[...word],isInsideEscape=!1,isInsideLinkEscape=!1,visible=stringWidth3(stripAnsi(rows[rows.length-1]));for(let[index,character]of characters.entries()){let characterLength=stringWidth3(character);if(visible+characterLength<=columns?rows[rows.length-1]+=character:(rows.push(character),visible=0),ESCAPES.has(character)&&(isInsideEscape=!0,isInsideLinkEscape=characters.slice(index+1).join("").startsWith(ANSI_ESCAPE_LINK)),isInsideEscape){isInsideLinkEscape?character===ANSI_ESCAPE_BELL&&(isInsideEscape=!1,isInsideLinkEscape=!1):character===ANSI_SGR_TERMINATOR&&(isInsideEscape=!1);continue}visible+=characterLength,visible===columns&&index<characters.length-1&&(rows.push(""),visible=0);}!visible&&rows[rows.length-1].length>0&&rows.length>1&&(rows[rows.length-2]+=rows.pop());},stringVisibleTrimSpacesRight=string=>{let words=string.split(" "),last=words.length;for(;last>0&&!(stringWidth3(words[last-1])>0);)last--;return last===words.length?string:words.slice(0,last).join(" ")+words.slice(last).join("")},exec=(string,columns,options={})=>{if(options.trim!==!1&&string.trim()==="")return "";let returnValue="",escapeCode,escapeUrl,lengths=wordLengths(string),rows=[""];for(let[index,word]of string.split(" ").entries()){options.trim!==!1&&(rows[rows.length-1]=rows[rows.length-1].trimStart());let rowLength=stringWidth3(rows[rows.length-1]);if(index!==0&&(rowLength>=columns&&(options.wordWrap===!1||options.trim===!1)&&(rows.push(""),rowLength=0),(rowLength>0||options.trim===!1)&&(rows[rows.length-1]+=" ",rowLength++)),options.hard&&lengths[index]>columns){let remainingColumns=columns-rowLength,breaksStartingThisLine=1+Math.floor((lengths[index]-remainingColumns-1)/columns);Math.floor((lengths[index]-1)/columns)<breaksStartingThisLine&&rows.push(""),wrapWord(rows,word,columns);continue}if(rowLength+lengths[index]>columns&&rowLength>0&&lengths[index]>0){if(options.wordWrap===!1&&rowLength<columns){wrapWord(rows,word,columns);continue}rows.push("");}if(rowLength+lengths[index]>columns&&options.wordWrap===!1){wrapWord(rows,word,columns);continue}rows[rows.length-1]+=word;}options.trim!==!1&&(rows=rows.map(row=>stringVisibleTrimSpacesRight(row)));let pre=[...rows.join(`
40
- `)];for(let[index,character]of pre.entries()){if(returnValue+=character,ESCAPES.has(character)){let{groups}=new RegExp(`(?:\\${ANSI_CSI}(?<code>\\d+)m|\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join(""))||{groups:{}};if(groups.code!==void 0){let code2=Number.parseFloat(groups.code);escapeCode=code2===END_CODE?void 0:code2;}else groups.uri!==void 0&&(escapeUrl=groups.uri.length===0?void 0:groups.uri);}let code=ansi_styles_default.codes.get(Number(escapeCode));pre[index+1]===`
38
+ `);if(!mainConfig){logger28.error("Unable to find Storybook main.js config");return}let shouldAddToMain=!0;if(checkInstalled(addonName,requireMain(configDir))){let{shouldForceInstall}=await prompts6({type:"confirm",name:"shouldForceInstall",message:`The Storybook addon "${addonName}" is already present in ${mainConfig}. Do you wish to install it again?`});if(!shouldForceInstall)return;shouldAddToMain=!1;}let main=await readConfig(mainConfig);logger28.log(`Verifying ${addonName}`);let storybookVersion=await getCoercedStorybookVersion(packageManager),version=inputVersion;!version&&isCoreAddon(addonName)&&storybookVersion&&(version=storybookVersion),version||(version=await packageManager.latestVersion(addonName)),isCoreAddon(addonName)&&version!==storybookVersion&&logger28.warn(`The version of ${addonName} you are installing is not the same as the version of Storybook you are using. This may lead to unexpected behavior.`);let addonWithVersion=isValidVersion(version)?`${addonName}@^${version}`:`${addonName}@${version}`;if(logger28.log(`Installing ${addonWithVersion}`),await packageManager.addDependencies({installAsDevDependencies:!0},[addonWithVersion]),shouldAddToMain){if(logger28.log(`Adding '${addon}' to the "addons" field in ${mainConfig}`),main.getFieldNode(["addons"])&&getRequireWrapperName(main)!==null){let addonNode=main.valueToNode(addonName);main.appendNodeToArray(["addons"],addonNode),wrapValueWithRequireWrapper(main,addonNode);}else main.appendValueToArray(["addons"],addonName);await writeConfig(main);}!skipPostinstall&&isCoreAddon(addonName)&&await postinstallAddon(addonName,{packageManager:packageManager.type,configDir});}function isValidVersion(version){return semver.valid(version)||version.match(/^\d+$/)}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]}};Object.keys(styles.modifier);var foregroundColorNames=Object.keys(styles.color),backgroundColorNames=Object.keys(styles.bgColor);[...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;function hasFlag(flag,argv=globalThis.Deno?globalThis.Deno.args:process3.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}=process3,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(process3.platform==="win32"){let osRelease=os.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"in env||"GITEA_ACTIONS"in env?3:["TRAVIS","CIRCLECI","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 version=Number.parseInt((env.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(env.TERM_PROGRAM){case"iTerm.app":return version>=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:tty.isatty(1)}),stderr:createSupportsColor({isTTY:tty.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
39
+ `:`
40
+ `)+postfix,endIndex=index+1,index=string.indexOf(`
41
+ `,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(`
42
+ `);return lfIndex!==-1&&(string=stringEncaseCRLFWithFirstIndex(string,closeAll,openAll,lfIndex)),openAll+string+closeAll};Object.defineProperties(createChalk.prototype,styles2);var chalk=createChalk();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(`
43
+ `))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,(_,identifier)=>toUpperCase(identifier)).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]}};Object.keys(styles3.modifier);var foregroundColorNames2=Object.keys(styles3.color),backgroundColorNames2=Object.keys(styles3.bgColor);[...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(`
44
+ `)];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]===`
41
45
  `?(escapeUrl&&(returnValue+=wrapAnsiHyperlink("")),escapeCode&&code&&(returnValue+=wrapAnsiCode(code))):character===`
42
46
  `&&(escapeCode&&code&&(returnValue+=wrapAnsiCode(escapeCode)),escapeUrl&&(returnValue+=wrapAnsiHyperlink(escapeUrl)));}return returnValue};function wrapAnsi(string,columns,options){return String(string).normalize().replace(/\r\n/g,`
43
47
  `).split(`
44
48
  `).map(line=>exec(line,columns,options)).join(`
45
49
  `)}__toESM(require_cli_boxes(),1);var NEWLINE=`
46
- `,PAD=" ",NONE="none",terminalColumns=()=>{let{env,stdout,stderr}=process2;return stdout?.columns?stdout.columns:stderr?.columns?stderr.columns:env.COLUMNS?Number.parseInt(env.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(`
47
- `),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?chalk22.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&&process2?.stdout){let newDimensions=[process2.stdout.columns,process2.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"&&(chalk22[color]??isHex(color)),getColorFn=color=>isHex(color)?chalk22.hex(color):chalk22[color],getBGColorFn=color=>isHex(color)?chalk22.bgHex(color):chalk22[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 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
50
+ `,PAD=" ",NONE="none",terminalColumns=()=>{let{env:env2,stdout,stderr}=process3;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(`
51
+ `),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&&process3?.stdout){let newDimensions=[process3.stdout.columns,process3.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_picocolors35=__toESM(require_picocolors(),1);var import_picocolors5=__toESM(require_picocolors(),1);var 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
48
52
  \u2502`).replace(/││/g,`\u2502
49
53
  \u2502`).replace(/│╰/g,`\u2502
50
- \u2570`).replace(/⚠️ {2}failed to check/g,`${EOL}\u26A0\uFE0F failed to check`);var logger=console,getFrameworkPackageName=mainConfig=>{let packageNameOrPath=typeof mainConfig?.framework=="string"?mainConfig.framework:mainConfig?.framework?.name;return packageNameOrPath?extractProperFrameworkName(packageNameOrPath):null},getRendererName=mainConfig=>{let frameworkPackageName=getFrameworkPackageName(mainConfig);if(!frameworkPackageName)return null;let frameworkName=frameworkPackages[frameworkPackageName];return frameworkToRenderer[frameworkName]},getBuilderPackageName=mainConfig=>{let frameworkBuilder=getFrameworkOptions(mainConfig)?.builder,frameworkBuilderName=typeof frameworkBuilder=="string"?frameworkBuilder:frameworkBuilder?.options?.name,packageNameOrPath=(typeof mainConfig?.core?.builder=="string"?mainConfig.core.builder:mainConfig?.core?.builder?.name)??frameworkBuilderName;if(!packageNameOrPath)return null;let normalizedPath=normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return builderPackages.find(pkg2=>normalizedPath.endsWith(pkg2))||packageNameOrPath},getFrameworkOptions=mainConfig=>typeof mainConfig?.framework=="string"?null:mainConfig?.framework?.options??null,getRendererPackageNameFromFramework=frameworkPackageName=>{if(frameworkPackageName){if(Object.keys(rendererPackages).includes(frameworkPackageName))return frameworkPackageName;if(Object.values(rendererPackages).includes(frameworkPackageName))return Object.keys(rendererPackages).find(k=>rendererPackages[k]===frameworkPackageName)}return null},getStorybookData=async({packageManager,configDir:userDefinedConfigDir})=>{let packageJson=await packageManager.retrievePackageJson(),{mainConfig:mainConfigPath,version:storybookVersionSpecifier,configDir:configDirFromScript,previewConfig:previewConfigPath}=getStorybookInfo(packageJson,userDefinedConfigDir),storybookVersion=await getCoercedStorybookVersion(packageManager),configDir=userDefinedConfigDir||configDirFromScript||".storybook",mainConfig;try{mainConfig=await loadMainConfig({configDir,noCache:!0});}catch(err){throw new Error(dedent`Unable to find or evaluate ${chalk22.blue(mainConfigPath)}: ${String(err)}`)}return {configDir,mainConfig,storybookVersionSpecifier,storybookVersion,mainConfigPath,previewConfigPath}},updateMainConfig=async({mainConfigPath,dryRun},callback)=>{try{let main=await readConfig(mainConfigPath);await callback(main),dryRun||await writeConfig(main);}catch(e){logger.info(`\u274C The migration failed to update your ${chalk22.blue(mainConfigPath)} on your behalf because of the following error:
54
+ \u2570`).replace(/⚠️ {2}failed to check/g,`${EOL}\u26A0\uFE0F failed to check`);var import_picocolors=__toESM(require_picocolors(),1);var logger=console,getFrameworkPackageName=mainConfig=>{let packageNameOrPath=typeof mainConfig?.framework=="string"?mainConfig.framework:mainConfig?.framework?.name;return packageNameOrPath?extractProperFrameworkName(packageNameOrPath):null},getRendererName=mainConfig=>{let frameworkPackageName=getFrameworkPackageName(mainConfig);if(!frameworkPackageName)return null;let frameworkName=frameworkPackages[frameworkPackageName];return frameworkToRenderer[frameworkName]},getBuilderPackageName=mainConfig=>{let frameworkBuilder=getFrameworkOptions(mainConfig)?.builder,frameworkBuilderName=typeof frameworkBuilder=="string"?frameworkBuilder:frameworkBuilder?.options?.name,packageNameOrPath=(typeof mainConfig?.core?.builder=="string"?mainConfig.core.builder:mainConfig?.core?.builder?.name)??frameworkBuilderName;if(!packageNameOrPath)return null;let normalizedPath=normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return builderPackages.find(pkg2=>normalizedPath.endsWith(pkg2))||packageNameOrPath},getFrameworkOptions=mainConfig=>typeof mainConfig?.framework=="string"?null:mainConfig?.framework?.options??null,getRendererPackageNameFromFramework=frameworkPackageName=>{if(frameworkPackageName){if(Object.keys(rendererPackages).includes(frameworkPackageName))return frameworkPackageName;if(Object.values(rendererPackages).includes(frameworkPackageName))return Object.keys(rendererPackages).find(k=>rendererPackages[k]===frameworkPackageName)}return null},getStorybookData=async({packageManager,configDir:userDefinedConfigDir})=>{let packageJson=await packageManager.retrievePackageJson(),{mainConfig:mainConfigPath,version:storybookVersionSpecifier,configDir:configDirFromScript,previewConfig:previewConfigPath}=getStorybookInfo(packageJson,userDefinedConfigDir),storybookVersion=await getCoercedStorybookVersion(packageManager),configDir=userDefinedConfigDir||configDirFromScript||".storybook",mainConfig;try{mainConfig=await loadMainConfig({configDir,noCache:!0});}catch(err){throw new Error(dedent`Unable to find or evaluate ${import_picocolors.default.blue(mainConfigPath)}: ${String(err)}`)}return {configDir,mainConfig,storybookVersionSpecifier,storybookVersion,mainConfigPath,previewConfigPath}},updateMainConfig=async({mainConfigPath,dryRun},callback)=>{try{let main=await readConfig(mainConfigPath);await callback(main),dryRun||await 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:
51
55
  ${e}
52
- `),logger.info(`\u26A0\uFE0F Storybook automigrations are based on AST parsing and it's possible that your ${chalk22.blue(mainConfigPath)} file contains a non-standard format (e.g. your export is not an object) or that there was an error when parsing dynamic values (e.g. "require" calls, or usage of environment variables). When your main config is non-standard, automigrations are unfortunately not possible. Please follow the instructions given previously and follow the documentation to make the updates manually.`);}},getAddonNames=mainConfig=>(mainConfig.addons||[]).map(addon=>{let name="";if(typeof addon=="string"?name=addon:typeof addon=="object"&&(name=addon.name),!name.startsWith("."))return name.replace(/\/dist\/.*/,"").replace(/\.[mc]?[tj]?s[x]?$/,"").replace(/\/register$/,"").replace(/\/manager$/,"").replace(/\/preset$/,"")}).filter(item=>item!=null);function hasMultipleVersions(versions5){return versions5.find(v=>{let major=semver.major(v);if(major===0){let minor=semver.minor(v);if(minor===0){let patch=semver.patch(v);return versions5.some(v2=>semver.patch(v2)!==patch)}return versions5.some(v2=>semver.minor(v2)!==minor)}return versions5.some(v2=>semver.major(v2)!==major)})}var messageDivider=`
53
-
54
- `,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(rendererPackages),Object.keys(frameworkPackages),"storybook","@storybook/instrumenter","@storybook/core","@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(`${chalk22.redBright(dep)}:
55
- ${packageVersions.join(", ")}`):acc.trivial.push(`${chalk22.hex("#ff9800")(dep)}:
56
- ${packageVersions.join(", ")}`),acc},{critical:[],trivial:[]});return critical.length===0&&trivial.length===0||(critical.length>0&&(messages.push(`${chalk22.bold("Critical:")} The following dependencies are duplicated and WILL cause unexpected behavior:`),messages.push(critical.join(messageDivider),`
57
- `)),trivial.length>0&&(messages.push(`${chalk22.bold("Attention:")} The following dependencies are duplicated which might cause unexpected behavior:`),messages.push(trivial.join(messageDivider))),messages.push(`
58
- `,`Please try de-duplicating these dependencies by running ${chalk22.cyan(`${installationMetadata.dedupeCommand}`)}`),messages.push(`
59
- `,`You can find more information for a given dependency by running ${chalk22.cyan(`${installationMetadata.infoCommand} <package-name>`)}`)),messages}catch{return}}var checkPackageCompatibility=async(dependency,context)=>{let{currentStorybookVersion,skipErrors,packageManager}=context;try{let dependencyPackageJson=await packageManager.getPackageJSON(dependency);if(dependencyPackageJson===null)return {packageName:dependency};let{version:packageVersion,name=dependency,dependencies,peerDependencies,homepage}=dependencyPackageJson,hasIncompatibleDependencies=!!Object.entries({...dependencies,...peerDependencies}).filter(([dep])=>versions[dep]).find(([_,versionRange])=>versionRange&&semver.validRange(versionRange)&&!semver.satisfies(currentStorybookVersion,versionRange)),isCorePackage3=versions[name],availableUpdate;return isCorePackage3&&semver.gt(currentStorybookVersion,packageVersion)&&(availableUpdate=currentStorybookVersion),{packageName:name,packageVersion,homepage,hasIncompatibleDependencies,availableUpdate}}catch(err){return skipErrors||console.log(`Error checking compatibility for ${dependency}, please report an issue:
60
- `,err),{packageName:dependency}}},getIncompatibleStorybookPackages=async context=>{let packageManager=context.packageManager??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(`The following packages are incompatible with Storybook ${chalk22.bold(currentStorybookVersion)} as they depend on different major versions of Storybook packages:`),incompatiblePackages.forEach(({packageName:addonName,packageVersion:addonVersion,homepage,availableUpdate})=>{let packageDescription=`${chalk22.cyan(addonName)}@${chalk22.cyan(addonVersion)}`,updateMessage=availableUpdate?` (${availableUpdate} available!)`:"",packageRepo=homepage?`
61
- Repo: ${chalk22.yellow(homepage)}`:"";summaryMessage.push(`- ${packageDescription}${updateMessage}${packageRepo}`);}),summaryMessage.push(`
62
- `,"Please consider updating your packages or contacting the maintainers for compatibility details.","For more on Storybook 8 compatibility, see the linked GitHub issue:",chalk22.yellow("https://github.com/storybookjs/storybook/issues/26031"))),summaryMessage.join(`
63
- `)};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(frameworkPackages).includes(packageName)),cliVersion=getPrimaryVersion("storybook",installationMetadata),frameworkVersion=getPrimaryVersion(frameworkPackageName,installationMetadata);if(!cliVersion||!frameworkVersion||semver.eq(cliVersion,frameworkVersion))return;messages.push(`${chalk22.bold("Attention:")} There seems to be a mismatch between your Storybook package versions. This can result in a broken Storybook installation.`);let versionToCompare,packageToDisplay;semver.lt(cliVersion,frameworkVersion)?(versionToCompare=frameworkVersion,packageToDisplay=frameworkPackageName):(versionToCompare=cliVersion,packageToDisplay="storybook"),messages.push(`The version of your storybook core packages should align with ${chalk22.yellow(versionToCompare)} (from the ${chalk22.cyan(packageToDisplay)} package) or higher.`);let filteredDependencies=Object.entries(installationMetadata?.dependencies||[]).filter(([name,packages])=>Object.keys(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])=>`${chalk22.hex("#ff9800")(name)}: ${dep[0].version} ${allDependencies?.[name]?packageJsonSuffix:""}`).sort((a,b)=>(b.includes(packageJsonSuffix)?1:0)-(a.includes(packageJsonSuffix)?1:0)).join(`
64
- `));}return messages.push(`You can run ${chalk22.cyan("npx storybook@latest upgrade")} to upgrade all of your Storybook packages to the latest version.
65
-
66
- Alternatively you can try manually changing the versions to match in your package.json. We also recommend regenerating your lockfile, or running the following command to possibly deduplicate your Storybook package versions: ${chalk22.cyan(installationMetadata?.dedupeCommand)}`),messages.join(`
67
-
68
- `)}catch{return}}var logger2=console,LOG_FILE_NAME="doctor-storybook.log",LOG_FILE_PATH=join(process.cwd(),LOG_FILE_NAME),TEMP_LOG_FILE_PATH="",originalStdOutWrite=process.stdout.write.bind(process.stdout),originalStdErrWrite=process.stderr.write.bind(process.stdout),augmentLogsToFile=async()=>{TEMP_LOG_FILE_PATH=await temporaryFile({name:LOG_FILE_NAME});let logStream=createWriteStream(TEMP_LOG_FILE_PATH);process.stdout.write=d=>(originalStdOutWrite(d),logStream.write(cleanLog(d))),process.stderr.write=d=>logStream.write(cleanLog(d));},cleanup=()=>{process.stdout.write=originalStdOutWrite,process.stderr.write=originalStdErrWrite;},doctor=async({configDir:userSpecifiedConfigDir,packageManager:pkgMgr}={})=>{await augmentLogsToFile();let foundIssues=!1,logDiagnostic=(title,message)=>{foundIssues=!0,logger2.info(boxen(message,{borderStyle:"round",padding:1,title,borderColor:"#F1618C"}));};logger2.info("\u{1FA7A} The doctor is checking the health of your Storybook..");let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),storybookVersion,mainConfig;try{let storybookData=await getStorybookData({configDir:userSpecifiedConfigDir,packageManager});storybookVersion=storybookData.storybookVersion,mainConfig=storybookData.mainConfig;}catch(err){err.message.includes("No configuration files have been found")&&logger2.info(dedent`[Storybook doctor] Could not find or evaluate your Storybook main.js config directory at ${chalk22.blue(userSpecifiedConfigDir||".storybook")} so the doctor command cannot proceed. You might be running this command in a monorepo or a non-standard project structure. If that is the case, please rerun this command by specifying the path to your Storybook config directory via the --config-dir option.`),logger2.info(dedent`[Storybook doctor] ❌ ${err.message}`),logger2.info("Please fix the error and try again.");}if(storybookVersion||(logger2.info(dedent`
56
+ `),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.`);}},getAddonNames=mainConfig=>(mainConfig.addons||[]).map(addon=>{let name="";if(typeof addon=="string"?name=addon:typeof addon=="object"&&(name=addon.name),!name.startsWith("."))return name.replace(/\/dist\/.*/,"").replace(/\.[mc]?[tj]?s[x]?$/,"").replace(/\/register$/,"").replace(/\/manager$/,"").replace(/\/preset$/,"")}).filter(item=>item!=null);var import_picocolors2=__toESM(require_picocolors(),1);function hasMultipleVersions(versions5){return versions5.find(v=>{let major=semver.major(v);if(major===0){let minor=semver.minor(v);if(minor===0){let patch=semver.patch(v);return versions5.some(v2=>semver.patch(v2)!==patch)}return versions5.some(v2=>semver.minor(v2)!==minor)}return versions5.some(v2=>semver.major(v2)!==major)})}var messageDivider=`
57
+
58
+ `,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(rendererPackages),Object.keys(frameworkPackages),"storybook","@storybook/instrumenter","@storybook/core","@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))}:
59
+ ${packageVersions.join(", ")}`):acc.trivial.push(`${import_picocolors2.default.yellow(dep)}:
60
+ ${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),`
61
+ `)),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(`
62
+ `,`Please try de-duplicating these dependencies by running ${import_picocolors2.default.cyan(`${installationMetadata.dedupeCommand}`)}`),messages.push(`
63
+ `,`You can find more information for a given dependency by running ${import_picocolors2.default.cyan(`${installationMetadata.infoCommand} <package-name>`)}`)),messages}catch{return}}var import_picocolors3=__toESM(require_picocolors(),1);var checkPackageCompatibility=async(dependency,context)=>{let{currentStorybookVersion,skipErrors,packageManager}=context;try{let dependencyPackageJson=await packageManager.getPackageJSON(dependency);if(dependencyPackageJson===null)return {packageName:dependency};let{version:packageVersion,name=dependency,dependencies,peerDependencies,homepage}=dependencyPackageJson,hasIncompatibleDependencies=!!Object.entries({...dependencies,...peerDependencies}).filter(([dep])=>versions[dep]).find(([_,versionRange])=>versionRange&&semver.validRange(versionRange)&&!semver.satisfies(currentStorybookVersion,versionRange)),isCorePackage3=versions[name],availableUpdate;return isCorePackage3&&semver.gt(currentStorybookVersion,packageVersion)&&(availableUpdate=currentStorybookVersion),{packageName:name,packageVersion,homepage,hasIncompatibleDependencies,availableUpdate}}catch(err){return skipErrors||console.log(`Error checking compatibility for ${dependency}, please report an issue:
64
+ `,err),{packageName:dependency}}},getIncompatibleStorybookPackages=async context=>{let packageManager=context.packageManager??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(`The following packages are incompatible with Storybook ${import_picocolors3.default.bold(currentStorybookVersion)} as they depend on different major versions of Storybook packages:`),incompatiblePackages.forEach(({packageName:addonName,packageVersion:addonVersion,homepage,availableUpdate})=>{let packageDescription=`${import_picocolors3.default.cyan(addonName)}@${import_picocolors3.default.cyan(addonVersion)}`,updateMessage=availableUpdate?` (${availableUpdate} available!)`:"",packageRepo=homepage?`
65
+ Repo: ${import_picocolors3.default.yellow(homepage)}`:"";summaryMessage.push(`- ${packageDescription}${updateMessage}${packageRepo}`);}),summaryMessage.push(`
66
+ `,"Please consider updating your packages or contacting the maintainers for compatibility details.","For more on Storybook 8 compatibility, see the linked GitHub issue:",import_picocolors3.default.yellow("https://github.com/storybookjs/storybook/issues/26031"))),summaryMessage.join(`
67
+ `)};var import_picocolors4=__toESM(require_picocolors(),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(frameworkPackages).includes(packageName)),cliVersion=getPrimaryVersion("storybook",installationMetadata),frameworkVersion=getPrimaryVersion(frameworkPackageName,installationMetadata);if(!cliVersion||!frameworkVersion||semver.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;semver.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(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(`
68
+ `));}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.
69
+
70
+ Alternatively you can try manually changing the versions to match in your package.json. We also recommend regenerating your lockfile, or running the following command to possibly deduplicate your Storybook package versions: ${import_picocolors4.default.cyan(installationMetadata?.dedupeCommand)}`),messages.join(`
71
+
72
+ `)}catch{return}}var logger2=console,LOG_FILE_NAME="doctor-storybook.log",LOG_FILE_PATH=join(process.cwd(),LOG_FILE_NAME),TEMP_LOG_FILE_PATH="",originalStdOutWrite=process.stdout.write.bind(process.stdout),originalStdErrWrite=process.stderr.write.bind(process.stdout),augmentLogsToFile=async()=>{TEMP_LOG_FILE_PATH=await temporaryFile({name:LOG_FILE_NAME});let logStream=createWriteStream(TEMP_LOG_FILE_PATH);process.stdout.write=d=>(originalStdOutWrite(d),logStream.write(cleanLog(d))),process.stderr.write=d=>logStream.write(cleanLog(d));},cleanup=()=>{process.stdout.write=originalStdOutWrite,process.stderr.write=originalStdErrWrite;},doctor=async({configDir:userSpecifiedConfigDir,packageManager:pkgMgr}={})=>{await augmentLogsToFile();let foundIssues=!1,logDiagnostic=(title,message)=>{foundIssues=!0,logger2.info(boxen(message,{borderStyle:"round",padding:1,title,borderColor:"#F1618C"}));};logger2.info("\u{1FA7A} The doctor is checking the health of your Storybook..");let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),storybookVersion,mainConfig;try{let storybookData=await getStorybookData({configDir:userSpecifiedConfigDir,packageManager});storybookVersion=storybookData.storybookVersion,mainConfig=storybookData.mainConfig;}catch(err){err.message.includes("No configuration files have been found")&&logger2.info(dedent`[Storybook doctor] Could not find or evaluate your Storybook main.js config directory at ${import_picocolors5.default.blue(userSpecifiedConfigDir||".storybook")} so the doctor command cannot proceed. You might be running this command in a monorepo or a non-standard project structure. If that is the case, please rerun this command by specifying the path to your Storybook config directory via the --config-dir option.`),logger2.info(dedent`[Storybook doctor] ❌ ${err.message}`),logger2.info("Please fix the error and try again.");}if(storybookVersion||(logger2.info(dedent`
69
73
  [Storybook doctor] ❌ Unable to determine Storybook version so the command will not proceed.
70
74
  🤔 Are you running storybook doctor from your project directory? Please specify your Storybook config directory with the --config-dir flag.
71
- `),process.exit(1)),!mainConfig)throw new Error("mainConfig is undefined");let allDependencies=await packageManager.getAllDependencies();"storybook"in allDependencies||logDiagnostic(`Package ${chalk22.cyan("storybook")} not found`,dedent`
72
- The ${chalk22.cyan("storybook")} package was not found in your package.json.
73
- Installing ${chalk22.cyan("storybook")} as a direct dev dependency in your package.json is required.
75
+ `),process.exit(1)),!mainConfig)throw new Error("mainConfig is undefined");let allDependencies=await packageManager.getAllDependencies();"storybook"in allDependencies||logDiagnostic(`Package ${import_picocolors5.default.cyan("storybook")} not found`,dedent`
76
+ The ${import_picocolors5.default.cyan("storybook")} package was not found in your package.json.
77
+ Installing ${import_picocolors5.default.cyan("storybook")} as a direct dev dependency in your package.json is required.
74
78
  `);let incompatibleStorybookPackagesList=await getIncompatibleStorybookPackages({currentStorybookVersion:storybookVersion}),incompatiblePackagesMessage=getIncompatiblePackagesSummary(incompatibleStorybookPackagesList,storybookVersion);incompatiblePackagesMessage&&logDiagnostic("Incompatible packages found",incompatiblePackagesMessage);let installationMetadata=await packageManager.findInstallations(["@storybook/*","storybook"]);if(!incompatiblePackagesMessage){let mismatchingVersionMessage=getMismatchingVersionsWarnings(installationMetadata,allDependencies);if(mismatchingVersionMessage)logDiagnostic("Diagnostics",[mismatchingVersionMessage].join(`
75
79
 
76
80
  -------
77
81
 
78
82
  `));else {let list=installationMetadata?getDuplicatedDepsWarnings(installationMetadata):getDuplicatedDepsWarnings();Array.isArray(list)&&list.length>0&&logDiagnostic("Duplicated dependencies found",list?.join(`
79
83
  `));}}let commandMessage=`You can always recheck the health of your project by running:
80
- ${chalk22.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.info(commandMessage),logger2.info(),logger2.info(`Full logs are available in ${chalk22.cyan(LOG_FILE_PATH)}`),await rename(TEMP_LOG_FILE_PATH,join(process.cwd(),LOG_FILE_NAME))):(logger2.info("\u{1F973} Your Storybook project looks good!"),logger2.info(commandMessage),await rm(TEMP_LOG_FILE_PATH,{recursive:!0,force:!0})),logger2.info(),cleanup();};var addonPostCSS={id:"addon-postcss",versionRange:["*","*"],promptType:"notification",async check({mainConfig}){return !getAddonNames(mainConfig).find(addon=>addon.includes("@storybook/addon-postcss"))?null:{hasAddonPostcss:!0}},prompt(){return dedent`
81
- ${chalk22.bold("Attention")}: We've detected that you're using the following package which is incompatible with Storybook 8 and beyond:
84
+ ${import_picocolors5.default.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.info(commandMessage),logger2.info(),logger2.info(`Full logs are available in ${import_picocolors5.default.cyan(LOG_FILE_PATH)}`),await rename(TEMP_LOG_FILE_PATH,join(process.cwd(),LOG_FILE_NAME))):(logger2.info("\u{1F973} Your Storybook project looks good!"),logger2.info(commandMessage),await rm(TEMP_LOG_FILE_PATH,{recursive:!0,force:!0})),logger2.info(),cleanup();};var import_picocolors6=__toESM(require_picocolors(),1);var addonPostCSS={id:"addon-postcss",versionRange:["*","*"],promptType:"notification",async check({mainConfig}){return !getAddonNames(mainConfig).find(addon=>addon.includes("@storybook/addon-postcss"))?null:{hasAddonPostcss:!0}},prompt(){return dedent`
85
+ ${import_picocolors6.default.bold("Attention")}: We've detected that you're using the following package which is incompatible with Storybook 8 and beyond:
82
86
 
83
- - ${chalk22.cyan("@storybook/addon-postcss")}
87
+ - ${import_picocolors6.default.cyan("@storybook/addon-postcss")}
84
88
 
85
- Please migrate to ${chalk22.cyan("@storybook/addon-styling-webpack")} once you're done upgrading.
86
- `}};var addonsAPI={id:"addons-api",versionRange:["*","*"],promptType:"notification",async check({packageManager}){return !(await packageManager.getAllDependencies())["@storybook/addons"]?null:{usesAddonsAPI:!0}},prompt(){return dedent`
87
- ${chalk22.bold("Attention")}: We've detected that you're using the following package which is removed in Storybook 8 and beyond:
89
+ Please migrate to ${import_picocolors6.default.cyan("@storybook/addon-styling-webpack")} once you're done upgrading.
90
+ `}};var import_picocolors7=__toESM(require_picocolors(),1);var addonsAPI={id:"addons-api",versionRange:["*","*"],promptType:"notification",async check({packageManager}){return !(await packageManager.getAllDependencies())["@storybook/addons"]?null:{usesAddonsAPI:!0}},prompt(){return dedent`
91
+ ${import_picocolors7.default.bold("Attention")}: We've detected that you're using the following package which is removed in Storybook 8 and beyond:
88
92
 
89
- - ${chalk22.cyan("@storybook/addons")}
93
+ - ${import_picocolors7.default.cyan("@storybook/addons")}
90
94
 
91
- This package has been deprecated and replaced with ${chalk22.cyan("@storybook/preview-api")} and ${chalk22.cyan("@storybook/manager-api")}.
95
+ This package has been deprecated and replaced with ${import_picocolors7.default.cyan("@storybook/preview-api")} and ${import_picocolors7.default.cyan("@storybook/manager-api")}.
92
96
 
93
97
  You can find more information about the new addons API in the migration guide:
94
- ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#new-addons-api")}
95
- `}};var angularBuilders={id:"angular-builders",versionRange:["<7",">=7"],async check({packageManager,mainConfig}){let angularVersion=await packageManager.getPackageVersion("@angular/core"),framewworkPackageName=getFrameworkPackageName(mainConfig);if(!angularVersion||await isNxProject()||framewworkPackageName!=="@storybook/angular")return null;let angularJSON=new AngularJSON,{hasStorybookBuilder}=angularJSON;return hasStorybookBuilder||!angularJSON.rootProject&&Object.keys(angularJSON.projects).length>1?null:{mainConfig,packageManager}},prompt(){return dedent`
98
+ ${import_picocolors7.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#new-addons-api")}
99
+ `}};var import_picocolors8=__toESM(require_picocolors(),1);var angularBuilders={id:"angular-builders",versionRange:["<7",">=7"],async check({packageManager,mainConfig}){let angularVersion=await packageManager.getPackageVersion("@angular/core"),framewworkPackageName=getFrameworkPackageName(mainConfig);if(!angularVersion||await isNxProject()||framewworkPackageName!=="@storybook/angular")return null;let angularJSON=new AngularJSON,{hasStorybookBuilder}=angularJSON;return hasStorybookBuilder||!angularJSON.rootProject&&Object.keys(angularJSON.projects).length>1?null:{mainConfig,packageManager}},prompt(){return dedent`
96
100
  We have detected that your project does not use the Storybook Angular builder yet. In Storybook 6.4 we deprecated calling Storybook directly (npm run storybook) for Angular. In Storybook 7.0, we've removed it entirely.
97
101
 
98
102
  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.
99
103
 
100
104
  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.
101
105
 
102
- Read more about the Angular builder here: ${chalk22.yellow("https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular#how-do-i-migrate-to-an-angular-storybook-builder")}
103
- `},async run({result}){let angularJSON=new AngularJSON,{packageManager}=result,{useCompoDoc}=await prompts6({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 angularBuildersMultiproject={id:"angular-builders-multiproject",promptType:"manual",versionRange:["<7",">=7"],async check({packageManager,mainConfig}){let angularVersion=await packageManager.getPackageVersion("@angular/core"),frameworkPackageName=getFrameworkPackageName(mainConfig);if(await isNxProject()||frameworkPackageName!=="@storybook/angular"||!angularVersion||semver.lt(angularVersion,"14.0.0"))return null;let angularJSON=new AngularJSON,{hasStorybookBuilder}=angularJSON;return hasStorybookBuilder||angularJSON.rootProject||Object.keys(angularJSON.projects).length===1?null:{}},prompt(){return dedent`
104
- 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 ${chalk22.yellow("angular.json")} and execute ${chalk22.yellow("ng run <your-project>:storybook")} to start Storybook.
106
+ Read more about the Angular builder here: ${import_picocolors8.default.yellow("https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular#how-do-i-migrate-to-an-angular-storybook-builder")}
107
+ `},async run({result}){let angularJSON=new AngularJSON,{packageManager}=result,{useCompoDoc}=await prompts6({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_picocolors9=__toESM(require_picocolors(),1);var angularBuildersMultiproject={id:"angular-builders-multiproject",promptType:"manual",versionRange:["<7",">=7"],async check({packageManager,mainConfig}){let angularVersion=await packageManager.getPackageVersion("@angular/core"),frameworkPackageName=getFrameworkPackageName(mainConfig);if(await isNxProject()||frameworkPackageName!=="@storybook/angular"||!angularVersion||semver.lt(angularVersion,"14.0.0"))return null;let angularJSON=new AngularJSON,{hasStorybookBuilder}=angularJSON;return hasStorybookBuilder||angularJSON.rootProject||Object.keys(angularJSON.projects).length===1?null:{}},prompt(){return dedent`
108
+ 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_picocolors9.default.yellow("angular.json")} and execute ${import_picocolors9.default.yellow("ng run <your-project>:storybook")} to start Storybook.
105
109
 
106
- ❌ Your Angular workspace uses multiple projects defined in the ${chalk22.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 ${chalk22.yellow("https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular")} to do the migration manually.
107
- `}};var logger3=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(dedent`
108
- ❌ Failed to remove the deprecated ${chalk22.cyan("docs.autodocs")} setting from ${chalk22.cyan(mainConfigPath)}.
110
+ ❌ Your Angular workspace uses multiple projects defined in the ${import_picocolors9.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_picocolors9.default.yellow("https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular")} to do the migration manually.
111
+ `}};var import_picocolors10=__toESM(require_picocolors(),1);var logger3=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(dedent`
112
+ ❌ Failed to remove the deprecated ${import_picocolors10.default.cyan("docs.autodocs")} setting from ${import_picocolors10.default.cyan(mainConfigPath)}.
109
113
 
110
- There is no preview config file in which to add the ${chalk22.cyan("autodocs")} tag.
114
+ There is no preview config file in which to add the ${import_picocolors10.default.cyan("autodocs")} tag.
111
115
 
112
- Please perform the migration by hand: ${chalk22.yellow(MIGRATION)}
116
+ Please perform the migration by hand: ${import_picocolors10.default.yellow(MIGRATION)}
113
117
  `);return {autodocs,mainConfigPath,previewConfigPath}},prompt({autodocs,mainConfigPath,previewConfigPath}){let falseMessage="",trueMessage="";return autodocs===!1?falseMessage=dedent`
114
118
 
115
119
 
116
- There is no ${chalk22.cyan("docs.autodocs = false")} equivalent.
117
- You'll need to check your stories to ensure none are tagged with ${chalk22.cyan("autodocs")}.
118
- `:autodocs===!0&&(trueMessage=` and update ${chalk22.cyan(previewConfigPath)}`),dedent`
119
- The ${chalk22.cyan("docs.autodocs")} setting in ${chalk22.cyan(mainConfigPath)} is deprecated.${falseMessage}
120
+ There is no ${import_picocolors10.default.cyan("docs.autodocs = false")} equivalent.
121
+ You'll need to check your stories to ensure none are tagged with ${import_picocolors10.default.cyan("autodocs")}.
122
+ `:autodocs===!0&&(trueMessage=` and update ${import_picocolors10.default.cyan(previewConfigPath)}`),dedent`
123
+ The ${import_picocolors10.default.cyan("docs.autodocs")} setting in ${import_picocolors10.default.cyan(mainConfigPath)} is deprecated.${falseMessage}
120
124
 
121
- Learn more: ${chalk22.yellow(MIGRATION)}
125
+ Learn more: ${import_picocolors10.default.yellow(MIGRATION)}
122
126
 
123
- Remove ${chalk22.cyan("docs.autodocs")}${trueMessage}?
124
- `},async run({dryRun,mainConfigPath,result}){if(!dryRun){if(result.autodocs===!0){logger3.info(`\u2705 Adding "autodocs" tag to ${result.previewConfigPath}`);let previewConfig=await readConfig(result.previewConfigPath);previewConfig.getFieldNode(["tags"])?previewConfig.appendValueToArray(["tags"],"autodocs"):previewConfig.setFieldValue(["tags"],["autodocs"]),await writeConfig(previewConfig);}await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger3.info(`\u2705 Removing "docs.autodocs" from ${mainConfigPath}`),main.removeField(["docs","autodocs"]);});}}};var logger4=console,autodocsTrue={id:"autodocsTrue",versionRange:["<7",">=7"],async check({mainConfig}){let{docs}=mainConfig,docsPageToAutodocsMapping={true:"tag",automatic:!0,false:!1};if(docs?.docsPage){let oldValue=docs?.docsPage.toString();if(!(oldValue in docsPageToAutodocsMapping))throw new Error(`Unexpected value for docs.docsPage: ${oldValue}`);return {value:docsPageToAutodocsMapping[oldValue]}}return docs?.autodocs===void 0?{value:!0}:null},prompt({value}){let autodocsFormatted=chalk22.cyan(`docs: { autodocs: ${JSON.stringify(value??!0)} }`),tagWarning=dedent`
127
+ Remove ${import_picocolors10.default.cyan("docs.autodocs")}${trueMessage}?
128
+ `},async run({dryRun,mainConfigPath,result}){if(!dryRun){if(result.autodocs===!0){logger3.info(`\u2705 Adding "autodocs" tag to ${result.previewConfigPath}`);let previewConfig=await readConfig(result.previewConfigPath);previewConfig.getFieldNode(["tags"])?previewConfig.appendValueToArray(["tags"],"autodocs"):previewConfig.setFieldValue(["tags"],["autodocs"]),await writeConfig(previewConfig);}await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger3.info(`\u2705 Removing "docs.autodocs" from ${mainConfigPath}`),main.removeField(["docs","autodocs"]);});}}};var import_picocolors11=__toESM(require_picocolors(),1);var logger4=console,autodocsTrue={id:"autodocsTrue",versionRange:["<7",">=7"],async check({mainConfig}){let{docs}=mainConfig,docsPageToAutodocsMapping={true:"tag",automatic:!0,false:!1};if(docs?.docsPage){let oldValue=docs?.docsPage.toString();if(!(oldValue in docsPageToAutodocsMapping))throw new Error(`Unexpected value for docs.docsPage: ${oldValue}`);return {value:docsPageToAutodocsMapping[oldValue]}}return docs?.autodocs===void 0?{value:!0}:null},prompt({value}){let autodocsFormatted=import_picocolors11.default.cyan(`docs: { autodocs: ${JSON.stringify(value??!0)} }`),tagWarning=dedent`
125
129
  NOTE: if you're upgrading from an older 7.0-beta using the 'docsPage' tag,
126
130
  please update your story files to use the 'autodocs' tag instead.
127
131
  `;return value?dedent`
@@ -134,7 +138,7 @@ ${chalk22.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.inf
134
138
 
135
139
  ${autodocsFormatted}
136
140
  ${value==="tag"?tagWarning:""}
137
- More info: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#autodocs-changes")}
141
+ More info: ${import_picocolors11.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#autodocs-changes")}
138
142
  `:dedent`
139
143
  We've detected that your main.js configuration file has not configured autodocs. In 6.x we
140
144
  we defaulted to having a autodocs for every story, in 7.x you need to opt in per-component.
@@ -142,45 +146,45 @@ ${chalk22.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.inf
142
146
 
143
147
  ${autodocsFormatted}
144
148
 
145
- More info: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#autodocs-changes")}
146
- `},async run({result:{value},dryRun,mainConfigPath}){logger4.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 logger5=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=chalk22.cyan(JSON.stringify(builder,null,2));return dedent`
149
+ More info: ${import_picocolors11.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#autodocs-changes")}
150
+ `},async run({result:{value},dryRun,mainConfigPath}){logger4.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_picocolors12=__toESM(require_picocolors(),1);var logger5=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_picocolors12.default.cyan(JSON.stringify(builder,null,2));return dedent`
147
151
  We've detected you're using the community vite builder: ${builderFormatted}
148
152
 
149
- 'storybook-builder-vite' is deprecated and now located at ${chalk22.cyan("@storybook/builder-vite")}.
153
+ 'storybook-builder-vite' is deprecated and now located at ${import_picocolors12.default.cyan("@storybook/builder-vite")}.
150
154
 
151
155
  We can upgrade your project to use the new builder automatically.
152
156
 
153
- More info: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vite-builder-renamed")}
154
- `},async run({result:{builder,packageJson},packageManager,dryRun,mainConfigPath}){let{dependencies={},devDependencies={}}=packageJson;if(logger5.info("\u2705 Removing existing 'storybook-builder-vite' dependency"),dryRun||(delete dependencies["storybook-builder-vite"],delete devDependencies["storybook-builder-vite"],await packageManager.writePackageJson(packageJson)),logger5.info("\u2705 Adding '@storybook/builder-vite' as dev dependency"),!dryRun){let versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());await packageManager.addDependencies({installAsDevDependencies:!0},[`@storybook/builder-vite@${versionToInstall}`]);}logger5.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 writeConfig(main);});}};var logger6=console,checkWebpack5Builder=async({mainConfig,storybookVersion})=>{if(semver.lt(storybookVersion,"6.3.0"))return logger6.warn(dedent`
157
+ More info: ${import_picocolors12.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vite-builder-renamed")}
158
+ `},async run({result:{builder,packageJson},packageManager,dryRun,mainConfigPath}){let{dependencies={},devDependencies={}}=packageJson;if(logger5.info("\u2705 Removing existing 'storybook-builder-vite' dependency"),dryRun||(delete dependencies["storybook-builder-vite"],delete devDependencies["storybook-builder-vite"],await packageManager.writePackageJson(packageJson)),logger5.info("\u2705 Adding '@storybook/builder-vite' as dev dependency"),!dryRun){let versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());await packageManager.addDependencies({installAsDevDependencies:!0},[`@storybook/builder-vite@${versionToInstall}`]);}logger5.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 writeConfig(main);});}};var import_picocolors15=__toESM(require_picocolors(),1);var import_picocolors13=__toESM(require_picocolors(),1);var logger6=console,checkWebpack5Builder=async({mainConfig,storybookVersion})=>{if(semver.lt(storybookVersion,"6.3.0"))return logger6.warn(dedent`
155
159
  Detected SB 6.3 or below, please upgrade storybook to use webpack5.
156
160
 
157
161
  To upgrade to the latest stable release, run this from your project directory:
158
162
 
159
- ${chalk22.cyan("npx storybook@latest upgrade")}
163
+ ${import_picocolors13.default.cyan("npx storybook@latest upgrade")}
160
164
 
161
165
  To upgrade to the latest pre-release, run this from your project directory:
162
166
 
163
- ${chalk22.cyan("npx storybook@next upgrade")}
164
- `.trim()),null;if(semver.gte(storybookVersion,"7.0.0"))return null;if(!mainConfig)return logger6.warn("Unable to find storybook main.js config"),null;let builderPackageName=getBuilderPackageName(mainConfig);return builderPackageName&&builderPackageName!=="webpack4"?(logger6.info(`Found builder ${builderPackageName}, skipping`),null):{storybookVersion}};var logger7=console,webpack5={id:"webpack5",versionRange:["<7",">=7"],async check({packageManager,mainConfig,storybookVersion}){let webpackVersion=await packageManager.getPackageVersion("webpack");if(!webpackVersion||semver.lt(webpackVersion,"5.0.0")||semver.gte(webpackVersion,"6.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{webpackVersion,...builderInfo}:null},prompt({webpackVersion}){let webpackFormatted=chalk22.cyan(`webpack ${webpackVersion}`);return dedent`
167
+ ${import_picocolors13.default.cyan("npx storybook@next upgrade")}
168
+ `.trim()),null;if(semver.gte(storybookVersion,"7.0.0"))return null;if(!mainConfig)return logger6.warn("Unable to find storybook main.js config"),null;let builderPackageName=getBuilderPackageName(mainConfig);return builderPackageName&&builderPackageName!=="webpack4"?(logger6.info(`Found builder ${builderPackageName}, skipping`),null):{storybookVersion}};var import_picocolors14=__toESM(require_picocolors(),1);var logger7=console,webpack5={id:"webpack5",versionRange:["<7",">=7"],async check({packageManager,mainConfig,storybookVersion}){let webpackVersion=await packageManager.getPackageVersion("webpack");if(!webpackVersion||semver.lt(webpackVersion,"5.0.0")||semver.gte(webpackVersion,"6.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{webpackVersion,...builderInfo}:null},prompt({webpackVersion}){let webpackFormatted=import_picocolors14.default.cyan(`webpack ${webpackVersion}`);return dedent`
165
169
  We've detected you're running ${webpackFormatted}.
166
170
  Your Storybook's main.js files specifies webpack4, which is incompatible.
167
171
 
168
- To run Storybook in webpack5-mode, we can install Storybook's ${chalk22.cyan("@storybook/builder-webpack5")} for you.
172
+ To run Storybook in webpack5-mode, we can install Storybook's ${import_picocolors14.default.cyan("@storybook/builder-webpack5")} for you.
169
173
 
170
- More info: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack-5-manager-build")}
171
- `},async run({result:{storybookVersion,webpackVersion},packageManager,dryRun,mainConfigPath}){let deps=[`@storybook/builder-webpack5@${storybookVersion}`];webpackVersion||deps.push("webpack@5"),logger7.info(`\u2705 Adding dependencies: ${deps}`),dryRun||await packageManager.addDependencies({installAsDevDependencies:!0},deps),logger7.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||semver.lt(craVersion,"5.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{craVersion,...builderInfo}:null},prompt({craVersion}){let craFormatted=chalk22.cyan(`Create React App (CRA) ${craVersion}`);return dedent`
174
+ More info: ${import_picocolors14.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack-5-manager-build")}
175
+ `},async run({result:{storybookVersion,webpackVersion},packageManager,dryRun,mainConfigPath}){let deps=[`@storybook/builder-webpack5@${storybookVersion}`];webpackVersion||deps.push("webpack@5"),logger7.info(`\u2705 Adding dependencies: ${deps}`),dryRun||await packageManager.addDependencies({installAsDevDependencies:!0},deps),logger7.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||semver.lt(craVersion,"5.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{craVersion,...builderInfo}:null},prompt({craVersion}){let craFormatted=import_picocolors15.default.cyan(`Create React App (CRA) ${craVersion}`);return dedent`
172
176
  We've detected you are running ${craFormatted} which is powered by webpack5.
173
177
  Your Storybook's main.js files specifies webpack4, which is incompatible.
174
178
 
175
- In order to work with your version of CRA, we need to install Storybook's ${chalk22.cyan("@storybook/builder-webpack5")}.
179
+ In order to work with your version of CRA, we need to install Storybook's ${import_picocolors15.default.cyan("@storybook/builder-webpack5")}.
176
180
 
177
- More info: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#cra5-upgrade")}
178
- `},async run(options){return webpack5.run({...options,result:{webpackVersion:null,...options.result}})}};var logger8=console,eslintPlugin={id:"eslintPlugin",versionRange:["<8",">=7"],async check({packageManager}){let{hasEslint,isStorybookPluginInstalled}=await extractEslintInfo(packageManager);if(isStorybookPluginInstalled||!hasEslint)return null;let eslintFile=null,unsupportedExtension;try{eslintFile=findEslintFile();}catch(err){unsupportedExtension=String(err);}return !eslintFile||!unsupportedExtension?(logger8.warn("Unable to find .eslintrc config file, skipping"),null):{eslintFile,unsupportedExtension}},prompt(){return dedent`
181
+ More info: ${import_picocolors15.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#cra5-upgrade")}
182
+ `},async run(options){return webpack5.run({...options,result:{webpackVersion:null,...options.result}})}};var import_picocolors16=__toESM(require_picocolors(),1);var logger8=console,eslintPlugin={id:"eslintPlugin",versionRange:["<8",">=7"],async check({packageManager}){let{hasEslint,isStorybookPluginInstalled}=await extractEslintInfo(packageManager);if(isStorybookPluginInstalled||!hasEslint)return null;let eslintFile=null,unsupportedExtension;try{eslintFile=findEslintFile();}catch(err){unsupportedExtension=String(err);}return !eslintFile||!unsupportedExtension?(logger8.warn("Unable to find .eslintrc config file, skipping"),null):{eslintFile,unsupportedExtension}},prompt(){return dedent`
179
183
  We've detected you are not using our eslint-plugin.
180
184
 
181
185
  In order to have the best experience with Storybook and follow best practices, we advise you to install eslint-plugin-storybook.
182
186
 
183
- More info: ${chalk22.yellow("https://github.com/storybookjs/eslint-plugin-storybook#readme")}
187
+ More info: ${import_picocolors16.default.yellow("https://github.com/storybookjs/eslint-plugin-storybook#readme")}
184
188
  `},async run({result:{eslintFile,unsupportedExtension},packageManager,dryRun,skipInstall}){let deps=["eslint-plugin-storybook"];if(logger8.info(`\u2705 Adding dependencies: ${deps}`),dryRun||await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall},deps),!dryRun&&unsupportedExtension){logger8.info(dedent`
185
189
  ⚠️ The plugin was successfully installed but failed to configure.
186
190
 
@@ -188,15 +192,15 @@ ${chalk22.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.inf
188
192
  The supported formats for this automigration are: ${SUPPORTED_ESLINT_EXTENSIONS.join(", ")}.
189
193
 
190
194
  Please refer to https://github.com/storybookjs/eslint-plugin-storybook#usage to finish setting up the plugin manually.
191
- `);return}dryRun||await configureEslintPlugin(eslintFile,packageManager);}};var 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=loadConfig((await readFile(previewConfigPath)).toString()).parse(),globals=previewConfig.getFieldNode(["globals"]);return globals?{globals,previewConfig,previewConfigPath}:null},prompt({previewConfigPath}){return dedent`
192
- The ${chalk22.cyan("globals")} setting in ${chalk22.cyan(previewConfigPath)} is deprecated
193
- and has been renamed to ${chalk22.cyan("initialGlobals")}.
195
+ `);return}dryRun||await configureEslintPlugin(eslintFile,packageManager);}};var import_picocolors17=__toESM(require_picocolors(),1);var 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=loadConfig((await readFile(previewConfigPath)).toString()).parse(),globals=previewConfig.getFieldNode(["globals"]);return globals?{globals,previewConfig,previewConfigPath}:null},prompt({previewConfigPath}){return dedent`
196
+ The ${import_picocolors17.default.cyan("globals")} setting in ${import_picocolors17.default.cyan(previewConfigPath)} is deprecated
197
+ and has been renamed to ${import_picocolors17.default.cyan("initialGlobals")}.
194
198
 
195
- Learn more: ${chalk22.yellow(MIGRATION2)}
199
+ Learn more: ${import_picocolors17.default.yellow(MIGRATION2)}
196
200
 
197
- Rename ${chalk22.cyan("globals")} to ${chalk22.cyan("initalGlobals")}?
198
- `},async run({dryRun,result}){result.previewConfig.removeField(["globals"]),result.previewConfig.setFieldNode(["initialGlobals"],result.globals),dryRun||await writeFile(result.previewConfigPath,formatConfig(result.previewConfig));}};var MDX1_STYLE_START=/<style>{`/g,MDX1_STYLE_END=/`}<\/style>/g,MDX1_COMMENT=/<!--(.+)-->/g,MDX1_CODEBLOCK=/(?:\n~~~(?:\n|.)*?\n~~~)|(?:\n```(?:\n|.)*?\n```)/g,fixMdxStyleTags=mdx=>mdx.replace(MDX1_STYLE_START,"<style>\n {`").replace(MDX1_STYLE_END," `}\n</style>"),fixMdxComments=mdx=>{let codeblocks=mdx.matchAll(MDX1_CODEBLOCK);return mdx.split(MDX1_CODEBLOCK).map(v=>v.replace(MDX1_COMMENT,(original,group)=>`{/*${group}*/}`)).reduce((acc,item,i)=>{let next=codeblocks.next();return next.done?acc+item:acc+item+next.value[0]},"")},logger9=console,mdx1to3={id:"mdx1to3",versionRange:["<7.0.0",">=8.0.0-alpha.0"],async check(){let{globby}=await import('globby'),storiesMdxFiles=await globby("./!(node_modules)**/*.(story|stories).mdx");return storiesMdxFiles.length?{storiesMdxFiles}:null},prompt({storiesMdxFiles}){return dedent`
199
- We've found ${chalk22.yellow(storiesMdxFiles.length)} '.stories.mdx' files in your project.
201
+ Rename ${import_picocolors17.default.cyan("globals")} to ${import_picocolors17.default.cyan("initalGlobals")}?
202
+ `},async run({dryRun,result}){result.previewConfig.removeField(["globals"]),result.previewConfig.setFieldNode(["initialGlobals"],result.globals),dryRun||await writeFile(result.previewConfigPath,formatConfig(result.previewConfig));}};var import_picocolors18=__toESM(require_picocolors(),1);var MDX1_STYLE_START=/<style>{`/g,MDX1_STYLE_END=/`}<\/style>/g,MDX1_COMMENT=/<!--(.+)-->/g,MDX1_CODEBLOCK=/(?:\n~~~(?:\n|.)*?\n~~~)|(?:\n```(?:\n|.)*?\n```)/g,fixMdxStyleTags=mdx=>mdx.replace(MDX1_STYLE_START,"<style>\n {`").replace(MDX1_STYLE_END," `}\n</style>"),fixMdxComments=mdx=>{let codeblocks=mdx.matchAll(MDX1_CODEBLOCK);return mdx.split(MDX1_CODEBLOCK).map(v=>v.replace(MDX1_COMMENT,(original,group)=>`{/*${group}*/}`)).reduce((acc,item,i)=>{let next=codeblocks.next();return next.done?acc+item:acc+item+next.value[0]},"")},logger9=console,mdx1to3={id:"mdx1to3",versionRange:["<7.0.0",">=8.0.0-alpha.0"],async check(){let{globby}=await import('globby'),storiesMdxFiles=await globby("./!(node_modules)**/*.(story|stories).mdx");return storiesMdxFiles.length?{storiesMdxFiles}:null},prompt({storiesMdxFiles}){return dedent`
203
+ We've found ${import_picocolors18.default.yellow(storiesMdxFiles.length)} '.stories.mdx' files in your project.
200
204
 
201
205
  Storybook has upgraded to MDX3 (https://mdxjs.com/blog/v3/). MDX3 itself doesn't contain disruptive breaking changes, whereas the transition from MDX1 to MDX2 was a significant change.
202
206
  We can try to automatically upgrade your MDX files to MDX3 format using some common patterns.
@@ -204,7 +208,7 @@ ${chalk22.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.inf
204
208
  After this install completes, and before you start Storybook, we strongly recommend reading the MDX2 section
205
209
  of the 7.0 migration guide. It contains useful tools for detecting and fixing any remaining issues.
206
210
 
207
- ${chalk22.cyan("https://storybook.js.org/migration-guides/7.0")}
211
+ ${import_picocolors18.default.cyan("https://storybook.js.org/migration-guides/7.0")}
208
212
  `},async run({result:{storiesMdxFiles},dryRun}){await Promise.all([...storiesMdxFiles.map(async fname=>{let contents=await readFile(fname,{encoding:"utf8"}),updated=fixMdxComments(fixMdxStyleTags(contents));updated===contents?logger9.info(`\u{1F197} Unmodified ${basename(fname)}`):(logger9.info(`\u2705 Modified ${basename(fname)}`),dryRun||await writeFile(fname,updated));})]);}};function slash(path){return path.startsWith("\\\\?\\")?path:path.replace(/\\/g,"/")}var logger10=console,mdxgfm={id:"github-flavored-markdown-mdx",versionRange:["<7",">=7"],async check({configDir,mainConfig}){let hasMDXFiles=await mainConfig?.stories?.reduce(async(acc,item)=>{if(await acc===!0)return !0;let pattern;if(typeof configDir>"u")return !1;if(typeof item=="string")pattern=slash(join(configDir,item));else if(typeof item=="object"){let directory=item.directory||"..",files2=item.files||"**/*.@(mdx|stories.@(mdx|js|jsx|mjs|ts|tsx))";pattern=slash(join(configDir,directory,files2));}if(!pattern)return !1;let{globby}=await import('globby');return (await globby(pattern,commonGlobOptions(pattern))).some(f=>f.endsWith(".mdx"))},Promise.resolve(!1));return mainConfig?.features?.legacyMdx1===!0||!1||!hasMDXFiles||!!mainConfig.addons?.find(item=>item==="@storybook/addon-mdx-gfm"?!0:typeof item=="string"?!1:item.name==="@storybook/addon-docs"?item.options?.mdxPluginOptions?.mdxCompileOptions?.remarkPlugins?.length>0:!1)?null:{}},prompt(){return dedent`
209
213
  In MDX1 you had the option of using GitHub flavored markdown.
210
214
 
@@ -214,8 +218,8 @@ ${chalk22.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.inf
214
218
 
215
219
  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.
216
220
  We'll install the addon and add it to your storybook config.
217
- `},async run({packageManager,dryRun,mainConfigPath,skipInstall}){if(!dryRun){let packageJson=await packageManager.retrievePackageJson(),versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall,packageJson},[`@storybook/addon-mdx-gfm@${versionToInstall}`]),await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger10.info('\u2705 Adding "@storybook/addon-mdx-gfm" addon'),dryRun||main.appendValueToArray(["addons"],"@storybook/addon-mdx-gfm");});}}};var logger11=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(dedent`
218
- ❌ Unable to determine Storybook stories globs in ${chalk22.blue(mainConfig)}, skipping ${chalk22.cyan(this.id)} fix.
221
+ `},async run({packageManager,dryRun,mainConfigPath,skipInstall}){if(!dryRun){let packageJson=await packageManager.retrievePackageJson(),versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall,packageJson},[`@storybook/addon-mdx-gfm@${versionToInstall}`]),await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger10.info('\u2705 Adding "@storybook/addon-mdx-gfm" addon'),dryRun||main.appendValueToArray(["addons"],"@storybook/addon-mdx-gfm");});}}};var import_picocolors19=__toESM(require_picocolors(),1);var logger11=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(dedent`
222
+ ❌ Unable to determine Storybook stories globs in ${import_picocolors19.default.blue(JSON.stringify(mainConfig,null,2))}, skipping ${import_picocolors19.default.cyan(this.id)} fix.
219
223
 
220
224
  In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx.
221
225
 
@@ -223,12 +227,12 @@ ${chalk22.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.inf
223
227
 
224
228
  We were unable to automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx.
225
229
  We suggest you make this change manually.
226
- To learn more about this change, see: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files")}
230
+ To learn more about this change, see: ${import_picocolors19.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files")}
227
231
  `);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 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(`
228
232
  `),prettyNextStoriesEntries=nextStoriesEntries.map(entry=>JSON.stringify(entry,null,2)).join(`
229
233
  `);return dedent`
230
234
  We've detected your project has one or more globs in your 'stories' config that matches .stories.mdx files:
231
- ${chalk22.cyan(prettyExistingStoriesEntries)}
235
+ ${import_picocolors19.default.cyan(prettyExistingStoriesEntries)}
232
236
 
233
237
  In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx. Since Storybook 8, we have removed the support of story definition in MDX files entirely. Therefore '.stories.mdx' files aren't supported anymore.
234
238
 
@@ -236,82 +240,82 @@ ${chalk22.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.inf
236
240
 
237
241
  We can automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx.
238
242
  That would result in the following 'stories' config:
239
- ${chalk22.cyan(prettyNextStoriesEntries)}
243
+ ${import_picocolors19.default.cyan(prettyNextStoriesEntries)}
240
244
 
241
245
  Additionally, we will run the 'mdx-to-csf' codemod for you, which tries to transform '*.stories.mdx' files to '*.stories.js' and '*.mdx' files.
242
246
 
243
- To learn more about this change, see: ${chalk22.yellow("https://storybook.js.org/docs/migration-guide#storiesmdx-to-mdxcsf")}
247
+ To learn more about this change, see: ${import_picocolors19.default.yellow("https://storybook.js.org/docs/migration-guide#storiesmdx-to-mdxcsf")}
244
248
  `},async run({dryRun,mainConfigPath,result:{nextStoriesEntries}}){if(logger11.info(dedent`✅ Setting 'stories' config:
245
249
  ${JSON.stringify(nextStoriesEntries,null,2)}`),!dryRun){let{glob:globString}=await prompt({type:"text",name:"glob",message:"Please enter the glob for your MDX stories",initial:"./src/**/*.stories.mdx"});globString&&await runCodemod("mdx-to-csf",{glob:globString,dryRun,logger:logger11}),await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{main.setFieldValue(["stories"],nextStoriesEntries);}),logger11.info(dedent`
246
250
  The migration successfully updated your 'stories' config to include any .mdx file instead of just .stories.mdx.
247
251
 
248
252
  It also ran the 'mdx-to-csf' codemod to convert your MDX stories to CSF format.
249
253
  This codemod is not perfect however, so you may need to manually fix any issues it couldn't handle.
250
- `);}}};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 logger12=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(pkg2=>packageManager.findInstallations([pkg2],{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(pkg2=>!installedDependencies.includes(pkg2)),files=await globby(["**/.storybook/*","**/*.stories.*","**/*.story.*"],{ignore:["**/node_modules/**"]}),packageUsage={};for(let file of files){let content=await readFile(file,"utf-8");dependenciesToCheck.forEach(pkg2=>{new RegExp(`['"]${pkg2}(/[^'"]*)?['"]`).test(content)&&(packageUsage[pkg2]||(packageUsage[pkg2]=[]),packageUsage[pkg2].push(file));});}return Object.keys(packageUsage).length>0?{packageUsage}:null},prompt({packageUsage}){return dedent`
254
+ `);}}};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_picocolors20=__toESM(require_picocolors(),1);var logger12=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(pkg2=>packageManager.findInstallations([pkg2],{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(pkg2=>!installedDependencies.includes(pkg2)),files=await globby(["**/.storybook/*","**/*.stories.*","**/*.story.*"],{ignore:["**/node_modules/**"]}),packageUsage={};for(let file of files){let content=await readFile(file,"utf-8");dependenciesToCheck.forEach(pkg2=>{new RegExp(`['"]${pkg2}(/[^'"]*)?['"]`).test(content)&&(packageUsage[pkg2]||(packageUsage[pkg2]=[]),packageUsage[pkg2].push(file));});}return Object.keys(packageUsage).length>0?{packageUsage}:null},prompt({packageUsage}){return dedent`
251
255
  Found the following Storybook packages used in your project, but they are missing from your project dependencies:
252
- ${Object.entries(packageUsage).map(([pkg2,files])=>`- ${chalk22.cyan(pkg2)}: (${files.length} ${files.length===1?"file":"files"})`).sort().join(`
256
+ ${Object.entries(packageUsage).map(([pkg2,files])=>`- ${import_picocolors20.default.cyan(pkg2)}: (${files.length} ${files.length===1?"file":"files"})`).sort().join(`
253
257
  `)}
254
258
 
255
259
  Referencing missing packages can cause your project to crash. We can automatically add them to your dependencies.
256
260
 
257
261
  More info: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#failed-to-resolve-import-storybookx-error
258
- `},async run({result:{packageUsage},dryRun,packageManager}){if(logger12.info(`\u2705 Installing the following packages as devDependencies: ${Object.keys(packageUsage)}`),!dryRun){let dependenciesToInstall=Object.keys(packageUsage),versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson()),versionToInstallWithoutModifiers=versionToInstall?.replace(/[\^~]/,"");await packageManager.addDependencies({installAsDevDependencies:!0},dependenciesToInstall.map(pkg2=>`${pkg2}@${versionToInstallWithoutModifiers}`));let packageJson=await packageManager.retrievePackageJson();await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall:!0,packageJson},dependenciesToInstall.map(pkg2=>`${pkg2}@${versionToInstall}`));}}};var detectRenderer=async packageJson=>{let allDependencies={...packageJson.dependencies,...packageJson.devDependencies,...packageJson.peerDependencies},matches=Object.keys(rendererPackages).filter(pkg2=>!!allDependencies[pkg2]),[rendererPackage]=matches;return matches.length>1&&(rendererPackage=(await prompts6([{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 logger13=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(frameworkPackages).includes(frameworkPackageName)&&(builderOrFrameworkName=frameworkPackageName,builderOptions=typeof framework=="object"?framework.options?.builder??{}:{}),!builderOrFrameworkName){let viteConfigFile2=await findUp(viteConfigFiles,{cwd:configDir});if(viteConfigFile2)logger13.info(`No builder or framework field, detected Storybook builder via: ${viteConfigFile2}`),builderOrFrameworkName="vite";else {let webpackConfigFile=await findUp(webpackConfigFiles,{cwd:configDir});webpackConfigFile&&(logger13.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 logger14=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(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(frameworkPackages).find(pkg2=>pkg2===frameworkPackageName);if(newFrameworkPackage||(newFrameworkPackage=packagesMap[rendererPackageName]?.[builderInfo.name]),!newFrameworkPackage)return null;let renderer=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&&semver.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&&semver.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&&semver.lt(viteVersion,"3.0.0"))throw new Error(dedent`
259
- ❌ Your project should be upgraded to use the framework package ${chalk22.bold(newFrameworkPackage)}, but we detected that you are using Vite ${chalk22.bold(viteVersion)}, which is unsupported since ${chalk22.bold("Storybook 7.0")}. Please upgrade Vite to ${chalk22.bold("3.0.0 or higher")} and rerun this migration.
262
+ `},async run({result:{packageUsage},dryRun,packageManager}){if(logger12.info(`\u2705 Installing the following packages as devDependencies: ${Object.keys(packageUsage)}`),!dryRun){let dependenciesToInstall=Object.keys(packageUsage),versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson()),versionToInstallWithoutModifiers=versionToInstall?.replace(/[\^~]/,"");await packageManager.addDependencies({installAsDevDependencies:!0},dependenciesToInstall.map(pkg2=>`${pkg2}@${versionToInstallWithoutModifiers}`));let packageJson=await packageManager.retrievePackageJson();await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall:!0,packageJson},dependenciesToInstall.map(pkg2=>`${pkg2}@${versionToInstall}`));}}};var import_picocolors21=__toESM(require_picocolors(),1);var detectRenderer=async packageJson=>{let allDependencies={...packageJson.dependencies,...packageJson.devDependencies,...packageJson.peerDependencies},matches=Object.keys(rendererPackages).filter(pkg2=>!!allDependencies[pkg2]),[rendererPackage]=matches;return matches.length>1&&(rendererPackage=(await prompts6([{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 logger13=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(frameworkPackages).includes(frameworkPackageName)&&(builderOrFrameworkName=frameworkPackageName,builderOptions=typeof framework=="object"?framework.options?.builder??{}:{}),!builderOrFrameworkName){let viteConfigFile2=await findUp(viteConfigFiles,{cwd:configDir});if(viteConfigFile2)logger13.info(`No builder or framework field, detected Storybook builder via: ${viteConfigFile2}`),builderOrFrameworkName="vite";else {let webpackConfigFile=await findUp(webpackConfigFiles,{cwd:configDir});webpackConfigFile&&(logger13.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 logger14=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(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(frameworkPackages).find(pkg2=>pkg2===frameworkPackageName);if(newFrameworkPackage||(newFrameworkPackage=packagesMap[rendererPackageName]?.[builderInfo.name]),!newFrameworkPackage)return null;let renderer=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&&semver.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&&semver.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&&semver.lt(viteVersion,"3.0.0"))throw new Error(dedent`
263
+ ❌ Your project should be upgraded to use the framework package ${import_picocolors21.default.bold(newFrameworkPackage)}, but we detected that you are using Vite ${import_picocolors21.default.bold(viteVersion)}, which is unsupported since ${import_picocolors21.default.bold("Storybook 7.0")}. Please upgrade Vite to ${import_picocolors21.default.bold("3.0.0 or higher")} and rerun this migration.
260
264
  `);return invariant2(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:
261
- ${dependenciesToRemove.map(dep=>`- * ${chalk22.cyan(dep)}`).join(`
265
+ ${dependenciesToRemove.map(dep=>`- * ${import_picocolors21.default.cyan(dep)}`).join(`
262
266
  `)}
263
267
  `),dependenciesToAdd.length>0&&(migrationSteps+=`- Add the following dependencies:
264
- ${dependenciesToAdd.map(dep=>`- * ${chalk22.cyan(dep)}`).join(`
268
+ ${dependenciesToAdd.map(dep=>`- * ${import_picocolors21.default.cyan(dep)}`).join(`
265
269
  `)}
266
- `),hasFrameworkInMainConfig||(migrationSteps+=`- Update or specify the ${chalk22.yellow("framework")} field in ${chalk22.blue(mainConfigPath)} with the value of "${chalk22.cyan(frameworkPackage)}".
267
- `),Object.keys(rendererOptions).length>0&&(migrationSteps+=`- Move the ${chalk22.yellow(`${renderer}Options`)} field in ${chalk22.blue(mainConfigPath)} to ${chalk22.yellow("framework.options")}, and remove that field entirely.
268
- More info: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#frameworkoptions-renamed")}
269
- `),addonsToRemove.length>0&&(migrationSteps+=`- Remove the following addons from your ${chalk22.blue(mainConfigPath)}, as the new framework also supports features provided by them:
270
- ${addonsToRemove.map(dep=>`- * ${chalk22.cyan(dep)}`).join(`
270
+ `),hasFrameworkInMainConfig||(migrationSteps+=`- Update or specify the ${import_picocolors21.default.yellow("framework")} field in ${import_picocolors21.default.blue(mainConfigPath)} with the value of "${import_picocolors21.default.cyan(frameworkPackage)}".
271
+ `),Object.keys(rendererOptions).length>0&&(migrationSteps+=`- Move the ${import_picocolors21.default.yellow(`${renderer}Options`)} field in ${import_picocolors21.default.blue(mainConfigPath)} to ${import_picocolors21.default.yellow("framework.options")}, and remove that field entirely.
272
+ More info: ${import_picocolors21.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#frameworkoptions-renamed")}
273
+ `),addonsToRemove.length>0&&(migrationSteps+=`- Remove the following addons from your ${import_picocolors21.default.blue(mainConfigPath)}, as the new framework also supports features provided by them:
274
+ ${addonsToRemove.map(dep=>`- * ${import_picocolors21.default.cyan(dep)}`).join(`
271
275
  `)}
272
- `),Object.keys(addonOptions).length>0&&(migrationSteps+=`- Move the addon options "${chalk22.yellow(Object.keys(addonOptions).join(", "))}" in ${chalk22.blue(mainConfigPath)} to the ${chalk22.yellow("framework.options")} field.
273
- `),builderConfig&&(typeof builderConfig=="object"&&Object.keys(builderConfig.options||{}).length>0&&(migrationSteps+=`- Move the ${chalk22.yellow("core.builder.options")} field in ${chalk22.blue(mainConfigPath)} to ${chalk22.yellow("framework.options.builder")}
274
- `),migrationSteps+=`- Remove the ${chalk22.yellow("core.builder")} field in ${chalk22.blue(mainConfigPath)}.
276
+ `),Object.keys(addonOptions).length>0&&(migrationSteps+=`- Move the addon options "${import_picocolors21.default.yellow(Object.keys(addonOptions).join(", "))}" in ${import_picocolors21.default.blue(mainConfigPath)} to the ${import_picocolors21.default.yellow("framework.options")} field.
277
+ `),builderConfig&&(typeof builderConfig=="object"&&Object.keys(builderConfig.options||{}).length>0&&(migrationSteps+=`- Move the ${import_picocolors21.default.yellow("core.builder.options")} field in ${import_picocolors21.default.blue(mainConfigPath)} to ${import_picocolors21.default.yellow("framework.options.builder")}
278
+ `),migrationSteps+=`- Remove the ${import_picocolors21.default.yellow("core.builder")} field in ${import_picocolors21.default.blue(mainConfigPath)}.
275
279
  `),(dependenciesToRemove.includes("@storybook/builder-webpack4")||dependenciesToRemove.includes("@storybook/manager-webpack4"))&&(disclaimer=dedent`\n\n
276
- ${chalk22.underline(chalk22.bold(chalk22.cyan("Webpack 4 users")))}
280
+ ${import_picocolors21.default.underline(import_picocolors21.default.bold(import_picocolors21.default.cyan("Webpack 4 users")))}
277
281
 
278
282
  Unless you're using Storybook's Vite builder, this automigration will install a Webpack 5 based framework.
279
283
 
280
284
  Given you were using Storybook's Webpack 4 builder (default in 6.x, discontinued in 7.0), this could be a breaking change -- especially if your project has a custom webpack configuration.
281
285
 
282
- To learn more about migrating from Webpack4, see: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack4-support-discontinued")}`),metaFramework==="nextjs"&&(dependenciesToRemove.includes("storybook-addon-next-router")&&(migrationSteps+=`- Migrate the usage of the ${chalk22.cyan("storybook-addon-next-router")} addon to use the APIs from the ${chalk22.magenta("@storybook/nextjs")} framework package instead. Follow the instructions below.`),frameworkPackage==="@storybook/react-vite"?disclaimer=dedent`\n\n
283
- ${chalk22.bold("Important")}: We've detected you are using Storybook in a Next.js project.
286
+ To learn more about migrating from Webpack4, see: ${import_picocolors21.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack4-support-discontinued")}`),metaFramework==="nextjs"&&(dependenciesToRemove.includes("storybook-addon-next-router")&&(migrationSteps+=`- Migrate the usage of the ${import_picocolors21.default.cyan("storybook-addon-next-router")} addon to use the APIs from the ${import_picocolors21.default.magenta("@storybook/nextjs")} framework package instead. Follow the instructions below.`),frameworkPackage==="@storybook/react-vite"?disclaimer=dedent`\n\n
287
+ ${import_picocolors21.default.bold("Important")}: We've detected you are using Storybook in a Next.js project.
284
288
 
285
- This migration is set to update your project to use the ${chalk22.magenta("@storybook/react-vite")} framework, but Storybook provides a framework package specifically for Next.js projects: ${chalk22.magenta("@storybook/nextjs")}.
289
+ This migration is set to update your project to use the ${import_picocolors21.default.magenta("@storybook/react-vite")} framework, but Storybook provides a framework package specifically for Next.js projects: ${import_picocolors21.default.magenta("@storybook/nextjs")}.
286
290
 
287
291
  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.
288
292
 
289
- If you are interested in using this package, see: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/README.md")}
293
+ If you are interested in using this package, see: ${import_picocolors21.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/README.md")}
290
294
  `:frameworkPackage==="@storybook/nextjs"&&(disclaimer=dedent`\n\n
291
- The ${chalk22.magenta("@storybook/nextjs")} package provides great user experience for Next.js users, and we highly recommend you to read more about it at ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/README.md")}
295
+ The ${import_picocolors21.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_picocolors21.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/README.md")}
292
296
  `)),metaFramework==="sveltekit"&&(frameworkPackage==="@storybook/svelte-webpack5"?disclaimer=dedent`\n\n
293
- ${chalk22.bold("Important")}: We've detected you are using Storybook in a SvelteKit project.
297
+ ${import_picocolors21.default.bold("Important")}: We've detected you are using Storybook in a SvelteKit project.
294
298
 
295
- This migration is set to update your project to use the ${chalk22.magenta("@storybook/svelte-webpack5")} framework, but Storybook provides a framework package specifically for SvelteKit projects: ${chalk22.magenta("@storybook/sveltekit")}.
299
+ This migration is set to update your project to use the ${import_picocolors21.default.magenta("@storybook/svelte-webpack5")} framework, but Storybook provides a framework package specifically for SvelteKit projects: ${import_picocolors21.default.magenta("@storybook/sveltekit")}.
296
300
 
297
301
  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.
298
302
 
299
- If you are interested in using this package, see: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/sveltekit/README.md")}
300
- `:(migrationSteps+=`- Remove the ${chalk22.yellow(`${renderer}Options`)} field from ${chalk22.blue(mainConfigPath)}.
301
- More info: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vite-builder-uses-vite-config-automatically")}
303
+ If you are interested in using this package, see: ${import_picocolors21.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/sveltekit/README.md")}
304
+ `:(migrationSteps+=`- Remove the ${import_picocolors21.default.yellow(`${renderer}Options`)} field from ${import_picocolors21.default.blue(mainConfigPath)}.
305
+ More info: ${import_picocolors21.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vite-builder-uses-vite-config-automatically")}
302
306
  `,disclaimer=dedent`\n\n
303
- The ${chalk22.magenta("@storybook/sveltekit")} package provides great user experience for SvelteKit users, and we highly recommend you to read more about it at ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/sveltekit/README.md")}
307
+ The ${import_picocolors21.default.magenta("@storybook/sveltekit")} package provides great user experience for SvelteKit users, and we highly recommend you to read more about it at ${import_picocolors21.default.yellow("https://github.com/storybookjs/storybook/blob/next/code/frameworks/sveltekit/README.md")}
304
308
  `)),dedent`
305
309
  We've detected your project is not fully setup with the new framework format, which was introduced in Storybook 7.
306
310
 
307
311
  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.
308
312
 
309
- Your project should be updated to use Storybook's framework: ${chalk22.magenta(frameworkPackage)}. We can attempt to do this for you automatically.
313
+ Your project should be updated to use Storybook's framework: ${import_picocolors21.default.magenta(frameworkPackage)}. We can attempt to do this for you automatically.
310
314
 
311
315
  Here are the steps this migration will do to migrate your project:
312
316
  ${migrationSteps}
313
317
 
314
- To learn more about the new framework format, see: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#new-framework-api")}${disclaimer}
318
+ To learn more about the new framework format, see: ${import_picocolors21.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#new-framework-api")}${disclaimer}
315
319
  `},async run({result:{dependenciesToAdd,dependenciesToRemove,frameworkPackage,frameworkOptions,builderInfo,renderer,addonsToRemove},packageManager,dryRun,mainConfigPath,skipInstall}){let packageJson=await packageManager.retrievePackageJson();if(dependenciesToRemove.length>0&&(logger14.info(`\u2705 Removing dependencies: ${dependenciesToRemove.join(", ")}`),dryRun||await packageManager.removeDependencies({skipInstall:skipInstall||dependenciesToAdd.length>0,packageJson},dependenciesToRemove)),dependenciesToAdd.length>0&&(logger14.info(`\u2705 Installing new dependencies: ${dependenciesToAdd.join(", ")}`),!dryRun)){let versionToInstall=getStorybookVersionSpecifier(packageJson),depsToAdd=dependenciesToAdd.map(dep=>`${dep}@${versionToInstall}`);await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall,packageJson},depsToAdd);}await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger14.info("\u2705 Updating main.js"),logger14.info('\u2705 Updating "framework" field'),dryRun||main.setFieldValue(["framework","name"],frameworkPackage),dryRun||main.setFieldValue(["framework","options"],frameworkOptions),main.getFieldNode([`${renderer}Options`])&&(logger14.info(`\u2705 Moving "${renderer}Options" to "framework.options"`),dryRun||main.removeField([`${renderer}Options`])),main.getFieldNode(["core","builder"])&&(logger14.info('\u2705 Removing "core.builder" field'),dryRun||main.removeField(["core","builder"])),Object.keys(builderInfo.options).length>0&&(logger14.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&&(logger14.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);logger14.info("\u2705 Removing unnecessary addons"),dryRun||main.setFieldValue(["addons"],updatedAddons);}});}};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 dedent`
316
320
  We detected that your project has a dependency for "react" that it might not need.
317
321
  Nothing breaks by having it, you can safely ignore this message, if you wish.
@@ -322,7 +326,7 @@ ${chalk22.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.inf
322
326
 
323
327
  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.
324
328
  Storybook cannot do this automatically as removing it might break your project, so it should be done manually with care.
325
- `}};var logger15=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?dedent`
329
+ `}};var import_picocolors22=__toESM(require_picocolors(),1);var logger15=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?dedent`
326
330
  You have "typescript.reactDocgenTypescriptOptions" configured in your main.js,
327
331
  but "typescript.reactDocgen" is unset.
328
332
 
@@ -336,19 +340,19 @@ ${chalk22.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.inf
336
340
 
337
341
  https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-docgen-component-analysis-by-default
338
342
  `:dedent`
339
- Since Storybook 8.0, ${chalk22.cyan("react-docgen")} is now the default for generating component controls, replacing ${chalk22.cyan("react-docgen-typescript")}.
343
+ Since Storybook 8.0, ${import_picocolors22.default.cyan("react-docgen")} is now the default for generating component controls, replacing ${import_picocolors22.default.cyan("react-docgen-typescript")}.
340
344
  This offers better performance and suits most cases.
341
345
  However, for complex TypeScript types or specific type features, the generated controls might not be as precise.
342
346
 
343
347
  For more on this change, check the migration guide:
344
- ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-docgen-component-analysis-by-default")}
348
+ ${import_picocolors22.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-docgen-component-analysis-by-default")}
345
349
 
346
350
  For known "react-docgen" limitations, see:
347
- ${chalk22.yellow("https://github.com/storybookjs/storybook/issues/26606")}
351
+ ${import_picocolors22.default.yellow("https://github.com/storybookjs/storybook/issues/26606")}
348
352
 
349
- Press Y to revert to ${chalk22.cyan("react-docgen-typescript")}, press N to use ${chalk22.cyan("react-docgen")}
350
- `},async run({dryRun,mainConfigPath,result}){dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger15.info("\u2705 Setting typescript.reactDocgen"),main.setFieldValue(["typescript","reactDocgen"],"react-docgen-typescript");});}};var 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 readFile(previewConfigPath,{encoding:"utf-8"}),file=new babel.File({filename:previewConfigPath},{code:previewFile,ast:babelParse(previewFile)}),argTypesRegex;return file.path.traverse({Identifier:path=>{path.node.name==="argTypesRegex"&&(argTypesRegex=path);}}),argTypesRegex?{argTypesRegex,previewConfigPath}:null},prompt({argTypesRegex,previewConfigPath}){return dedent`
351
- ${chalk22.bold("Attention")}: We've detected that you're using argTypesRegex:
353
+ Press Y to revert to ${import_picocolors22.default.cyan("react-docgen-typescript")}, press N to use ${import_picocolors22.default.cyan("react-docgen")}
354
+ `},async run({dryRun,mainConfigPath,result}){dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger15.info("\u2705 Setting typescript.reactDocgen"),main.setFieldValue(["typescript","reactDocgen"],"react-docgen-typescript");});}};var import_picocolors23=__toESM(require_picocolors(),1);var 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 readFile(previewConfigPath,{encoding:"utf-8"}),file=new babel.File({filename:previewConfigPath},{code:previewFile,ast:babelParse(previewFile)}),argTypesRegex;return file.path.traverse({Identifier:path=>{path.node.name==="argTypesRegex"&&(argTypesRegex=path);}}),argTypesRegex?{argTypesRegex,previewConfigPath}:null},prompt({argTypesRegex,previewConfigPath}){return dedent`
355
+ ${import_picocolors23.default.bold("Attention")}: We've detected that you're using argTypesRegex:
352
356
 
353
357
  ${argTypesRegex.buildCodeFrameError(`${previewConfigPath}`).message}
354
358
 
@@ -361,58 +365,58 @@ ${chalk22.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.inf
361
365
  (fn) function to mock your component's methods instead.
362
366
 
363
367
  Use the following command to check for implied mocked actions in your play functions:
364
- ${chalk22.cyan('npx storybook migrate find-implicit-spies --glob="**/*.stories.@(js|jsx|ts|tsx)"')}
368
+ ${import_picocolors23.default.cyan('npx storybook migrate find-implicit-spies --glob="**/*.stories.@(js|jsx|ts|tsx)"')}
365
369
 
366
370
  Then, refer to our docs to migrate your play functions to Storybook 8:
367
- ${chalk22.yellow("https://storybook.js.org/docs/8.0/essentials/actions#via-storybooktest-fn-spy-function")}
368
- `}};var 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 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 dedent`
369
- ${chalk22.bold(chalk22.red("Attention"))}: We could not automatically make this change. You'll need to do it manually.
371
+ ${import_picocolors23.default.yellow("https://storybook.js.org/docs/8.0/essentials/actions#via-storybooktest-fn-spy-function")}
372
+ `}};var import_picocolors24=__toESM(require_picocolors(),1);var 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 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 dedent`
373
+ ${import_picocolors24.default.bold(import_picocolors24.default.red("Attention"))}: We could not automatically make this change. You'll need to do it manually.
370
374
 
371
- The following APIs (used in "${chalk22.yellow(previewPath)}") have been removed from Storybook:
375
+ The following APIs (used in "${import_picocolors24.default.yellow(previewPath)}") have been removed from Storybook:
372
376
 
373
- ${usedAPIs.map(api=>`- ${chalk22.cyan(api)}`).join(`
377
+ ${usedAPIs.map(api=>`- ${import_picocolors24.default.cyan(api)}`).join(`
374
378
  `)}
375
379
 
376
380
  Please see the migration guide for more information:
377
- ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#removed-global-client-apis")}
378
- `}};var logger16=console,removeJestTestingLibrary={id:"remove-jest-testing-library",versionRange:["<8.0.0-alpha.0",">=8.0.0-alpha.0"],promptType:"auto",async check({packageManager}){let deps=await packageManager.getAllDependencies(),incompatiblePackages=Object.keys(deps).filter(it=>it==="@storybook/jest"||it==="@storybook/testing-library");return incompatiblePackages.length?{incompatiblePackages}:null},prompt({incompatiblePackages}){return dedent`
379
- ${chalk22.bold("Attention")}: We've detected that you're using the following packages which are known to be incompatible since Storybook 8:
381
+ ${import_picocolors24.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#removed-global-client-apis")}
382
+ `}};var import_picocolors25=__toESM(require_picocolors(),1);var logger16=console,removeJestTestingLibrary={id:"remove-jest-testing-library",versionRange:["<8.0.0-alpha.0",">=8.0.0-alpha.0"],promptType:"auto",async check({packageManager}){let deps=await packageManager.getAllDependencies(),incompatiblePackages=Object.keys(deps).filter(it=>it==="@storybook/jest"||it==="@storybook/testing-library");return incompatiblePackages.length?{incompatiblePackages}:null},prompt({incompatiblePackages}){return dedent`
383
+ ${import_picocolors25.default.bold("Attention")}: We've detected that you're using the following packages which are known to be incompatible since Storybook 8:
380
384
 
381
- ${incompatiblePackages.map(name=>`- ${chalk22.cyan(`${name}`)}`).join(`
385
+ ${incompatiblePackages.map(name=>`- ${import_picocolors25.default.cyan(`${name}`)}`).join(`
382
386
  `)}
383
387
 
384
- We will uninstall them for you and install ${chalk22.cyan("@storybook/test")} instead.
388
+ We will uninstall them for you and install ${import_picocolors25.default.cyan("@storybook/test")} instead.
385
389
 
386
390
  Also, we can help you migrate your stories to use the new package.
387
391
  `},async run({packageManager,dryRun}){if(!dryRun){let packageJson=await packageManager.retrievePackageJson();await packageManager.removeDependencies({skipInstall:!0,packageJson},["@storybook/jest","@storybook/testing-library"]);let versionToInstall=getStorybookVersionSpecifier(packageJson);await packageManager.addDependencies({installAsDevDependencies:!0,packageJson},[`@storybook/test@${versionToInstall}`]);let{glob:globString}=await prompts6({type:"text",name:"glob",message:"Please enter the glob for your stories to migrate to @storybook/test",initial:"./src/**/*.stories.*"});globString&&await runCodemod("migrate-to-test-package",{glob:globString,dryRun,logger:logger16});}}};var logger17=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 dedent`
388
392
  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?
389
393
 
390
394
  Link: https://storybook.js.org/docs/8.0/migration-guide
391
- `},async run({dryRun,mainConfigPath,skipInstall,packageManager}){if(logger17.info("\u2705 Removing legacyMdx1 feature"),!dryRun){await updateMainConfig({dryRun:!!dryRun,mainConfigPath},async main=>{main.removeField(["features","legacyMdx1"]),await writeConfig(main);});let packageJson=await packageManager.retrievePackageJson();await packageManager.removeDependencies({skipInstall,packageJson},["@storybook/mdx1-csf"]);}}};var logger18=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=chalk22.cyan(`Storybook ${storybookVersion}`),storybookBinaryMessage=hasStorybookBinary?"":`We've detected you are using ${sbFormatted} without Storybook's ${chalk22.magenta("storybook")} binary. Starting in Storybook 7.0, it has to be installed.`;return dedent`
395
+ `},async run({dryRun,mainConfigPath,skipInstall,packageManager}){if(logger17.info("\u2705 Removing legacyMdx1 feature"),!dryRun){await updateMainConfig({dryRun:!!dryRun,mainConfigPath},async main=>{main.removeField(["features","legacyMdx1"]),await writeConfig(main);});let packageJson=await packageManager.retrievePackageJson();await packageManager.removeDependencies({skipInstall,packageJson},["@storybook/mdx1-csf"]);}}};var import_picocolors26=__toESM(require_picocolors(),1);var logger18=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_picocolors26.default.cyan(`Storybook ${storybookVersion}`),storybookBinaryMessage=hasStorybookBinary?"":`We've detected you are using ${sbFormatted} without Storybook's ${import_picocolors26.default.magenta("storybook")} binary. Starting in Storybook 7.0, it has to be installed.`;return dedent`
392
396
  ${storybookBinaryMessage}
393
397
  ${hasSbBinary?`You're using the 'sb' binary and it should be replaced, as 'storybook' is the recommended way to run Storybook.
394
398
  `:""}
395
399
 
396
- More info: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#start-storybook--build-storybook-binaries-removed")}
397
- `},async run({result:{packageJson,hasSbBinary,hasStorybookBinary},packageManager,dryRun,skipInstall}){if(hasSbBinary&&(logger18.info("\u2705 Removing 'sb' dependency"),dryRun||await packageManager.removeDependencies({skipInstall:skipInstall||!hasStorybookBinary,packageJson},["sb"])),!hasStorybookBinary&&(logger18.log(),logger18.info("\u2705 Adding 'storybook' as dev dependency"),logger18.log(),!dryRun)){let versionToInstall=getStorybookVersionSpecifier(packageJson);await packageManager.addDependencies({installAsDevDependencies:!0,packageJson,skipInstall},[`storybook@${versionToInstall}`]);}}};var logger19=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(semver.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=chalk22.cyan(`Storybook ${storybookVersion}`),newScriptsMessage=Object.keys(storybookScripts).reduce((acc,scriptKey)=>(acc.push([chalk22.bold(scriptKey),"from:",chalk22.cyan(storybookScripts[scriptKey].before),"to:",chalk22.cyan(storybookScripts[scriptKey].after)].join(`
400
+ More info: ${import_picocolors26.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#start-storybook--build-storybook-binaries-removed")}
401
+ `},async run({result:{packageJson,hasSbBinary,hasStorybookBinary},packageManager,dryRun,skipInstall}){if(hasSbBinary&&(logger18.info("\u2705 Removing 'sb' dependency"),dryRun||await packageManager.removeDependencies({skipInstall:skipInstall||!hasStorybookBinary,packageJson},["sb"])),!hasStorybookBinary&&(logger18.log(),logger18.info("\u2705 Adding 'storybook' as dev dependency"),logger18.log(),!dryRun)){let versionToInstall=getStorybookVersionSpecifier(packageJson);await packageManager.addDependencies({installAsDevDependencies:!0,packageJson,skipInstall},[`storybook@${versionToInstall}`]);}}};var import_picocolors27=__toESM(require_picocolors(),1);var logger19=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(semver.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_picocolors27.default.cyan(`Storybook ${storybookVersion}`),newScriptsMessage=Object.keys(storybookScripts).reduce((acc,scriptKey)=>(acc.push([import_picocolors27.default.bold(scriptKey),"from:",import_picocolors27.default.cyan(storybookScripts[scriptKey].before),"to:",import_picocolors27.default.cyan(storybookScripts[scriptKey].after)].join(`
398
402
  `)),acc),[]);return dedent`
399
403
  We've detected you are using ${sbFormatted} with scripts from previous versions of Storybook.
400
- Starting in Storybook 7, the ${chalk22.yellow("start-storybook")} and ${chalk22.yellow("build-storybook")} binaries have changed to ${chalk22.magenta("storybook dev")} and ${chalk22.magenta("storybook build")} respectively.
404
+ Starting in Storybook 7, the ${import_picocolors27.default.yellow("start-storybook")} and ${import_picocolors27.default.yellow("build-storybook")} binaries have changed to ${import_picocolors27.default.magenta("storybook dev")} and ${import_picocolors27.default.magenta("storybook build")} respectively.
401
405
  In order to work with ${sbFormatted}, your storybook scripts have to be adjusted to use the binary. We can adjust them for you:
402
406
 
403
407
  ${newScriptsMessage.join(`
404
408
 
405
409
  `)}
406
410
 
407
- In case this migration did not cover all of your scripts, or you'd like more info: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#start-storybook--build-storybook-binaries-removed")}
408
- `},async run({result:{storybookScripts},packageManager,dryRun}){if(logger19.info("\u2705 Updating scripts in package.json"),logger19.log(),!dryRun){let newScripts=Object.keys(storybookScripts).reduce((acc,scriptKey)=>(acc[scriptKey]=storybookScripts[scriptKey].after,acc),{});logger19.log(),await packageManager.addScripts(newScripts);}}};var 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 dedent`
409
- ${chalk22.bold("Attention")}: Storyshots is now officially deprecated, is no longer being maintained, and was removed in Storybook 8.
411
+ In case this migration did not cover all of your scripts, or you'd like more info: ${import_picocolors27.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#start-storybook--build-storybook-binaries-removed")}
412
+ `},async run({result:{storybookScripts},packageManager,dryRun}){if(logger19.info("\u2705 Updating scripts in package.json"),logger19.log(),!dryRun){let newScripts=Object.keys(storybookScripts).reduce((acc,scriptKey)=>(acc[scriptKey]=storybookScripts[scriptKey].after,acc),{});logger19.log(),await packageManager.addScripts(newScripts);}}};var import_picocolors28=__toESM(require_picocolors(),1);var 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 dedent`
413
+ ${import_picocolors28.default.bold("Attention")}: Storyshots is now officially deprecated, is no longer being maintained, and was removed in Storybook 8.
410
414
 
411
415
  We recommend following the migration guide we've prepared to help you during this transition period:
412
- ${chalk22.yellow("https://storybook.js.org/docs/writing-tests/storyshots-migration-guide")}
413
- `}};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=>!isCorePackage(dep)),incompatibleDependencies=analyzedPackages.filter(pkg2=>pkg2.hasIncompatibleDependencies).map(pkg2=>pkg2.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:gt(afterVersion,beforeVersion));return upgradablePackages.length>0?{upgradable:upgradablePackages}:null},prompt({upgradable}){return dedent`
416
+ ${import_picocolors28.default.yellow("https://storybook.js.org/docs/writing-tests/storyshots-migration-guide")}
417
+ `}};var import_picocolors29=__toESM(require_picocolors(),1);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=>!isCorePackage(dep)),incompatibleDependencies=analyzedPackages.filter(pkg2=>pkg2.hasIncompatibleDependencies).map(pkg2=>pkg2.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:gt(afterVersion,beforeVersion));return upgradablePackages.length>0?{upgradable:upgradablePackages}:null},prompt({upgradable}){return dedent`
414
418
  You're upgrading to the latest version of Storybook. We recommend upgrading the following packages:
415
- ${upgradable.map(({packageName,afterVersion,beforeVersion})=>`- ${cyan(packageName)}: ${cyan(beforeVersion)} => ${cyan(afterVersion)}`).join(`
419
+ ${upgradable.map(({packageName,afterVersion,beforeVersion})=>`- ${(0, import_picocolors29.cyan)(packageName)}: ${(0, import_picocolors29.cyan)(beforeVersion)} => ${(0, import_picocolors29.cyan)(afterVersion)}`).join(`
416
420
  `)}
417
421
 
418
422
  After upgrading, we will run the dedupe command, which could possibly have effects on dependencies that are not Storybook related.
@@ -424,8 +428,8 @@ ${chalk22.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.inf
424
428
  ${upgradable.map(({packageName,afterVersion,beforeVersion})=>`${packageName}: ${beforeVersion} => ${afterVersion}`).join(`
425
429
  `)}
426
430
  `);return}if(upgradable.length>0){let packageJson=await packageManager.readPackageJson();upgradable.forEach(item=>{if(!item)return;let{packageName,afterVersion:version}=item,prefixed=`^${version}`;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(dedent`
427
- We upgraded ${yellow(upgradable.length)} packages:
428
- ${upgradable.map(({packageName,afterVersion,beforeVersion})=>`- ${cyan(packageName)}: ${cyan(beforeVersion)} => ${cyan(afterVersion)}`).join(`
431
+ We upgraded ${(0, import_picocolors29.yellow)(upgradable.length)} packages:
432
+ ${upgradable.map(({packageName,afterVersion,beforeVersion})=>`- ${(0, import_picocolors29.cyan)(packageName)}: ${(0, import_picocolors29.cyan)(beforeVersion)} => ${(0, import_picocolors29.cyan)(afterVersion)}`).join(`
429
433
  `)}
430
434
  `);}console.log();}};var viteConfigFile={id:"viteConfigFile",versionRange:["<8.0.0-beta.3",">=8.0.0-beta.3"],promptType:"notification",async check({mainConfig,packageManager,mainConfigPath}){let isViteConfigFileFound=!!await findUp(["vite.config.js","vite.config.mjs","vite.config.cjs","vite.config.ts","vite.config.mts"],{cwd:mainConfigPath?join(mainConfigPath,".."):process.cwd()}),rendererToVitePluginMap={preact:"@preact/preset-vite",qwik:"vite-plugin-qwik",react:"@vitejs/plugin-react",solid:"vite-plugin-solid",svelte:"@sveltejs/vite-plugin-svelte",sveltekit:"@sveltejs/kit/vite",vue:"@vitejs/plugin-vue"},frameworkPackageName=getFrameworkPackageName(mainConfig);if(!frameworkPackageName)return null;let frameworkName=frameworkPackages[frameworkPackageName],isUsingViteBuilder=mainConfig.core?.builder==="vite"||frameworkPackageName?.includes("vite")||frameworkPackageName==="qwik"||frameworkPackageName==="solid"||frameworkPackageName==="sveltekit",rendererName=frameworkToRenderer[frameworkName];if(!isViteConfigFileFound&&mainConfig.core?.builder&&typeof mainConfig.core?.builder!="string"&&mainConfig.core?.builder.options&&(isViteConfigFileFound=!!mainConfig.core?.builder.options.viteConfigPath),!isViteConfigFileFound&&isUsingViteBuilder){let plugins=[];return rendererToVitePluginMap[rendererName]&&plugins.push(rendererToVitePluginMap[rendererName]),{plugins,existed:isViteConfigFileFound}}let plugin=rendererToVitePluginMap[rendererName];if(!plugin)return null;let pluginVersion=await packageManager.getPackageVersion(plugin);if(isViteConfigFileFound&&isUsingViteBuilder&&!pluginVersion){let plugins=[];return plugin&&plugins.push(plugin),{plugins,existed:!isViteConfigFileFound}}return null},prompt({existed,plugins}){return existed?dedent`
431
435
  Since version 8.0.0, Storybook no longer ships with an in-built Vite config.
@@ -448,69 +452,69 @@ ${chalk22.cyan("npx storybook doctor")}`;logger2.info(),foundIssues?(logger2.inf
448
452
  https://storybook.js.org/docs/8.0/migration-guide/#missing-viteconfigjs-file
449
453
 
450
454
  This change was necessary to support newer versions of Vite.
451
- `}};var logger20=console,vta={id:"visual-tests-addon",versionRange:["<8.0.7",">=8.0.7"],async check({mainConfig}){return getAddonNames(mainConfig).some(addon=>addon.includes("@chromatic-com/storybook"))?null:{}},prompt(){return dedent`
455
+ `}};var import_picocolors30=__toESM(require_picocolors(),1);var logger20=console,vta={id:"visual-tests-addon",versionRange:["<8.0.7",">=8.0.7"],async check({mainConfig}){return getAddonNames(mainConfig).some(addon=>addon.includes("@chromatic-com/storybook"))?null:{}},prompt(){return dedent`
452
456
  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.
453
457
 
454
- Learn more: ${chalk22.yellow("https://storybook.js.org/docs/writing-tests/visual-testing")}
458
+ Learn more: ${import_picocolors30.default.yellow("https://storybook.js.org/docs/writing-tests/visual-testing")}
455
459
 
456
460
  Install Visual Tests addon in your project?
457
- `},async run({packageManager,dryRun,mainConfigPath,skipInstall}){if(!dryRun){let packageJson=await packageManager.retrievePackageJson();await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall,packageJson},["@chromatic-com/storybook@^1"]),await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger20.info('\u2705 Adding "@chromatic-com/storybook" addon'),main.appendValueToArray(["addons"],"@chromatic-com/storybook");});}}};var vue3={id:"vue3",versionRange:["<7",">=7"],async check({packageManager,mainConfig,storybookVersion}){let vueVersion=await packageManager.getPackageVersion("vue");if(!vueVersion||semver.lt(vueVersion,"3.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{vueVersion,...builderInfo}:null},prompt({vueVersion,storybookVersion}){let vueFormatted=chalk22.cyan(`Vue ${vueVersion}`),sbFormatted=chalk22.cyan(`Storybook ${storybookVersion}`);return dedent`
461
+ `},async run({packageManager,dryRun,mainConfigPath,skipInstall}){if(!dryRun){let packageJson=await packageManager.retrievePackageJson();await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall,packageJson},["@chromatic-com/storybook@^1"]),await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger20.info('\u2705 Adding "@chromatic-com/storybook" addon'),main.appendValueToArray(["addons"],"@chromatic-com/storybook");});}}};var import_picocolors31=__toESM(require_picocolors(),1);var vue3={id:"vue3",versionRange:["<7",">=7"],async check({packageManager,mainConfig,storybookVersion}){let vueVersion=await packageManager.getPackageVersion("vue");if(!vueVersion||semver.lt(vueVersion,"3.0.0"))return null;let builderInfo=await checkWebpack5Builder({mainConfig,storybookVersion});return builderInfo?{vueVersion,...builderInfo}:null},prompt({vueVersion,storybookVersion}){let vueFormatted=import_picocolors31.default.cyan(`Vue ${vueVersion}`),sbFormatted=import_picocolors31.default.cyan(`Storybook ${storybookVersion}`);return dedent`
458
462
  We've detected you are running ${vueFormatted} with Storybook.
459
463
  ${sbFormatted} runs webpack4 by default, which is incompatible.
460
464
 
461
- In order to work with your version of Vue, we need to install Storybook's ${chalk22.cyan("webpack5 builder")}.
465
+ In order to work with your version of Vue, we need to install Storybook's ${import_picocolors31.default.cyan("webpack5 builder")}.
462
466
 
463
- More info: ${chalk22.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vue3-upgrade")}
464
- `},async run(options){return webpack5.run({...options,result:{webpackVersion:null,...options.result}})}};var webpack5CompilerSetup={id:"webpack5-compiler-setup",versionRange:["<8.0.0-alpha.9",">=8.0.0-alpha.9"],promptType(result){return result.isNextJs&&!result.shouldRemoveSWCFlag?"notification":"auto"},async check({mainConfig,packageManager}){if(getAddonNames(mainConfig).find(addon=>addon.includes(CoreWebpackCompilers.Babel)||addon.includes(CoreWebpackCompilers.SWC)))return null;let frameworkName=Object.entries(frameworkPackages).find(([name])=>name===getFrameworkPackageName(mainConfig))?.[1],builderPackageName=getBuilderPackageName(mainConfig),customCoreBuilder=builderPackageName?builderNameToCoreBuilder[builderPackageName]:null,defaultCoreBuilder=frameworkName?frameworkToDefaultBuilder[frameworkName]:await(async()=>await packageManager.getPackageVersion("webpack")?CoreBuilder.Webpack5:CoreBuilder.Vite)();if((customCoreBuilder||defaultCoreBuilder)!==CoreBuilder.Webpack5||(frameworkName?["angular","ember"].includes(frameworkName):!1)||!!await packageManager.getPackageVersion("react-scripts"))return null;let frameworkOptions=getFrameworkOptions(mainConfig),defaultCompiler=frameworkOptions?.builder?.useSWC?CoreWebpackCompilers.SWC: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(dedent`
467
+ More info: ${import_picocolors31.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vue3-upgrade")}
468
+ `},async run(options){return webpack5.run({...options,result:{webpackVersion:null,...options.result}})}};var import_picocolors32=__toESM(require_picocolors(),1);var webpack5CompilerSetup={id:"webpack5-compiler-setup",versionRange:["<8.0.0-alpha.9",">=8.0.0-alpha.9"],promptType(result){return result.isNextJs&&!result.shouldRemoveSWCFlag?"notification":"auto"},async check({mainConfig,packageManager}){if(getAddonNames(mainConfig).find(addon=>addon.includes(CoreWebpackCompilers.Babel)||addon.includes(CoreWebpackCompilers.SWC)))return null;let frameworkName=Object.entries(frameworkPackages).find(([name])=>name===getFrameworkPackageName(mainConfig))?.[1],builderPackageName=getBuilderPackageName(mainConfig),customCoreBuilder=builderPackageName?builderNameToCoreBuilder[builderPackageName]:null,defaultCoreBuilder=frameworkName?frameworkToDefaultBuilder[frameworkName]:await(async()=>await packageManager.getPackageVersion("webpack")?CoreBuilder.Webpack5:CoreBuilder.Vite)();if((customCoreBuilder||defaultCoreBuilder)!==CoreBuilder.Webpack5||(frameworkName?["angular","ember"].includes(frameworkName):!1)||!!await packageManager.getPackageVersion("react-scripts"))return null;let frameworkOptions=getFrameworkOptions(mainConfig),defaultCompiler=frameworkOptions?.builder?.useSWC?CoreWebpackCompilers.SWC: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(dedent`
465
469
  We need to update your Storybook configuration for Webpack 5.
466
- The ${chalk22.yellow("framework.options.builder.useSWC")} flag will be removed.`),isNextJs?message.push(dedent`
470
+ The ${import_picocolors32.default.yellow("framework.options.builder.useSWC")} flag will be removed.`),isNextJs?message.push(dedent`
467
471
  Storybook now detects whether it should use Babel or SWC as a compiler by applying the same logic as Next.js itself:\n
468
- - If you have a ${chalk22.yellow(".babelrc")} (or ${chalk22.yellow("babel.config.js")}) file in your project, Storybook will use Babel as the compiler.
469
- - If you have a ${chalk22.yellow(".babelrc")} (or ${chalk22.yellow("babel.config.js")}) file in your project and you have set
470
- ${chalk22.yellow("experimental.forceSwcTransforms = true")} in your ${chalk22.yellow("next.config.js")} file,
472
+ - If you have a ${import_picocolors32.default.yellow(".babelrc")} (or ${import_picocolors32.default.yellow("babel.config.js")}) file in your project, Storybook will use Babel as the compiler.
473
+ - If you have a ${import_picocolors32.default.yellow(".babelrc")} (or ${import_picocolors32.default.yellow("babel.config.js")}) file in your project and you have set
474
+ ${import_picocolors32.default.yellow("experimental.forceSwcTransforms = true")} in your ${import_picocolors32.default.yellow("next.config.js")} file,
471
475
  Storybook will use SWC as the compiler.
472
- - If you don't have a ${chalk22.yellow(".babelrc")} (or ${chalk22.yellow("babel.config.js")}) file in your project, Storybook will use SWC as the compiler.
476
+ - If you don't have a ${import_picocolors32.default.yellow(".babelrc")} (or ${import_picocolors32.default.yellow("babel.config.js")}) file in your project, Storybook will use SWC as the compiler.
473
477
  `):defaultCompiler===CoreWebpackCompilers.Babel?message.push(dedent`
474
478
  Storybook's Webpack5 builder is now compiler agnostic, meaning you can choose a compiler addon that best fits your project:\n
475
479
  - 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.
476
480
  - 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
477
481
  In the next step, Storybook will ask you to choose a compiler to automatically set it up for you.\n
478
482
  After the migration, you can switch Webpack5 compilers by swapping the addon in your project.
479
- You can find more information here: ${chalk22.yellow("https://storybook.js.org/docs/8.0/builders/webpack#compiler-support")}
483
+ You can find more information here: ${import_picocolors32.default.yellow("https://storybook.js.org/docs/8.0/builders/webpack#compiler-support")}
480
484
  `):message.push(dedent`
481
485
  Storybook's Webpack5 builder is now compiler agnostic, meaning you have to install an additional addon to set up a compiler for Webpack5.\n
482
486
  We have detected, that you want to use SWC as the compiler for Webpack5.\n
483
487
  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
484
488
  After the migration, you can switch Webpack5 compilers by swapping the addon in your project.
485
- You can find more information here: ${chalk22.yellow("https://storybook.js.org/docs/8.0/builders/webpack#compiler-support")}
489
+ You can find more information here: ${import_picocolors32.default.yellow("https://storybook.js.org/docs/8.0/builders/webpack#compiler-support")}
486
490
  `),message.join(`
487
491
 
488
- `)},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===CoreWebpackCompilers.Babel?await askUserForCompilerChoice():CoreWebpackCompilers.SWC,compilerPackageName=Object.entries(compilerNameToCoreCompiler).find(([,coreCompiler])=>coreCompiler===compiler)[0];await add(compilerPackageName,{packageManager:packageManager.type,skipPostinstall:!!skipInstall});}}};async function askUserForCompilerChoice(){return (await prompts6({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:CoreWebpackCompilers.Babel},{title:"SWC",description:"Choose SWC for fast builds and simple configuration.",value:CoreWebpackCompilers.SWC}],initial:0})).compiler}var wrapRequire={id:"wrap-require",versionRange:["*","*"],async check({packageManager,storybookVersion,mainConfigPath}){let isStorybookInMonorepo=await packageManager.isStorybookInMonorepo(),isPnp=await detectPnp();if(!mainConfigPath)return null;let config=await 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=chalk22.cyan(`Storybook ${storybookVersion}`);return dedent`We have detected that you're using ${sbFormatted} in a ${isStorybookInMonorepo?"monorepo":"PnP"} project.
492
+ `)},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===CoreWebpackCompilers.Babel?await askUserForCompilerChoice():CoreWebpackCompilers.SWC,compilerPackageName=Object.entries(compilerNameToCoreCompiler).find(([,coreCompiler])=>coreCompiler===compiler)[0];await add(compilerPackageName,{packageManager:packageManager.type,skipPostinstall:!!skipInstall});}}};async function askUserForCompilerChoice(){return (await prompts6({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:CoreWebpackCompilers.Babel},{title:"SWC",description:"Choose SWC for fast builds and simple configuration.",value:CoreWebpackCompilers.SWC}],initial:0})).compiler}var import_picocolors33=__toESM(require_picocolors(),1);var wrapRequire={id:"wrap-require",versionRange:["*","*"],async check({packageManager,storybookVersion,mainConfigPath}){let isStorybookInMonorepo=await packageManager.isStorybookInMonorepo(),isPnp=await detectPnp();if(!mainConfigPath)return null;let config=await 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_picocolors33.default.cyan(`Storybook ${storybookVersion}`);return dedent`We have detected that you're using ${sbFormatted} in a ${isStorybookInMonorepo?"monorepo":"PnP"} project.
489
493
  For Storybook to work correctly, some fields in your main config must be updated. We can do this for you automatically.
490
494
 
491
- More info: https://storybook.js.org/docs/react/faq#how-do-i-fix-module-resolution-in-special-environments`},async run({dryRun,mainConfigPath,result}){return new Promise((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=[missingStorybookDependencies,addonsAPI,newFrameworks,cra5,webpack5,vue3,addonPostCSS,viteConfigFile,eslintPlugin,builderVite,sbBinary,sbScripts,removeJestTestingLibrary,removeArgtypesRegex,removedGlobalClientAPIs,mdxgfm,mdxToCSF,autodocsTrue,angularBuildersMultiproject,angularBuilders,wrapRequire,reactDocgen,storyshotsMigration,removeReactDependency,removeLegacyMDX1,webpack5CompilerSetup,mdx1to3,upgradeStorybookRelatedDependencies,vta,autodocsTags,initialGlobals];var messageDivider2=`
495
+ More info: https://storybook.js.org/docs/react/faq#how-do-i-fix-module-resolution-in-special-environments`},async run({dryRun,mainConfigPath,result}){return new Promise((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=[missingStorybookDependencies,addonsAPI,newFrameworks,cra5,webpack5,vue3,addonPostCSS,viteConfigFile,eslintPlugin,builderVite,sbBinary,sbScripts,removeJestTestingLibrary,removeArgtypesRegex,removedGlobalClientAPIs,mdxgfm,mdxToCSF,autodocsTrue,angularBuildersMultiproject,angularBuilders,wrapRequire,reactDocgen,storyshotsMigration,removeReactDependency,removeLegacyMDX1,webpack5CompilerSetup,mdx1to3,upgradeStorybookRelatedDependencies,vta,autodocsTags,initialGlobals];var import_picocolors34=__toESM(require_picocolors(),1);var messageDivider2=`
492
496
 
493
497
  `,segmentDivider=`
494
498
 
495
499
  \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
496
500
 
497
- `;function getGlossaryMessages(fixSummary,fixResults,logFile){let messages=[];return fixSummary.succeeded.length>0&&(messages.push(chalk22.bold("Successful migrations:")),messages.push(fixSummary.succeeded.map(m=>chalk22.green(m)).join(", "))),Object.keys(fixSummary.failed).length>0&&(messages.push(chalk22.bold("Failed migrations:")),messages.push(Object.entries(fixSummary.failed).map(([id,error])=>`${chalk22.redBright(id)}:
501
+ `;function getGlossaryMessages(fixSummary,fixResults,logFile){let messages=[];return fixSummary.succeeded.length>0&&(messages.push(import_picocolors34.default.bold("Successful migrations:")),messages.push(fixSummary.succeeded.map(m=>import_picocolors34.default.green(m)).join(", "))),Object.keys(fixSummary.failed).length>0&&(messages.push(import_picocolors34.default.bold("Failed migrations:")),messages.push(Object.entries(fixSummary.failed).map(([id,error])=>`${import_picocolors34.default.bold(import_picocolors34.default.red(id))}:
498
502
  ${error}`).join(`
499
- `)),messages.push(`You can find the full logs in ${chalk22.cyan(logFile)}`)),fixSummary.manual.length>0&&(messages.push(chalk22.bold("Manual migrations:")),messages.push(fixSummary.manual.map(m=>fixResults[m]==="manual_succeeded"?chalk22.green(m):chalk22.blue(m)).join(", "))),fixSummary.skipped.length>0&&(messages.push(chalk22.bold("Skipped migrations:")),messages.push(fixSummary.skipped.map(m=>chalk22.cyan(m)).join(", "))),messages}function getMigrationSummary({fixResults,fixSummary,logFile,installationMetadata}){let messages=[];messages.push(getGlossaryMessages(fixSummary,fixResults,logFile).join(messageDivider2)),messages.push(dedent`If you'd like to run the migrations again, you can do so by running '${chalk22.cyan("npx storybook automigrate")}'
503
+ `)),messages.push(`You can find the full logs in ${import_picocolors34.default.cyan(logFile)}`)),fixSummary.manual.length>0&&(messages.push(import_picocolors34.default.bold("Manual migrations:")),messages.push(fixSummary.manual.map(m=>fixResults[m]==="manual_succeeded"?import_picocolors34.default.green(m):import_picocolors34.default.blue(m)).join(", "))),fixSummary.skipped.length>0&&(messages.push(import_picocolors34.default.bold("Skipped migrations:")),messages.push(fixSummary.skipped.map(m=>import_picocolors34.default.cyan(m)).join(", "))),messages}function getMigrationSummary({fixResults,fixSummary,logFile,installationMetadata}){let messages=[];messages.push(getGlossaryMessages(fixSummary,fixResults,logFile).join(messageDivider2)),messages.push(dedent`If you'd like to run the migrations again, you can do so by running '${import_picocolors34.default.cyan("npx storybook automigrate")}'
500
504
 
501
505
  The automigrations try to migrate common patterns in your project, but might not contain everything needed to migrate to the latest version of Storybook.
502
506
 
503
- Please check the changelog and migration guide for manual migrations and more information: ${chalk22.yellow("https://storybook.js.org/docs/8.0/migration-guide")}
504
- And reach out on Discord if you need help: ${chalk22.yellow("https://discord.gg/storybook")}
505
- `);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 logger21=console,LOG_FILE_NAME2="migration-storybook.log",LOG_FILE_PATH2=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 temporaryFile({name:LOG_FILE_NAME2});let logStream=createWriteStream(TEMP_LOG_FILE_PATH2);process.stdout.write=d=>(originalStdOutWrite2(d),logStream.write(cleanLog(d))),process.stderr.write=d=>logStream.write(cleanLog(d));},cleanup2=()=>{process.stdout.write=originalStdOutWrite2,process.stderr.write=originalStdErrWrite2;},logAvailableMigrations=()=>{let availableFixes=allFixes.map(f=>chalk22.yellow(f.id)).map(x=>`- ${x}`).join(`
507
+ Please check the changelog and migration guide for manual migrations and more information: ${import_picocolors34.default.yellow("https://storybook.js.org/docs/8.0/migration-guide")}
508
+ And reach out on Discord if you need help: ${import_picocolors34.default.yellow("https://discord.gg/storybook")}
509
+ `);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 logger21=console,LOG_FILE_NAME2="migration-storybook.log",LOG_FILE_PATH2=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 temporaryFile({name:LOG_FILE_NAME2});let logStream=createWriteStream(TEMP_LOG_FILE_PATH2);process.stdout.write=d=>(originalStdOutWrite2(d),logStream.write(cleanLog(d))),process.stderr.write=d=>logStream.write(cleanLog(d));},cleanup2=()=>{process.stdout.write=originalStdOutWrite2,process.stderr.write=originalStdErrWrite2;},logAvailableMigrations=()=>{let availableFixes=allFixes.map(f=>import_picocolors35.default.yellow(f.id)).map(x=>`- ${x}`).join(`
506
510
  `);console.log(),logger21.info(dedent`
507
511
  The following migrations are available:
508
512
  ${availableFixes}
509
- `);},doAutomigrate=async options=>{let packageManager=JsPackageManagerFactory.getPackageManager({force:options.packageManager}),[packageJson,storybookVersion]=await Promise.all([packageManager.retrievePackageJson(),getCoercedStorybookVersion(packageManager)]),{configDir:inferredConfigDir,mainConfig:mainConfigPath}=getStorybookInfo(packageJson,options.configDir),configDir=options.configDir||inferredConfigDir||".storybook";if(!storybookVersion)throw new Error("Could not determine Storybook version");if(!mainConfigPath)throw new Error("Could not determine main config path");await automigrate({...options,packageManager,storybookVersion,beforeVersion:storybookVersion,mainConfigPath,configDir,isUpgrade:!1,isLatest:!1})&&await doctor({configDir,packageManager:options.packageManager});},automigrate=async({fixId,fixes:inputFixes,dryRun,yes,packageManager,list,configDir,mainConfigPath,storybookVersion,beforeVersion,renderer:rendererPackage,skipInstall,hideMigrationSummary=!1,isUpgrade,isLatest})=>{if(list)return logAvailableMigrations(),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 logger21.info(`\u{1F4ED} No migrations found for ${chalk22.magenta(fixId)}.`),logAvailableMigrations(),null;await augmentLogsToFile2(),logger21.info("\u{1F50E} checking possible migrations..");let{fixResults,fixSummary,preCheckFailure}=await runFixes({fixes,packageManager,rendererPackage,skipInstall,configDir,mainConfigPath,storybookVersion,beforeVersion,isUpgrade:!!isUpgrade,dryRun,yes});if(Object.values(fixResults).some(r=>r==="failed"||r==="check_failed")?await rename(TEMP_LOG_FILE_PATH2,join(process.cwd(),LOG_FILE_NAME2)):await rm(TEMP_LOG_FILE_PATH2,{recursive:!0,force:!0}),!hideMigrationSummary){let installationMetadata=await packageManager.findInstallations(["@storybook/*","storybook"]);logger21.info(),logger21.info(getMigrationSummary({fixResults,fixSummary,logFile:LOG_FILE_PATH2,installationMetadata})),logger21.info();}return cleanup2(),{fixResults,preCheckFailure}};async function runFixes({fixes,dryRun,yes,rendererPackage,skipInstall,configDir,packageManager,mainConfigPath,storybookVersion,beforeVersion,isUpgrade}){let fixResults={},fixSummary={succeeded:[],failed:{},manual:[],skipped:[]};for(let i=0;i<fixes.length;i+=1){let f=fixes[i],result;try{let{mainConfig,previewConfigPath}=await getStorybookData({configDir,packageManager});(isUpgrade&&semver.satisfies(beforeVersion,f.versionRange[0],{includePrerelease:!0})&&semver.satisfies(storybookVersion,f.versionRange[1],{includePrerelease:!0})||!isUpgrade)&&(result=await f.check({packageManager,configDir,rendererPackage,mainConfig,storybookVersion,previewConfigPath,mainConfigPath}));}catch(error){logger21.info(`\u26A0\uFE0F failed to check fix ${chalk22.bold(f.id)}`),error instanceof Error&&(logger21.error(`
513
+ `);},doAutomigrate=async options=>{let packageManager=JsPackageManagerFactory.getPackageManager({force:options.packageManager}),[packageJson,storybookVersion]=await Promise.all([packageManager.retrievePackageJson(),getCoercedStorybookVersion(packageManager)]),{configDir:inferredConfigDir,mainConfig:mainConfigPath}=getStorybookInfo(packageJson,options.configDir),configDir=options.configDir||inferredConfigDir||".storybook";if(!storybookVersion)throw new Error("Could not determine Storybook version");if(!mainConfigPath)throw new Error("Could not determine main config path");await automigrate({...options,packageManager,storybookVersion,beforeVersion:storybookVersion,mainConfigPath,configDir,isUpgrade:!1,isLatest:!1})&&await doctor({configDir,packageManager:options.packageManager});},automigrate=async({fixId,fixes:inputFixes,dryRun,yes,packageManager,list,configDir,mainConfigPath,storybookVersion,beforeVersion,renderer:rendererPackage,skipInstall,hideMigrationSummary=!1,isUpgrade,isLatest})=>{if(list)return logAvailableMigrations(),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 logger21.info(`\u{1F4ED} No migrations found for ${import_picocolors35.default.magenta(fixId)}.`),logAvailableMigrations(),null;await augmentLogsToFile2(),logger21.info("\u{1F50E} checking possible migrations..");let{fixResults,fixSummary,preCheckFailure}=await runFixes({fixes,packageManager,rendererPackage,skipInstall,configDir,mainConfigPath,storybookVersion,beforeVersion,isUpgrade:!!isUpgrade,dryRun,yes});if(Object.values(fixResults).some(r=>r==="failed"||r==="check_failed")?await rename(TEMP_LOG_FILE_PATH2,join(process.cwd(),LOG_FILE_NAME2)):await rm(TEMP_LOG_FILE_PATH2,{recursive:!0,force:!0}),!hideMigrationSummary){let installationMetadata=await packageManager.findInstallations(["@storybook/*","storybook"]);logger21.info(),logger21.info(getMigrationSummary({fixResults,fixSummary,logFile:LOG_FILE_PATH2,installationMetadata})),logger21.info();}return cleanup2(),{fixResults,preCheckFailure}};async function runFixes({fixes,dryRun,yes,rendererPackage,skipInstall,configDir,packageManager,mainConfigPath,storybookVersion,beforeVersion,isUpgrade}){let fixResults={},fixSummary={succeeded:[],failed:{},manual:[],skipped:[]};for(let i=0;i<fixes.length;i+=1){let f=fixes[i],result;try{let{mainConfig,previewConfigPath}=await getStorybookData({configDir,packageManager});(isUpgrade&&semver.satisfies(beforeVersion,f.versionRange[0],{includePrerelease:!0})&&semver.satisfies(storybookVersion,f.versionRange[1],{includePrerelease:!0})||!isUpgrade)&&(result=await f.check({packageManager,configDir,rendererPackage,mainConfig,storybookVersion,previewConfigPath,mainConfigPath}));}catch(error){logger21.info(`\u26A0\uFE0F failed to check fix ${import_picocolors35.default.bold(f.id)}`),error instanceof Error&&(logger21.error(`
510
514
  ${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";logger21.info(`
511
- \u{1F50E} found a '${chalk22.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"}};logger21.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),logger21.info();let{shouldContinue}=await prompts6({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 prompts6({type:"confirm",name:"fix",message:`Do you want to run the '${chalk22.cyan(f.id)}' migration on your project?`,initial:f.promptDefaultValue??!0},{onCancel:()=>{throw new Error}}):promptType==="notification"&&(runAnswer=await prompts6({type:"confirm",name:"fix",message:"Do you want to continue?",initial:!0},{onCancel:()=>{throw new Error}}));}catch{break}if(promptType==="auto")if(invariant2(runAnswer,"runAnswer must be defined if not promptOnly"),runAnswer.fix)try{invariant2(typeof f.run=="function","run method should be available in fix."),invariant2(mainConfigPath,"Main config path should be defined to run migration."),await f.run({result,packageManager,dryRun,mainConfigPath,skipInstall}),logger21.info(`\u2705 ran ${chalk22.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",logger21.info(`\u274C error when running ${chalk22.cyan(f.id)} migration`),logger21.info(error),logger21.info();}else fixResults[f.id]="skipped",fixSummary.skipped.push(f.id);}else fixResults[f.id]=fixResults[f.id]||"unnecessary";}return {fixResults,fixSummary}}var exec2=async(command2,options={},{startMessage,errorMessage,dryRun}={})=>{if(startMessage&&logger$1.info(startMessage),dryRun){logger$1.info(`
515
+ \u{1F50E} found a '${import_picocolors35.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"}};logger21.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),logger21.info();let{shouldContinue}=await prompts6({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 prompts6({type:"confirm",name:"fix",message:`Do you want to run the '${import_picocolors35.default.cyan(f.id)}' migration on your project?`,initial:f.promptDefaultValue??!0},{onCancel:()=>{throw new Error}}):promptType==="notification"&&(runAnswer=await prompts6({type:"confirm",name:"fix",message:"Do you want to continue?",initial:!0},{onCancel:()=>{throw new Error}}));}catch{break}if(promptType==="auto")if(invariant2(runAnswer,"runAnswer must be defined if not promptOnly"),runAnswer.fix)try{invariant2(typeof f.run=="function","run method should be available in fix."),invariant2(mainConfigPath,"Main config path should be defined to run migration."),await f.run({result,packageManager,dryRun,mainConfigPath,skipInstall}),logger21.info(`\u2705 ran ${import_picocolors35.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",logger21.info(`\u274C error when running ${import_picocolors35.default.cyan(f.id)} migration`),logger21.info(error),logger21.info();}else fixResults[f.id]="skipped",fixSummary.skipped.push(f.id);}else fixResults[f.id]=fixResults[f.id]||"unnecessary";}return {fixResults,fixSummary}}var import_picocolors36=__toESM(require_picocolors(),1);var exec2=async(command2,options={},{startMessage,errorMessage,dryRun}={})=>{if(startMessage&&logger$1.info(startMessage),dryRun){logger$1.info(`
512
516
  > ${command2}
513
- `);return}return logger$1.info(command2),new Promise((resolve,reject)=>{let child=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):(logger$1.error(chalk22.red(`An error occurred while executing: \`${command2}\``)),errorMessage&&logger$1.info(errorMessage),reject(new Error(`command exited with code: ${code}: `)));});})},link=async({target,local,start})=>{let storybookDir=process.cwd();try{if(JSON.parse(await 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=basename(target);if(!local){let reprosDir=join(storybookDir,"../storybook-repros");logger$1.info(`Ensuring directory ${reprosDir}`),await mkdir(reprosDir,{recursive:!0}),logger$1.info(`Cloning ${target}`),await exec2(`git clone ${target}`,{cwd:reprosDir}),reproName=basename(target,extname(target)),reproDir=join(reprosDir,reproName);}let reproPackageJson=JSON.parse(await readFile(join(reproDir,"package.json"),{encoding:"utf8"})),version=sync("yarn",["--version"],{cwd:reproDir,stdio:"pipe",shell:!0}).stdout.toString();if(!/^[2-4]\./.test(version)){logger$1.warn(`\u{1F6A8} Expected yarn 2 or higher in ${reproDir}!`),logger$1.warn(""),logger$1.warn("Please set it up with `yarn set version berry`,"),logger$1.warn(`then link '${reproDir}' with the '--local' flag.`);return}logger$1.info(`Linking ${reproDir}`),await exec2(`yarn link --all --relative ${storybookDir}`,{cwd:reproDir}),logger$1.info(`Installing ${reproName}`),await exec2("yarn install",{cwd:reproDir}),reproPackageJson.devDependencies?.vite||await exec2("yarn add -D webpack-hot-middleware",{cwd:reproDir}),await exec2("yarn add @types/node@22",{cwd:reproDir}),start&&(logger$1.info(`Running ${reproName} storybook`),await exec2("yarn run storybook",{cwd:reproDir}));};var logger23=console;async function migrate(migration,{glob:glob2,dryRun,list,rename:rename3,parser,configDir:userSpecifiedConfigDir}){if(list)listCodemods().forEach(key=>logger23.log(key));else if(migration){if(migration==="mdx-to-csf"&&!dryRun){let packageManager=JsPackageManagerFactory.getPackageManager(),[packageJson,storybookVersion]=await Promise.all([packageManager.retrievePackageJson(),getCoercedStorybookVersion(packageManager)]),{configDir:inferredConfigDir,mainConfig:mainConfigPath}=getStorybookInfo(packageJson,userSpecifiedConfigDir),configDir=userSpecifiedConfigDir||inferredConfigDir||".storybook";if(!storybookVersion)throw new Error("Could not determine Storybook version");if(!mainConfigPath)throw new Error("Could not determine main config path");await runFixes({fixes:[mdxToCSF],configDir,mainConfigPath,packageManager,storybookVersion,beforeVersion:storybookVersion,isUpgrade:!1}),await addStorybookBlocksPackage();}await runCodemod(migration,{glob:glob2,dryRun,logger:logger23,rename:rename3,parser});}else throw new Error("Migrate: please specify a migration name or --list")}async function addStorybookBlocksPackage(){let packageManager=JsPackageManagerFactory.getPackageManager(),packageJson=await packageManager.retrievePackageJson(),versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());logger23.info('\u2705 Adding "@storybook/blocks" package'),await packageManager.addDependencies({installAsDevDependencies:!0,packageJson},[`@storybook/blocks@${versionToInstall}`]);}var baseTemplates={"cra/default-js":{name:"Create React App Latest (Webpack | JavaScript)",script:`
517
+ `);return}return logger$1.info(command2),new Promise((resolve,reject)=>{let child=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):(logger$1.error(import_picocolors36.default.red(`An error occurred while executing: \`${command2}\``)),errorMessage&&logger$1.info(errorMessage),reject(new Error(`command exited with code: ${code}: `)));});})},link=async({target,local,start})=>{let storybookDir=process.cwd();try{if(JSON.parse(await 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=basename(target);if(!local){let reprosDir=join(storybookDir,"../storybook-repros");logger$1.info(`Ensuring directory ${reprosDir}`),await mkdir(reprosDir,{recursive:!0}),logger$1.info(`Cloning ${target}`),await exec2(`git clone ${target}`,{cwd:reprosDir}),reproName=basename(target,extname(target)),reproDir=join(reprosDir,reproName);}let reproPackageJson=JSON.parse(await readFile(join(reproDir,"package.json"),{encoding:"utf8"})),version=sync("yarn",["--version"],{cwd:reproDir,stdio:"pipe",shell:!0}).stdout.toString();if(!/^[2-4]\./.test(version)){logger$1.warn(`\u{1F6A8} Expected yarn 2 or higher in ${reproDir}!`),logger$1.warn(""),logger$1.warn("Please set it up with `yarn set version berry`,"),logger$1.warn(`then link '${reproDir}' with the '--local' flag.`);return}logger$1.info(`Linking ${reproDir}`),await exec2(`yarn link --all --relative ${storybookDir}`,{cwd:reproDir}),logger$1.info(`Installing ${reproName}`),await exec2("yarn install",{cwd:reproDir}),reproPackageJson.devDependencies?.vite||await exec2("yarn add -D webpack-hot-middleware",{cwd:reproDir}),await exec2("yarn add @types/node@22",{cwd:reproDir}),start&&(logger$1.info(`Running ${reproName} storybook`),await exec2("yarn run storybook",{cwd:reproDir}));};var logger23=console;async function migrate(migration,{glob:glob2,dryRun,list,rename:rename3,parser,configDir:userSpecifiedConfigDir}){if(list)listCodemods().forEach(key=>logger23.log(key));else if(migration){if(migration==="mdx-to-csf"&&!dryRun){let packageManager=JsPackageManagerFactory.getPackageManager(),[packageJson,storybookVersion]=await Promise.all([packageManager.retrievePackageJson(),getCoercedStorybookVersion(packageManager)]),{configDir:inferredConfigDir,mainConfig:mainConfigPath}=getStorybookInfo(packageJson,userSpecifiedConfigDir),configDir=userSpecifiedConfigDir||inferredConfigDir||".storybook";if(!storybookVersion)throw new Error("Could not determine Storybook version");if(!mainConfigPath)throw new Error("Could not determine main config path");await runFixes({fixes:[mdxToCSF],configDir,mainConfigPath,packageManager,storybookVersion,beforeVersion:storybookVersion,isUpgrade:!1}),await addStorybookBlocksPackage();}await runCodemod(migration,{glob:glob2,dryRun,logger:logger23,rename:rename3,parser});}else throw new Error("Migrate: please specify a migration name or --list")}async function addStorybookBlocksPackage(){let packageManager=JsPackageManagerFactory.getPackageManager(),packageJson=await packageManager.retrievePackageJson(),versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());logger23.info('\u2705 Adding "@storybook/blocks" package'),await packageManager.addDependencies({installAsDevDependencies:!0,packageJson},[`@storybook/blocks@${versionToInstall}`]);}var import_picocolors37=__toESM(require_picocolors(),1);var baseTemplates={"cra/default-js":{name:"Create React App Latest (Webpack | JavaScript)",script:`
514
518
  npx create-react-app {{beforeDir}} && cd {{beforeDir}} && jq '.browserslist.production[0] = ">0.9%"' package.json > tmp.json && mv tmp.json package.json
515
519
  `,expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench","vitest-integration"],modifications:{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:`
516
520
  npx create-react-app {{beforeDir}} --template typescript && cd {{beforeDir}} && jq '.browserslist.production[0] = ">0.9%"' package.json > tmp.json && mv tmp.json package.json
@@ -518,64 +522,64 @@ ${error.stack}`),fixSummary.failed[f.id]=error.message),fixResults[f.id]="check_
518
522
  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
519
523
  `,expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},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"},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"},skipTasks:["e2e-tests-dev","bench","vitest-integration"]},"react-webpack/prerelease-ts":{name:"React Prerelease (Webpack | TypeScript)",script:`
520
524
  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
521
- `,expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},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"]},"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/skeleton-js":{name:"SvelteKit Latest (Vite | JavaScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory={{beforeDir}} --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-ts":{name:"SvelteKit Latest (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/prerelease-ts":{name:"SvelteKit Prerelease (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/prerelease-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"lit-vite/default-js":{name:"Lit Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench","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"}}},internalTemplates={"internal/react18-webpack-babel":{name:"React with Babel Latest (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{extraDependencies:["@storybook/addon-webpack5-compiler-babel"],editAddons:addons=>[...addons,"@storybook/addon-webpack5-compiler-babel"].filter(a=>a!=="@storybook/addon-webpack5-compiler-swc")},isInternal:!0,skipTasks:["e2e-tests-dev","bench","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"},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};var logger24=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=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("storybook"),nextVersion=await packageManager.latestVersion("storybook@next").catch(e=>"0.0.0"),currentVersion=versions.storybook,isPrerelease=prerelease(currentVersion),isOutdated=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 ${chalk22.bold(currentVersion)} sandbox..`,notLatest:chalk22.red(dedent`
522
- This version is behind the latest release, which is: ${chalk22.bold(latestVersion)}!
525
+ `,expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},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"]},"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/skeleton-js":{name:"SvelteKit Latest (Vite | JavaScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory={{beforeDir}} --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-ts":{name:"SvelteKit Latest (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/prerelease-ts":{name:"SvelteKit Prerelease (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/prerelease-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"lit-vite/default-js":{name:"Lit Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench","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"}}},internalTemplates={"internal/react18-webpack-babel":{name:"React with Babel Latest (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{extraDependencies:["@storybook/addon-webpack5-compiler-babel"],editAddons:addons=>[...addons,"@storybook/addon-webpack5-compiler-babel"].filter(a=>a!=="@storybook/addon-webpack5-compiler-swc")},isInternal:!0,skipTasks:["e2e-tests-dev","bench","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"},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};var logger24=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=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("storybook"),nextVersion=await packageManager.latestVersion("storybook@next").catch(e=>"0.0.0"),currentVersion=versions.storybook,isPrerelease=prerelease(currentVersion),isOutdated=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_picocolors37.default.bold(currentVersion)} sandbox..`,notLatest:import_picocolors37.default.red(dedent`
526
+ This version is behind the latest release, which is: ${import_picocolors37.default.bold(latestVersion)}!
523
527
  You likely ran the init command through npx, which can use a locally cached version, to get the latest please run:
524
- ${chalk22.bold("npx storybook@latest sandbox")}
528
+ ${import_picocolors37.default.bold("npx storybook@latest sandbox")}
525
529
 
526
530
  You may want to CTRL+C to stop, and run with the latest version instead.
527
- `),longInitTime:chalk22.yellow("The creation of the sandbox will take longer, because we will need to run init."),prerelease:chalk22.yellow("This is a pre-release version.")};if(logger24.log(boxen([messages.welcome].concat(isOutdated&&!isPrerelease?[messages.notLatest]:[]).concat(init&&(isOutdated||isPrerelease)?[messages.longInitTime]:[]).concat(isPrerelease?[messages.prerelease]:[]).join(`
531
+ `),longInitTime:import_picocolors37.default.yellow("The creation of the sandbox will take longer, because we will need to run init."),prerelease:import_picocolors37.default.yellow("This is a pre-release version.")};if(logger24.log(boxen([messages.welcome].concat(isOutdated&&!isPrerelease?[messages.notLatest]:[]).concat(init&&(isOutdated||isPrerelease)?[messages.longInitTime]:[]).concat(isPrerelease?[messages.prerelease]:[]).join(`
528
532
  `),{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&&(logger24.info(boxen(dedent`
529
533
  🔎 You filtered out all templates. 🔍
530
534
 
531
- After filtering all the templates with "${chalk22.yellow(filterValue)}", we found no results. Please try again with a different filter.
535
+ After filtering all the templates with "${import_picocolors37.default.yellow(filterValue)}", we found no results. Please try again with a different filter.
532
536
 
533
537
  Available templates:
534
- ${keys.map(key=>chalk22.blue`- ${key}`).join(`
538
+ ${keys.map(key=>import_picocolors37.default.blue(`- ${key}`)).join(`
535
539
  `)}
536
540
  `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),process.exit(1)),choices.length===1?[templateId]=choices:(logger24.info(boxen(dedent`
537
- 🤗 Welcome to ${chalk22.yellow("sb sandbox")}! 🤗
541
+ 🤗 Welcome to ${import_picocolors37.default.yellow("sb sandbox")}! 🤗
538
542
 
539
- Create a ${chalk22.green("new project")} to minimally reproduce Storybook issues.
543
+ Create a ${import_picocolors37.default.green("new project")} to minimally reproduce Storybook issues.
540
544
 
541
545
  1. select an environment that most closely matches your project setup.
542
546
  2. select a location for the reproduction, outside of your project.
543
547
 
544
548
  After the reproduction is ready, we'll guide you through the next steps.
545
- `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),templateId=await promptSelectedTemplate(choices)),!!!(templateId??null)){logger24.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&&existsSync(`${selectedDirectory}`)&&logger24.info(`\u26A0\uFE0F ${selectedDirectory} already exists! Overwriting...`),!selectedDirectory){let{directory}=await prompts6({type:"text",message:"Enter the output directory",name:"directory",initial:outputDirectoryName??void 0,validate:async directoryName=>existsSync(directoryName)?`${directoryName} already exists. Please choose another name.`:!0},{onCancel:()=>{logger24.log("Command cancelled by the user. Exiting..."),process.exit(1);}});selectedDirectory=directory;}invariant2(selectedDirectory);try{let templateDestination=isAbsolute(selectedDirectory)?selectedDirectory:join(process.cwd(),selectedDirectory);logger24.info(`\u{1F3C3} Adding ${selectedConfig.name} into ${templateDestination}`),logger24.log(`\u{1F4E6} Downloading sandbox template (${chalk22.bold(downloadType)})...`);try{let gitPath=`github:storybookjs/sandboxes/${templateId}/${downloadType}#${branch}`;if(await downloadTemplate(gitPath,{force:!0,dir:templateDestination}),(await readdir(templateDestination)).length===0){let selected=chalk22.yellow(templateId);throw new Error(dedent`
546
- Template downloaded from ${chalk22.blue(gitPath)} is empty.
549
+ `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),templateId=await promptSelectedTemplate(choices)),!!!(templateId??null)){logger24.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&&existsSync(`${selectedDirectory}`)&&logger24.info(`\u26A0\uFE0F ${selectedDirectory} already exists! Overwriting...`),!selectedDirectory){let{directory}=await prompts6({type:"text",message:"Enter the output directory",name:"directory",initial:outputDirectoryName??void 0,validate:async directoryName=>existsSync(directoryName)?`${directoryName} already exists. Please choose another name.`:!0},{onCancel:()=>{logger24.log("Command cancelled by the user. Exiting..."),process.exit(1);}});selectedDirectory=directory;}invariant2(selectedDirectory);try{let templateDestination=isAbsolute(selectedDirectory)?selectedDirectory:join(process.cwd(),selectedDirectory);logger24.info(`\u{1F3C3} Adding ${selectedConfig.name} into ${templateDestination}`),logger24.log(`\u{1F4E6} Downloading sandbox template (${import_picocolors37.default.bold(downloadType)})...`);try{let gitPath=`github:storybookjs/sandboxes/${templateId}/${downloadType}#${branch}`;if(await downloadTemplate(gitPath,{force:!0,dir:templateDestination}),(await readdir(templateDestination)).length===0){let selected=import_picocolors37.default.yellow(templateId);throw new Error(dedent`
550
+ Template downloaded from ${import_picocolors37.default.blue(gitPath)} is empty.
547
551
  Are you use it exists? Or did you want to set ${selected} to inDevelopment first?
548
- `)}if(downloadType==="before-storybook"&&init){let before=process.cwd();process.chdir(templateDestination),await initiate({dev:process.env.CI!=="true"&&process.env.IN_STORYBOOK_SANBOX!=="true",...options}),process.chdir(before);}}catch(err){throw logger24.error(`\u{1F6A8} Failed to download sandbox template: ${String(err)}`),err}let initMessage=init?chalk22.yellow(dedent`
552
+ `)}if(downloadType==="before-storybook"&&init){let before=process.cwd();process.chdir(templateDestination),await initiate({dev:process.env.CI!=="true"&&process.env.IN_STORYBOOK_SANBOX!=="true",...options}),process.chdir(before);}}catch(err){throw logger24.error(`\u{1F6A8} Failed to download sandbox template: ${String(err)}`),err}let initMessage=init?import_picocolors37.default.yellow(dedent`
549
553
  yarn install
550
554
  yarn storybook
551
- `):`Recreate your setup, then ${chalk22.yellow("npx storybook@latest init")}`;logger24.info(boxen(dedent`
555
+ `):`Recreate your setup, then ${import_picocolors37.default.yellow("npx storybook@latest init")}`;logger24.info(boxen(dedent`
552
556
  🎉 Your Storybook reproduction project is ready to use! 🎉
553
557
 
554
- ${chalk22.yellow(`cd ${selectedDirectory}`)}
558
+ ${import_picocolors37.default.yellow(`cd ${selectedDirectory}`)}
555
559
  ${initMessage}
556
560
 
557
561
  Once you've recreated the problem you're experiencing, please:
558
562
 
559
- 1. Document any additional steps in ${chalk22.cyan("README.md")}
563
+ 1. Document any additional steps in ${import_picocolors37.default.cyan("README.md")}
560
564
  2. Publish the repository to github
561
565
  3. Link to the repro repository in your issue
562
566
 
563
567
  Having a clean repro helps us solve your issue faster! 🙏
564
- `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"}));}catch(error){throw logger24.error("\u{1F6A8} Failed to create sandbox"),error}};async function promptSelectedTemplate(choices){let{template}=await prompts6({type:"select",message:"\u{1F308} Select the template",name:"template",choices:choices.map(toChoices)},{onCancel:()=>{logger24.log("Command cancelled by the user. Exiting..."),process.exit(1);}});return template||null}var excludesFalse=x=>x!==!1,blockers=()=>[import('../block-storystorev6-WTNHB2DL.js'),import('../block-dependencies-versions-56B74SM7.js'),import('../block-node-version-IGOSJDMJ.js')],segmentDivider2=`
568
+ `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"}));}catch(error){throw logger24.error("\u{1F6A8} Failed to create sandbox"),error}};async function promptSelectedTemplate(choices){let{template}=await prompts6({type:"select",message:"\u{1F308} Select the template",name:"template",choices:choices.map(toChoices)},{onCancel:()=>{logger24.log("Command cancelled by the user. Exiting..."),process.exit(1);}});return template||null}var import_picocolors39=__toESM(require_picocolors(),1);var import_picocolors38=__toESM(require_picocolors(),1),excludesFalse=x=>x!==!1,blockers=()=>[import('../block-storystorev6-YR7CELJP.js'),import('../block-dependencies-versions-MVMTRPKZ.js'),import('../block-node-version-WU2G5Y45.js')],segmentDivider2=`
565
569
 
566
570
  \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
567
571
 
568
- `,autoblock=async(options,list=blockers())=>{if(list.length===0)return null;logger$1.info("Checking for upgrade blockers...");let faults=(await Promise.all(list.map(async i=>{let{blocker}=await i,result=await blocker.check(options);return result?{id:blocker.id,value:!0,log:blocker.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:chalk22.yellow("Fix the above issues and try running the upgrade command again.")};return logger$1.plain(boxen([messages.welcome].concat([`
572
+ `,autoblock=async(options,list=blockers())=>{if(list.length===0)return null;logger$1.info("Checking for upgrade blockers...");let faults=(await Promise.all(list.map(async i=>{let{blocker}=await i,result=await blocker.check(options);return result?{id:blocker.id,value:!0,log:blocker.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_picocolors38.default.yellow("Fix the above issues and try running the upgrade command again.")};return logger$1.plain(boxen([messages.welcome].concat([`
569
573
 
570
574
  `]).concat([faults.map(i=>i.log).join(segmentDivider2)]).concat([segmentDivider2,messages.reminder]).join(""),{borderStyle:"round",padding:1,borderColor:"#FC521F"})),faults[0].id}return logger$1.plain("No blockers found."),logger$1.line(),null};var versionRegex=/(@storybook\/[^@]+)@(\S+)/,getStorybookVersion=line=>{if(line.startsWith("npm "))return null;let match=versionRegex.exec(line);return !match||!clean(match[2])?null:{package:match[1],version:match[2]}},getInstalledStorybookVersion=async packageManager=>{let installations=await packageManager.findInstallations(Object.keys(versions));if(installations)return Object.entries(installations.dependencies)[0]?.[1]?.[0].version},deprecatedPackages=[{minVersion:"6.0.0-alpha.0",url:"https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#60-deprecations",deprecations:["@storybook/addon-notes","@storybook/addon-info","@storybook/addon-contexts","@storybook/addon-options","@storybook/addon-centered"]}],formatPackage=pkg2=>`${pkg2.package}@${pkg2.version}`,warnPackages=pkgs=>pkgs.forEach(pkg2=>logger$1.warn(`- ${formatPackage(pkg2)}`)),checkVersionConsistency=()=>{let storybookPackages=sync("npm",["ls"],{stdio:"pipe",shell:!0}).output.toString().split(`
571
- `).map(getStorybookVersion).filter(item=>!!item).filter(pkg2=>isCorePackage(pkg2.package));if(!storybookPackages.length){logger$1.warn("No storybook core packages found."),logger$1.warn("'npm ls | grep storybook' can show if multiple versions are installed.");return}storybookPackages.sort((a,b)=>semver.rcompare(a.version,b.version));let latestVersion=storybookPackages[0].version,outdated=storybookPackages.filter(pkg2=>pkg2.version!==latestVersion);outdated.length>0&&(logger$1.warn(`Found ${outdated.length} outdated packages (relative to '${formatPackage(storybookPackages[0])}')`),logger$1.warn("Please make sure your packages are updated to ensure a consistent experience."),warnPackages(outdated)),deprecatedPackages.forEach(({minVersion,url,deprecations})=>{if(semver.gte(latestVersion,minVersion)){let deprecated=storybookPackages.filter(pkg2=>deprecations.includes(pkg2.package));deprecated.length>0&&(logger$1.warn(`Found ${deprecated.length} deprecated packages since ${minVersion}`),logger$1.warn(`See ${url}`),warnPackages(deprecated));}});},doUpgrade=async({skipCheck,packageManager:packageManagerName,dryRun,configDir:userSpecifiedConfigDir,yes,...options})=>{let packageManager=JsPackageManagerFactory.getPackageManager({force:packageManagerName}),beforeVersion=await getInstalledStorybookVersion(packageManager)??"0.0.0",currentCLIVersion=versions.storybook,isCanary=currentCLIVersion.startsWith("0.0.0")||beforeVersion.startsWith("portal:")||beforeVersion.startsWith("workspace:");if(!await hasStorybookDependencies(packageManager))throw new UpgradeStorybookInWrongWorkingDirectory;if(!isCanary&&lt(currentCLIVersion,beforeVersion))throw new UpgradeStorybookToLowerVersionError({beforeVersion,currentVersion:currentCLIVersion});!isCanary&&eq(currentCLIVersion,beforeVersion)&&logger$1.warn(new UpgradeStorybookToSameVersionError({beforeVersion}).message);let[latestCLIVersionOnNPM,packageJson]=await Promise.all([packageManager.latestVersion("storybook"),packageManager.retrievePackageJson()]),isCLIOutdated=lt(currentCLIVersion,latestCLIVersionOnNPM),isCLIExactLatest=currentCLIVersion===latestCLIVersionOnNPM,isCLIPrerelease=prerelease(currentCLIVersion)!==null,isUpgrade=lt(beforeVersion,currentCLIVersion),borderColor=isCLIOutdated?"#FC521F":"#F1618C",messages={welcome:`Upgrading Storybook from version ${chalk22.bold(beforeVersion)} to version ${chalk22.bold(currentCLIVersion)}..`,notLatest:chalk22.red(dedent`
572
- This version is behind the latest release, which is: ${chalk22.bold(latestCLIVersionOnNPM)}!
575
+ `).map(getStorybookVersion).filter(item=>!!item).filter(pkg2=>isCorePackage(pkg2.package));if(!storybookPackages.length){logger$1.warn("No storybook core packages found."),logger$1.warn("'npm ls | grep storybook' can show if multiple versions are installed.");return}storybookPackages.sort((a,b)=>semver.rcompare(a.version,b.version));let latestVersion=storybookPackages[0].version,outdated=storybookPackages.filter(pkg2=>pkg2.version!==latestVersion);outdated.length>0&&(logger$1.warn(`Found ${outdated.length} outdated packages (relative to '${formatPackage(storybookPackages[0])}')`),logger$1.warn("Please make sure your packages are updated to ensure a consistent experience."),warnPackages(outdated)),deprecatedPackages.forEach(({minVersion,url,deprecations})=>{if(semver.gte(latestVersion,minVersion)){let deprecated=storybookPackages.filter(pkg2=>deprecations.includes(pkg2.package));deprecated.length>0&&(logger$1.warn(`Found ${deprecated.length} deprecated packages since ${minVersion}`),logger$1.warn(`See ${url}`),warnPackages(deprecated));}});},doUpgrade=async({skipCheck,packageManager:packageManagerName,dryRun,configDir:userSpecifiedConfigDir,yes,...options})=>{let packageManager=JsPackageManagerFactory.getPackageManager({force:packageManagerName}),beforeVersion=await getInstalledStorybookVersion(packageManager)??"0.0.0",currentCLIVersion=versions.storybook,isCanary=currentCLIVersion.startsWith("0.0.0")||beforeVersion.startsWith("portal:")||beforeVersion.startsWith("workspace:");if(!await hasStorybookDependencies(packageManager))throw new UpgradeStorybookInWrongWorkingDirectory;if(!isCanary&&lt(currentCLIVersion,beforeVersion))throw new UpgradeStorybookToLowerVersionError({beforeVersion,currentVersion:currentCLIVersion});!isCanary&&eq(currentCLIVersion,beforeVersion)&&logger$1.warn(new UpgradeStorybookToSameVersionError({beforeVersion}).message);let[latestCLIVersionOnNPM,packageJson]=await Promise.all([packageManager.latestVersion("storybook"),packageManager.retrievePackageJson()]),isCLIOutdated=lt(currentCLIVersion,latestCLIVersionOnNPM),isCLIExactLatest=currentCLIVersion===latestCLIVersionOnNPM,isCLIPrerelease=prerelease(currentCLIVersion)!==null,isUpgrade=lt(beforeVersion,currentCLIVersion),borderColor=isCLIOutdated?"#FC521F":"#F1618C",messages={welcome:`Upgrading Storybook from version ${import_picocolors39.default.bold(beforeVersion)} to version ${import_picocolors39.default.bold(currentCLIVersion)}..`,notLatest:import_picocolors39.default.red(dedent`
576
+ This version is behind the latest release, which is: ${import_picocolors39.default.bold(latestCLIVersionOnNPM)}!
573
577
  You likely ran the upgrade command through npx, which can use a locally cached version, to upgrade to the latest version please run:
574
- ${chalk22.bold("npx storybook@latest upgrade")}
578
+ ${import_picocolors39.default.bold("npx storybook@latest upgrade")}
575
579
 
576
580
  You may want to CTRL+C to stop, and run with the latest version instead.
577
- `),prerelease:chalk22.yellow("This is a pre-release version.")};logger$1.plain(boxen([messages.welcome].concat(isCLIOutdated&&!isCLIPrerelease?[messages.notLatest]:[]).concat(isCLIPrerelease?[messages.prerelease]:[]).join(`
578
- `),{borderStyle:"round",padding:1,borderColor}));let results,{configDir:inferredConfigDir,mainConfig:mainConfigPath}=getStorybookInfo(packageJson,userSpecifiedConfigDir),configDir=userSpecifiedConfigDir||inferredConfigDir||".storybook",mainConfig=await loadMainConfig({configDir});if(!beforeVersion)throw new 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 versions).map(dependency=>{let char="^";return isCLIOutdated&&(char=""),isCanary&&(char=""),`${dependency}@${char}${versions[dependency]}`}),upgradedDependencies=toUpgradedDependencies(packageJson.dependencies),upgradedDevDependencies=toUpgradedDependencies(packageJson.devDependencies);logger$1.info(`Updating dependencies in ${chalk22.cyan("package.json")}..`),upgradedDependencies.length>0&&await packageManager.addDependencies({installAsDevDependencies:!1,skipInstall:!0,packageJson},upgradedDependencies),upgradedDevDependencies.length>0&&await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall:!0,packageJson},upgradedDevDependencies),await packageManager.installDependencies();}if(!skipCheck&&!results&&mainConfigPath&&(checkVersionConsistency(),results=await automigrate({dryRun,yes,packageManager,configDir,mainConfigPath,beforeVersion,storybookVersion:currentCLIVersion,isUpgrade,isLatest:isCLIExactLatest})),!options.disableTelemetry){let{preCheckFailure,fixResults}=results||{};await telemetry("upgrade",{beforeVersion,afterVersion:currentCLIVersion,...{automigrationResults:preCheckFailure?null:fixResults,automigrationPreCheckFailure:preCheckFailure||null}});}};async function upgrade(options){await withTelemetry("upgrade",{cliOptions:options},()=>doUpgrade(options));}addToGlobalContext("cliVersion",versions.storybook);var pkg=findPackageSync(__dirname);invariant2(pkg,"Failed to find the closest package.json file.");var consoleLogger=console,command=name=>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("add <addon>").description("Add an addon to your Storybook").option("--package-manager <npm|pnpm|yarn1|yarn2>","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").action((addonName,options)=>add(addonName,options));command("remove <addon>").description("Remove an addon from your Storybook").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").action((addonName,options)=>withTelemetry("remove",{cliOptions:options},async()=>{await removeAddon(addonName,options),options.disableTelemetry||await telemetry("remove",{addon:addonName,source:"cli"});}));command("upgrade").description(`Upgrade your Storybook packages to v${versions.storybook}`).option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").option("-y --yes","Skip prompting the user").option("-f --force","force the upgrade, skipping autoblockers").option("-n --dry-run","Only check for upgrades, do not install").option("-s --skip-check","Skip postinstall version and automigration checks").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").action(async options=>upgrade(options).catch(()=>process.exit(1)));command("info").description("Prints debugging information about the local environment").action(async()=>{consoleLogger.log(chalk22.bold(`
579
- Storybook Environment Info:`));let activePackageManager=(await JsPackageManagerFactory.getPackageManager()).type.replace(/\d/,""),output=await envinfo.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,chalk22.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:glob2,dryRun,list,rename:rename3,parser})=>{migrate(migration,{configDir,glob:glob2,dryRun,list,rename:rename3,parser}).catch(err=>{logger$1.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=>{logger$1.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=>{logger$1.error(e),process.exit(1);}));command("automigrate [fixId]").description("Check storybook for incompatibilities or migrations and apply fixes").option("-y --yes","Skip prompting the user").option("-n --dry-run","Only check for fixes, do not actually run them").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-l --list","List available migrations").option("-c, --config-dir <dir-name>","Directory of Storybook configurations to migrate").option("-s --skip-install","Skip installing deps").option("--renderer <renderer-pkg-name>","The renderer package for the framework Storybook is using.").action(async(fixId,options)=>{await doAutomigrate({fixId,...options}).catch(e=>{logger$1.error(e),process.exit(1);});});command("doctor").description("Check Storybook for known problems and provide suggestions or fixes").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-c, --config-dir <dir-name>","Directory of Storybook configuration").action(async options=>{await doctor(options).catch(e=>{logger$1.error(e),process.exit(1);});});program.on("command:*",([invalidCmd])=>{consoleLogger.error(` Invalid command: %s.
581
+ `),prerelease:import_picocolors39.default.yellow("This is a pre-release version.")};logger$1.plain(boxen([messages.welcome].concat(isCLIOutdated&&!isCLIPrerelease?[messages.notLatest]:[]).concat(isCLIPrerelease?[messages.prerelease]:[]).join(`
582
+ `),{borderStyle:"round",padding:1,borderColor}));let results,{configDir:inferredConfigDir,mainConfig:mainConfigPath}=getStorybookInfo(packageJson,userSpecifiedConfigDir),configDir=userSpecifiedConfigDir||inferredConfigDir||".storybook",mainConfig=await loadMainConfig({configDir});if(!beforeVersion)throw new 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 versions).map(dependency=>{let char="^";return isCLIOutdated&&(char=""),isCanary&&(char=""),`${dependency}@${char}${versions[dependency]}`}),upgradedDependencies=toUpgradedDependencies(packageJson.dependencies),upgradedDevDependencies=toUpgradedDependencies(packageJson.devDependencies);logger$1.info(`Updating dependencies in ${import_picocolors39.default.cyan("package.json")}..`),upgradedDependencies.length>0&&await packageManager.addDependencies({installAsDevDependencies:!1,skipInstall:!0,packageJson},upgradedDependencies),upgradedDevDependencies.length>0&&await packageManager.addDependencies({installAsDevDependencies:!0,skipInstall:!0,packageJson},upgradedDevDependencies),await packageManager.installDependencies();}if(!skipCheck&&!results&&mainConfigPath&&(checkVersionConsistency(),results=await automigrate({dryRun,yes,packageManager,configDir,mainConfigPath,beforeVersion,storybookVersion:currentCLIVersion,isUpgrade,isLatest:isCLIExactLatest})),!options.disableTelemetry){let{preCheckFailure,fixResults}=results||{};await telemetry("upgrade",{beforeVersion,afterVersion:currentCLIVersion,...{automigrationResults:preCheckFailure?null:fixResults,automigrationPreCheckFailure:preCheckFailure||null}});}};async function upgrade(options){await withTelemetry("upgrade",{cliOptions:options},()=>doUpgrade(options));}addToGlobalContext("cliVersion",versions.storybook);var pkg=findPackageSync(__dirname);invariant2(pkg,"Failed to find the closest package.json file.");var consoleLogger=console,command=name=>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("add <addon>").description("Add an addon to your Storybook").option("--package-manager <npm|pnpm|yarn1|yarn2>","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").action((addonName,options)=>add(addonName,options));command("remove <addon>").description("Remove an addon from your Storybook").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").action((addonName,options)=>withTelemetry("remove",{cliOptions:options},async()=>{await removeAddon(addonName,options),options.disableTelemetry||await telemetry("remove",{addon:addonName,source:"cli"});}));command("upgrade").description(`Upgrade your Storybook packages to v${versions.storybook}`).option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").option("-y --yes","Skip prompting the user").option("-f --force","force the upgrade, skipping autoblockers").option("-n --dry-run","Only check for upgrades, do not install").option("-s --skip-check","Skip postinstall version and automigration checks").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").action(async options=>upgrade(options).catch(()=>process.exit(1)));command("info").description("Prints debugging information about the local environment").action(async()=>{consoleLogger.log(import_picocolors40.default.bold(`
583
+ Storybook Environment Info:`));let activePackageManager=(await JsPackageManagerFactory.getPackageManager()).type.replace(/\d/,""),output=await envinfo.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_picocolors40.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:glob2,dryRun,list,rename:rename3,parser})=>{migrate(migration,{configDir,glob:glob2,dryRun,list,rename:rename3,parser}).catch(err=>{logger$1.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=>{logger$1.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=>{logger$1.error(e),process.exit(1);}));command("automigrate [fixId]").description("Check storybook for incompatibilities or migrations and apply fixes").option("-y --yes","Skip prompting the user").option("-n --dry-run","Only check for fixes, do not actually run them").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-l --list","List available migrations").option("-c, --config-dir <dir-name>","Directory of Storybook configurations to migrate").option("-s --skip-install","Skip installing deps").option("--renderer <renderer-pkg-name>","The renderer package for the framework Storybook is using.").action(async(fixId,options)=>{await doAutomigrate({fixId,...options}).catch(e=>{logger$1.error(e),process.exit(1);});});command("doctor").description("Check Storybook for known problems and provide suggestions or fixes").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-c, --config-dir <dir-name>","Directory of Storybook configuration").action(async options=>{await doctor(options).catch(e=>{logger$1.error(e),process.exit(1);});});program.on("command:*",([invalidCmd])=>{consoleLogger.error(` Invalid command: %s.
580
584
  See --help for a list of available commands.`,invalidCmd);let suggestion=program.commands.map(cmd=>cmd.name()).find(cmd=>leven(cmd,invalidCmd)<3);suggestion&&consoleLogger.info(`
581
585
  Did you mean ${suggestion}?`),process.exit(1);});program.usage("<command> [options]").version(String(pkg.version)).parse(process.argv);