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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/bin/index.cjs +13 -13
  2. package/package.json +7 -12
@@ -45,7 +45,7 @@
45
45
  `;case"@angular/core":return import_ts_dedent24.dedent`
46
46
  Support for Angular < 18 has been removed.
47
47
  Please see the migration guide for more information:
48
- ${import_picocolors28.default.yellow("https://angular.io/guide/update-to-version-15")}
48
+ ${import_picocolors28.default.yellow("https://angular.dev/update-guide")}
49
49
 
50
50
  Please upgrade to the latest version of Angular.
51
51
  `;case"next":return import_ts_dedent24.dedent`
@@ -103,14 +103,14 @@
103
103
  2. Upgrade to ${import_picocolors32.default.bold("Vitest 3")} to continue using the addon
104
104
 
105
105
  After addressing this, you can try running the upgrade command again.
106
- `}}}});var import_common25=require("storybook/internal/common"),import_core_server2=require("storybook/internal/core-server"),import_node_logger4=require("storybook/internal/node-logger"),import_telemetry2=require("storybook/internal/telemetry"),import_commander=require("commander"),import_envinfo=__toESM(require("envinfo"),1),import_leven=__toESM(require("leven"),1),import_picocolors35=__toESM(require_picocolors(),1);var version="9.0.0-beta.4";var import_node_path2=require("path"),import_common3=require("storybook/internal/common"),import_csf_tools2=require("storybook/internal/csf-tools"),import_prompts=__toESM(require("prompts"),1),import_semver=__toESM(require("semver"),1),import_ts_dedent2=require("ts-dedent");var import_babel=require("storybook/internal/babel"),defaultRequireWrapperName="getAbsolutePath";function doesVariableOrFunctionDeclarationExist(node,name){return import_babel.types.isVariableDeclaration(node)&&node.declarations.length===1&&import_babel.types.isVariableDeclarator(node.declarations[0])&&import_babel.types.isIdentifier(node.declarations[0].id)&&node.declarations[0].id?.name===name||import_babel.types.isFunctionDeclaration(node)&&import_babel.types.isIdentifier(node.id)&&node.id.name===name}function getReferenceToRequireWrapper(config,value){return import_babel.types.callExpression(import_babel.types.identifier(getRequireWrapperName(config)??defaultRequireWrapperName),[import_babel.types.stringLiteral(value)])}function getRequireWrapperName(config){let declarationName=config.getBodyDeclarations().flatMap(node=>doesVariableOrFunctionDeclarationExist(node,"wrapForPnp")?["wrapForPnp"]:doesVariableOrFunctionDeclarationExist(node,defaultRequireWrapperName)?[defaultRequireWrapperName]:[]);return declarationName.length?declarationName[0]:null}function isRequireWrapperNecessary(node,cb=()=>{}){if(import_babel.types.isStringLiteral(node))return cb(node),!0;if(import_babel.types.isObjectExpression(node)){let nameProperty=node.properties.find(property=>import_babel.types.isObjectProperty(property)&&import_babel.types.isIdentifier(property.key)&&property.key.name==="name");if(nameProperty&&import_babel.types.isStringLiteral(nameProperty.value))return cb(nameProperty),!0}return import_babel.types.isArrayExpression(node)&&node.elements.some(element=>element&&isRequireWrapperNecessary(element))?(cb(node),!0):!1}function getFieldsForRequireWrapper(config){let frameworkNode=config.getFieldNode(["framework"]),builderNode=config.getFieldNode(["core","builder"]),rendererNode=config.getFieldNode(["core","renderer"]),addons=config.getFieldNode(["addons"]);return[...frameworkNode?[frameworkNode]:[],...builderNode?[builderNode]:[],...rendererNode?[rendererNode]:[],...addons&&import_babel.types.isArrayExpression(addons)?[addons]:[]]}function getRequireWrapperAsCallExpression(isConfigTypescript){let functionDeclaration={...import_babel.types.functionDeclaration(import_babel.types.identifier(defaultRequireWrapperName),[{...import_babel.types.identifier("value"),...isConfigTypescript?{typeAnnotation:import_babel.types.tsTypeAnnotation(import_babel.types.tSStringKeyword())}:{}}],import_babel.types.blockStatement([import_babel.types.returnStatement(import_babel.types.callExpression(import_babel.types.identifier("dirname"),[import_babel.types.callExpression(import_babel.types.memberExpression(import_babel.types.identifier("require"),import_babel.types.identifier("resolve")),[import_babel.types.callExpression(import_babel.types.identifier("join"),[import_babel.types.identifier("value"),import_babel.types.stringLiteral("package.json")])])]))])),...isConfigTypescript?{returnType:import_babel.types.tSTypeAnnotation(import_babel.types.tsAnyKeyword())}:{}};return import_babel.types.addComment(functionDeclaration,"leading",`*
106
+ `}}}});var import_common25=require("storybook/internal/common"),import_core_server2=require("storybook/internal/core-server"),import_node_logger4=require("storybook/internal/node-logger"),import_telemetry2=require("storybook/internal/telemetry"),import_commander=require("commander"),import_envinfo=__toESM(require("envinfo"),1),import_leven=__toESM(require("leven"),1),import_picocolors35=__toESM(require_picocolors(),1);var version="9.0.0-beta.6";var import_node_path2=require("path"),import_common3=require("storybook/internal/common"),import_csf_tools2=require("storybook/internal/csf-tools"),import_prompts=__toESM(require("prompts"),1),import_semver=__toESM(require("semver"),1),import_ts_dedent2=require("ts-dedent");var import_babel=require("storybook/internal/babel"),defaultRequireWrapperName="getAbsolutePath";function doesVariableOrFunctionDeclarationExist(node,name){return import_babel.types.isVariableDeclaration(node)&&node.declarations.length===1&&import_babel.types.isVariableDeclarator(node.declarations[0])&&import_babel.types.isIdentifier(node.declarations[0].id)&&node.declarations[0].id?.name===name||import_babel.types.isFunctionDeclaration(node)&&import_babel.types.isIdentifier(node.id)&&node.id.name===name}function getReferenceToRequireWrapper(config,value){return import_babel.types.callExpression(import_babel.types.identifier(getRequireWrapperName(config)??defaultRequireWrapperName),[import_babel.types.stringLiteral(value)])}function getRequireWrapperName(config){let declarationName=config.getBodyDeclarations().flatMap(node=>doesVariableOrFunctionDeclarationExist(node,"wrapForPnp")?["wrapForPnp"]:doesVariableOrFunctionDeclarationExist(node,defaultRequireWrapperName)?[defaultRequireWrapperName]:[]);return declarationName.length?declarationName[0]:null}function isRequireWrapperNecessary(node,cb=()=>{}){if(import_babel.types.isStringLiteral(node))return cb(node),!0;if(import_babel.types.isObjectExpression(node)){let nameProperty=node.properties.find(property=>import_babel.types.isObjectProperty(property)&&import_babel.types.isIdentifier(property.key)&&property.key.name==="name");if(nameProperty&&import_babel.types.isStringLiteral(nameProperty.value))return cb(nameProperty),!0}return import_babel.types.isArrayExpression(node)&&node.elements.some(element=>element&&isRequireWrapperNecessary(element))?(cb(node),!0):!1}function getFieldsForRequireWrapper(config){let frameworkNode=config.getFieldNode(["framework"]),builderNode=config.getFieldNode(["core","builder"]),rendererNode=config.getFieldNode(["core","renderer"]),addons=config.getFieldNode(["addons"]);return[...frameworkNode?[frameworkNode]:[],...builderNode?[builderNode]:[],...rendererNode?[rendererNode]:[],...addons&&import_babel.types.isArrayExpression(addons)?[addons]:[]]}function getRequireWrapperAsCallExpression(isConfigTypescript){let functionDeclaration={...import_babel.types.functionDeclaration(import_babel.types.identifier(defaultRequireWrapperName),[{...import_babel.types.identifier("value"),...isConfigTypescript?{typeAnnotation:import_babel.types.tsTypeAnnotation(import_babel.types.tSStringKeyword())}:{}}],import_babel.types.blockStatement([import_babel.types.returnStatement(import_babel.types.callExpression(import_babel.types.identifier("dirname"),[import_babel.types.callExpression(import_babel.types.memberExpression(import_babel.types.identifier("require"),import_babel.types.identifier("resolve")),[import_babel.types.callExpression(import_babel.types.identifier("join"),[import_babel.types.identifier("value"),import_babel.types.stringLiteral("package.json")])])]))])),...isConfigTypescript?{returnType:import_babel.types.tSTypeAnnotation(import_babel.types.tsAnyKeyword())}:{}};return import_babel.types.addComment(functionDeclaration,"leading",`*
107
107
  * This function is used to resolve the absolute path of a package.
108
108
  * It is needed in projects that use Yarn PnP or are set up within a monorepo.
109
109
  `),functionDeclaration}function wrapValueWithRequireWrapper(config,node){isRequireWrapperNecessary(node,n=>{if(import_babel.types.isStringLiteral(n)){let wrapperNode=getReferenceToRequireWrapper(config,n.value);Object.keys(n).forEach(k=>{delete n[k]}),Object.keys(wrapperNode).forEach(k=>{n[k]=wrapperNode[k]})}import_babel.types.isObjectProperty(n)&&import_babel.types.isStringLiteral(n.value)&&(n.value=getReferenceToRequireWrapper(config,n.value.value)),import_babel.types.isArrayExpression(n)&&n.elements.forEach((element,index,elements)=>{import_babel.types.isStringLiteral(element)&&(elements[index]=getReferenceToRequireWrapper(config,element.value))})})}var import_node_path=require("path"),import_common=require("storybook/internal/common"),import_common2=require("storybook/internal/common"),import_csf_tools=require("storybook/internal/csf-tools"),import_picocolors=__toESM(require_picocolors(),1),import_ts_dedent=require("ts-dedent"),logger=console,getFrameworkPackageName=mainConfig=>{let packageNameOrPath=typeof mainConfig?.framework=="string"?mainConfig.framework:mainConfig?.framework?.name;return packageNameOrPath?(0,import_common.extractProperFrameworkName)(packageNameOrPath):null};var getStorybookData=async({packageManager,configDir:userDefinedConfigDir})=>{let packageJson=await packageManager.retrievePackageJson(),{mainConfig:mainConfigPath,version:storybookVersionSpecifier,configDir:configDirFromScript,previewConfig:previewConfigPath}=(0,import_common.getStorybookInfo)(packageJson,userDefinedConfigDir),storybookVersion=await(0,import_common2.getCoercedStorybookVersion)(packageManager),configDir=userDefinedConfigDir||configDirFromScript||".storybook",mainConfig;try{mainConfig=await(0,import_common.loadMainConfig)({configDir,noCache:!0})}catch(err){throw new Error(import_ts_dedent.dedent`Unable to find or evaluate ${import_picocolors.default.blue(mainConfigPath)}: ${String(err)}`)}return{configDir,mainConfig,storybookVersionSpecifier,storybookVersion,mainConfigPath,previewConfigPath,packageJson}},updateMainConfig=async({mainConfigPath,dryRun},callback)=>{try{let main=await(0,import_csf_tools.readConfig)(mainConfigPath);await callback(main),dryRun||await(0,import_csf_tools.writeConfig)(main)}catch(e){logger.info(`\u274C The migration failed to update your ${import_picocolors.default.blue(mainConfigPath)} on your behalf because of the following error:
110
110
  ${e}
111
111
  `),logger.info(`\u26A0\uFE0F Storybook automigrations are based on AST parsing and it's possible that your ${import_picocolors.default.blue(mainConfigPath)} file contains a non-standard format (e.g. your export is not an object) or that there was an error when parsing dynamic values (e.g. "require" calls, or usage of environment variables). When your main config is non-standard, automigrations are unfortunately not possible. Please follow the instructions given previously and follow the documentation to make the updates manually.`)}};var postinstallAddon=async(addonName,options)=>{try{let modulePath=require.resolve(`${addonName}/postinstall`,{paths:[process.cwd()]}),postinstall=require(modulePath);try{console.log(`Running postinstall script for ${addonName}`),await postinstall(options)}catch(e){console.error(`Error running postinstall script for ${addonName}`),console.error(e)}}catch{}};var getVersionSpecifier=addon=>{let groups=/^(@{0,1}[^@]+)(?:@(.+))?$/.exec(addon);return groups?[groups[1],groups[2]]:[addon,void 0]};var checkInstalled=(addonName,main)=>!!main.addons?.find(entry=>(typeof entry=="string"?entry:entry.name)?.endsWith(addonName)),isCoreAddon=addonName=>Object.hasOwn(import_common3.versions,addonName);async function add(addon,{packageManager:pkgMgr,skipPostinstall,configDir:userSpecifiedConfigDir,yes},logger16=console){let[addonName,inputVersion]=getVersionSpecifier(addon),packageManager=import_common3.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),{mainConfig,mainConfigPath,configDir,previewConfigPath,storybookVersion}=await getStorybookData({packageManager,configDir:userSpecifiedConfigDir});if(typeof configDir>"u")throw new Error(import_ts_dedent2.dedent`
112
112
  Unable to find storybook config directory. Please specify your Storybook config directory with the --config-dir flag.
