@storybook/cli 9.1.2 → 9.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -47,3 +47,5 @@ This export contains the API that is available in the manager iframe.
47
47
  ### `storybook/types`
48
48
 
49
49
  This export exposes a lot of TypeScript interfaces used throughout storybook, including for storybook configuration, addons etc.
50
+
51
+ Learn more about Storybook at [storybook.js.org](https://storybook.js.org/?ref=readme).
@@ -55,12 +55,12 @@ After addressing this, you can try running the upgrade command again. You can al
55
55
  `}}}}}});var block_node_version_exports={};__export(block_node_version_exports,{blocker:()=>blocker2});var import_semver2,blocker2,init_block_node_version=__esm({"src/autoblock/block-node-version.ts"(){"use strict";import_semver2=__toESM(require_semver2(),1);init_types();blocker2={id:"minimumNode20",async check(){let nodeVersion=process.versions.node;return nodeVersion&&(0,import_semver2.lt)(nodeVersion,"20.0.0")?{nodeVersion}:!1},log(data){return{title:"Node.js 20 support removed",message:`We've detected you're using Node.js v${data.nodeVersion}. Storybook needs Node.js 20 or higher.`,link:"https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#nodejs--20"}}}}});var block_webpack5_frameworks_exports={};__export(block_webpack5_frameworks_exports,{blocker:()=>blocker3});var minimalVersionsMap2,blocker3,init_block_webpack5_frameworks=__esm({"src/autoblock/block-webpack5-frameworks.ts"(){"use strict";init_types();init_utils();minimalVersionsMap2={"@storybook/preact-webpack5":"9.0.0","@storybook/preset-preact-webpack":"9.0.0","@storybook/vue3-webpack5":"9.0.0","@storybook/preset-vue3-webpack":"9.0.0","@storybook/html-webpack5":"9.0.0","@storybook/preset-html-webpack":"9.0.0","@storybook/web-components-webpack5":"9.0.0","@storybook/svelte-webpack5":"9.0.0"},blocker3={id:"dependenciesVersions",async check({packageManager}){return findOutdatedPackage(minimalVersionsMap2,{packageManager})},log(data){let additionalInfo="Please migrate your Webpack5-based frameworks to their Vite equivalents.",link2="https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropped-webpack5-builder-support-in-favor-of-vite",title;switch(data.packageName){case"@storybook/preact-webpack5":case"@storybook/preset-preact-webpack":title="Preact Webpack5 support removed";break;case"@storybook/vue3-webpack5":case"@storybook/preset-vue3-webpack":title="Vue3 Webpack5 support removed";break;case"@storybook/html-webpack5":case"@storybook/preset-html-webpack":title="HTML Webpack5 support removed";break;case"@storybook/web-components-webpack5":title="Web Components Webpack5 support removed";break;case"@storybook/svelte-webpack5":title="Svelte Webpack5 support removed";break}return{title,message:additionalInfo,link:link2}}}}});var block_major_version_exports={};__export(block_major_version_exports,{blocker:()=>blocker4,validateVersionTransition:()=>validateVersionTransition});function validateVersionTransition(currentVersion,targetVersion){if(!currentVersion||!targetVersion)return"ok";let current=(0,import_semver3.parse)(currentVersion),target=(0,import_semver3.parse)(targetVersion);return!current||!target||current.major===0||target.major===0?"ok":(0,import_semver3.gt)(currentVersion,targetVersion)?"downgrade":target.major-current.major>1?"gap-too-large":"ok"}var import_common,import_node_logger2,import_semver3,import_ts_dedent2,blocker4,init_block_major_version=__esm({"src/autoblock/block-major-version.ts"(){"use strict";import_common=require("storybook/internal/common"),import_node_logger2=require("storybook/internal/node-logger"),import_semver3=__toESM(require_semver2(),1),import_ts_dedent2=require("ts-dedent");init_types();blocker4={id:"major-version-gap",async check(options){let{packageManager}=options;try{let currentStorybookVersion=packageManager.getAllDependencies().storybook;if(!currentStorybookVersion)return!1;let target=import_common.versions.storybook,result=validateVersionTransition(currentStorybookVersion,target);return result==="ok"?!1:{currentVersion:currentStorybookVersion,reason:result}}catch{return!1}},log(data){let coercedVersion=(0,import_semver3.coerce)(data.currentVersion);if(data.reason==="downgrade")return{title:"Downgrade Not Supported",message:import_ts_dedent2.dedent`
56
56
  Your Storybook version (v${data.currentVersion}) is newer than the target release (v${import_common.versions.storybook}).Downgrading is not supported.
57
57
  Please follow the 8.0 migration guide to upgrade to v8.0 first.
58
- `,link:"https://storybook.js.org/docs/8/migration-guide"};if(coercedVersion){let nextMajor=(0,import_semver3.major)(coercedVersion)+1;return{title:"Major Version Gap Detected",message:import_ts_dedent2.dedent`
58
+ `,link:"https://storybook.js.org/docs/8/migration-guide?ref=upgrade"};if(coercedVersion){let nextMajor=(0,import_semver3.major)(coercedVersion)+1;return{title:"Major Version Gap Detected",message:import_ts_dedent2.dedent`
59
59
  Your Storybook version (v${data.currentVersion}) is more than one major version behind the target release (v${import_common.versions.storybook}). Please upgrade one major version at a time.
60
60
 
61
61
  You can upgrade to version ${nextMajor} by running:
62
62
  ${import_node_logger2.CLI_COLORS.info(`npx storybook@${nextMajor} upgrade`)}
63
- `,link:`https://storybook.js.org/docs/${nextMajor}/migration-guide`}}throw new Error("No message found")}}}});var block_experimental_addon_test_exports={};__export(block_experimental_addon_test_exports,{blocker:()=>blocker5});var import_semver4,import_ts_dedent3,blocker5,init_block_experimental_addon_test=__esm({"src/autoblock/block-experimental-addon-test.ts"(){"use strict";import_semver4=__toESM(require_semver2(),1),import_ts_dedent3=require("ts-dedent");init_types();blocker5={id:"experimentalAddonTestVitest",async check({packageManager}){if(!await packageManager.getInstalledVersion("@storybook/experimental-addon-test"))return!1;let vitestVersion=await packageManager.getInstalledVersion("vitest");return vitestVersion?import_semver4.default.lt(vitestVersion,"3.0.0"):!1},log(){return{title:"Experimental Addon Test Vitest",message:import_ts_dedent3.dedent`
63
+ `,link:`https://storybook.js.org/docs/${nextMajor}/migration-guide?ref=upgrade`}}throw new Error("No message found")}}}});var block_experimental_addon_test_exports={};__export(block_experimental_addon_test_exports,{blocker:()=>blocker5});var import_semver4,import_ts_dedent3,blocker5,init_block_experimental_addon_test=__esm({"src/autoblock/block-experimental-addon-test.ts"(){"use strict";import_semver4=__toESM(require_semver2(),1),import_ts_dedent3=require("ts-dedent");init_types();blocker5={id:"experimentalAddonTestVitest",async check({packageManager}){if(!await packageManager.getInstalledVersion("@storybook/experimental-addon-test"))return!1;let vitestVersion=await packageManager.getInstalledVersion("vitest");return vitestVersion?import_semver4.default.lt(vitestVersion,"3.0.0"):!1},log(){return{title:"Experimental Addon Test Vitest",message:import_ts_dedent3.dedent`
64
64
  @storybook/experimental-addon-test is being stabilized in Storybook 9.
65
65
 
66
66
  The addon will be renamed to @storybook/addon-vitest and as part of this stabilization, we have dropped support for Vitest 2.
@@ -77,7 +77,7 @@ ${project.error.stack||project.error.message}`).join(`
77
77
  ${errorMessage}
78
78
  Please fix the errors and run the upgrade command again.`)}let selectedProjects=await handleMultipleProjects(validProjects,errorProjects,detectedConfigDirs,options.yes);return selectedProjects?{allProjects:validProjects,selectedProjects}:void 0}catch(error){throw error instanceof import_common2.HandledError||import_node_logger3.logger.error("Failed to get projects"),error}},findFilesUp=(matchers,cwd)=>{let matchingFiles=[];return findUpMultipleSync(directory=>{matchingFiles.push(...globbySync(matchers,{gitignore:!0,cwd:directory}))},{cwd,stopAt:(0,import_common3.getProjectRoot)()}),matchingFiles},getStoriesPathsFromConfig=async({stories,configDir,workingDir})=>{if(stories.length===0)return[];let normalizedStories=(0,import_common2.normalizeStories)(stories,{configDir,workingDir});return(await import_core_server.StoryIndexGenerator.findMatchingFilesForSpecifiers(normalizedStories,workingDir,!0)).flatMap(([specifier,cache])=>import_core_server.StoryIndexGenerator.storyFileNames(new Map([[specifier,cache]])))}}});var import_node_path6,import_common4,import_common5,import_csf_tools,import_node_logger4,import_picocolors2,import_ts_dedent4,getFrameworkPackageName,getStorybookData,updateMainConfig,init_mainConfigFile=__esm({"src/automigrate/helpers/mainConfigFile.ts"(){"use strict";import_node_path6=require("path"),import_common4=require("storybook/internal/common"),import_common5=require("storybook/internal/common"),import_csf_tools=require("storybook/internal/csf-tools"),import_node_logger4=require("storybook/internal/node-logger"),import_picocolors2=__toESM(require_picocolors(),1),import_ts_dedent4=require("ts-dedent");init_util();getFrameworkPackageName=mainConfig=>{let packageNameOrPath=typeof mainConfig?.framework=="string"?mainConfig.framework:mainConfig?.framework?.name;return packageNameOrPath?(0,import_common4.extractProperFrameworkName)(packageNameOrPath):null},getStorybookData=async({configDir:userDefinedConfigDir,cwd,packageManagerName,cache=!1})=>{import_node_logger4.logger.debug("Getting Storybook info...");let{mainConfigPath,version:storybookVersionSpecifier,configDir:configDirFromScript,previewConfigPath}=(0,import_common4.getStorybookInfo)(userDefinedConfigDir),configDir=userDefinedConfigDir||configDirFromScript||".storybook";import_node_logger4.logger.debug("Loading main config...");let mainConfig;try{mainConfig=await(0,import_common4.loadMainConfig)({configDir,noCache:!cache,cwd})}catch(err){throw new Error(import_ts_dedent4.dedent`Unable to find or evaluate ${import_picocolors2.default.blue(mainConfigPath)}: ${String(err)}`)}let workingDir=(0,import_node_path6.isAbsolute)(configDir)?(0,import_node_path6.dirname)(configDir):(0,import_node_path6.dirname)((0,import_node_path6.join)(cwd??process.cwd(),configDir));import_node_logger4.logger.debug("Getting stories paths...");let storiesPaths=await getStoriesPathsFromConfig({stories:mainConfig.stories,configDir,workingDir});import_node_logger4.logger.debug("Getting package manager...");let packageManager=import_common4.JsPackageManagerFactory.getPackageManager({force:packageManagerName,configDir,storiesPaths});import_node_logger4.logger.debug("Getting Storybook version...");let storybookVersion=await(0,import_common5.getCoercedStorybookVersion)(packageManager);return{configDir,mainConfig,storybookVersionSpecifier,storybookVersion,mainConfigPath,previewConfigPath,packageManager,storiesPaths}},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){import_node_logger4.logger.log(`\u274C The migration failed to update your ${import_picocolors2.default.blue(mainConfigPath)} on your behalf because of the following error:
79
79
  ${e}
80
- `),import_node_logger4.logger.log(`\u26A0\uFE0F Storybook automigrations are based on AST parsing and it's possible that your ${import_picocolors2.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 require_windows=__commonJS({"../../node_modules/isexe/windows.js"(exports2,module2){"use strict";module2.exports=isexe;isexe.sync=sync;var fs7=require("fs");function checkPathExt(path8,options){var pathext=options.pathExt!==void 0?options.pathExt:process.env.PATHEXT;if(!pathext||(pathext=pathext.split(";"),pathext.indexOf("")!==-1))return!0;for(var i=0;i<pathext.length;i++){var p=pathext[i].toLowerCase();if(p&&path8.substr(-p.length).toLowerCase()===p)return!0}return!1}function checkStat(stat,path8,options){return!stat.isSymbolicLink()&&!stat.isFile()?!1:checkPathExt(path8,options)}function isexe(path8,options,cb){fs7.stat(path8,function(er,stat){cb(er,er?!1:checkStat(stat,path8,options))})}function sync(path8,options){return checkStat(fs7.statSync(path8),path8,options)}}});var require_mode=__commonJS({"../../node_modules/isexe/mode.js"(exports2,module2){"use strict";module2.exports=isexe;isexe.sync=sync;var fs7=require("fs");function isexe(path8,options,cb){fs7.stat(path8,function(er,stat){cb(er,er?!1:checkStat(stat,options))})}function sync(path8,options){return checkStat(fs7.statSync(path8),options)}function checkStat(stat,options){return stat.isFile()&&checkMode(stat,options)}function checkMode(stat,options){var mod=stat.mode,uid=stat.uid,gid=stat.gid,myUid=options.uid!==void 0?options.uid:process.getuid&&process.getuid(),myGid=options.gid!==void 0?options.gid:process.getgid&&process.getgid(),u=parseInt("100",8),g=parseInt("010",8),o=parseInt("001",8),ug=u|g,ret=mod&o||mod&g&&gid===myGid||mod&u&&uid===myUid||mod&ug&&myUid===0;return ret}}});var require_isexe=__commonJS({"../../node_modules/isexe/index.js"(exports2,module2){"use strict";var fs7=require("fs"),core;process.platform==="win32"||global.TESTING_WINDOWS?core=require_windows():core=require_mode();module2.exports=isexe;isexe.sync=sync;function isexe(path8,options,cb){if(typeof options=="function"&&(cb=options,options={}),!cb){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(resolve2,reject){isexe(path8,options||{},function(er,is){er?reject(er):resolve2(is)})})}core(path8,options||{},function(er,is){er&&(er.code==="EACCES"||options&&options.ignoreErrors)&&(er=null,is=!1),cb(er,is)})}function sync(path8,options){try{return core.sync(path8,options||{})}catch(er){if(options&&options.ignoreErrors||er.code==="EACCES")return!1;throw er}}}});var require_which=__commonJS({"../../node_modules/which/which.js"(exports2,module2){"use strict";var isWindows=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",path8=require("path"),COLON=isWindows?";":":",isexe=require_isexe(),getNotFoundError=cmd=>Object.assign(new Error(`not found: ${cmd}`),{code:"ENOENT"}),getPathInfo=(cmd,opt)=>{let colon=opt.colon||COLON,pathEnv=cmd.match(/\//)||isWindows&&cmd.match(/\\/)?[""]:[...isWindows?[process.cwd()]:[],...(opt.path||process.env.PATH||"").split(colon)],pathExtExe=isWindows?opt.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",pathExt=isWindows?pathExtExe.split(colon):[""];return isWindows&&cmd.indexOf(".")!==-1&&pathExt[0]!==""&&pathExt.unshift(""),{pathEnv,pathExt,pathExtExe}},which=(cmd,opt,cb)=>{typeof opt=="function"&&(cb=opt,opt={}),opt||(opt={});let{pathEnv,pathExt,pathExtExe}=getPathInfo(cmd,opt),found=[],step=i=>new Promise((resolve2,reject)=>{if(i===pathEnv.length)return opt.all&&found.length?resolve2(found):reject(getNotFoundError(cmd));let ppRaw=pathEnv[i],pathPart=/^".*"$/.test(ppRaw)?ppRaw.slice(1,-1):ppRaw,pCmd=path8.join(pathPart,cmd),p=!pathPart&&/^\.[\\\/]/.test(cmd)?cmd.slice(0,2)+pCmd:pCmd;resolve2(subStep(p,i,0))}),subStep=(p,i,ii)=>new Promise((resolve2,reject)=>{if(ii===pathExt.length)return resolve2(step(i+1));let ext=pathExt[ii];isexe(p+ext,{pathExt:pathExtExe},(er,is)=>{if(!er&&is)if(opt.all)found.push(p+ext);else return resolve2(p+ext);return resolve2(subStep(p,i,ii+1))})});return cb?step(0).then(res=>cb(null,res),cb):step(0)},whichSync=(cmd,opt)=>{opt=opt||{};let{pathEnv,pathExt,pathExtExe}=getPathInfo(cmd,opt),found=[];for(let i=0;i<pathEnv.length;i++){let ppRaw=pathEnv[i],pathPart=/^".*"$/.test(ppRaw)?ppRaw.slice(1,-1):ppRaw,pCmd=path8.join(pathPart,cmd),p=!pathPart&&/^\.[\\\/]/.test(cmd)?cmd.slice(0,2)+pCmd:pCmd;for(let j=0;j<pathExt.length;j++){let cur=p+pathExt[j];try{if(isexe.sync(cur,{pathExt:pathExtExe}))if(opt.all)found.push(cur);else return cur}catch{}}}if(opt.all&&found.length)return found;if(opt.nothrow)return null;throw getNotFoundError(cmd)};module2.exports=which;which.sync=whichSync}});var require_path_key=__commonJS({"../../node_modules/path-key/index.js"(exports2,module2){"use strict";var pathKey=(options={})=>{let environment=options.env||process.env;return(options.platform||process.platform)!=="win32"?"PATH":Object.keys(environment).reverse().find(key=>key.toUpperCase()==="PATH")||"Path"};module2.exports=pathKey;module2.exports.default=pathKey}});var require_resolveCommand=__commonJS({"../../node_modules/cross-spawn/lib/util/resolveCommand.js"(exports2,module2){"use strict";var path8=require("path"),which=require_which(),getPathKey=require_path_key();function resolveCommandAttempt(parsed,withoutPathExt){let env=parsed.options.env||process.env,cwd=process.cwd(),hasCustomCwd=parsed.options.cwd!=null,shouldSwitchCwd=hasCustomCwd&&process.chdir!==void 0&&!process.chdir.disabled;if(shouldSwitchCwd)try{process.chdir(parsed.options.cwd)}catch{}let resolved;try{resolved=which.sync(parsed.command,{path:env[getPathKey({env})],pathExt:withoutPathExt?path8.delimiter:void 0})}catch{}finally{shouldSwitchCwd&&process.chdir(cwd)}return resolved&&(resolved=path8.resolve(hasCustomCwd?parsed.options.cwd:"",resolved)),resolved}function resolveCommand(parsed){return resolveCommandAttempt(parsed)||resolveCommandAttempt(parsed,!0)}module2.exports=resolveCommand}});var require_escape=__commonJS({"../../node_modules/cross-spawn/lib/util/escape.js"(exports2,module2){"use strict";var metaCharsRegExp=/([()\][%!^"`<>&|;, *?])/g;function escapeCommand(arg){return arg=arg.replace(metaCharsRegExp,"^$1"),arg}function escapeArgument(arg,doubleEscapeMetaChars){return arg=`${arg}`,arg=arg.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),arg=arg.replace(/(?=(\\+?)?)\1$/,"$1$1"),arg=`"${arg}"`,arg=arg.replace(metaCharsRegExp,"^$1"),doubleEscapeMetaChars&&(arg=arg.replace(metaCharsRegExp,"^$1")),arg}module2.exports.command=escapeCommand;module2.exports.argument=escapeArgument}});var require_shebang_regex=__commonJS({"../../node_modules/shebang-regex/index.js"(exports2,module2){"use strict";module2.exports=/^#!(.*)/}});var require_shebang_command=__commonJS({"../../node_modules/shebang-command/index.js"(exports2,module2){"use strict";var shebangRegex=require_shebang_regex();module2.exports=(string="")=>{let match=string.match(shebangRegex);if(!match)return null;let[path8,argument]=match[0].replace(/#! ?/,"").split(" "),binary=path8.split("/").pop();return binary==="env"?argument:argument?`${binary} ${argument}`:binary}}});var require_readShebang=__commonJS({"../../node_modules/cross-spawn/lib/util/readShebang.js"(exports2,module2){"use strict";var fs7=require("fs"),shebangCommand=require_shebang_command();function readShebang(command2){let buffer=Buffer.alloc(150),fd;try{fd=fs7.openSync(command2,"r"),fs7.readSync(fd,buffer,0,150,0),fs7.closeSync(fd)}catch{}return shebangCommand(buffer.toString())}module2.exports=readShebang}});var require_parse4=__commonJS({"../../node_modules/cross-spawn/lib/parse.js"(exports2,module2){"use strict";var path8=require("path"),resolveCommand=require_resolveCommand(),escape=require_escape(),readShebang=require_readShebang(),isWin=process.platform==="win32",isExecutableRegExp=/\.(?:com|exe)$/i,isCmdShimRegExp=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function detectShebang(parsed){parsed.file=resolveCommand(parsed);let shebang=parsed.file&&readShebang(parsed.file);return shebang?(parsed.args.unshift(parsed.file),parsed.command=shebang,resolveCommand(parsed)):parsed.file}function parseNonShell(parsed){if(!isWin)return parsed;let commandFile=detectShebang(parsed),needsShell=!isExecutableRegExp.test(commandFile);if(parsed.options.forceShell||needsShell){let needsDoubleEscapeMetaChars=isCmdShimRegExp.test(commandFile);parsed.command=path8.normalize(parsed.command),parsed.command=escape.command(parsed.command),parsed.args=parsed.args.map(arg=>escape.argument(arg,needsDoubleEscapeMetaChars));let shellCommand=[parsed.command].concat(parsed.args).join(" ");parsed.args=["/d","/s","/c",`"${shellCommand}"`],parsed.command=process.env.comspec||"cmd.exe",parsed.options.windowsVerbatimArguments=!0}return parsed}function parse3(command2,args,options){args&&!Array.isArray(args)&&(options=args,args=null),args=args?args.slice(0):[],options=Object.assign({},options);let parsed={command:command2,args,options,file:void 0,original:{command:command2,args}};return options.shell?parsed:parseNonShell(parsed)}module2.exports=parse3}});var require_enoent=__commonJS({"../../node_modules/cross-spawn/lib/enoent.js"(exports2,module2){"use strict";var isWin=process.platform==="win32";function notFoundError(original,syscall){return Object.assign(new Error(`${syscall} ${original.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${syscall} ${original.command}`,path:original.command,spawnargs:original.args})}function hookChildProcess(cp,parsed){if(!isWin)return;let originalEmit=cp.emit;cp.emit=function(name,arg1){if(name==="exit"){let err=verifyENOENT(arg1,parsed);if(err)return originalEmit.call(cp,"error",err)}return originalEmit.apply(cp,arguments)}}function verifyENOENT(status,parsed){return isWin&&status===1&&!parsed.file?notFoundError(parsed.original,"spawn"):null}function verifyENOENTSync(status,parsed){return isWin&&status===1&&!parsed.file?notFoundError(parsed.original,"spawnSync"):null}module2.exports={hookChildProcess,verifyENOENT,verifyENOENTSync,notFoundError}}});var require_cross_spawn=__commonJS({"../../node_modules/cross-spawn/index.js"(exports2,module2){"use strict";var cp=require("child_process"),parse3=require_parse4(),enoent=require_enoent();function spawn(command2,args,options){let parsed=parse3(command2,args,options),spawned=cp.spawn(parsed.command,parsed.args,parsed.options);return enoent.hookChildProcess(spawned,parsed),spawned}function spawnSync3(command2,args,options){let parsed=parse3(command2,args,options),result=cp.spawnSync(parsed.command,parsed.args,parsed.options);return result.error=result.error||enoent.verifyENOENTSync(result.status,parsed),result}module2.exports=spawn;module2.exports.spawn=spawn;module2.exports.sync=spawnSync3;module2.exports._parse=parse3;module2.exports._enoent=enoent}});var import_cli3=require("storybook/internal/cli"),import_common25=require("storybook/internal/common"),import_core_server3=require("storybook/internal/core-server"),import_node_logger24=require("storybook/internal/node-logger"),import_telemetry3=require("storybook/internal/telemetry"),import_commander=require("commander"),import_envinfo=__toESM(require_envinfo(),1);var array=[],characterCodeCache=[];function leven(first,second){if(first===second)return 0;let swap=first;first.length>second.length&&(first=second,second=swap);let firstLength=first.length,secondLength=second.length;for(;firstLength>0&&first.charCodeAt(~-firstLength)===second.charCodeAt(~-secondLength);)firstLength--,secondLength--;let start=0;for(;start<firstLength&&first.charCodeAt(start)===second.charCodeAt(start);)start++;if(firstLength-=start,secondLength-=start,firstLength===0)return secondLength;let bCharacterCode,result,temporary,temporary2,index=0,index2=0;for(;index<firstLength;)characterCodeCache[index]=first.charCodeAt(start+index),array[index]=++index;for(;index2<secondLength;)for(bCharacterCode=second.charCodeAt(start+index2),temporary=index2++,result=index2,index=0;index<firstLength;index++)temporary2=bCharacterCode===characterCodeCache[index]?temporary:temporary+1,temporary=array[index],result=array[index]=temporary>result?temporary2>result?result+1:temporary2:temporary2>temporary?temporary+1:temporary2;return result}var import_picocolors19=__toESM(require_picocolors(),1);var version="9.1.2";var import_node_path7=require("path"),import_common6=require("storybook/internal/common"),import_csf_tools2=require("storybook/internal/csf-tools"),import_node_logger5=require("storybook/internal/node-logger"),import_semver6=__toESM(require_semver2(),1),import_ts_dedent5=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",`*
80
+ `),import_node_logger4.logger.log(`\u26A0\uFE0F Storybook automigrations are based on AST parsing and it's possible that your ${import_picocolors2.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 require_windows=__commonJS({"../../node_modules/isexe/windows.js"(exports2,module2){"use strict";module2.exports=isexe;isexe.sync=sync;var fs7=require("fs");function checkPathExt(path8,options){var pathext=options.pathExt!==void 0?options.pathExt:process.env.PATHEXT;if(!pathext||(pathext=pathext.split(";"),pathext.indexOf("")!==-1))return!0;for(var i=0;i<pathext.length;i++){var p=pathext[i].toLowerCase();if(p&&path8.substr(-p.length).toLowerCase()===p)return!0}return!1}function checkStat(stat,path8,options){return!stat.isSymbolicLink()&&!stat.isFile()?!1:checkPathExt(path8,options)}function isexe(path8,options,cb){fs7.stat(path8,function(er,stat){cb(er,er?!1:checkStat(stat,path8,options))})}function sync(path8,options){return checkStat(fs7.statSync(path8),path8,options)}}});var require_mode=__commonJS({"../../node_modules/isexe/mode.js"(exports2,module2){"use strict";module2.exports=isexe;isexe.sync=sync;var fs7=require("fs");function isexe(path8,options,cb){fs7.stat(path8,function(er,stat){cb(er,er?!1:checkStat(stat,options))})}function sync(path8,options){return checkStat(fs7.statSync(path8),options)}function checkStat(stat,options){return stat.isFile()&&checkMode(stat,options)}function checkMode(stat,options){var mod=stat.mode,uid=stat.uid,gid=stat.gid,myUid=options.uid!==void 0?options.uid:process.getuid&&process.getuid(),myGid=options.gid!==void 0?options.gid:process.getgid&&process.getgid(),u=parseInt("100",8),g=parseInt("010",8),o=parseInt("001",8),ug=u|g,ret=mod&o||mod&g&&gid===myGid||mod&u&&uid===myUid||mod&ug&&myUid===0;return ret}}});var require_isexe=__commonJS({"../../node_modules/isexe/index.js"(exports2,module2){"use strict";var fs7=require("fs"),core;process.platform==="win32"||global.TESTING_WINDOWS?core=require_windows():core=require_mode();module2.exports=isexe;isexe.sync=sync;function isexe(path8,options,cb){if(typeof options=="function"&&(cb=options,options={}),!cb){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(resolve2,reject){isexe(path8,options||{},function(er,is){er?reject(er):resolve2(is)})})}core(path8,options||{},function(er,is){er&&(er.code==="EACCES"||options&&options.ignoreErrors)&&(er=null,is=!1),cb(er,is)})}function sync(path8,options){try{return core.sync(path8,options||{})}catch(er){if(options&&options.ignoreErrors||er.code==="EACCES")return!1;throw er}}}});var require_which=__commonJS({"../../node_modules/which/which.js"(exports2,module2){"use strict";var isWindows=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",path8=require("path"),COLON=isWindows?";":":",isexe=require_isexe(),getNotFoundError=cmd=>Object.assign(new Error(`not found: ${cmd}`),{code:"ENOENT"}),getPathInfo=(cmd,opt)=>{let colon=opt.colon||COLON,pathEnv=cmd.match(/\//)||isWindows&&cmd.match(/\\/)?[""]:[...isWindows?[process.cwd()]:[],...(opt.path||process.env.PATH||"").split(colon)],pathExtExe=isWindows?opt.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",pathExt=isWindows?pathExtExe.split(colon):[""];return isWindows&&cmd.indexOf(".")!==-1&&pathExt[0]!==""&&pathExt.unshift(""),{pathEnv,pathExt,pathExtExe}},which=(cmd,opt,cb)=>{typeof opt=="function"&&(cb=opt,opt={}),opt||(opt={});let{pathEnv,pathExt,pathExtExe}=getPathInfo(cmd,opt),found=[],step=i=>new Promise((resolve2,reject)=>{if(i===pathEnv.length)return opt.all&&found.length?resolve2(found):reject(getNotFoundError(cmd));let ppRaw=pathEnv[i],pathPart=/^".*"$/.test(ppRaw)?ppRaw.slice(1,-1):ppRaw,pCmd=path8.join(pathPart,cmd),p=!pathPart&&/^\.[\\\/]/.test(cmd)?cmd.slice(0,2)+pCmd:pCmd;resolve2(subStep(p,i,0))}),subStep=(p,i,ii)=>new Promise((resolve2,reject)=>{if(ii===pathExt.length)return resolve2(step(i+1));let ext=pathExt[ii];isexe(p+ext,{pathExt:pathExtExe},(er,is)=>{if(!er&&is)if(opt.all)found.push(p+ext);else return resolve2(p+ext);return resolve2(subStep(p,i,ii+1))})});return cb?step(0).then(res=>cb(null,res),cb):step(0)},whichSync=(cmd,opt)=>{opt=opt||{};let{pathEnv,pathExt,pathExtExe}=getPathInfo(cmd,opt),found=[];for(let i=0;i<pathEnv.length;i++){let ppRaw=pathEnv[i],pathPart=/^".*"$/.test(ppRaw)?ppRaw.slice(1,-1):ppRaw,pCmd=path8.join(pathPart,cmd),p=!pathPart&&/^\.[\\\/]/.test(cmd)?cmd.slice(0,2)+pCmd:pCmd;for(let j=0;j<pathExt.length;j++){let cur=p+pathExt[j];try{if(isexe.sync(cur,{pathExt:pathExtExe}))if(opt.all)found.push(cur);else return cur}catch{}}}if(opt.all&&found.length)return found;if(opt.nothrow)return null;throw getNotFoundError(cmd)};module2.exports=which;which.sync=whichSync}});var require_path_key=__commonJS({"../../node_modules/path-key/index.js"(exports2,module2){"use strict";var pathKey=(options={})=>{let environment=options.env||process.env;return(options.platform||process.platform)!=="win32"?"PATH":Object.keys(environment).reverse().find(key=>key.toUpperCase()==="PATH")||"Path"};module2.exports=pathKey;module2.exports.default=pathKey}});var require_resolveCommand=__commonJS({"../../node_modules/cross-spawn/lib/util/resolveCommand.js"(exports2,module2){"use strict";var path8=require("path"),which=require_which(),getPathKey=require_path_key();function resolveCommandAttempt(parsed,withoutPathExt){let env=parsed.options.env||process.env,cwd=process.cwd(),hasCustomCwd=parsed.options.cwd!=null,shouldSwitchCwd=hasCustomCwd&&process.chdir!==void 0&&!process.chdir.disabled;if(shouldSwitchCwd)try{process.chdir(parsed.options.cwd)}catch{}let resolved;try{resolved=which.sync(parsed.command,{path:env[getPathKey({env})],pathExt:withoutPathExt?path8.delimiter:void 0})}catch{}finally{shouldSwitchCwd&&process.chdir(cwd)}return resolved&&(resolved=path8.resolve(hasCustomCwd?parsed.options.cwd:"",resolved)),resolved}function resolveCommand(parsed){return resolveCommandAttempt(parsed)||resolveCommandAttempt(parsed,!0)}module2.exports=resolveCommand}});var require_escape=__commonJS({"../../node_modules/cross-spawn/lib/util/escape.js"(exports2,module2){"use strict";var metaCharsRegExp=/([()\][%!^"`<>&|;, *?])/g;function escapeCommand(arg){return arg=arg.replace(metaCharsRegExp,"^$1"),arg}function escapeArgument(arg,doubleEscapeMetaChars){return arg=`${arg}`,arg=arg.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),arg=arg.replace(/(?=(\\+?)?)\1$/,"$1$1"),arg=`"${arg}"`,arg=arg.replace(metaCharsRegExp,"^$1"),doubleEscapeMetaChars&&(arg=arg.replace(metaCharsRegExp,"^$1")),arg}module2.exports.command=escapeCommand;module2.exports.argument=escapeArgument}});var require_shebang_regex=__commonJS({"../../node_modules/shebang-regex/index.js"(exports2,module2){"use strict";module2.exports=/^#!(.*)/}});var require_shebang_command=__commonJS({"../../node_modules/shebang-command/index.js"(exports2,module2){"use strict";var shebangRegex=require_shebang_regex();module2.exports=(string="")=>{let match=string.match(shebangRegex);if(!match)return null;let[path8,argument]=match[0].replace(/#! ?/,"").split(" "),binary=path8.split("/").pop();return binary==="env"?argument:argument?`${binary} ${argument}`:binary}}});var require_readShebang=__commonJS({"../../node_modules/cross-spawn/lib/util/readShebang.js"(exports2,module2){"use strict";var fs7=require("fs"),shebangCommand=require_shebang_command();function readShebang(command2){let buffer=Buffer.alloc(150),fd;try{fd=fs7.openSync(command2,"r"),fs7.readSync(fd,buffer,0,150,0),fs7.closeSync(fd)}catch{}return shebangCommand(buffer.toString())}module2.exports=readShebang}});var require_parse4=__commonJS({"../../node_modules/cross-spawn/lib/parse.js"(exports2,module2){"use strict";var path8=require("path"),resolveCommand=require_resolveCommand(),escape=require_escape(),readShebang=require_readShebang(),isWin=process.platform==="win32",isExecutableRegExp=/\.(?:com|exe)$/i,isCmdShimRegExp=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function detectShebang(parsed){parsed.file=resolveCommand(parsed);let shebang=parsed.file&&readShebang(parsed.file);return shebang?(parsed.args.unshift(parsed.file),parsed.command=shebang,resolveCommand(parsed)):parsed.file}function parseNonShell(parsed){if(!isWin)return parsed;let commandFile=detectShebang(parsed),needsShell=!isExecutableRegExp.test(commandFile);if(parsed.options.forceShell||needsShell){let needsDoubleEscapeMetaChars=isCmdShimRegExp.test(commandFile);parsed.command=path8.normalize(parsed.command),parsed.command=escape.command(parsed.command),parsed.args=parsed.args.map(arg=>escape.argument(arg,needsDoubleEscapeMetaChars));let shellCommand=[parsed.command].concat(parsed.args).join(" ");parsed.args=["/d","/s","/c",`"${shellCommand}"`],parsed.command=process.env.comspec||"cmd.exe",parsed.options.windowsVerbatimArguments=!0}return parsed}function parse3(command2,args,options){args&&!Array.isArray(args)&&(options=args,args=null),args=args?args.slice(0):[],options=Object.assign({},options);let parsed={command:command2,args,options,file:void 0,original:{command:command2,args}};return options.shell?parsed:parseNonShell(parsed)}module2.exports=parse3}});var require_enoent=__commonJS({"../../node_modules/cross-spawn/lib/enoent.js"(exports2,module2){"use strict";var isWin=process.platform==="win32";function notFoundError(original,syscall){return Object.assign(new Error(`${syscall} ${original.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${syscall} ${original.command}`,path:original.command,spawnargs:original.args})}function hookChildProcess(cp,parsed){if(!isWin)return;let originalEmit=cp.emit;cp.emit=function(name,arg1){if(name==="exit"){let err=verifyENOENT(arg1,parsed);if(err)return originalEmit.call(cp,"error",err)}return originalEmit.apply(cp,arguments)}}function verifyENOENT(status,parsed){return isWin&&status===1&&!parsed.file?notFoundError(parsed.original,"spawn"):null}function verifyENOENTSync(status,parsed){return isWin&&status===1&&!parsed.file?notFoundError(parsed.original,"spawnSync"):null}module2.exports={hookChildProcess,verifyENOENT,verifyENOENTSync,notFoundError}}});var require_cross_spawn=__commonJS({"../../node_modules/cross-spawn/index.js"(exports2,module2){"use strict";var cp=require("child_process"),parse3=require_parse4(),enoent=require_enoent();function spawn(command2,args,options){let parsed=parse3(command2,args,options),spawned=cp.spawn(parsed.command,parsed.args,parsed.options);return enoent.hookChildProcess(spawned,parsed),spawned}function spawnSync3(command2,args,options){let parsed=parse3(command2,args,options),result=cp.spawnSync(parsed.command,parsed.args,parsed.options);return result.error=result.error||enoent.verifyENOENTSync(result.status,parsed),result}module2.exports=spawn;module2.exports.spawn=spawn;module2.exports.sync=spawnSync3;module2.exports._parse=parse3;module2.exports._enoent=enoent}});var import_cli3=require("storybook/internal/cli"),import_common25=require("storybook/internal/common"),import_core_server3=require("storybook/internal/core-server"),import_node_logger24=require("storybook/internal/node-logger"),import_telemetry3=require("storybook/internal/telemetry"),import_commander=require("commander"),import_envinfo=__toESM(require_envinfo(),1);var array=[],characterCodeCache=[];function leven(first,second){if(first===second)return 0;let swap=first;first.length>second.length&&(first=second,second=swap);let firstLength=first.length,secondLength=second.length;for(;firstLength>0&&first.charCodeAt(~-firstLength)===second.charCodeAt(~-secondLength);)firstLength--,secondLength--;let start=0;for(;start<firstLength&&first.charCodeAt(start)===second.charCodeAt(start);)start++;if(firstLength-=start,secondLength-=start,firstLength===0)return secondLength;let bCharacterCode,result,temporary,temporary2,index=0,index2=0;for(;index<firstLength;)characterCodeCache[index]=first.charCodeAt(start+index),array[index]=++index;for(;index2<secondLength;)for(bCharacterCode=second.charCodeAt(start+index2),temporary=index2++,result=index2,index=0;index<firstLength;index++)temporary2=bCharacterCode===characterCodeCache[index]?temporary:temporary+1,temporary=array[index],result=array[index]=temporary>result?temporary2>result?result+1:temporary2:temporary2>temporary?temporary+1:temporary2;return result}var import_picocolors19=__toESM(require_picocolors(),1);var version="9.1.3";var import_node_path7=require("path"),import_common6=require("storybook/internal/common"),import_csf_tools2=require("storybook/internal/csf-tools"),import_node_logger5=require("storybook/internal/node-logger"),import_semver6=__toESM(require_semver2(),1),import_ts_dedent5=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",`*
81
81
  * This function is used to resolve the absolute path of a package.
82
82
  * It is needed in projects that use Yarn PnP or are set up within a monorepo.
83
83
  `),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=>{element&&isRequireWrapperNecessary(element)&&wrapValueWithRequireWrapper(config,element)})})}init_mainConfigFile();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_common6.versions,addonName);async function add(addon,{packageManager:pkgMgr,skipPostinstall,configDir:userSpecifiedConfigDir,yes,skipInstall},logger23=console){let[addonName,inputVersion]=getVersionSpecifier(addon),{mainConfig,mainConfigPath,configDir,previewConfigPath,packageManager}=await getStorybookData({configDir:userSpecifiedConfigDir,packageManagerName:pkgMgr});if(typeof configDir>"u")throw new Error(import_ts_dedent5.dedent`
@@ -129,7 +129,7 @@ ${err}`),info.source}let metaVariableName=csf._metaVariableName??"meta",programN
129
129
 
130
130
  However, please note that this might not work if you have an outdated tsconfig, use custom paths, or have type alias plugins configured in your project. You can always rerun this codemod and select another option to update your code later.
131
131
 
132
- More info: ${import_picocolors9.default.yellow("https://storybook.js.org/docs/api/csf/csf-factories#subpath-imports")}
132
+ More info: ${import_picocolors9.default.yellow("https://storybook.js.org/docs/api/csf/csf-factories#subpath-imports?ref=upgrade")}
133
133
 
134
134
  As we modify your story files, we can create two types of imports:
135
135
 
@@ -141,7 +141,7 @@ ${err}`),info.source}let metaVariableName=csf._metaVariableName??"meta",programN
141
141
  You can now run Storybook with the new CSF factories format.