113
- `);if(!mainConfigPath){logger16.error("Unable to find Storybook main.js config");return}let shouldAddToMain=!0;if(checkInstalled(addonName,mainConfig)&&(shouldAddToMain=!1,!yes)){logger16.log(`The Storybook addon "${addonName}" is already present in ${mainConfigPath}.`);let{shouldForceInstall}=await(0,import_prompts.default)({type:"confirm",name:"shouldForceInstall",message:"Do you wish to install it again?"});if(!shouldForceInstall)return}let main=await(0,import_csf_tools2.readConfig)(mainConfigPath);logger16.log(`Verifying ${addonName}`);let version2=inputVersion;!version2&&isCoreAddon(addonName)&&storybookVersion&&(version2=storybookVersion),version2||(version2=await packageManager.latestVersion(addonName)),isCoreAddon(addonName)&&version2!==storybookVersion&&logger16.warn(`The version of ${addonName} (${version2}) you are installing is not the same as the version of Storybook you are using (${storybookVersion}). This may lead to unexpected behavior.`);let addonWithVersion=isValidVersion(version2)&&!version2.includes("-pr-")?`${addonName}@^${version2}`:`${addonName}@${version2}`;if(logger16.log(`Installing ${addonWithVersion}`),await packageManager.addDependencies({installAsDevDependencies:!0,writeOutputToFile:!1},[addonWithVersion]),shouldAddToMain){if(logger16.log(`Adding '${addon}' to the "addons" field in ${mainConfigPath}`),main.getFieldNode(["addons"])&&getRequireWrapperName(main)!==null){let addonNode=main.valueToNode(addonName);main.appendNodeToArray(["addons"],addonNode),wrapValueWithRequireWrapper(main,addonNode)}else main.appendValueToArray(["addons"],addonName);await(0,import_csf_tools2.writeConfig)(main)}try{await(0,import_common3.syncStorybookAddons)(mainConfig,previewConfigPath)}catch{}!skipPostinstall&&isCoreAddon(addonName)&&await postinstallAddon(addonName,{packageManager:packageManager.type,configDir,yes})}function isValidVersion(version2){return import_semver.default.valid(version2)||version2.match(/^\d+$/)}var import_node_fs3=require("fs"),import_promises7=require("fs/promises"),import_node_path6=require("path"),import_common20=require("storybook/internal/common");var import_node_process2=__toESM(require("process"),1);function ansiRegex({onlyFirst=!1}={}){let pattern=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(pattern,onlyFirst?void 0:"g")}var regex=ansiRegex();function stripAnsi(string){if(typeof string!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);return string.replace(regex,"")}var import_eastasianwidth=__toESM(require_eastasianwidth(),1),import_emoji_regex=__toESM(require_emoji_regex(),1);function stringWidth(string,options={}){if(typeof string!="string"||string.length===0||(options={ambiguousIsNarrow:!0,...options},string=stripAnsi(string),string.length===0))return 0;string=string.replace((0,import_emoji_regex.default)()," ");let ambiguousCharacterWidth=options.ambiguousIsNarrow?1:2,width=0;for(let character of string){let codePoint=character.codePointAt(0);if(codePoint<=31||codePoint>=127&&codePoint<=159||codePoint>=768&&codePoint<=879)continue;switch(import_eastasianwidth.default.eastAsianWidth(character)){case"F":case"W":width+=2;break;case"A":width+=ambiguousCharacterWidth;break;default:width+=1}}return width}var wrapAnsi16=(offset=0)=>code=>`\x1B[${code+offset}m`,wrapAnsi256=(offset=0)=>code=>`\x1B[${38+offset};5;${code}m`,wrapAnsi16m=(offset=0)=>(red,green,blue)=>`\x1B[${38+offset};2;${red};${green};${blue}m`,styles={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},modifierNames=Object.keys(styles.modifier),foregroundColorNames=Object.keys(styles.color),backgroundColorNames=Object.keys(styles.bgColor),colorNames=[...foregroundColorNames,...backgroundColorNames];function assembleStyles(){let codes=new Map;for(let[groupName,group]of Object.entries(styles)){for(let[styleName,style]of Object.entries(group))styles[styleName]={open:`\x1B[${style[0]}m`,close:`\x1B[${style[1]}m`},group[styleName]=styles[styleName],codes.set(style[0],style[1]);Object.defineProperty(styles,groupName,{value:group,enumerable:!1})}return Object.defineProperty(styles,"codes",{value:codes,enumerable:!1}),styles.color.close="\x1B[39m",styles.bgColor.close="\x1B[49m",styles.color.ansi=wrapAnsi16(),styles.color.ansi256=wrapAnsi256(),styles.color.ansi16m=wrapAnsi16m(),styles.bgColor.ansi=wrapAnsi16(10),styles.bgColor.ansi256=wrapAnsi256(10),styles.bgColor.ansi16m=wrapAnsi16m(10),Object.defineProperties(styles,{rgbToAnsi256:{value(red,green,blue){return red===green&&green===blue?red<8?16:red>248?231:Math.round((red-8)/247*24)+232:16+36*Math.round(red/255*5)+6*Math.round(green/255*5)+Math.round(blue/255*5)},enumerable:!1},hexToRgb:{value(hex){let matches=/[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));if(!matches)return[0,0,0];let[colorString]=matches;colorString.length===3&&(colorString=[...colorString].map(character=>character+character).join(""));let integer=Number.parseInt(colorString,16);return[integer>>16&255,integer>>8&255,integer&255]},enumerable:!1},hexToAnsi256:{value:hex=>styles.rgbToAnsi256(...styles.hexToRgb(hex)),enumerable:!1},ansi256ToAnsi:{value(code){if(code<8)return 30+code;if(code<16)return 90+(code-8);let red,green,blue;if(code>=232)red=((code-232)*10+8)/255,green=red,blue=red;else{code-=16;let remainder=code%36;red=Math.floor(code/36)/5,green=Math.floor(remainder/6)/5,blue=remainder%6/5}let value=Math.max(red,green,blue)*2;if(value===0)return 30;let result=30+(Math.round(blue)<<2|Math.round(green)<<1|Math.round(red));return value===2&&(result+=60),result},enumerable:!1},rgbToAnsi:{value:(red,green,blue)=>styles.ansi256ToAnsi(styles.rgbToAnsi256(red,green,blue)),enumerable:!1},hexToAnsi:{value:hex=>styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),enumerable:!1}}),styles}var ansiStyles=assembleStyles(),ansi_styles_default=ansiStyles;var import_node_process=__toESM(require("process"),1),import_node_os=__toESM(require("os"),1),import_node_tty=__toESM(require("tty"),1);function hasFlag(flag,argv=globalThis.Deno?globalThis.Deno.args:import_node_process.default.argv){let prefix=flag.startsWith("-")?"":flag.length===1?"-":"--",position=argv.indexOf(prefix+flag),terminatorPosition=argv.indexOf("--");return position!==-1&&(terminatorPosition===-1||position<terminatorPosition)}var{env}=import_node_process.default,flagForceColor;hasFlag("no-color")||hasFlag("no-colors")||hasFlag("color=false")||hasFlag("color=never")?flagForceColor=0:(hasFlag("color")||hasFlag("colors")||hasFlag("color=true")||hasFlag("color=always"))&&(flagForceColor=1);function envForceColor(){if("FORCE_COLOR"in env)return env.FORCE_COLOR==="true"?1:env.FORCE_COLOR==="false"?0:env.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(env.FORCE_COLOR,10),3)}function translateLevel(level){return level===0?!1:{level,hasBasic:!0,has256:level>=2,has16m:level>=3}}function _supportsColor(haveStream,{streamIsTTY,sniffFlags=!0}={}){let noFlagForceColor=envForceColor();noFlagForceColor!==void 0&&(flagForceColor=noFlagForceColor);let forceColor=sniffFlags?flagForceColor:noFlagForceColor;if(forceColor===0)return 0;if(sniffFlags){if(hasFlag("color=16m")||hasFlag("color=full")||hasFlag("color=truecolor"))return 3;if(hasFlag("color=256"))return 2}if("TF_BUILD"in env&&"AGENT_NAME"in env)return 1;if(haveStream&&!streamIsTTY&&forceColor===void 0)return 0;let min=forceColor||0;if(env.TERM==="dumb")return min;if(import_node_process.default.platform==="win32"){let osRelease=import_node_os.default.release().split(".");return Number(osRelease[0])>=10&&Number(osRelease[2])>=10586?Number(osRelease[2])>=14931?3:2:1}if("CI"in env)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(key=>key in env)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(sign=>sign in env)||env.CI_NAME==="codeship"?1:min;if("TEAMCITY_VERSION"in env)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION)?1:0;if(env.COLORTERM==="truecolor"||env.TERM==="xterm-kitty")return 3;if("TERM_PROGRAM"in env){let version2=Number.parseInt((env.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(env.TERM_PROGRAM){case"iTerm.app":return version2>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(env.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)||"COLORTERM"in env?1:min}function createSupportsColor(stream,options={}){let level=_supportsColor(stream,{streamIsTTY:stream&&stream.isTTY,...options});return translateLevel(level)}var supportsColor={stdout:createSupportsColor({isTTY:import_node_tty.default.isatty(1)}),stderr:createSupportsColor({isTTY:import_node_tty.default.isatty(2)})},supports_color_default=supportsColor;function stringReplaceAll(string,substring,replacer){let index=string.indexOf(substring);if(index===-1)return string;let substringLength=substring.length,endIndex=0,returnValue="";do returnValue+=string.slice(endIndex,index)+substring+replacer,endIndex=index+substringLength,index=string.indexOf(substring,endIndex);while(index!==-1);return returnValue+=string.slice(endIndex),returnValue}function stringEncaseCRLFWithFirstIndex(string,prefix,postfix,index){let endIndex=0,returnValue="";do{let gotCR=string[index-1]==="\r";returnValue+=string.slice(endIndex,gotCR?index-1:index)+prefix+(gotCR?`\r
113
+ `);if(!mainConfigPath){logger16.error("Unable to find Storybook main.js config");return}let shouldAddToMain=!0;if(checkInstalled(addonName,mainConfig)&&(shouldAddToMain=!1,!yes)){logger16.log(`The Storybook addon "${addonName}" is already present in ${mainConfigPath}.`);let{shouldForceInstall}=await(0,import_prompts.default)({type:"confirm",name:"shouldForceInstall",message:"Do you wish to install it again?"});if(!shouldForceInstall)return}let main=await(0,import_csf_tools2.readConfig)(mainConfigPath);logger16.log(`Verifying ${addonName}`);let version2=inputVersion;!version2&&isCoreAddon(addonName)&&storybookVersion&&(version2=storybookVersion),version2||(version2=await packageManager.latestVersion(addonName)),isCoreAddon(addonName)&&version2!==storybookVersion&&logger16.warn(`The version of ${addonName} (${version2}) you are installing is not the same as the version of Storybook you are using (${storybookVersion}). This may lead to unexpected behavior.`);let addonWithVersion=isValidVersion(version2)&&!version2.includes("-pr-")?`${addonName}@^${version2}`:`${addonName}@${version2}`;if(logger16.log(`Installing ${addonWithVersion}`),await packageManager.addDependencies({installAsDevDependencies:!0,writeOutputToFile:!1},[addonWithVersion]),shouldAddToMain){if(logger16.log(`Adding '${addon}' to the "addons" field in ${mainConfigPath}`),main.getFieldNode(["addons"])&&getRequireWrapperName(main)!==null){let addonNode=main.valueToNode(addonName);main.appendNodeToArray(["addons"],addonNode),wrapValueWithRequireWrapper(main,addonNode)}else main.appendValueToArray(["addons"],addonName);await(0,import_csf_tools2.writeConfig)(main)}try{await(0,import_common3.syncStorybookAddons)(mainConfig,previewConfigPath)}catch{}!skipPostinstall&&isCoreAddon(addonName)&&await postinstallAddon(addonName,{packageManager:packageManager.type,configDir,yes})}function isValidVersion(version2){return import_semver.default.valid(version2)||version2.match(/^\d+$/)}var import_node_fs3=require("fs"),import_promises7=require("fs/promises"),import_node_path6=require("path"),import_common20=require("storybook/internal/common");var import_node_process2=__toESM(require("process"),1);function ansiRegex({onlyFirst=!1}={}){let pattern=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(pattern,onlyFirst?void 0:"g")}var regex=ansiRegex();function stripAnsi(string){if(typeof string!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);return string.replace(regex,"")}var import_eastasianwidth=__toESM(require_eastasianwidth(),1),import_emoji_regex=__toESM(require_emoji_regex(),1);function stringWidth(string,options={}){if(typeof string!="string"||string.length===0||(options={ambiguousIsNarrow:!0,...options},string=stripAnsi(string),string.length===0))return 0;string=string.replace((0,import_emoji_regex.default)()," ");let ambiguousCharacterWidth=options.ambiguousIsNarrow?1:2,width=0;for(let character of string){let codePoint=character.codePointAt(0);if(codePoint<=31||codePoint>=127&&codePoint<=159||codePoint>=768&&codePoint<=879)continue;switch(import_eastasianwidth.default.eastAsianWidth(character)){case"F":case"W":width+=2;break;case"A":width+=ambiguousCharacterWidth;break;default:width+=1}}return width}var wrapAnsi16=(offset=0)=>code=>`\x1B[${code+offset}m`,wrapAnsi256=(offset=0)=>code=>`\x1B[${38+offset};5;${code}m`,wrapAnsi16m=(offset=0)=>(red,green,blue)=>`\x1B[${38+offset};2;${red};${green};${blue}m`,styles={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},modifierNames=Object.keys(styles.modifier),foregroundColorNames=Object.keys(styles.color),backgroundColorNames=Object.keys(styles.bgColor),colorNames=[...foregroundColorNames,...backgroundColorNames];function assembleStyles(){let codes=new Map;for(let[groupName,group]of Object.entries(styles)){for(let[styleName,style]of Object.entries(group))styles[styleName]={open:`\x1B[${style[0]}m`,close:`\x1B[${style[1]}m`},group[styleName]=styles[styleName],codes.set(style[0],style[1]);Object.defineProperty(styles,groupName,{value:group,enumerable:!1})}return Object.defineProperty(styles,"codes",{value:codes,enumerable:!1}),styles.color.close="\x1B[39m",styles.bgColor.close="\x1B[49m",styles.color.ansi=wrapAnsi16(),styles.color.ansi256=wrapAnsi256(),styles.color.ansi16m=wrapAnsi16m(),styles.bgColor.ansi=wrapAnsi16(10),styles.bgColor.ansi256=wrapAnsi256(10),styles.bgColor.ansi16m=wrapAnsi16m(10),Object.defineProperties(styles,{rgbToAnsi256:{value(red,green,blue){return red===green&&green===blue?red<8?16:red>248?231:Math.round((red-8)/247*24)+232:16+36*Math.round(red/255*5)+6*Math.round(green/255*5)+Math.round(blue/255*5)},enumerable:!1},hexToRgb:{value(hex){let matches=/[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));if(!matches)return[0,0,0];let[colorString]=matches;colorString.length===3&&(colorString=[...colorString].map(character=>character+character).join(""));let integer=Number.parseInt(colorString,16);return[integer>>16&255,integer>>8&255,integer&255]},enumerable:!1},hexToAnsi256:{value:hex=>styles.rgbToAnsi256(...styles.hexToRgb(hex)),enumerable:!1},ansi256ToAnsi:{value(code){if(code<8)return 30+code;if(code<16)return 90+(code-8);let red,green,blue;if(code>=232)red=((code-232)*10+8)/255,green=red,blue=red;else{code-=16;let remainder=code%36;red=Math.floor(code/36)/5,green=Math.floor(remainder/6)/5,blue=remainder%6/5}let value=Math.max(red,green,blue)*2;if(value===0)return 30;let result=30+(Math.round(blue)<<2|Math.round(green)<<1|Math.round(red));return value===2&&(result+=60),result},enumerable:!1},rgbToAnsi:{value:(red,green,blue)=>styles.ansi256ToAnsi(styles.rgbToAnsi256(red,green,blue)),enumerable:!1},hexToAnsi:{value:hex=>styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),enumerable:!1}}),styles}var ansiStyles=assembleStyles(),ansi_styles_default=ansiStyles;var import_node_process=__toESM(require("process"),1),import_node_os=__toESM(require("os"),1),import_node_tty=__toESM(require("tty"),1);function hasFlag(flag,argv=globalThis.Deno?globalThis.Deno.args:import_node_process.default.argv){let prefix=flag.startsWith("-")?"":flag.length===1?"-":"--",position=argv.indexOf(prefix+flag),terminatorPosition=argv.indexOf("--");return position!==-1&&(terminatorPosition===-1||position<terminatorPosition)}var{env}=import_node_process.default,flagForceColor;hasFlag("no-color")||hasFlag("no-colors")||hasFlag("color=false")||hasFlag("color=never")?flagForceColor=0:(hasFlag("color")||hasFlag("colors")||hasFlag("color=true")||hasFlag("color=always"))&&(flagForceColor=1);function envForceColor(){if("FORCE_COLOR"in env)return env.FORCE_COLOR==="true"?1:env.FORCE_COLOR==="false"?0:env.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(env.FORCE_COLOR,10),3)}function translateLevel(level){return level===0?!1:{level,hasBasic:!0,has256:level>=2,has16m:level>=3}}function _supportsColor(haveStream,{streamIsTTY,sniffFlags=!0}={}){let noFlagForceColor=envForceColor();noFlagForceColor!==void 0&&(flagForceColor=noFlagForceColor);let forceColor=sniffFlags?flagForceColor:noFlagForceColor;if(forceColor===0)return 0;if(sniffFlags){if(hasFlag("color=16m")||hasFlag("color=full")||hasFlag("color=truecolor"))return 3;if(hasFlag("color=256"))return 2}if("TF_BUILD"in env&&"AGENT_NAME"in env)return 1;if(haveStream&&!streamIsTTY&&forceColor===void 0)return 0;let min=forceColor||0;if(env.TERM==="dumb")return min;if(import_node_process.default.platform==="win32"){let osRelease=import_node_os.default.release().split(".");return Number(osRelease[0])>=10&&Number(osRelease[2])>=10586?Number(osRelease[2])>=14931?3:2:1}if("CI"in env)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(key=>key in env)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(sign=>sign in env)||env.CI_NAME==="codeship"?1:min;if("TEAMCITY_VERSION"in env)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION)?1:0;if(env.COLORTERM==="truecolor"||env.TERM==="xterm-kitty")return 3;if("TERM_PROGRAM"in env){let version2=Number.parseInt((env.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(env.TERM_PROGRAM){case"iTerm.app":return version2>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(env.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)||"COLORTERM"in env?1:min}function createSupportsColor(stream,options={}){let level=_supportsColor(stream,{streamIsTTY:stream&&stream.isTTY,...options});return translateLevel(level)}var supportsColor={stdout:createSupportsColor({isTTY:import_node_tty.default.isatty(1)}),stderr:createSupportsColor({isTTY:import_node_tty.default.isatty(2)})},supports_color_default=supportsColor;function stringReplaceAll(string,substring,replacer){let index=string.indexOf(substring);if(index===-1)return string;let substringLength=substring.length,endIndex=0,returnValue="";do returnValue+=string.slice(endIndex,index)+substring+replacer,endIndex=index+substringLength,index=string.indexOf(substring,endIndex);while(index!==-1);return returnValue+=string.slice(endIndex),returnValue}function stringEncaseCRLFWithFirstIndex(string,prefix,postfix,index){let endIndex=0,returnValue="";do{let gotCR=string[index-1]==="\r";returnValue+=string.slice(endIndex,gotCR?index-1:index)+prefix+(gotCR?`\r
114
114
  `:`
115
115
  `)+postfix,endIndex=index+1,index=string.indexOf(`
116
116
  `,endIndex)}while(index!==-1);return returnValue+=string.slice(endIndex),returnValue}var{stdout:stdoutColor,stderr:stderrColor}=supports_color_default,GENERATOR=Symbol("GENERATOR"),STYLER=Symbol("STYLER"),IS_EMPTY=Symbol("IS_EMPTY"),levelMapping=["ansi","ansi","ansi256","ansi16m"],styles2=Object.create(null),applyOptions=(object,options={})=>{if(options.level&&!(Number.isInteger(options.level)&&options.level>=0&&options.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let colorLevel=stdoutColor?stdoutColor.level:0;object.level=options.level===void 0?colorLevel:options.level};var chalkFactory=options=>{let chalk2=(...strings)=>strings.join(" ");return applyOptions(chalk2,options),Object.setPrototypeOf(chalk2,createChalk.prototype),chalk2};function createChalk(options){return chalkFactory(options)}Object.setPrototypeOf(createChalk.prototype,Function.prototype);for(let[styleName,style]of Object.entries(ansi_styles_default))styles2[styleName]={get(){let builder=createBuilder(this,createStyler(style.open,style.close,this[STYLER]),this[IS_EMPTY]);return Object.defineProperty(this,styleName,{value:builder}),builder}};styles2.visible={get(){let builder=createBuilder(this,this[STYLER],!0);return Object.defineProperty(this,"visible",{value:builder}),builder}};var getModelAnsi=(model,level,type,...arguments_)=>model==="rgb"?level==="ansi16m"?ansi_styles_default[type].ansi16m(...arguments_):level==="ansi256"?ansi_styles_default[type].ansi256(ansi_styles_default.rgbToAnsi256(...arguments_)):ansi_styles_default[type].ansi(ansi_styles_default.rgbToAnsi(...arguments_)):model==="hex"?getModelAnsi("rgb",level,type,...ansi_styles_default.hexToRgb(...arguments_)):ansi_styles_default[type][model](...arguments_),usedModels=["rgb","hex","ansi256"];for(let model of usedModels){styles2[model]={get(){let{level}=this;return function(...arguments_){let styler=createStyler(getModelAnsi(model,levelMapping[level],"color",...arguments_),ansi_styles_default.color.close,this[STYLER]);return createBuilder(this,styler,this[IS_EMPTY])}}};let bgModel="bg"+model[0].toUpperCase()+model.slice(1);styles2[bgModel]={get(){let{level}=this;return function(...arguments_){let styler=createStyler(getModelAnsi(model,levelMapping[level],"bgColor",...arguments_),ansi_styles_default.bgColor.close,this[STYLER]);return createBuilder(this,styler,this[IS_EMPTY])}}}}var proto=Object.defineProperties(()=>{},{...styles2,level:{enumerable:!0,get(){return this[GENERATOR].level},set(level){this[GENERATOR].level=level}}}),createStyler=(open,close,parent)=>{let openAll,closeAll;return parent===void 0?(openAll=open,closeAll=close):(openAll=parent.openAll+open,closeAll=close+parent.closeAll),{open,close,openAll,closeAll,parent}},createBuilder=(self,_styler,_isEmpty)=>{let builder=(...arguments_)=>applyStyle(builder,arguments_.length===1?""+arguments_[0]:arguments_.join(" "));return Object.setPrototypeOf(builder,proto),builder[GENERATOR]=self,builder[STYLER]=_styler,builder[IS_EMPTY]=_isEmpty,builder},applyStyle=(self,string)=>{if(self.level<=0||!string)return self[IS_EMPTY]?"":string;let styler=self[STYLER];if(styler===void 0)return string;let{openAll,closeAll}=styler;if(string.includes("\x1B"))for(;styler!==void 0;)string=stringReplaceAll(string,styler.close,styler.open),styler=styler.parent;let lfIndex=string.indexOf(`
@@ -158,7 +158,7 @@ ${packageVersions.join(", ")}`),acc},{critical:[],trivial:[]});return critical.l
158
158
  `))}}let commandMessage=`You can always recheck the health of your project by running:
159
159
  ${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(0,import_promises.rename)(TEMP_LOG_FILE_PATH,(0,import_node_path3.join)(process.cwd(),LOG_FILE_NAME))):(logger2.info("\u{1F973} Your Storybook project looks good!"),logger2.info(commandMessage),await(0,import_promises.rm)(TEMP_LOG_FILE_PATH,{recursive:!0,force:!0})),logger2.info(),cleanup()};var import_common10=require("storybook/internal/common"),import_picocolors8=__toESM(require_picocolors(),1),import_prompts2=__toESM(require("prompts"),1),import_ts_dedent4=require("ts-dedent");var import_node_os3=__toESM(require("os"),1),import_common8=require("storybook/internal/common"),import_fs=require("fs"),import_picocolors6=__toESM(require_picocolors(),1);function slash(path3){return path3.startsWith("\\\\?\\")?path3:path3.replace(/\\/g,"/")}var logger3=console,maxConcurrentTasks=Math.max(1,import_node_os3.default.cpus().length-1);async function runCodemod(globPattern="**/*.stories.*",transform,{dryRun=!1,skipFormatting=!1}={}){let modifiedCount=0,unmodifiedCount=0,errorCount=0,{globby}=await import("globby"),files=await globby(slash(globPattern),{followSymbolicLinks:!0,ignore:["**/node_modules/**","**/dist/**","**/storybook-static/**","**/build/**"]});if(!files.length)throw logger3.error(`No files found for glob pattern "${globPattern}".
160
160
  Please try a different pattern.
161
- `),new Error("No files matched");try{let pLimit=(await import("p-limit")).default,limit=pLimit(maxConcurrentTasks);await Promise.all(files.map(file=>limit(async()=>{try{let filePath=file;try{filePath=await import_fs.promises.realpath(file)}catch{}let source=await import_fs.promises.readFile(filePath,"utf-8"),transformedSource=await transform({path:filePath,source});if(transformedSource!==source){if(!dryRun){let fileContent=skipFormatting?transformedSource:await(0,import_common8.formatFileContent)(file,transformedSource);await import_fs.promises.writeFile(file,fileContent,"utf-8")}modifiedCount++}else unmodifiedCount++}catch(fileError){logger3.error(`Error processing file ${file}:`,fileError),errorCount++}})))}catch(error){logger3.error("Error applying transform:",error),errorCount++}logger3.log(`Summary: ${import_picocolors6.default.green(`${modifiedCount} transformed`)}, ${import_picocolors6.default.yellow(`${unmodifiedCount} unmodified`)}, ${import_picocolors6.default.red(`${errorCount} errors`)}`),dryRun&&logger3.log(import_picocolors6.default.bold(`This was a dry run. Run without --dry-run to apply the transformation to ${modifiedCount} files.`))}var printBoxedMessage=(message,style)=>boxen(message,{borderStyle:"round",padding:1,borderColor:"#F1618C",...style});var import_babel3=require("storybook/internal/babel"),import_common9=require("storybook/internal/common"),import_csf_tools3=require("storybook/internal/csf-tools"),import_picocolors7=__toESM(require_picocolors(),1);var import_babel2=require("storybook/internal/babel");function cleanupTypeImports(programNode,disallowList2){let usedIdentifiers=new Set;try{(0,import_babel2.traverse)(programNode,{Identifier(path3){path3.findParent(p=>p.isImportDeclaration())||usedIdentifiers.add(path3.node.name)}})}catch{}return programNode.body.filter(node=>{if(import_babel2.types.isImportDeclaration(node)){let{source,specifiers}=node;if(source.value.startsWith("@storybook/")){let allowedSpecifiers=specifiers.filter(specifier=>{if(import_babel2.types.isImportSpecifier(specifier)&&import_babel2.types.isIdentifier(specifier.imported)){let name=specifier.imported.name;return!disallowList2.includes(name)||usedIdentifiers.has(name)}return!0});return allowedSpecifiers.length>0?(node.specifiers=allowedSpecifiers,!0):!1}}return!0})}function removeExportDeclarations(programNode,exportDecls){return programNode.body.filter(node=>{if(import_babel2.types.isExportNamedDeclaration(node)&&node.declaration){if(import_babel2.types.isVariableDeclaration(node.declaration))return node.declaration.declarations=node.declaration.declarations.filter(decl=>import_babel2.types.isIdentifier(decl.id)&&!exportDecls[decl.id.name]),node.declaration.declarations.length>0;if(import_babel2.types.isFunctionDeclaration(node.declaration)){let funcDecl=node.declaration;return import_babel2.types.isIdentifier(funcDecl.id)&&!exportDecls[funcDecl.id.name]}}return!0})}function getConfigProperties(exportDecls){let properties=[];for(let[name,decl]of Object.entries(exportDecls))import_babel2.types.isVariableDeclarator(decl)&&decl.init?properties.push(import_babel2.types.objectProperty(import_babel2.types.identifier(name),decl.init)):import_babel2.types.isFunctionDeclaration(decl)&&properties.push(import_babel2.types.objectProperty(import_babel2.types.identifier(name),import_babel2.types.arrowFunctionExpression([],decl.body)));return properties}async function configToCsfFactory(info,{configType,frameworkPackage},{dryRun=!1,skipFormatting=!1}={}){let config=(0,import_csf_tools3.loadConfig)(info.source);try{config.parse()}catch(err){return logger4.log(`Error when parsing ${info.path}, skipping:
161
+ `),new Error("No files matched");try{let pLimit=(await import("p-limit")).default,limit=pLimit(maxConcurrentTasks);await Promise.all(files.map(file=>limit(async()=>{try{let filePath=file;try{filePath=await import_fs.promises.realpath(file)}catch{}let source=await import_fs.promises.readFile(filePath,"utf-8"),transformedSource=await transform({path:filePath,source});if(transformedSource!==source){if(!dryRun){let fileContent=skipFormatting?transformedSource:await(0,import_common8.formatFileContent)(file,transformedSource);await import_fs.promises.writeFile(file,fileContent,"utf-8")}modifiedCount++}else unmodifiedCount++}catch(fileError){logger3.error(`Error processing file ${file}:`,fileError),errorCount++}})))}catch(error){logger3.error("Error applying transform:",error),errorCount++}logger3.log(`Summary: ${import_picocolors6.default.green(`${modifiedCount} transformed`)}, ${import_picocolors6.default.yellow(`${unmodifiedCount} unmodified`)}, ${import_picocolors6.default.red(`${errorCount} errors`)}`),dryRun&&logger3.log(import_picocolors6.default.bold(`This was a dry run. Run without --dry-run to apply the transformation to ${modifiedCount} files.`))}var printBoxedMessage=(message,style)=>boxen(message,{borderStyle:"round",padding:1,borderColor:"#F1618C",...style});var import_babel3=require("storybook/internal/babel"),import_common9=require("storybook/internal/common"),import_csf_tools3=require("storybook/internal/csf-tools"),import_picocolors7=__toESM(require_picocolors(),1);var import_babel2=require("storybook/internal/babel");function cleanupTypeImports(programNode,disallowList2){let usedIdentifiers=new Set;try{(0,import_babel2.traverse)(programNode,{Identifier(path3){path3.findParent(p=>p.isImportDeclaration())||usedIdentifiers.add(path3.node.name)},noScope:!0})}catch{}return programNode.body.filter(node=>{if(import_babel2.types.isImportDeclaration(node)){let{source,specifiers}=node;if(source.value.startsWith("@storybook/")){let allowedSpecifiers=specifiers.filter(specifier=>{if(import_babel2.types.isImportSpecifier(specifier)&&import_babel2.types.isIdentifier(specifier.imported)){let name=specifier.imported.name;return!disallowList2.includes(name)||usedIdentifiers.has(name)}return!0});return allowedSpecifiers.length>0?(node.specifiers=allowedSpecifiers,!0):!1}}return!0})}function removeExportDeclarations(programNode,exportDecls){return programNode.body.filter(node=>{if(import_babel2.types.isExportNamedDeclaration(node)&&node.declaration){if(import_babel2.types.isVariableDeclaration(node.declaration))return node.declaration.declarations=node.declaration.declarations.filter(decl=>import_babel2.types.isIdentifier(decl.id)&&!exportDecls[decl.id.name]),node.declaration.declarations.length>0;if(import_babel2.types.isFunctionDeclaration(node.declaration)){let funcDecl=node.declaration;return import_babel2.types.isIdentifier(funcDecl.id)&&!exportDecls[funcDecl.id.name]}}return!0})}function getConfigProperties(exportDecls){let properties=[];for(let[name,decl]of Object.entries(exportDecls))import_babel2.types.isVariableDeclarator(decl)&&decl.init?properties.push(import_babel2.types.objectProperty(import_babel2.types.identifier(name),decl.init)):import_babel2.types.isFunctionDeclaration(decl)&&properties.push(import_babel2.types.objectProperty(import_babel2.types.identifier(name),import_babel2.types.arrowFunctionExpression([],decl.body)));return properties}async function configToCsfFactory(info,{configType,frameworkPackage},{dryRun=!1,skipFormatting=!1}={}){let config=(0,import_csf_tools3.loadConfig)(info.source);try{config.parse()}catch(err){return logger4.log(`Error when parsing ${info.path}, skipping:
162
162
  ${err}`),info.source}let methodName=configType==="main"?"defineMain":"definePreview",programNode=config._ast.program,hasNamedExports=Object.keys(config._exportDecls).length>0;if(config._exportsObject&&hasNamedExports){let exportDecls=config._exportDecls,defineConfigProps=getConfigProperties(exportDecls);config._exportsObject.properties.push(...defineConfigProps),programNode.body=removeExportDeclarations(programNode,exportDecls)}else if(config._exportsObject){let defineConfigCall=import_babel3.types.callExpression(import_babel3.types.identifier(methodName),[config._exportsObject]),exportDefaultNode=null,declarationNodeIndex=-1;programNode.body.forEach(node=>{if(import_babel3.types.isExportDefaultDeclaration(node)&&import_babel3.types.isIdentifier(node.declaration)){let declarationName=node.declaration.name;if(declarationNodeIndex=programNode.body.findIndex(n=>import_babel3.types.isVariableDeclaration(n)&&n.declarations.some(d=>import_babel3.types.isIdentifier(d.id)&&d.id.name===declarationName&&import_babel3.types.isObjectExpression(d.init))),declarationNodeIndex!==-1){exportDefaultNode=node;let declarationNode=programNode.body[declarationNodeIndex];if(import_babel3.types.isVariableDeclaration(declarationNode)){let id=declarationNode.declarations[0].id;import_babel3.types.isIdentifier(id)&&id.name&&programNode.body.splice(declarationNodeIndex,1)}}}else import_babel3.types.isExportDefaultDeclaration(node)&&import_babel3.types.isObjectExpression(node.declaration)&&(exportDefaultNode=node)}),exportDefaultNode!==null&&(exportDefaultNode.declaration=defineConfigCall)}else if(hasNamedExports){let exportDecls=config._exportDecls,defineConfigProps=getConfigProperties(exportDecls),defineConfigCall=import_babel3.types.callExpression(import_babel3.types.identifier(methodName),[import_babel3.types.objectExpression(defineConfigProps)]);programNode.body=removeExportDeclarations(programNode,exportDecls),programNode.body.push(import_babel3.types.exportDefaultDeclaration(defineConfigCall))}let configImport=import_babel3.types.importDeclaration([import_babel3.types.importSpecifier(import_babel3.types.identifier(methodName),import_babel3.types.identifier(methodName))],import_babel3.types.stringLiteral(frameworkPackage+`${configType==="main"?"/node":""}`)),existingImport=programNode.body.find(node=>import_babel3.types.isImportDeclaration(node)&&node.importKind!=="type"&&node.source.value===configImport.source.value);existingImport&&import_babel3.types.isImportDeclaration(existingImport)?existingImport.specifiers.some(specifier=>import_babel3.types.isImportSpecifier(specifier)&&import_babel3.types.isIdentifier(specifier.imported)&&specifier.imported.name===methodName)||existingImport.specifiers.push(import_babel3.types.importSpecifier(import_babel3.types.identifier(methodName),import_babel3.types.identifier(methodName))):programNode.body.unshift(configImport);let disallowList2=["StorybookConfig","Preview"];programNode.body=cleanupTypeImports(programNode,disallowList2);let output=(0,import_csf_tools3.printConfig)(config).code;return dryRun?(logger4.log(`Would write to ${import_picocolors7.default.yellow(info.path)}:
163
163
  ${import_picocolors7.default.green(output)}`),info.source):skipFormatting?output:(0,import_common9.formatFileContent)(info.path,output)}var import_babel4=require("storybook/internal/babel"),import_csf_tools4=require("storybook/internal/csf-tools"),import_path=__toESM(require("path"),1);var reuseDisallowList=["play","run","extends","story"],typesDisallowList=["Story","StoryFn","StoryObj","Meta","MetaObj","ComponentStory","ComponentMeta"];async function storyToCsfFactory(info,{previewConfigPath,useSubPathImports}){let csf=(0,import_csf_tools4.loadCsf)(info.source,{makeTitle:()=>"FIXME"});try{csf.parse()}catch(err){return logger4.log(`Error when parsing ${info.path}, skipping:
164
164
  ${err}`),info.source}let metaVariableName=csf._metaVariableName??"meta",programNode=csf._ast.program,previewImport,hasRootLevelConfig=programNode.body.some(n=>import_babel4.types.isVariableDeclaration(n)&&n.declarations.some(declaration=>import_babel4.types.isIdentifier(declaration.id,{name:"preview"}))),previewPath="#.storybook/preview";if(!useSubPathImports){let relativePath=import_path.default.relative(import_path.default.dirname(info.path),previewConfigPath),{dir,name}=import_path.default.parse(relativePath);previewPath=`${dir?`${dir}/`:""}${name}`,previewPath.startsWith(".")||(previewPath=`./${previewPath}`),previewPath=previewPath.replace(/\\/g,"/")}let sbConfigImportName=hasRootLevelConfig?"storybookPreview":"preview",sbConfigImportSpecifier=import_babel4.types.importDefaultSpecifier(import_babel4.types.identifier(sbConfigImportName));programNode.body.forEach(node=>{if(import_babel4.types.isImportDeclaration(node)&&(0,import_csf_tools4.isValidPreviewPath)(node.source.value)){let defaultImportSpecifier=node.specifiers.find(specifier=>import_babel4.types.isImportDefaultSpecifier(specifier));defaultImportSpecifier?defaultImportSpecifier.local.name!==sbConfigImportName&&(sbConfigImportName=defaultImportSpecifier.local.name):node.specifiers.push(sbConfigImportSpecifier),previewImport=node}});let hasMeta=!!csf._meta;Object.entries(csf._storyExports).forEach(([_key,decl])=>{let id=decl.id,declarator=decl,init=import_babel4.types.isVariableDeclarator(declarator)?declarator.init:void 0;if(import_babel4.types.isIdentifier(id)&&init){if(id.typeAnnotation&&(id.typeAnnotation=null),(import_babel4.types.isTSSatisfiesExpression(init)||import_babel4.types.isTSAsExpression(init))&&(init=init.expression),import_babel4.types.isObjectExpression(init))declarator.init=import_babel4.types.callExpression(import_babel4.types.memberExpression(import_babel4.types.identifier(metaVariableName),import_babel4.types.identifier("story")),[init]);else if(import_babel4.types.isArrowFunctionExpression(init)){let renderProperty=import_babel4.types.objectProperty(import_babel4.types.identifier("render"),init),objectExpression=import_babel4.types.objectExpression([renderProperty]);declarator.init=import_babel4.types.callExpression(import_babel4.types.memberExpression(import_babel4.types.identifier(metaVariableName),import_babel4.types.identifier("story")),[objectExpression])}}});let storyExportDecls=new Map(Object.entries(csf._storyExports).filter(entry=>!import_babel4.types.isFunctionDeclaration(entry[1])));if((0,import_babel4.traverse)(csf._ast,{Identifier(nodePath){let identifierName=nodePath.node.name,binding=nodePath.scope.getBinding(identifierName);if(binding&&storyExportDecls.has(binding.identifier.name)||identifierName===metaVariableName){let parent=nodePath.parent;if(import_babel4.types.isVariableDeclarator(parent)&&parent.id===nodePath.node||import_babel4.types.isImportSpecifier(parent)||import_babel4.types.isExportSpecifier(parent)||import_babel4.types.isExportDefaultDeclaration(parent)||import_babel4.types.isMemberExpression(parent)&&import_babel4.types.isIdentifier(parent.property,{name:"input"})||import_babel4.types.isMemberExpression(parent)&&import_babel4.types.isIdentifier(parent.property)&&reuseDisallowList.includes(parent.property.name))return;try{nodePath.replaceWith(import_babel4.types.memberExpression(import_babel4.types.identifier(identifierName),import_babel4.types.identifier("input")))}catch(err){if(err.message.includes('instead got "MemberExpression"'))return;throw err}}}}),csf._metaPath){let declaration=csf._metaPath.node.declaration;if((import_babel4.types.isTSSatisfiesExpression(declaration)||import_babel4.types.isTSAsExpression(declaration))&&(declaration=declaration.expression),import_babel4.types.isObjectExpression(declaration)){let metaVariable=import_babel4.types.variableDeclaration("const",[import_babel4.types.variableDeclarator(import_babel4.types.identifier(metaVariableName),import_babel4.types.callExpression(import_babel4.types.memberExpression(import_babel4.types.identifier(sbConfigImportName),import_babel4.types.identifier("meta")),[declaration]))]);csf._metaPath.replaceWith(metaVariable)}else if(import_babel4.types.isIdentifier(declaration)){let binding=csf._metaPath.scope.getBinding(declaration.name);if(binding&&binding.path.isVariableDeclarator()){let originalName=declaration.name;binding.path.node.id=import_babel4.types.identifier(metaVariableName);let init=binding.path.node.init;(import_babel4.types.isTSSatisfiesExpression(init)||import_babel4.types.isTSAsExpression(init))&&(init=init.expression),import_babel4.types.isObjectExpression(init)&&(binding.path.node.init=import_babel4.types.callExpression(import_babel4.types.memberExpression(import_babel4.types.identifier(sbConfigImportName),import_babel4.types.identifier("meta")),[init])),csf._metaPath.scope.rename(originalName,metaVariableName)}csf._metaPath.remove()}}if(previewImport)previewImport.source.value!==previewPath&&(previewImport.source=import_babel4.types.stringLiteral(previewPath));else if(hasMeta){let configImport=import_babel4.types.importDeclaration([import_babel4.types.importDefaultSpecifier(import_babel4.types.identifier(sbConfigImportName))],import_babel4.types.stringLiteral(previewPath));programNode.body.unshift(configImport)}return programNode.body.forEach((node,index)=>{import_babel4.types.isTSTypeAliasDeclaration(node)&&(programNode.body.some(otherNode=>import_babel4.types.isVariableDeclaration(otherNode)?otherNode.declarations.some(declaration=>import_babel4.types.isIdentifier(declaration.init)&&declaration.init.name===node.id.name):!1)||programNode.body.splice(index,1))}),programNode.body=cleanupTypeImports(programNode,typesDisallowList),(0,import_csf_tools4.printCsf)(csf).code}var logger4=console;async function runStoriesCodemod(options){let{dryRun,packageManager,...codemodOptions}=options;try{let globString="{stories,src}/**/{Button,Header,Page}.stories.*";process.env.IN_STORYBOOK_SANDBOX||(logger4.log("Please enter the glob for your stories to migrate"),globString=(await(0,import_prompts2.default)({type:"text",name:"glob",message:"glob",initial:"src/**/*.stories.*"},{onCancel:()=>process.exit(0)})).glob),logger4.log(`
@@ -180,7 +180,7 @@ ${err}`),info.source}let metaVariableName=csf._metaVariableName??"meta",programN
180
180
 
181
181
  For more info, check out the docs:
182
182
  ${import_picocolors8.default.yellow("https://storybook.js.org/docs/api/csf/csf-factories")}
183
- `))}};var import_common11=require("storybook/internal/common"),import_csf_tools5=require("storybook/internal/csf-tools"),import_fs2=require("fs"),jscodeshift=__toESM(require("jscodeshift"),1),import_path2=__toESM(require("path"),1),import_picocolors9=__toESM(require_picocolors(),1),import_ts_dedent5=require("ts-dedent");var ADDON_ID="storybook/a11y",PANEL_ID=`${ADDON_ID}/panel`;var RESULT=`${ADDON_ID}/result`,REQUEST=`${ADDON_ID}/request`,RUNNING=`${ADDON_ID}/running`,ERROR=`${ADDON_ID}/error`,MANUAL=`${ADDON_ID}/manual`,SELECT=`${ADDON_ID}/select`,DOCUMENTATION_LINK="writing-tests/accessibility-testing",DOCUMENTATION_DISCREPANCY_LINK=`${DOCUMENTATION_LINK}#why-are-my-tests-failing-in-different-environments`;var ADDON_ID2="storybook/test",TEST_PROVIDER_ID=`${ADDON_ID2}/test-provider`;var DOCUMENTATION_LINK2="writing-tests/test-addon",DOCUMENTATION_FATAL_ERROR_LINK=`${DOCUMENTATION_LINK2}#what-happens-if-vitest-itself-has-an-error`;var SUPPORTED_FRAMEWORKS=["@storybook/nextjs","@storybook/nextjs-vite","@storybook/react-vite","@storybook/svelte-vite","@storybook/vue3-vite","@storybook/html-vite","@storybook/web-components-vite","@storybook/sveltekit"],storeOptions={id:ADDON_ID2,initialState:{config:{coverage:!1,a11y:!1},watching:!1,cancelling:!1,fatalError:void 0,indexUrl:void 0,previewAnnotations:[],currentRun:{triggeredBy:void 0,config:{coverage:!1,a11y:!1},componentTestCount:{success:0,error:0},a11yCount:{success:0,warning:0,error:0},storyIds:void 0,totalTestCount:void 0,startedAt:void 0,finishedAt:void 0,unhandledErrors:[],coverageSummary:void 0}}};var STORE_CHANNEL_EVENT_NAME=`UNIVERSAL_STORE:${storeOptions.id}`;var fileExtensions=[".js",".ts",".cts",".mts",".cjs",".mjs",".jsx",".tsx"],addonA11yAddonTest={id:"addonA11yAddonTest",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],promptType(result){return result.setupFile===null&&result.previewFile===null?"manual":"auto"},async check({mainConfig,configDir}){let addons=(0,import_common11.getAddonNames)(mainConfig),frameworkPackageName=getFrameworkPackageName(mainConfig),hasA11yAddon=!!addons.find(addon=>addon.includes("@storybook/addon-a11y")),hasTestAddon=!!addons.find(addon=>addon.includes("@storybook/addon-vitest"));if(!SUPPORTED_FRAMEWORKS.find(framework=>frameworkPackageName?.includes(framework))||!hasA11yAddon||!hasTestAddon||!configDir)return null;let vitestSetupFile=fileExtensions.map(ext=>import_path2.default.join(configDir,`vitest.setup${ext}`)).find(filePath=>(0,import_fs2.existsSync)(filePath))??null,previewFile=fileExtensions.map(ext=>import_path2.default.join(configDir,`preview${ext}`)).find(filePath=>(0,import_fs2.existsSync)(filePath))??null,skipVitestSetupTransformation=!1,skipPreviewTransformation=!1;if(vitestSetupFile&&previewFile){let vitestSetupSource=(0,import_fs2.readFileSync)(vitestSetupFile,"utf8"),previewSetupSource=(0,import_fs2.readFileSync)(previewFile,"utf8");if(skipVitestSetupTransformation=vitestSetupSource.includes("@storybook/addon-a11y"),skipPreviewTransformation=!shouldPreviewFileBeTransformed(previewSetupSource),skipVitestSetupTransformation&&skipPreviewTransformation)return null}let getTransformedSetupCode=()=>{if(!vitestSetupFile||skipVitestSetupTransformation)return null;try{let vitestSetupSource=(0,import_fs2.readFileSync)(vitestSetupFile,"utf8");return transformSetupFile(vitestSetupSource)}catch{return null}},getTransformedPreviewCode=()=>{if(!previewFile||skipPreviewTransformation)return null;try{let previewSetupSource=(0,import_fs2.readFileSync)(previewFile,"utf8");return transformPreviewFile(previewSetupSource,previewFile)}catch{return null}};return{setupFile:vitestSetupFile,previewFile,transformedSetupCode:getTransformedSetupCode(),transformedPreviewCode:await getTransformedPreviewCode(),skipVitestSetupTransformation,skipPreviewTransformation}},prompt({setupFile,previewFile,transformedSetupCode,transformedPreviewCode,skipPreviewTransformation,skipVitestSetupTransformation}){let prompt=[import_ts_dedent5.dedent`
183
+ `))}};var import_common11=require("storybook/internal/common"),import_csf_tools5=require("storybook/internal/csf-tools"),import_fs2=require("fs"),jscodeshift=__toESM(require("jscodeshift"),1),import_path2=__toESM(require("path"),1),import_picocolors9=__toESM(require_picocolors(),1),import_ts_dedent5=require("ts-dedent");var ADDON_ID="storybook/a11y",PANEL_ID=`${ADDON_ID}/panel`;var RESULT=`${ADDON_ID}/result`,REQUEST=`${ADDON_ID}/request`,RUNNING=`${ADDON_ID}/running`,ERROR=`${ADDON_ID}/error`,MANUAL=`${ADDON_ID}/manual`,SELECT=`${ADDON_ID}/select`,DOCUMENTATION_LINK="writing-tests/accessibility-testing",DOCUMENTATION_DISCREPANCY_LINK=`${DOCUMENTATION_LINK}#why-are-my-tests-failing-in-different-environments`;var ADDON_ID2="storybook/test",TEST_PROVIDER_ID=`${ADDON_ID2}/test-provider`;var DOCUMENTATION_LINK2="writing-tests/test-addon",DOCUMENTATION_FATAL_ERROR_LINK=`${DOCUMENTATION_LINK2}#what-happens-if-vitest-itself-has-an-error`;var SUPPORTED_FRAMEWORKS=["@storybook/nextjs","@storybook/nextjs-vite","@storybook/react-vite","@storybook/svelte-vite","@storybook/vue3-vite","@storybook/html-vite","@storybook/web-components-vite","@storybook/sveltekit","@storybook/react-native-web-vite"],storeOptions={id:ADDON_ID2,initialState:{config:{coverage:!1,a11y:!1},watching:!1,cancelling:!1,fatalError:void 0,indexUrl:void 0,previewAnnotations:[],currentRun:{triggeredBy:void 0,config:{coverage:!1,a11y:!1},componentTestCount:{success:0,error:0},a11yCount:{success:0,warning:0,error:0},storyIds:void 0,totalTestCount:void 0,startedAt:void 0,finishedAt:void 0,unhandledErrors:[],coverageSummary:void 0}}};var STORE_CHANNEL_EVENT_NAME=`UNIVERSAL_STORE:${storeOptions.id}`;var fileExtensions=[".js",".ts",".cts",".mts",".cjs",".mjs",".jsx",".tsx"],addonA11yAddonTest={id:"addonA11yAddonTest",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],promptType(result){return result.setupFile===null&&result.previewFile===null?"manual":"auto"},async check({mainConfig,configDir}){let addons=(0,import_common11.getAddonNames)(mainConfig),frameworkPackageName=getFrameworkPackageName(mainConfig),hasA11yAddon=!!addons.find(addon=>addon.includes("@storybook/addon-a11y")),hasTestAddon=!!addons.find(addon=>addon.includes("@storybook/addon-vitest"));if(!SUPPORTED_FRAMEWORKS.find(framework=>frameworkPackageName?.includes(framework))||!hasA11yAddon||!hasTestAddon||!configDir)return null;let vitestSetupFile=fileExtensions.map(ext=>import_path2.default.join(configDir,`vitest.setup${ext}`)).find(filePath=>(0,import_fs2.existsSync)(filePath))??null,previewFile=fileExtensions.map(ext=>import_path2.default.join(configDir,`preview${ext}`)).find(filePath=>(0,import_fs2.existsSync)(filePath))??null,skipVitestSetupTransformation=!1,skipPreviewTransformation=!1;if(vitestSetupFile&&previewFile){let vitestSetupSource=(0,import_fs2.readFileSync)(vitestSetupFile,"utf8"),previewSetupSource=(0,import_fs2.readFileSync)(previewFile,"utf8");if(skipVitestSetupTransformation=vitestSetupSource.includes("@storybook/addon-a11y"),skipPreviewTransformation=!shouldPreviewFileBeTransformed(previewSetupSource),skipVitestSetupTransformation&&skipPreviewTransformation)return null}let getTransformedSetupCode=()=>{if(!vitestSetupFile||skipVitestSetupTransformation)return null;try{let vitestSetupSource=(0,import_fs2.readFileSync)(vitestSetupFile,"utf8");return transformSetupFile(vitestSetupSource)}catch{return null}},getTransformedPreviewCode=()=>{if(!previewFile||skipPreviewTransformation)return null;try{let previewSetupSource=(0,import_fs2.readFileSync)(previewFile,"utf8");return transformPreviewFile(previewSetupSource,previewFile)}catch{return null}};return{setupFile:vitestSetupFile,previewFile,transformedSetupCode:getTransformedSetupCode(),transformedPreviewCode:await getTransformedPreviewCode(),skipVitestSetupTransformation,skipPreviewTransformation}},prompt({setupFile,previewFile,transformedSetupCode,transformedPreviewCode,skipPreviewTransformation,skipVitestSetupTransformation}){let prompt=[import_ts_dedent5.dedent`
184
184
  We have detected that you have ${import_picocolors9.default.magenta("@storybook/addon-a11y")} and ${import_picocolors9.default.magenta("@storybook/addon-vitest")} installed.
185
185
 
186
186
  ${import_picocolors9.default.magenta("@storybook/addon-a11y")} now integrates with ${import_picocolors9.default.magenta("@storybook/addon-vitest")} to provide automatic accessibility checks for your stories, powered by Axe and Vitest.
@@ -233,7 +233,7 @@ ${indentation}// 'off' - skip a11y checks entirely`;return lines.splice(paramete
233
233
  Would you like to update these files to use the new parameter name?
234
234
  `,run:async options=>{let{result,dryRun=!1}=options,{storyFilesToUpdate,previewFileToUpdate}=result,errors=[];if(previewFileToUpdate){let content=await(0,import_promises2.readFile)(previewFileToUpdate,"utf-8"),code=transformPreviewA11yParameters(content);if(code)if(dryRun)logger5.log("Would have updated",code.fileName);else try{await(0,import_csf_tools7.writeConfig)(code,previewFileToUpdate)}catch(error){errors.push({file:previewFileToUpdate,error})}}let{default:pLimit}=await import("p-limit"),limit=pLimit(10);if(await Promise.all(storyFilesToUpdate.map(file=>limit(async()=>{try{let content=await(0,import_promises2.readFile)(file,"utf-8"),code=transformStoryA11yParameters(content);code&&(dryRun?logger5.log("Would have updated",file):await(0,import_csf_tools7.writeCsf)(code,file))}catch(error){errors.push({file,error})}}))),errors.length>0)throw new Error(`Failed to process ${errors.length} files:
235
235
  ${errors.map(({file,error})=>`- ${file}: ${error.message}`).join(`
236
- `)}`)}};var import_common13=require("storybook/internal/common"),import_picocolors11=__toESM(require_picocolors(),1),import_ts_dedent7=require("ts-dedent");var consolidatedAddons={"@storybook/addon-actions":"storybook/actions","@storybook/addon-controls":"storybook/internal/controls","@storybook/addon-toolbars":"storybook/internal/toolbars","@storybook/addon-highlight":"storybook/highlight","@storybook/addon-measure":"storybook/measure","@storybook/addon-outline":"storybook/outline","@storybook/addon-backgrounds":"storybook/backgrounds","@storybook/addon-viewport":"storybook/viewport"},addonEssentialsRemoveDocs={id:"addon-essentials-remove-docs",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],async check({mainConfigPath,mainConfig,packageManager}){if(!mainConfigPath)return null;try{let hasEssentialsAddon=!1,hasDocsAddon=!1,hasDocsDisabled=!1,additionalAddonsToRemove=[],CORE_ADDONS=["@storybook/addon-actions","@storybook/addon-backgrounds","@storybook/addon-controls","@storybook/addon-highlight","@storybook/addon-measure","@storybook/addon-outline","@storybook/addon-toolbars","@storybook/addon-viewport"];return await updateMainConfig({mainConfigPath,dryRun:!0},async main=>{let addons=main.getFieldValue(["addons"])||[],addonNames=(0,import_common13.getAddonNames)(mainConfig);hasEssentialsAddon=addonNames.includes("@storybook/addon-essentials"),hasDocsAddon=addonNames.includes("@storybook/addon-docs");let packageJson=await packageManager.retrievePackageJson(),installedAddons=Object.keys({...packageJson.dependencies,...packageJson.devDependencies});for(let addon of CORE_ADDONS)(addonNames.includes(addon)||installedAddons.includes(addon))&&additionalAddonsToRemove.push(addon);if(hasEssentialsAddon){let essentialsEntry=addons.find(addon=>typeof addon=="string"?addon.includes("@storybook/addon-essentials"):addon?.name.includes("@storybook/addon-essentials"));typeof essentialsEntry=="object"&&(hasDocsDisabled=(essentialsEntry.options||{}).docs===!1)}}),!hasEssentialsAddon&&additionalAddonsToRemove.length===0?null:{hasEssentials:hasEssentialsAddon,hasDocsDisabled,hasDocsAddon,additionalAddonsToRemove}}catch{return null}},prompt({hasDocsDisabled,additionalAddonsToRemove,hasEssentials}){let message="";hasEssentials&&(message=import_ts_dedent7.dedent`
236
+ `)}`)}};var import_common13=require("storybook/internal/common"),import_picocolors11=__toESM(require_picocolors(),1),import_ts_dedent7=require("ts-dedent"),consolidatedAddons={"@storybook/addon-actions":"storybook/actions","@storybook/addon-controls":"storybook/internal/controls","@storybook/addon-toolbars":"storybook/internal/toolbars","@storybook/addon-highlight":"storybook/highlight","@storybook/addon-measure":"storybook/measure","@storybook/addon-outline":"storybook/outline","@storybook/addon-backgrounds":"storybook/backgrounds","@storybook/addon-viewport":"storybook/viewport"},addonEssentialsRemoveDocs={id:"addon-essentials-remove-docs",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],async check({mainConfigPath,mainConfig,packageManager}){if(!mainConfigPath)return null;try{let hasEssentialsAddon=!1,hasDocsAddon=!1,hasDocsDisabled=!1,additionalAddonsToRemove=[],CORE_ADDONS=["@storybook/addon-actions","@storybook/addon-backgrounds","@storybook/addon-controls","@storybook/addon-highlight","@storybook/addon-measure","@storybook/addon-outline","@storybook/addon-toolbars","@storybook/addon-viewport"],addonNames=(0,import_common13.getAddonNames)(mainConfig);hasEssentialsAddon=addonNames.includes("@storybook/addon-essentials"),hasDocsAddon=addonNames.includes("@storybook/addon-docs");let packageJson=await packageManager.retrievePackageJson(),installedAddons=Object.keys({...packageJson.dependencies,...packageJson.devDependencies});for(let addon of CORE_ADDONS)(addonNames.includes(addon)||installedAddons.includes(addon))&&additionalAddonsToRemove.push(addon);if(hasEssentialsAddon){let essentialsEntry=mainConfig.addons?.find(addon=>typeof addon=="string"?addon.includes("@storybook/addon-essentials"):addon.name.includes("@storybook/addon-essentials"));typeof essentialsEntry=="object"&&(hasDocsDisabled=(essentialsEntry.options||{}).docs===!1)}return!hasEssentialsAddon&&additionalAddonsToRemove.length===0?null:{hasEssentials:hasEssentialsAddon,hasDocsDisabled,hasDocsAddon,additionalAddonsToRemove}}catch{return null}},prompt({hasDocsDisabled,additionalAddonsToRemove,hasEssentials}){let message="";hasEssentials&&(message=import_ts_dedent7.dedent`
237
237
  We've detected that you have ${import_picocolors11.default.yellow("@storybook/addon-essentials")} installed.
238
238
 
239
239
  In Storybook 9.0, all features from ${import_picocolors11.default.yellow("@storybook/addon-essentials")} (except docs)
@@ -252,9 +252,9 @@ ${errors.map(({file,error})=>`- ${file}: ${error.message}`).join(`
252
252
 
253
253
  Since you were using the docs feature, we'll install ${import_picocolors11.default.yellow("@storybook/addon-docs")}
254
254
  separately and add it to your configuration.
255
- `:additionalAddonsMessage},async run({result,dryRun,packageManager}){let{hasEssentials,hasDocsDisabled,hasDocsAddon,additionalAddonsToRemove}=result;if(!(!hasEssentials&&additionalAddonsToRemove.length===0)&&!dryRun){hasEssentials&&(console.log("Removing @storybook/addon-essentials..."),await packageManager.runPackageCommand("storybook",["remove","@storybook/addon-essentials"]));for(let addon of additionalAddonsToRemove)await packageManager.runPackageCommand("storybook",["remove",addon]);let errors=await(0,import_common13.scanAndTransformFiles)({dryRun:!!dryRun,transformFn:import_common13.transformImportFiles,transformOptions:consolidatedAddons});if(errors.length>0)throw new Error(`Failed to process ${errors.length} files:
255
+ `:additionalAddonsMessage},async run({result,dryRun,packageManager,configDir}){let{hasEssentials,hasDocsDisabled,hasDocsAddon,additionalAddonsToRemove}=result;if(!(!hasEssentials&&additionalAddonsToRemove.length===0)&&!dryRun){hasEssentials&&(console.log("Removing @storybook/addon-essentials..."),await packageManager.runPackageCommand("storybook",["remove","@storybook/addon-essentials","--config-dir",configDir]));for(let addon of additionalAddonsToRemove)await packageManager.runPackageCommand("storybook",["remove",addon,"--config-dir",configDir]);let errors=await(0,import_common13.scanAndTransformFiles)({dryRun:!!dryRun,transformFn:import_common13.transformImportFiles,transformOptions:consolidatedAddons});if(errors.length>0)throw new Error(`Failed to process ${errors.length} files:
256
256
  ${errors.map(({file,error})=>`- ${file}: ${error.message}`).join(`
257
- `)}`);!hasDocsDisabled&&!hasDocsAddon&&(console.log("Adding @storybook/addon-docs..."),await packageManager.runPackageCommand("storybook",["add","@storybook/addon-docs"]))}}};var import_fs3=require("fs"),import_picocolors12=__toESM(require_picocolors(),1),import_ts_dedent8=require("ts-dedent"),logger6=console,addonExperimentalTest={id:"addon-experimental-test",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],promptType:"auto",async check({packageManager}){if(!await packageManager.getPackageVersion("@storybook/experimental-addon-test"))return null;let{globbySync}=await import("globby"),matchingFiles=globbySync(["**/.storybook/**/*.*","**/vitest.*.{js,ts,mjs,cjs}","**/vite.config.{js,ts,mjs,cjs}"],{ignore:["**/node_modules/**","**/dist/**"]}),filesWithExperimentalAddon=[];for(let file of matchingFiles)try{(0,import_fs3.readFileSync)(file,"utf-8").includes("@storybook/experimental-addon-test")&&filesWithExperimentalAddon.push(file)}catch{}return{matchingFiles:filesWithExperimentalAddon}},prompt({matchingFiles}){let fileCount=matchingFiles.length,fileList=matchingFiles.slice(0,5).map(file=>` - ${import_picocolors12.default.cyan(file)}`).join(`
257
+ `)}`);!hasDocsDisabled&&!hasDocsAddon&&(console.log("Adding @storybook/addon-docs..."),await packageManager.runPackageCommand("storybook",["add","@storybook/addon-docs","--config-dir",configDir]))}}};var import_fs3=require("fs"),import_picocolors12=__toESM(require_picocolors(),1),import_ts_dedent8=require("ts-dedent"),logger6=console,addonExperimentalTest={id:"addon-experimental-test",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],promptType:"auto",async check({packageManager}){if(!await packageManager.getPackageVersion("@storybook/experimental-addon-test"))return null;let{globbySync}=await import("globby"),matchingFiles=globbySync(["**/.storybook/**/*.*","**/vitest.*.{js,ts,mjs,cjs}","**/vite.config.{js,ts,mjs,cjs}"],{ignore:["**/node_modules/**","**/dist/**"]}),filesWithExperimentalAddon=[];for(let file of matchingFiles)try{(0,import_fs3.readFileSync)(file,"utf-8").includes("@storybook/experimental-addon-test")&&filesWithExperimentalAddon.push(file)}catch{}return{matchingFiles:filesWithExperimentalAddon}},prompt({matchingFiles}){let fileCount=matchingFiles.length,fileList=matchingFiles.slice(0,5).map(file=>` - ${import_picocolors12.default.cyan(file)}`).join(`
258
258
  `),hasMoreFiles=fileCount>5;return import_ts_dedent8.dedent`
259
259
  We've detected you're using ${import_picocolors12.default.cyan("@storybook/experimental-addon-test")}, which is now available as a stable addon.
260
260
 
@@ -271,14 +271,14 @@ ${errors.map(({file,error})=>`- ${file}: ${error.message}`).join(`
271
271
  We've detected that you have ${import_picocolors13.default.yellow("@storybook/addon-mdx-gfm")} installed.
272
272
 
273
273
  This package has been removed in Storybook 9.0. We'll remove it from your configuration and dependencies.
274
- `},async run({packageManager}){await packageManager.runPackageCommand("storybook",["remove","@storybook/addon-mdx-gfm"])}};var import_common15=require("storybook/internal/common"),import_picocolors14=__toESM(require_picocolors(),1),import_ts_dedent10=require("ts-dedent");var addonStorysourceRemove={id:"addon-storysource-remove",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],async check({mainConfigPath,mainConfig}){if(!mainConfigPath)return null;try{let hasStorysource=!1;return await updateMainConfig({mainConfigPath,dryRun:!0},()=>{hasStorysource=(0,import_common15.getAddonNames)(mainConfig).includes("@storybook/addon-storysource")}),hasStorysource?{hasStorysource}:null}catch{return null}},prompt(){return import_ts_dedent10.dedent`
274
+ `},async run({packageManager,configDir}){await packageManager.runPackageCommand("storybook",["remove","@storybook/addon-mdx-gfm","--config-dir",configDir])}};var import_common15=require("storybook/internal/common"),import_picocolors14=__toESM(require_picocolors(),1),import_ts_dedent10=require("ts-dedent");var addonStorysourceRemove={id:"addon-storysource-remove",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],async check({mainConfigPath,mainConfig}){if(!mainConfigPath)return null;try{let hasStorysource=!1;return await updateMainConfig({mainConfigPath,dryRun:!0},()=>{hasStorysource=(0,import_common15.getAddonNames)(mainConfig).includes("@storybook/addon-storysource")}),hasStorysource?{hasStorysource}:null}catch{return null}},prompt(){return import_ts_dedent10.dedent`
275
275
  We've detected that you have ${import_picocolors14.default.yellow("@storybook/addon-storysource")} installed.
276
276
 
277
277
  This package has been removed in Storybook 9.0. We'll remove it from your configuration and dependencies.
278
278
 
279
279
  For more information, see the migration guide:
280
280
  https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#storysource-addon-removed
281
- `},async run({result,packageManager}){await packageManager.runPackageCommand("storybook",["remove","@storybook/addon-storysource"])}};var import_promises3=require("fs/promises"),import_common16=require("storybook/internal/common"),import_picocolors15=__toESM(require_picocolors(),1),import_ts_dedent11=require("ts-dedent");var consolidatedPackages={"@storybook/channels":"storybook/internal/channels","@storybook/client-logger":"storybook/internal/client-logger","@storybook/core-common":"storybook/internal/common","@storybook/core-events":"storybook/internal/core-events","@storybook/csf-tools":"storybook/internal/csf-tools","@storybook/docs-tools":"storybook/internal/docs-tools","@storybook/node-logger":"storybook/internal/node-logger","@storybook/preview-api":"storybook/preview-api","@storybook/router":"storybook/internal/router","@storybook/telemetry":"storybook/internal/telemetry","@storybook/theming":"storybook/theming","@storybook/types":"storybook/internal/types","@storybook/manager-api":"storybook/manager-api","@storybook/manager":"storybook/internal/manager","@storybook/preview":"storybook/internal/preview","@storybook/core-server":"storybook/internal/core-server","@storybook/builder-manager":"storybook/internal/builder-manager","@storybook/components":"storybook/internal/components","@storybook/test":"storybook/test","@storybook/experimental-nextjs-vite":"@storybook/nextjs-vite","@storybook/instrumenter":"storybook/internal/instrumenter","@storybook/blocks":"@storybook/addon-docs/blocks"};function transformPackageJson(content){let packageJson=JSON.parse(content),hasChanges=!1,packagesToAdd=new Set,depTypes=["dependencies","devDependencies"],storybookVersion=null,storybookDepType=null;for(let depType of depTypes)if(packageJson[depType]?.storybook){storybookVersion=packageJson[depType].storybook,storybookDepType=depType;break}for(let depType of depTypes)if(packageJson[depType]){for(let[dep]of Object.entries(packageJson[depType]))if(dep in consolidatedPackages){let newPackage=consolidatedPackages[dep];!newPackage.startsWith("storybook/")&&!newPackage.match(/(?:.*\/){2,}/)&&packagesToAdd.add(newPackage),delete packageJson[depType][dep],hasChanges=!0}}if(packagesToAdd.size>0){let version2=storybookVersion??import_common16.versions["@storybook/nextjs-vite"],depType=storybookDepType??"devDependencies";packageJson[depType]=packageJson[depType]||{};for(let pkg of packagesToAdd)packageJson[depType][pkg]=version2;hasChanges=!0}return hasChanges?JSON.stringify(packageJson,null,2):null}var transformPackageJsonFiles=async(files,dryRun)=>{let errors=[],{default:pLimit}=await import("p-limit"),limit=pLimit(10);return await Promise.all(files.map(file=>limit(async()=>{try{let contents=await(0,import_promises3.readFile)(file,"utf-8"),transformed=transformPackageJson(contents);!dryRun&&transformed&&await(0,import_promises3.writeFile)(file,transformed)}catch(error){errors.push({file,error})}}))),errors},consolidatedImports={id:"consolidated-imports",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],check:async()=>{let projectRoot=(0,import_common16.getProjectRoot)(),globby=(await import("globby")).globby,packageJsonFiles=await globby(["**/package.json"],{...(0,import_common16.commonGlobOptions)(""),ignore:["**/node_modules/**"],cwd:projectRoot,gitignore:!0,absolute:!0}),consolidatedDeps=new Set,affectedPackageJSONFiles=new Set;return await Promise.all(packageJsonFiles.map(async file=>{let contents=await(0,import_promises3.readFile)(file,"utf-8"),packageJson=JSON.parse(contents),allDeps={...packageJson.dependencies||{},...packageJson.devDependencies||{}},hasConsolidatedDeps=!1;Object.keys(allDeps).forEach(dep=>{dep in consolidatedPackages&&(consolidatedDeps.add(dep),hasConsolidatedDeps=!0)}),hasConsolidatedDeps&&affectedPackageJSONFiles.add(file)})),consolidatedDeps.size===0?null:{consolidatedDeps,packageJsonFiles:Array.from(affectedPackageJSONFiles)}},prompt:result=>import_ts_dedent11.dedent`
281
+ `},async run({configDir,packageManager}){await packageManager.runPackageCommand("storybook",["remove","@storybook/addon-storysource","--config-dir",configDir])}};var import_promises3=require("fs/promises"),import_common16=require("storybook/internal/common"),import_picocolors15=__toESM(require_picocolors(),1),import_ts_dedent11=require("ts-dedent");var consolidatedPackages={"@storybook/channels":"storybook/internal/channels","@storybook/client-logger":"storybook/internal/client-logger","@storybook/core-common":"storybook/internal/common","@storybook/core-events":"storybook/internal/core-events","@storybook/csf-tools":"storybook/internal/csf-tools","@storybook/docs-tools":"storybook/internal/docs-tools","@storybook/node-logger":"storybook/internal/node-logger","@storybook/preview-api":"storybook/preview-api","@storybook/router":"storybook/internal/router","@storybook/telemetry":"storybook/internal/telemetry","@storybook/theming":"storybook/theming","@storybook/types":"storybook/internal/types","@storybook/manager-api":"storybook/manager-api","@storybook/manager":"storybook/internal/manager","@storybook/preview":"storybook/internal/preview","@storybook/core-server":"storybook/internal/core-server","@storybook/builder-manager":"storybook/internal/builder-manager","@storybook/components":"storybook/internal/components","@storybook/test":"storybook/test","@storybook/experimental-nextjs-vite":"@storybook/nextjs-vite","@storybook/instrumenter":"storybook/internal/instrumenter","@storybook/blocks":"@storybook/addon-docs/blocks"};function transformPackageJson(content){let packageJson=JSON.parse(content),hasChanges=!1,packagesToAdd=new Set,depTypes=["dependencies","devDependencies"],storybookVersion=null,storybookDepType=null;for(let depType of depTypes)if(packageJson[depType]?.storybook){storybookVersion=packageJson[depType].storybook,storybookDepType=depType;break}for(let depType of depTypes)if(packageJson[depType]){for(let[dep]of Object.entries(packageJson[depType]))if(dep in consolidatedPackages){let newPackage=consolidatedPackages[dep];!newPackage.startsWith("storybook/")&&!newPackage.match(/(?:.*\/){2,}/)&&packagesToAdd.add(newPackage),delete packageJson[depType][dep],hasChanges=!0}}if(packagesToAdd.size>0){let version2=storybookVersion??import_common16.versions["@storybook/nextjs-vite"],depType=storybookDepType??"devDependencies";packageJson[depType]=packageJson[depType]||{};for(let pkg of packagesToAdd)packageJson[depType][pkg]=version2;hasChanges=!0}return hasChanges?JSON.stringify(packageJson,null,2):null}var transformPackageJsonFiles=async(files,dryRun)=>{let errors=[],{default:pLimit}=await import("p-limit"),limit=pLimit(10);return await Promise.all(files.map(file=>limit(async()=>{try{let contents=await(0,import_promises3.readFile)(file,"utf-8"),transformed=transformPackageJson(contents);!dryRun&&transformed&&await(0,import_promises3.writeFile)(file,transformed)}catch(error){errors.push({file,error})}}))),errors},consolidatedImports={id:"consolidated-imports",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],check:async()=>{let projectRoot=(0,import_common16.getProjectRoot)(),globby=(await import("globby")).globby,packageJsonFiles=await globby(["**/package.json"],{...(0,import_common16.commonGlobOptions)(""),ignore:["**/node_modules/**"],cwd:projectRoot,gitignore:!0,absolute:!0}),consolidatedDeps=new Set,affectedPackageJSONFiles=new Set;return await Promise.all(packageJsonFiles.map(async file=>{let contents=await(0,import_promises3.readFile)(file,"utf-8"),packageJson=JSON.parse(contents),allDeps={...packageJson.dependencies||{},...packageJson.devDependencies||{}},hasConsolidatedDeps=!1;Object.keys(allDeps).forEach(dep=>{dep in consolidatedPackages&&(consolidatedDeps.add(dep),hasConsolidatedDeps=!0)}),hasConsolidatedDeps&&affectedPackageJSONFiles.add(file)})),consolidatedDeps.size===0?null:{consolidatedDeps,packageJsonFiles:Array.from(affectedPackageJSONFiles)}},prompt:result=>import_ts_dedent11.dedent`
282
282
  Found package.json files that contain consolidated or renamed Storybook packages that need to be updated:
283
283
  ${result.packageJsonFiles.map(file=>`- ${file}`).join(`
284
284
  `)}
@@ -324,7 +324,7 @@ ${errors.map(({file,error})=>`- ${file}: ${error.message}`).join(`
324
324
 
325
325
  We'll remove it from your dependencies and unregister it from your Storybook configuration.
326
326
  The functionality will continue to work as before, but now it's built into Storybook core.
327
- `},async run({packageManager,dryRun}){dryRun||(console.log("Removing @storybook/addon-interactions..."),await packageManager.runPackageCommand("storybook",["remove","@storybook/addon-interactions"]))}};var import_csf_tools9=require("storybook/internal/csf-tools"),import_picocolors19=__toESM(require_picocolors(),1),import_ts_dedent15=require("ts-dedent");var logger8={log:message=>{process.env.NODE_ENV!=="test"&&console.log(message)}},removeDocsAutodocs={id:"remove-docs-autodocs",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],async check({mainConfigPath}){if(!mainConfigPath)return null;try{let autodocs=(await(0,import_csf_tools9.readConfig)(mainConfigPath)).getSafeFieldValue(["docs","autodocs"]);return autodocs===void 0?null:{autodocs}}catch{return null}},prompt:()=>import_ts_dedent15.dedent`
327
+ `},async run({packageManager,dryRun,configDir}){dryRun||(console.log("Removing @storybook/addon-interactions..."),await packageManager.runPackageCommand("storybook",["remove","@storybook/addon-interactions","--config-dir",configDir]))}};var import_csf_tools9=require("storybook/internal/csf-tools"),import_picocolors19=__toESM(require_picocolors(),1),import_ts_dedent15=require("ts-dedent");var logger8={log:message=>{process.env.NODE_ENV!=="test"&&console.log(message)}},removeDocsAutodocs={id:"remove-docs-autodocs",versionRange:["<9.0.0","^9.0.0-0 || ^9.0.0"],async check({mainConfigPath}){if(!mainConfigPath)return null;try{let autodocs=(await(0,import_csf_tools9.readConfig)(mainConfigPath)).getSafeFieldValue(["docs","autodocs"]);return autodocs===void 0?null:{autodocs}}catch{return null}},prompt:()=>import_ts_dedent15.dedent`
328
328
  The \`docs.autodocs\` field in Storybook's main configuration has been removed in Storybook 9.
329
329
  This field was deprecated in Storybook 7-8 and is no longer supported.
330
330
 
@@ -400,9 +400,9 @@ ${error}`).join(`
400
400
  `);console.log(),logger9.info(import_ts_dedent21.dedent`
401
401
  The following migrations are available:
402
402
  ${availableFixes}
403
- `)},doAutomigrate=async options=>{let packageManager=import_common20.JsPackageManagerFactory.getPackageManager({force:options.packageManager}),{mainConfig,mainConfigPath,previewConfigPath,storybookVersion,configDir,packageJson}=await getStorybookData({configDir:options.configDir,packageManager});if(!storybookVersion)throw new Error("Could not determine Storybook version");if(!mainConfigPath)throw new Error("Could not determine main config path");await automigrate({...options,packageJson,packageManager,storybookVersion,beforeVersion:storybookVersion,mainConfigPath,mainConfig,previewConfigPath,configDir,isUpgrade:!1,isLatest:!1})&&await doctor({configDir,packageManager:options.packageManager})},automigrate=async({fixId,fixes:inputFixes,dryRun,yes,packageManager,packageJson,list,configDir,mainConfig,mainConfigPath,previewConfigPath,storybookVersion,beforeVersion,renderer:rendererPackage,skipInstall,hideMigrationSummary=!1,isUpgrade,isLatest})=>{if(list)return logAvailableMigrations(),null;let commandFix=commandFixes.find(f=>f.id===fixId);if(commandFix)return logger9.info(`\u{1F50E} Running migration ${import_picocolors24.default.magenta(fixId)}..`),await commandFix.run({mainConfigPath,previewConfigPath,packageManager,packageJson,dryRun,mainConfig,result:null,storybookVersion}),null;let selectedFixes=inputFixes||allFixes.filter(fix=>!(fix.id===upgradeStorybookRelatedDependencies.id&&isLatest===!1&&fixId!==upgradeStorybookRelatedDependencies.id)),fixes=fixId?selectedFixes.filter(f=>f.id===fixId):selectedFixes;if(fixId&&fixes.length===0)return logger9.info(`\u{1F4ED} No migrations found for ${import_picocolors24.default.magenta(fixId)}.`),logAvailableMigrations(),null;await augmentLogsToFile2(),logger9.info("\u{1F50E} checking possible migrations..");let{fixResults,fixSummary,preCheckFailure}=await runFixes({fixes,packageManager,packageJson,rendererPackage,skipInstall,configDir,previewConfigPath,mainConfig,mainConfigPath,storybookVersion,beforeVersion,isUpgrade:!!isUpgrade,dryRun,yes});if(Object.values(fixResults).some(r=>r==="failed"||r==="check_failed")?await(0,import_promises7.rename)(TEMP_LOG_FILE_PATH2,(0,import_node_path6.join)(process.cwd(),LOG_FILE_NAME2)):await(0,import_promises7.rm)(TEMP_LOG_FILE_PATH2,{recursive:!0,force:!0}),!hideMigrationSummary){let installationMetadata=await packageManager.findInstallations(["@storybook/*","storybook"]);logger9.info(),logger9.info(getMigrationSummary({fixResults,fixSummary,logFile:LOG_FILE_PATH2,installationMetadata})),logger9.info()}return cleanup2(),{fixResults,preCheckFailure}};async function runFixes({fixes,dryRun,yes,rendererPackage,skipInstall,configDir,packageManager,packageJson,mainConfig,mainConfigPath,previewConfigPath,storybookVersion,beforeVersion,isUpgrade}){let fixResults={},fixSummary={succeeded:[],failed:{},manual:[],skipped:[]};for(let i=0;i<fixes.length;i+=1){let f=fixes[i],result;try{(isUpgrade&&import_semver6.default.satisfies(beforeVersion,f.versionRange[0],{includePrerelease:!0})&&import_semver6.default.satisfies(storybookVersion,f.versionRange[1],{includePrerelease:!0})||!isUpgrade)&&(result=await f.check({packageManager,configDir,rendererPackage,mainConfig,storybookVersion,previewConfigPath,mainConfigPath}))}catch(error){logger9.info(`\u26A0\uFE0F failed to check fix ${import_picocolors24.default.bold(f.id)}`),error instanceof Error&&(logger9.error(`
403
+ `)},doAutomigrate=async options=>{let packageManager=import_common20.JsPackageManagerFactory.getPackageManager({force:options.packageManager}),{mainConfig,mainConfigPath,previewConfigPath,storybookVersion,configDir,packageJson}=await getStorybookData({configDir:options.configDir,packageManager});if(!storybookVersion)throw new Error("Could not determine Storybook version");if(!mainConfigPath)throw new Error("Could not determine main config path");await automigrate({...options,packageJson,packageManager,storybookVersion,beforeVersion:storybookVersion,mainConfigPath,mainConfig,previewConfigPath,configDir,isUpgrade:!1,isLatest:!1})&&await doctor({configDir,packageManager:options.packageManager})},automigrate=async({fixId,fixes:inputFixes,dryRun,yes,packageManager,packageJson,list,configDir,mainConfig,mainConfigPath,previewConfigPath,storybookVersion,beforeVersion,renderer:rendererPackage,skipInstall,hideMigrationSummary=!1,isUpgrade,isLatest})=>{if(list)return logAvailableMigrations(),null;let commandFix=commandFixes.find(f=>f.id===fixId);if(commandFix)return logger9.info(`\u{1F50E} Running migration ${import_picocolors24.default.magenta(fixId)}..`),await commandFix.run({mainConfigPath,previewConfigPath,packageManager,packageJson,configDir,dryRun,mainConfig,result:null,storybookVersion}),null;let selectedFixes=inputFixes||allFixes.filter(fix=>!(fix.id===upgradeStorybookRelatedDependencies.id&&isLatest===!1&&fixId!==upgradeStorybookRelatedDependencies.id)),fixes=fixId?selectedFixes.filter(f=>f.id===fixId):selectedFixes;if(fixId&&fixes.length===0)return logger9.info(`\u{1F4ED} No migrations found for ${import_picocolors24.default.magenta(fixId)}.`),logAvailableMigrations(),null;await augmentLogsToFile2(),logger9.info("\u{1F50E} checking possible migrations..");let{fixResults,fixSummary,preCheckFailure}=await runFixes({fixes,packageManager,packageJson,rendererPackage,skipInstall,configDir,previewConfigPath,mainConfig,mainConfigPath,storybookVersion,beforeVersion,isUpgrade:!!isUpgrade,dryRun,yes});if(Object.values(fixResults).some(r=>r==="failed"||r==="check_failed")?await(0,import_promises7.rename)(TEMP_LOG_FILE_PATH2,(0,import_node_path6.join)(process.cwd(),LOG_FILE_NAME2)):await(0,import_promises7.rm)(TEMP_LOG_FILE_PATH2,{recursive:!0,force:!0}),!hideMigrationSummary){let installationMetadata=await packageManager.findInstallations(["@storybook/*","storybook"]);logger9.info(),logger9.info(getMigrationSummary({fixResults,fixSummary,logFile:LOG_FILE_PATH2,installationMetadata})),logger9.info()}return cleanup2(),{fixResults,preCheckFailure}};async function runFixes({fixes,dryRun,yes,rendererPackage,skipInstall,configDir,packageManager,packageJson,mainConfig,mainConfigPath,previewConfigPath,storybookVersion,beforeVersion,isUpgrade}){let fixResults={},fixSummary={succeeded:[],failed:{},manual:[],skipped:[]};for(let i=0;i<fixes.length;i+=1){let f=fixes[i],result;try{(isUpgrade&&import_semver6.default.satisfies(beforeVersion,f.versionRange[0],{includePrerelease:!0})&&import_semver6.default.satisfies(storybookVersion,f.versionRange[1],{includePrerelease:!0})||!isUpgrade)&&(result=await f.check({packageManager,configDir,rendererPackage,mainConfig,storybookVersion,previewConfigPath,mainConfigPath}))}catch(error){logger9.info(`\u26A0\uFE0F failed to check fix ${import_picocolors24.default.bold(f.id)}`),error instanceof Error&&(logger9.error(`
404
404
  ${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";logger9.info(`
405
- \u{1F50E} found a '${import_picocolors24.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"}};logger9.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),logger9.info();let{shouldContinue}=await(0,import_prompts4.default)({type:"toggle",name:"shouldContinue",message:"Select continue once you have made the required changes, or quit to exit the migration process",initial:!0,active:"continue",inactive:"quit"},{onCancel:()=>{throw new Error}});if(!shouldContinue){fixResults[f.id]="manual_skipped";break}}else promptType==="auto"?runAnswer=await(0,import_prompts4.default)({type:"confirm",name:"fix",message:`Do you want to run the '${import_picocolors24.default.cyan(f.id)}' migration on your project?`,initial:f.promptDefaultValue??!0},{onCancel:()=>{throw new Error}}):promptType==="notification"&&(runAnswer=await(0,import_prompts4.default)({type:"confirm",name:"fix",message:"Do you want to continue?",initial:!0},{onCancel:()=>{throw new Error}}))}catch{break}if(promptType==="auto")if((0,import_tiny_invariant.default)(runAnswer,"runAnswer must be defined if not promptOnly"),runAnswer.fix)try{(0,import_tiny_invariant.default)(typeof f.run=="function","run method should be available in fix."),(0,import_tiny_invariant.default)(mainConfigPath,"Main config path should be defined to run migration."),await f.run({result,packageManager,dryRun,mainConfigPath,previewConfigPath,packageJson,mainConfig,skipInstall,storybookVersion}),logger9.info(`\u2705 ran ${import_picocolors24.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",logger9.info(`\u274C error when running ${import_picocolors24.default.cyan(f.id)} migration`),logger9.info(error),logger9.info()}else fixResults[f.id]="skipped",fixSummary.skipped.push(f.id)}else fixResults[f.id]=fixResults[f.id]||"unnecessary"}return{fixResults,fixSummary}}var import_promises8=require("fs/promises"),import_node_path7=require("path"),import_node_logger=require("storybook/internal/node-logger"),import_cross_spawn=require("cross-spawn"),import_picocolors25=__toESM(require_picocolors(),1),exec2=async(command2,options={},{startMessage,errorMessage,dryRun}={})=>{if(startMessage&&import_node_logger.logger.info(startMessage),dryRun){import_node_logger.logger.info(`
405
+ \u{1F50E} found a '${import_picocolors24.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"}};logger9.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),logger9.info();let{shouldContinue}=await(0,import_prompts4.default)({type:"toggle",name:"shouldContinue",message:"Select continue once you have made the required changes, or quit to exit the migration process",initial:!0,active:"continue",inactive:"quit"},{onCancel:()=>{throw new Error}});if(!shouldContinue){fixResults[f.id]="manual_skipped";break}}else promptType==="auto"?runAnswer=await(0,import_prompts4.default)({type:"confirm",name:"fix",message:`Do you want to run the '${import_picocolors24.default.cyan(f.id)}' migration on your project?`,initial:f.promptDefaultValue??!0},{onCancel:()=>{throw new Error}}):promptType==="notification"&&(runAnswer=await(0,import_prompts4.default)({type:"confirm",name:"fix",message:"Do you want to continue?",initial:!0},{onCancel:()=>{throw new Error}}))}catch{break}if(promptType==="auto")if((0,import_tiny_invariant.default)(runAnswer,"runAnswer must be defined if not promptOnly"),runAnswer.fix)try{(0,import_tiny_invariant.default)(typeof f.run=="function","run method should be available in fix."),(0,import_tiny_invariant.default)(mainConfigPath,"Main config path should be defined to run migration."),await f.run({result,packageManager,dryRun,mainConfigPath,configDir,previewConfigPath,packageJson,mainConfig,skipInstall,storybookVersion}),logger9.info(`\u2705 ran ${import_picocolors24.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",logger9.info(`\u274C error when running ${import_picocolors24.default.cyan(f.id)} migration`),logger9.info(error),logger9.info()}else fixResults[f.id]="skipped",fixSummary.skipped.push(f.id)}else fixResults[f.id]=fixResults[f.id]||"unnecessary"}return{fixResults,fixSummary}}var import_promises8=require("fs/promises"),import_node_path7=require("path"),import_node_logger=require("storybook/internal/node-logger"),import_cross_spawn=require("cross-spawn"),import_picocolors25=__toESM(require_picocolors(),1),exec2=async(command2,options={},{startMessage,errorMessage,dryRun}={})=>{if(startMessage&&import_node_logger.logger.info(startMessage),dryRun){import_node_logger.logger.info(`
406
406
  > ${command2}
407
407
  `);return}return import_node_logger.logger.info(command2),new Promise((resolve,reject)=>{let child=(0,import_cross_spawn.spawn)(command2,{...options,shell:!0,stdio:"pipe"});child.stderr.pipe(process.stdout),child.stdout.pipe(process.stdout),child.on("exit",code=>{code===0?resolve(void 0):(import_node_logger.logger.error(import_picocolors25.default.red(`An error occurred while executing: \`${command2}\``)),errorMessage&&import_node_logger.logger.info(errorMessage),reject(new Error(`command exited with code: ${code}: `)))})})},link=async({target,local,start})=>{let storybookDir=process.cwd();try{if(JSON.parse(await(0,import_promises8.readFile)("package.json",{encoding:"utf8"})).name!=="@storybook/root")throw new Error}catch{throw new Error("Expected to run link from the root of the storybook monorepo")}let reproDir=target,reproName=(0,import_node_path7.basename)(target);if(!local){let reprosDir=(0,import_node_path7.join)(storybookDir,"../storybook-repros");import_node_logger.logger.info(`Ensuring directory ${reprosDir}`),await(0,import_promises8.mkdir)(reprosDir,{recursive:!0}),import_node_logger.logger.info(`Cloning ${target}`),await exec2(`git clone ${target}`,{cwd:reprosDir}),reproName=(0,import_node_path7.basename)(target,(0,import_node_path7.extname)(target)),reproDir=(0,import_node_path7.join)(reprosDir,reproName)}let version2=(0,import_cross_spawn.sync)("yarn",["--version"],{cwd:reproDir,stdio:"pipe",shell:!0}).stdout.toString();if(!/^[2-4]\./.test(version2)){import_node_logger.logger.warn(`\u{1F6A8} Expected yarn 2 or higher in ${reproDir}!`),import_node_logger.logger.warn(""),import_node_logger.logger.warn("Please set it up with `yarn set version berry`,"),import_node_logger.logger.warn(`then link '${reproDir}' with the '--local' flag.`);return}import_node_logger.logger.info(`Linking ${reproDir}`),await exec2(`yarn link --all --relative ${storybookDir}`,{cwd:reproDir}),import_node_logger.logger.info(`Installing ${reproName}`);let reproPackageJson=JSON.parse(await(0,import_promises8.readFile)((0,import_node_path7.join)(reproDir,"package.json"),{encoding:"utf8"}));reproPackageJson.devDependencies?.vite||(reproPackageJson.devDependencies={...reproPackageJson.devDependencies,"webpack-hot-middleware":"*"}),reproPackageJson.devDependencies={...reproPackageJson.devDependencies,"@types/node":"^22"},await(0,import_promises8.writeFile)((0,import_node_path7.join)(reproDir,"package.json"),JSON.stringify(reproPackageJson,null,2)),await exec2("yarn install",{cwd:reproDir}),start&&(import_node_logger.logger.info(`Running ${reproName} storybook`),await exec2("yarn run storybook",{cwd:reproDir}))};var import_codemod2=require("@storybook/codemod"),logger11=console;async function migrate(migration,{glob,dryRun,list,rename:rename4,parser,configDir:userSpecifiedConfigDir}){if(list)(0,import_codemod2.listCodemods)().forEach(key=>logger11.log(key));else if(migration)await(0,import_codemod2.runCodemod)(migration,{glob,dryRun,logger:logger11,rename:rename4,parser});else throw new Error("Migrate: please specify a migration name or --list")}var import_node_fs4=require("fs"),import_promises9=require("fs/promises"),import_node_path8=require("path"),import_common21=require("storybook/internal/common"),import_common22=require("storybook/internal/common");var import_giget=require("giget"),import_picocolors26=__toESM(require_picocolors(),1),import_prompts5=__toESM(require("prompts"),1),import_semver7=require("semver"),import_tiny_invariant2=__toESM(require("tiny-invariant"),1),import_ts_dedent22=require("ts-dedent");var baseTemplates={"cra/default-js":{name:"Create React App Latest (Webpack | JavaScript)",script:`
408
408
  npx create-react-app {{beforeDir}} && cd {{beforeDir}} && jq '.browserslist.production[0] = ">0.9%"' package.json > tmp.json && mv tmp.json package.json
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/cli",
3
- "version": "9.0.0-beta.4",
3
+ "version": "9.0.0-beta.6",
4
4
  "description": "Storybook CLI",
5
5
  "keywords": [
6
6
  "storybook"
@@ -41,37 +41,32 @@
41
41
  "prep": "jiti ../../../scripts/prepare/bundle.ts"
42
42
  },
43
43
  "dependencies": {
44
- "@babel/core": "^7.24.4",
45
44
  "@babel/types": "^7.24.0",
46
- "@storybook/codemod": "9.0.0-beta.4",
45
+ "@storybook/codemod": "9.0.0-beta.6",
47
46
  "@types/semver": "^7.3.4",
48
47
  "commander": "^12.1.0",
49
- "create-storybook": "9.0.0-beta.4",
50
- "cross-spawn": "^7.0.3",
48
+ "create-storybook": "9.0.0-beta.6",
49
+ "cross-spawn": "^7.0.6",
51
50
  "envinfo": "^7.7.3",
52
51
  "execa": "^9.5.2",
53
- "fd-package-json": "^1.2.0",
54
- "find-up": "^5.0.0",
55
52
  "giget": "^1.0.0",
56
- "glob": "^10.0.0",
57
53
  "globby": "^14.0.1",
58
54
  "jscodeshift": "^0.15.1",
59
55
  "leven": "^3.1.0",
60
56
  "p-limit": "^6.2.0",
61
57
  "prompts": "^2.4.0",
62
58
  "semver": "^7.3.7",
63
- "storybook": "9.0.0-beta.4",
59
+ "storybook": "9.0.0-beta.6",
64
60
  "tiny-invariant": "^1.3.1",
65
61
  "ts-dedent": "^2.0.0"
66
62
  },
67
63
  "devDependencies": {
68
- "@types/cross-spawn": "^6.0.2",
64
+ "@types/cross-spawn": "^6.0.6",
69
65
  "@types/prompts": "^2.0.9",
70
66
  "boxen": "^7.1.1",
71
67
  "picocolors": "^1.1.0",
72
68
  "slash": "^5.0.0",
73
- "strip-ansi": "^7.1.0",
74
- "typescript": "^5.7.3"
69
+ "typescript": "^5.8.3"
75
70
  },
76
71
  "publishConfig": {
77
72
  "access": "public"