142
142
 
143
143
  For more info, check out the docs:
144
- ${import_picocolors9.default.yellow("https://storybook.js.org/docs/api/csf/csf-factories")}
144
+ ${import_picocolors9.default.yellow("https://storybook.js.org/docs/api/csf/csf-factories?ref=upgrade")}
145
145
  `)}};var import_common14=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_picocolors10=__toESM(require_picocolors(),1),import_ts_dedent8=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/integrations/vitest-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}`;init_mainConfigFile();var fileExtensions=[".js",".ts",".cts",".mts",".cjs",".mjs",".jsx",".tsx"],addonA11yAddonTest={id:"addon-a11y-addon-test",link:"https://storybook.js.org/docs/writing-tests/accessibility-testing#test-addon-integration",promptType:"auto",async check({mainConfig,configDir}){let addons=(0,import_common14.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(){return"We have detected that you have @storybook/addon-a11y and @storybook/addon-vitest installed. The automigration will configure both for the new testing experience in Storybook 9"},async run({result}){let counter=1,{transformedSetupCode,skipPreviewTransformation,skipVitestSetupTransformation,setupFile,previewFile,transformedPreviewCode}=result,errorMessage=[];if(skipVitestSetupTransformation||transformedSetupCode===null&&errorMessage.push(import_ts_dedent8.dedent`
146
146
  ${counter++}) We couldn't find or automatically update ${import_picocolors10.default.cyan(".storybook/vitest.setup.<ts|js>")} in your project to smoothly set up project annotations from ${import_picocolors10.default.magenta("@storybook/addon-a11y")}.
147
147
  Please manually update your ${import_picocolors10.default.cyan("vitest.setup.ts")} file to include the following:
@@ -211,7 +211,7 @@ ${error}`).join(`
211
211
 
212
212
  The automigrations try to migrate common patterns in your project, but might not contain everything needed to migrate to the latest version of Storybook.
213
213
 
214
- Please check the changelog and migration guide for manual migrations and more information: ${import_picocolors14.default.yellow("https://storybook.js.org/docs/migration-guide")}
214
+ Please check the changelog and migration guide for manual migrations and more information: ${import_picocolors14.default.yellow("https://storybook.js.org/docs/migration-guide?ref=upgrade")}
215
215
  And reach out on Discord if you need help: ${import_picocolors14.default.yellow("https://discord.gg/storybook")}
216
216
  `);let hasNoFixes=Object.values(fixResults).every(r=>r==="unnecessary"),hasFailures2=Object.values(fixResults).some(r=>r==="failed"||r==="check_failed"),title=hasNoFixes?"No migrations were applicable to your project":hasFailures2?"Migration check ran with failures":"Migration check ran successfully";return import_node_logger17.logger.logBox(messages.filter(Boolean).join(segmentDivider),{title,borderColor:hasFailures2?"red":"green"})}init_mainConfigFile();var logAvailableMigrations=()=>{let availableFixes=[...allFixes,...commandFixes].map(f=>import_picocolors15.default.yellow(f.id)).map(x=>`- ${x}`).join(`
217
217
  `);import_node_logger18.logger.log(import_ts_dedent16.dedent`
@@ -282,7 +282,7 @@ ${failedProjectsList}`),projectsWithNoFixes.length>0){let projectList=projectsWi
282
282
  `);import_node_logger23.logger.log(`${import_node_logger23.CLI_COLORS.info("No applicable migrations:")}
283
283
  ${projectList}`)}}else import_node_logger23.logger.step("The upgrade is complete!"),Object.values(doctorResults).every(result=>result.status==="healthy")?import_node_logger23.logger.log(`${import_node_logger23.CLI_COLORS.success("Your project(s) have been upgraded successfully! \u{1F389}")}`):import_node_logger23.logger.log(`${import_picocolors18.default.yellow("Your project(s) have been upgraded successfully, but some issues were found which need your attention, please check Storybook doctor logs above.")}`);let automigrationLinks=detectedAutomigrations.filter(am=>Object.entries(projectResults).some(([_,resultData])=>resultData.automigrationStatuses[am.fix.id]==="failed"||resultData.automigrationStatuses[am.fix.id]==="succeeded"||resultData.automigrationStatuses[am.fix.id]==="check_failed")).map(am=>`\u2022 ${(0,import_node_logger23.createHyperlink)(am.fix.id,am.fix.link)}`);if(automigrationLinks.length>0){let automigrationLinksMessage=[`If you want to learn more about the automigrations that executed in your project(s), please check the following links:
284
284
  `,...automigrationLinks].join(`
285
- `);import_node_logger23.logger.log(automigrationLinksMessage)}import_node_logger23.logger.log(`For a full list of changes, please check our migration guide: ${import_node_logger23.CLI_COLORS.cta("https://storybook.js.org/docs/migration-guide")}`)}async function sendMultiUpgradeTelemetry(options){let{allProjects,selectedProjects,projectResults,doctorResults,hasUserInterrupted=!1}=options,{successfulProjects,failedProjects,projectsWithNoFixes}=getUpgradeResults(projectResults,doctorResults),processedProjects=new Set([...Object.keys(projectResults),...Object.keys(doctorResults)]),incompleteProjects=selectedProjects.map(p=>p.configDir).filter(configDir=>!processedProjects.has(configDir)),projectsWithDoctorReports=Object.values(doctorResults).filter(result=>result.status!=="healthy").length;try{await(0,import_telemetry2.telemetry)("multi-upgrade",{totalDetectedProjects:allProjects.length,totalSelectedProjects:selectedProjects.length,projectsWithSuccessfulAutomigrations:successfulProjects.length,projectsWithFailedAutomigrations:failedProjects.length,projectsWithNoAutomigrations:projectsWithNoFixes.length,projectsWithDoctorReports,incompleteProjects:incompleteProjects.length,hasUserInterrupted})}catch(error){import_node_logger23.logger.debug(`Failed to send multi-upgrade telemetry: ${String(error)}`)}}async function upgrade(options){await(0,import_core_server2.withTelemetry)("upgrade",{cliOptions:{...options,configDir:options.configDir?.[0]}},async()=>{import_node_logger23.logger.intro(`Storybook Upgrade - ${import_picocolors18.default.bold(`v${import_common23.versions.storybook}`)}`);let projectsResult=await getProjects(options);if(projectsResult===void 0||projectsResult.selectedProjects.length===0)return;let{allProjects,selectedProjects:storybookProjects}=projectsResult;storybookProjects.length>1?import_node_logger23.logger.info(`Upgrading the following projects:
285
+ `);import_node_logger23.logger.log(automigrationLinksMessage)}import_node_logger23.logger.log(`For a full list of changes, please check our migration guide: ${import_node_logger23.CLI_COLORS.cta("https://storybook.js.org/docs/migration-guide?ref=upgrade")}`)}async function sendMultiUpgradeTelemetry(options){let{allProjects,selectedProjects,projectResults,doctorResults,hasUserInterrupted=!1}=options,{successfulProjects,failedProjects,projectsWithNoFixes}=getUpgradeResults(projectResults,doctorResults),processedProjects=new Set([...Object.keys(projectResults),...Object.keys(doctorResults)]),incompleteProjects=selectedProjects.map(p=>p.configDir).filter(configDir=>!processedProjects.has(configDir)),projectsWithDoctorReports=Object.values(doctorResults).filter(result=>result.status!=="healthy").length;try{await(0,import_telemetry2.telemetry)("multi-upgrade",{totalDetectedProjects:allProjects.length,totalSelectedProjects:selectedProjects.length,projectsWithSuccessfulAutomigrations:successfulProjects.length,projectsWithFailedAutomigrations:failedProjects.length,projectsWithNoAutomigrations:projectsWithNoFixes.length,projectsWithDoctorReports,incompleteProjects:incompleteProjects.length,hasUserInterrupted})}catch(error){import_node_logger23.logger.debug(`Failed to send multi-upgrade telemetry: ${String(error)}`)}}async function upgrade(options){await(0,import_core_server2.withTelemetry)("upgrade",{cliOptions:{...options,configDir:options.configDir?.[0]}},async()=>{import_node_logger23.logger.intro(`Storybook Upgrade - ${import_picocolors18.default.bold(`v${import_common23.versions.storybook}`)}`);let projectsResult=await getProjects(options);if(projectsResult===void 0||projectsResult.selectedProjects.length===0)return;let{allProjects,selectedProjects:storybookProjects}=projectsResult;storybookProjects.length>1?import_node_logger23.logger.info(`Upgrading the following projects:
286
286
  ${storybookProjects.map(p=>`${import_picocolors18.default.cyan(shortenPath(p.configDir))}: ${import_picocolors18.default.bold(p.beforeVersion)} -> ${import_picocolors18.default.bold(p.currentCLIVersion)}`).join(`
287
287
  `)}`):import_node_logger23.logger.info(`Upgrading from ${import_picocolors18.default.bold(storybookProjects[0].beforeVersion)} to ${import_picocolors18.default.bold(storybookProjects[0].currentCLIVersion)}`);let automigrationResults={},doctorResults={},handleInterruption=async()=>{throw import_node_logger23.logger.log(`
288
288
 
package/package.json CHANGED
@@ -1,9 +1,14 @@
1
1
  {
2
2
  "name": "@storybook/cli",
3
- "version": "9.1.2",
4
- "description": "Storybook CLI",
3
+ "version": "9.1.3",
4
+ "description": "Storybook CLI: Develop, document, and test UI components in isolation",
5
5
  "keywords": [
6
- "storybook"
6
+ "storybook",
7
+ "cli",
8
+ "dev",
9
+ "build",
10
+ "upgrade",
11
+ "init"
7
12
  ],
8
13
  "homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/cli-storybook",
9
14
  "bugs": {
@@ -41,13 +46,13 @@
41
46
  "prep": "jiti ../../../scripts/prepare/bundle.ts"
42
47
  },
43
48
  "dependencies": {
44
- "@storybook/codemod": "9.1.2",
49
+ "@storybook/codemod": "9.1.3",
45
50
  "@types/semver": "^7.3.4",
46
51
  "commander": "^12.1.0",
47
- "create-storybook": "9.1.2",
52
+ "create-storybook": "9.1.3",
48
53
  "giget": "^1.0.0",
49
54
  "jscodeshift": "^0.15.1",
50
- "storybook": "9.1.2",
55
+ "storybook": "9.1.3",
51
56
  "ts-dedent": "^2.0.0"
52
57
  },
53
58
  "devDependencies": {