@storybook/cli 8.0.0-alpha.6 → 8.0.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/generate.js CHANGED
@@ -6,9 +6,9 @@
6
6
  `&&(escapeCode&&code&&(returnValue+=wrapAnsi(escapeCode)),escapeUrl&&(returnValue+=wrapAnsiHyperlink(escapeUrl)))}return returnValue};module2.exports=(string,columns,options)=>String(string).normalize().replace(/\r\n/g,`
7
7
  `).split(`
8
8
  `).map(line=>exec2(line,columns,options)).join(`
9
- `)}});var require_boxen=__commonJS({"../../node_modules/boxen/index.js"(exports,module2){"use strict";var stringWidth=require_string_width(),chalk34=require("chalk"),widestLine=require_widest_line(),cliBoxes=require_cli_boxes(),camelCase=require_camelcase(),ansiAlign=require_ansi_align(),wrapAnsi=require_wrap_ansi(),NL=`
9
+ `)}});var require_boxen=__commonJS({"../../node_modules/boxen/index.js"(exports,module2){"use strict";var stringWidth=require_string_width(),chalk35=require("chalk"),widestLine=require_widest_line(),cliBoxes=require_cli_boxes(),camelCase=require_camelcase(),ansiAlign=require_ansi_align(),wrapAnsi=require_wrap_ansi(),NL=`
10
10
  `,PAD=" ",terminalColumns=()=>{let{env,stdout,stderr}=process;return stdout&&stdout.columns?stdout.columns:stderr&&stderr.columns?stderr.columns:env.COLUMNS?Number.parseInt(env.COLUMNS,10):80},getObject=detail=>typeof detail=="number"?{top:detail,right:detail*3,bottom:detail,left:detail*3}:{top:0,right:0,bottom:0,left:0,...detail},getBorderChars=borderStyle=>{let sides=["topLeft","topRight","bottomRight","bottomLeft","vertical","horizontal"],chararacters;if(typeof borderStyle=="string"){if(chararacters=cliBoxes[borderStyle],!chararacters)throw new TypeError(`Invalid border style: ${borderStyle}`)}else{for(let side of sides)if(!borderStyle[side]||typeof borderStyle[side]!="string")throw new TypeError(`Invalid border style: ${side}`);chararacters=borderStyle}return chararacters},makeTitle=(text,horizontal,alignement)=>{let title="",textWidth=stringWidth(text);switch(alignement){case"left":title=text+horizontal.slice(textWidth);break;case"right":title=horizontal.slice(textWidth)+text;break;default:horizontal=horizontal.slice(textWidth),horizontal.length%2===1?(horizontal=horizontal.slice(Math.floor(horizontal.length/2)),title=horizontal.slice(1)+text+horizontal):(horizontal=horizontal.slice(horizontal.length/2),title=horizontal+text+horizontal);break}return title},makeContentText=(text,padding,columns,align)=>{text=ansiAlign(text,{align});let lines=text.split(NL),textWidth=widestLine(text),max=columns-padding.left-padding.right;if(textWidth>max){let newLines=[];for(let line of lines){let createdLines=wrapAnsi(line,max,{hard:!0}),alignedLinesArray=ansiAlign(createdLines,{align}).split(`
11
- `),longestLength=Math.max(...alignedLinesArray.map(s=>stringWidth(s)));for(let alignedLine of alignedLinesArray){let paddedLine;switch(align){case"center":paddedLine=PAD.repeat((max-longestLength)/2)+alignedLine;break;case"right":paddedLine=PAD.repeat(max-longestLength)+alignedLine;break;default:paddedLine=alignedLine;break}newLines.push(paddedLine)}}lines=newLines}align==="center"&&textWidth<max?lines=lines.map(line=>PAD.repeat((max-textWidth)/2)+line):align==="right"&&textWidth<max&&(lines=lines.map(line=>PAD.repeat(max-textWidth)+line));let paddingLeft=PAD.repeat(padding.left),paddingRight=PAD.repeat(padding.right);return lines=lines.map(line=>paddingLeft+line+paddingRight),lines=lines.map(line=>{if(columns-stringWidth(line)>0)switch(align){case"center":return line+PAD.repeat(columns-stringWidth(line));case"right":return line+PAD.repeat(columns-stringWidth(line));default:return line+PAD.repeat(columns-stringWidth(line))}return line}),padding.top>0&&(lines=new Array(padding.top).fill(PAD.repeat(columns)).concat(lines)),padding.bottom>0&&(lines=lines.concat(new Array(padding.bottom).fill(PAD.repeat(columns)))),lines.join(NL)},isHex=color=>color.match(/^#(?:[0-f]{3}){1,2}$/i),isColorValid=color=>typeof color=="string"&&(chalk34[color]||isHex(color)),getColorFn=color=>isHex(color)?chalk34.hex(color):chalk34[color],getBGColorFn=color=>isHex(color)?chalk34.bgHex(color):chalk34[camelCase(["bg",color])];module2.exports=(text,options)=>{options={padding:0,borderStyle:"single",dimBorder:!1,textAlignment:"left",float:"left",titleAlignment:"left",...options},options.align&&(options.textAlignment=options.align);let BORDERS_WIDTH=2;if(options.borderColor&&!isColorValid(options.borderColor))throw new Error(`${options.borderColor} is not a valid borderColor`);if(options.backgroundColor&&!isColorValid(options.backgroundColor))throw new Error(`${options.backgroundColor} is not a valid backgroundColor`);let chars=getBorderChars(options.borderStyle),padding=getObject(options.padding),margin=getObject(options.margin),colorizeBorder=border=>{let newBorder=options.borderColor?getColorFn(options.borderColor)(border):border;return options.dimBorder?chalk34.dim(newBorder):newBorder},colorizeContent=content=>options.backgroundColor?getBGColorFn(options.backgroundColor)(content):content,columns=terminalColumns(),contentWidth=widestLine(wrapAnsi(text,columns-BORDERS_WIDTH,{hard:!0,trim:!1}))+padding.left+padding.right,title=options.title&&options.title.slice(0,columns-4-margin.left-margin.right);if(title&&(title=` ${title} `,stringWidth(title)>contentWidth&&(contentWidth=stringWidth(title))),margin.left&&margin.right&&contentWidth+BORDERS_WIDTH+margin.left+margin.right>columns){let multiplier=(columns-contentWidth-BORDERS_WIDTH)/(margin.left+margin.right);margin.left=Math.max(0,Math.floor(margin.left*multiplier)),margin.right=Math.max(0,Math.floor(margin.right*multiplier))}contentWidth=Math.min(contentWidth,columns-BORDERS_WIDTH-margin.left-margin.right),text=makeContentText(text,padding,contentWidth,options.textAlignment);let marginLeft=PAD.repeat(margin.left);if(options.float==="center"){let marginWidth=Math.max((columns-contentWidth-BORDERS_WIDTH)/2,0);marginLeft=PAD.repeat(marginWidth)}else if(options.float==="right"){let marginWidth=Math.max(columns-contentWidth-margin.right-BORDERS_WIDTH,0);marginLeft=PAD.repeat(marginWidth)}let horizontal=chars.horizontal.repeat(contentWidth),top=colorizeBorder(NL.repeat(margin.top)+marginLeft+chars.topLeft+(title?makeTitle(title,horizontal,options.titleAlignment):horizontal)+chars.topRight),bottom=colorizeBorder(marginLeft+chars.bottomLeft+horizontal+chars.bottomRight+NL.repeat(margin.bottom)),side=colorizeBorder(chars.vertical),LINE_SEPARATOR=contentWidth+BORDERS_WIDTH+margin.left>=columns?"":NL,middle=text.split(NL).map(line=>marginLeft+side+colorizeContent(line)+side).join(LINE_SEPARATOR);return top+LINE_SEPARATOR+middle+LINE_SEPARATOR+bottom};module2.exports._borderStyles=cliBoxes}});var import_commander=__toESM(require("commander")),import_chalk33=__toESM(require("chalk")),import_envinfo=__toESM(require("envinfo")),import_leven=__toESM(require("leven")),import_read_pkg_up3=require("read-pkg-up"),import_node_logger9=require("@storybook/node-logger"),import_telemetry4=require("@storybook/telemetry"),import_tiny_invariant10=__toESM(require("tiny-invariant"));var import_chalk5=__toESM(require("chalk")),import_prompts6=__toESM(require("prompts")),import_telemetry2=require("@storybook/telemetry"),import_core_server=require("@storybook/core-server"),import_server_errors3=require("@storybook/core-events/server-errors"),import_ts_dedent12=__toESM(require("ts-dedent")),import_boxen2=__toESM(require_boxen());var import_semver=require("semver");function eqMajor(versionRange,major){return(0,import_semver.validRange)(versionRange)?(0,import_semver.minVersion)(versionRange)?.major===major:!1}var externalFrameworks=[{name:"qwik",packageName:"storybook-framework-qwik"},{name:"solid",frameworks:["storybook-solidjs-vite"],renderer:"storybook-solidjs"}];var ProjectType=(ProjectType2=>(ProjectType2.UNDETECTED="UNDETECTED",ProjectType2.UNSUPPORTED="UNSUPPORTED",ProjectType2.REACT="REACT",ProjectType2.REACT_SCRIPTS="REACT_SCRIPTS",ProjectType2.REACT_NATIVE="REACT_NATIVE",ProjectType2.REACT_PROJECT="REACT_PROJECT",ProjectType2.WEBPACK_REACT="WEBPACK_REACT",ProjectType2.NEXTJS="NEXTJS",ProjectType2.VUE3="VUE3",ProjectType2.ANGULAR="ANGULAR",ProjectType2.EMBER="EMBER",ProjectType2.WEB_COMPONENTS="WEB_COMPONENTS",ProjectType2.HTML="HTML",ProjectType2.QWIK="QWIK",ProjectType2.PREACT="PREACT",ProjectType2.SVELTE="SVELTE",ProjectType2.SVELTEKIT="SVELTEKIT",ProjectType2.SERVER="SERVER",ProjectType2.NX="NX",ProjectType2.SOLID="SOLID",ProjectType2))(ProjectType||{});var supportedTemplates=[{preset:"VUE3",dependencies:{vue:versionRange=>versionRange==="next"||eqMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies?.some(Boolean)??!1},{preset:"EMBER",dependencies:["ember-cli"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"NEXTJS",dependencies:["next"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"QWIK",dependencies:["@builder.io/qwik"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"REACT_PROJECT",peerDependencies:["react"],matcherFunction:({peerDependencies})=>peerDependencies?.every(Boolean)??!0},{preset:"REACT_NATIVE",dependencies:["react-native","react-native-scripts"],matcherFunction:({dependencies})=>dependencies?.some(Boolean)??!1},{preset:"REACT_SCRIPTS",files:["/node_modules/.bin/react-scripts"],dependencies:["react-scripts"],matcherFunction:({dependencies,files})=>(dependencies?.every(Boolean)||files?.every(Boolean))??!1},{preset:"ANGULAR",dependencies:["@angular/core"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"WEB_COMPONENTS",dependencies:["lit-element","lit-html","lit"],matcherFunction:({dependencies})=>dependencies?.some(Boolean)??!1},{preset:"PREACT",dependencies:["preact"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"SVELTEKIT",dependencies:["@sveltejs/kit"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"SVELTE",dependencies:["svelte"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"SOLID",dependencies:["solid-js"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"WEBPACK_REACT",dependencies:["react","webpack"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"REACT",dependencies:["react"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0}],unsupportedTemplate={preset:"UNSUPPORTED",dependencies:{nuxt:versionRange=>eqMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies?.some(Boolean)??!1},notInstallableProjectTypes=["UNDETECTED","UNSUPPORTED","NX"],installableProjectTypes=Object.values(ProjectType).filter(type=>!notInstallableProjectTypes.includes(type)).map(type=>type.toLowerCase());var fs2=__toESM(require("fs")),import_find_up2=__toESM(require("find-up")),import_semver3=__toESM(require("semver")),import_node_logger=require("@storybook/node-logger"),import_path3=require("path"),import_prompts=__toESM(require("prompts"));var import_chalk=__toESM(require("chalk")),import_fs=__toESM(require("fs")),import_fs_extra=__toESM(require("fs-extra")),import_path2=__toESM(require("path")),import_semver2=require("semver"),import_strip_json_comments=__toESM(require("strip-json-comments")),import_find_up=__toESM(require("find-up")),import_tiny_invariant2=__toESM(require("tiny-invariant"));var import_path=require("path"),import_get_tarball=__toESM(require("@ndelangen/get-tarball")),import_get_npm_tarball_url=__toESM(require("get-npm-tarball-url")),tempy=__toESM(require("tempy")),import_tiny_invariant=__toESM(require("tiny-invariant"));var versions_default={"@storybook/addon-a11y":"8.0.0-alpha.6","@storybook/addon-actions":"8.0.0-alpha.6","@storybook/addon-backgrounds":"8.0.0-alpha.6","@storybook/addon-controls":"8.0.0-alpha.6","@storybook/addon-docs":"8.0.0-alpha.6","@storybook/addon-essentials":"8.0.0-alpha.6","@storybook/addon-highlight":"8.0.0-alpha.6","@storybook/addon-interactions":"8.0.0-alpha.6","@storybook/addon-jest":"8.0.0-alpha.6","@storybook/addon-links":"8.0.0-alpha.6","@storybook/addon-mdx-gfm":"8.0.0-alpha.6","@storybook/addon-measure":"8.0.0-alpha.6","@storybook/addon-outline":"8.0.0-alpha.6","@storybook/addon-storysource":"8.0.0-alpha.6","@storybook/addon-themes":"8.0.0-alpha.6","@storybook/addon-toolbars":"8.0.0-alpha.6","@storybook/addon-viewport":"8.0.0-alpha.6","@storybook/angular":"8.0.0-alpha.6","@storybook/blocks":"8.0.0-alpha.6","@storybook/builder-manager":"8.0.0-alpha.6","@storybook/builder-vite":"8.0.0-alpha.6","@storybook/builder-webpack5":"8.0.0-alpha.6","@storybook/channels":"8.0.0-alpha.6","@storybook/cli":"8.0.0-alpha.6","@storybook/client-logger":"8.0.0-alpha.6","@storybook/codemod":"8.0.0-alpha.6","@storybook/components":"8.0.0-alpha.6","@storybook/core-common":"8.0.0-alpha.6","@storybook/core-events":"8.0.0-alpha.6","@storybook/core-server":"8.0.0-alpha.6","@storybook/core-webpack":"8.0.0-alpha.6","@storybook/csf-plugin":"8.0.0-alpha.6","@storybook/csf-tools":"8.0.0-alpha.6","@storybook/docs-tools":"8.0.0-alpha.6","@storybook/ember":"8.0.0-alpha.6","@storybook/html":"8.0.0-alpha.6","@storybook/html-vite":"8.0.0-alpha.6","@storybook/html-webpack5":"8.0.0-alpha.6","@storybook/instrumenter":"8.0.0-alpha.6","@storybook/manager":"8.0.0-alpha.6","@storybook/manager-api":"8.0.0-alpha.6","@storybook/nextjs":"8.0.0-alpha.6","@storybook/node-logger":"8.0.0-alpha.6","@storybook/preact":"8.0.0-alpha.6","@storybook/preact-vite":"8.0.0-alpha.6","@storybook/preact-webpack5":"8.0.0-alpha.6","@storybook/preset-create-react-app":"8.0.0-alpha.6","@storybook/preset-html-webpack":"8.0.0-alpha.6","@storybook/preset-preact-webpack":"8.0.0-alpha.6","@storybook/preset-react-webpack":"8.0.0-alpha.6","@storybook/preset-server-webpack":"8.0.0-alpha.6","@storybook/preset-svelte-webpack":"8.0.0-alpha.6","@storybook/preset-vue3-webpack":"8.0.0-alpha.6","@storybook/preset-web-components-webpack":"8.0.0-alpha.6","@storybook/preview":"8.0.0-alpha.6","@storybook/preview-api":"8.0.0-alpha.6","@storybook/react":"8.0.0-alpha.6","@storybook/react-dom-shim":"8.0.0-alpha.6","@storybook/react-vite":"8.0.0-alpha.6","@storybook/react-webpack5":"8.0.0-alpha.6","@storybook/router":"8.0.0-alpha.6","@storybook/server":"8.0.0-alpha.6","@storybook/server-webpack5":"8.0.0-alpha.6","@storybook/source-loader":"8.0.0-alpha.6","@storybook/svelte":"8.0.0-alpha.6","@storybook/svelte-vite":"8.0.0-alpha.6","@storybook/svelte-webpack5":"8.0.0-alpha.6","@storybook/sveltekit":"8.0.0-alpha.6","@storybook/telemetry":"8.0.0-alpha.6","@storybook/test":"8.0.0-alpha.6","@storybook/theming":"8.0.0-alpha.6","@storybook/types":"8.0.0-alpha.6","@storybook/vue3":"8.0.0-alpha.6","@storybook/vue3-vite":"8.0.0-alpha.6","@storybook/vue3-webpack5":"8.0.0-alpha.6","@storybook/web-components":"8.0.0-alpha.6","@storybook/web-components-vite":"8.0.0-alpha.6","@storybook/web-components-webpack5":"8.0.0-alpha.6",sb:"8.0.0-alpha.6",storybook:"8.0.0-alpha.6"};function getCliDir(){return(0,import_path.dirname)(require.resolve("@storybook/cli/package.json"))}var resolveUsingBranchInstall=async(packageManager,request)=>{let tempDirectory=tempy.directory(),version=versions_default[request]||await packageManager.latestVersion(request),url=(0,import_get_npm_tarball_url.default)(request,version,{registry:await packageManager.getRegistryURL()});return await(0,import_get_tarball.default)({url,dir:tempDirectory}),(0,import_path.join)(tempDirectory,"package")};async function getRendererDir(packageManager,renderer){let externalFramework=externalFrameworks.find(framework=>framework.name===renderer),frameworkPackageName=externalFramework?.renderer||externalFramework?.packageName||`@storybook/${renderer}`,packageJsonPath=(0,import_path.join)(frameworkPackageName,"package.json"),errors=[];try{return(0,import_path.dirname)(require.resolve(packageJsonPath,{paths:[process.cwd()]}))}catch(e){(0,import_tiny_invariant.default)(e instanceof Error),errors.push(e)}try{return await resolveUsingBranchInstall(packageManager,frameworkPackageName)}catch(e){(0,import_tiny_invariant.default)(e instanceof Error),errors.push(e)}throw new Error(`Cannot find ${packageJsonPath}, ${errors.map(e=>e.stack).join(`
11
+ `),longestLength=Math.max(...alignedLinesArray.map(s=>stringWidth(s)));for(let alignedLine of alignedLinesArray){let paddedLine;switch(align){case"center":paddedLine=PAD.repeat((max-longestLength)/2)+alignedLine;break;case"right":paddedLine=PAD.repeat(max-longestLength)+alignedLine;break;default:paddedLine=alignedLine;break}newLines.push(paddedLine)}}lines=newLines}align==="center"&&textWidth<max?lines=lines.map(line=>PAD.repeat((max-textWidth)/2)+line):align==="right"&&textWidth<max&&(lines=lines.map(line=>PAD.repeat(max-textWidth)+line));let paddingLeft=PAD.repeat(padding.left),paddingRight=PAD.repeat(padding.right);return lines=lines.map(line=>paddingLeft+line+paddingRight),lines=lines.map(line=>{if(columns-stringWidth(line)>0)switch(align){case"center":return line+PAD.repeat(columns-stringWidth(line));case"right":return line+PAD.repeat(columns-stringWidth(line));default:return line+PAD.repeat(columns-stringWidth(line))}return line}),padding.top>0&&(lines=new Array(padding.top).fill(PAD.repeat(columns)).concat(lines)),padding.bottom>0&&(lines=lines.concat(new Array(padding.bottom).fill(PAD.repeat(columns)))),lines.join(NL)},isHex=color=>color.match(/^#(?:[0-f]{3}){1,2}$/i),isColorValid=color=>typeof color=="string"&&(chalk35[color]||isHex(color)),getColorFn=color=>isHex(color)?chalk35.hex(color):chalk35[color],getBGColorFn=color=>isHex(color)?chalk35.bgHex(color):chalk35[camelCase(["bg",color])];module2.exports=(text,options)=>{options={padding:0,borderStyle:"single",dimBorder:!1,textAlignment:"left",float:"left",titleAlignment:"left",...options},options.align&&(options.textAlignment=options.align);let BORDERS_WIDTH=2;if(options.borderColor&&!isColorValid(options.borderColor))throw new Error(`${options.borderColor} is not a valid borderColor`);if(options.backgroundColor&&!isColorValid(options.backgroundColor))throw new Error(`${options.backgroundColor} is not a valid backgroundColor`);let chars=getBorderChars(options.borderStyle),padding=getObject(options.padding),margin=getObject(options.margin),colorizeBorder=border=>{let newBorder=options.borderColor?getColorFn(options.borderColor)(border):border;return options.dimBorder?chalk35.dim(newBorder):newBorder},colorizeContent=content=>options.backgroundColor?getBGColorFn(options.backgroundColor)(content):content,columns=terminalColumns(),contentWidth=widestLine(wrapAnsi(text,columns-BORDERS_WIDTH,{hard:!0,trim:!1}))+padding.left+padding.right,title=options.title&&options.title.slice(0,columns-4-margin.left-margin.right);if(title&&(title=` ${title} `,stringWidth(title)>contentWidth&&(contentWidth=stringWidth(title))),margin.left&&margin.right&&contentWidth+BORDERS_WIDTH+margin.left+margin.right>columns){let multiplier=(columns-contentWidth-BORDERS_WIDTH)/(margin.left+margin.right);margin.left=Math.max(0,Math.floor(margin.left*multiplier)),margin.right=Math.max(0,Math.floor(margin.right*multiplier))}contentWidth=Math.min(contentWidth,columns-BORDERS_WIDTH-margin.left-margin.right),text=makeContentText(text,padding,contentWidth,options.textAlignment);let marginLeft=PAD.repeat(margin.left);if(options.float==="center"){let marginWidth=Math.max((columns-contentWidth-BORDERS_WIDTH)/2,0);marginLeft=PAD.repeat(marginWidth)}else if(options.float==="right"){let marginWidth=Math.max(columns-contentWidth-margin.right-BORDERS_WIDTH,0);marginLeft=PAD.repeat(marginWidth)}let horizontal=chars.horizontal.repeat(contentWidth),top=colorizeBorder(NL.repeat(margin.top)+marginLeft+chars.topLeft+(title?makeTitle(title,horizontal,options.titleAlignment):horizontal)+chars.topRight),bottom=colorizeBorder(marginLeft+chars.bottomLeft+horizontal+chars.bottomRight+NL.repeat(margin.bottom)),side=colorizeBorder(chars.vertical),LINE_SEPARATOR=contentWidth+BORDERS_WIDTH+margin.left>=columns?"":NL,middle=text.split(NL).map(line=>marginLeft+side+colorizeContent(line)+side).join(LINE_SEPARATOR);return top+LINE_SEPARATOR+middle+LINE_SEPARATOR+bottom};module2.exports._borderStyles=cliBoxes}});var import_commander=__toESM(require("commander")),import_chalk34=__toESM(require("chalk")),import_envinfo=__toESM(require("envinfo")),import_leven=__toESM(require("leven")),import_read_pkg_up3=require("read-pkg-up"),import_node_logger9=require("@storybook/node-logger"),import_telemetry4=require("@storybook/telemetry"),import_tiny_invariant10=__toESM(require("tiny-invariant"));var import_chalk5=__toESM(require("chalk")),import_prompts6=__toESM(require("prompts")),import_telemetry2=require("@storybook/telemetry"),import_core_server=require("@storybook/core-server"),import_server_errors3=require("@storybook/core-events/server-errors"),import_ts_dedent12=__toESM(require("ts-dedent")),import_boxen2=__toESM(require_boxen());var import_semver=require("semver");function eqMajor(versionRange,major){return(0,import_semver.validRange)(versionRange)?(0,import_semver.minVersion)(versionRange)?.major===major:!1}var externalFrameworks=[{name:"qwik",packageName:"storybook-framework-qwik"},{name:"solid",frameworks:["storybook-solidjs-vite"],renderer:"storybook-solidjs"}];var ProjectType=(ProjectType2=>(ProjectType2.UNDETECTED="UNDETECTED",ProjectType2.UNSUPPORTED="UNSUPPORTED",ProjectType2.REACT="REACT",ProjectType2.REACT_SCRIPTS="REACT_SCRIPTS",ProjectType2.REACT_NATIVE="REACT_NATIVE",ProjectType2.REACT_PROJECT="REACT_PROJECT",ProjectType2.WEBPACK_REACT="WEBPACK_REACT",ProjectType2.NEXTJS="NEXTJS",ProjectType2.VUE3="VUE3",ProjectType2.ANGULAR="ANGULAR",ProjectType2.EMBER="EMBER",ProjectType2.WEB_COMPONENTS="WEB_COMPONENTS",ProjectType2.HTML="HTML",ProjectType2.QWIK="QWIK",ProjectType2.PREACT="PREACT",ProjectType2.SVELTE="SVELTE",ProjectType2.SVELTEKIT="SVELTEKIT",ProjectType2.SERVER="SERVER",ProjectType2.NX="NX",ProjectType2.SOLID="SOLID",ProjectType2))(ProjectType||{});var supportedTemplates=[{preset:"VUE3",dependencies:{vue:versionRange=>versionRange==="next"||eqMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies?.some(Boolean)??!1},{preset:"EMBER",dependencies:["ember-cli"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"NEXTJS",dependencies:["next"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"QWIK",dependencies:["@builder.io/qwik"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"REACT_PROJECT",peerDependencies:["react"],matcherFunction:({peerDependencies})=>peerDependencies?.every(Boolean)??!0},{preset:"REACT_NATIVE",dependencies:["react-native","react-native-scripts"],matcherFunction:({dependencies})=>dependencies?.some(Boolean)??!1},{preset:"REACT_SCRIPTS",files:["/node_modules/.bin/react-scripts"],dependencies:["react-scripts"],matcherFunction:({dependencies,files})=>(dependencies?.every(Boolean)||files?.every(Boolean))??!1},{preset:"ANGULAR",dependencies:["@angular/core"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"WEB_COMPONENTS",dependencies:["lit-element","lit-html","lit"],matcherFunction:({dependencies})=>dependencies?.some(Boolean)??!1},{preset:"PREACT",dependencies:["preact"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"SVELTEKIT",dependencies:["@sveltejs/kit"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"SVELTE",dependencies:["svelte"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"SOLID",dependencies:["solid-js"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"WEBPACK_REACT",dependencies:["react","webpack"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0},{preset:"REACT",dependencies:["react"],matcherFunction:({dependencies})=>dependencies?.every(Boolean)??!0}],unsupportedTemplate={preset:"UNSUPPORTED",dependencies:{nuxt:versionRange=>eqMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies?.some(Boolean)??!1},notInstallableProjectTypes=["UNDETECTED","UNSUPPORTED","NX"],installableProjectTypes=Object.values(ProjectType).filter(type=>!notInstallableProjectTypes.includes(type)).map(type=>type.toLowerCase());var fs2=__toESM(require("fs")),import_find_up2=__toESM(require("find-up")),import_semver3=__toESM(require("semver")),import_node_logger=require("@storybook/node-logger"),import_path3=require("path"),import_prompts=__toESM(require("prompts"));var import_chalk=__toESM(require("chalk")),import_fs=__toESM(require("fs")),import_fs_extra=__toESM(require("fs-extra")),import_path2=__toESM(require("path")),import_semver2=require("semver"),import_strip_json_comments=__toESM(require("strip-json-comments")),import_find_up=__toESM(require("find-up")),import_tiny_invariant2=__toESM(require("tiny-invariant"));var import_path=require("path"),import_get_tarball=__toESM(require("@ndelangen/get-tarball")),import_get_npm_tarball_url=__toESM(require("get-npm-tarball-url")),tempy=__toESM(require("tempy")),import_tiny_invariant=__toESM(require("tiny-invariant"));var versions_default={"@storybook/addon-a11y":"8.0.0-alpha.7","@storybook/addon-actions":"8.0.0-alpha.7","@storybook/addon-backgrounds":"8.0.0-alpha.7","@storybook/addon-controls":"8.0.0-alpha.7","@storybook/addon-docs":"8.0.0-alpha.7","@storybook/addon-essentials":"8.0.0-alpha.7","@storybook/addon-highlight":"8.0.0-alpha.7","@storybook/addon-interactions":"8.0.0-alpha.7","@storybook/addon-jest":"8.0.0-alpha.7","@storybook/addon-links":"8.0.0-alpha.7","@storybook/addon-mdx-gfm":"8.0.0-alpha.7","@storybook/addon-measure":"8.0.0-alpha.7","@storybook/addon-outline":"8.0.0-alpha.7","@storybook/addon-storysource":"8.0.0-alpha.7","@storybook/addon-themes":"8.0.0-alpha.7","@storybook/addon-toolbars":"8.0.0-alpha.7","@storybook/addon-viewport":"8.0.0-alpha.7","@storybook/angular":"8.0.0-alpha.7","@storybook/blocks":"8.0.0-alpha.7","@storybook/builder-manager":"8.0.0-alpha.7","@storybook/builder-vite":"8.0.0-alpha.7","@storybook/builder-webpack5":"8.0.0-alpha.7","@storybook/channels":"8.0.0-alpha.7","@storybook/cli":"8.0.0-alpha.7","@storybook/client-logger":"8.0.0-alpha.7","@storybook/codemod":"8.0.0-alpha.7","@storybook/components":"8.0.0-alpha.7","@storybook/core-common":"8.0.0-alpha.7","@storybook/core-events":"8.0.0-alpha.7","@storybook/core-server":"8.0.0-alpha.7","@storybook/core-webpack":"8.0.0-alpha.7","@storybook/csf-plugin":"8.0.0-alpha.7","@storybook/csf-tools":"8.0.0-alpha.7","@storybook/docs-tools":"8.0.0-alpha.7","@storybook/ember":"8.0.0-alpha.7","@storybook/html":"8.0.0-alpha.7","@storybook/html-vite":"8.0.0-alpha.7","@storybook/html-webpack5":"8.0.0-alpha.7","@storybook/instrumenter":"8.0.0-alpha.7","@storybook/manager":"8.0.0-alpha.7","@storybook/manager-api":"8.0.0-alpha.7","@storybook/nextjs":"8.0.0-alpha.7","@storybook/node-logger":"8.0.0-alpha.7","@storybook/preact":"8.0.0-alpha.7","@storybook/preact-vite":"8.0.0-alpha.7","@storybook/preact-webpack5":"8.0.0-alpha.7","@storybook/preset-create-react-app":"8.0.0-alpha.7","@storybook/preset-html-webpack":"8.0.0-alpha.7","@storybook/preset-preact-webpack":"8.0.0-alpha.7","@storybook/preset-react-webpack":"8.0.0-alpha.7","@storybook/preset-server-webpack":"8.0.0-alpha.7","@storybook/preset-svelte-webpack":"8.0.0-alpha.7","@storybook/preset-vue3-webpack":"8.0.0-alpha.7","@storybook/preset-web-components-webpack":"8.0.0-alpha.7","@storybook/preview":"8.0.0-alpha.7","@storybook/preview-api":"8.0.0-alpha.7","@storybook/react":"8.0.0-alpha.7","@storybook/react-dom-shim":"8.0.0-alpha.7","@storybook/react-vite":"8.0.0-alpha.7","@storybook/react-webpack5":"8.0.0-alpha.7","@storybook/router":"8.0.0-alpha.7","@storybook/server":"8.0.0-alpha.7","@storybook/server-webpack5":"8.0.0-alpha.7","@storybook/source-loader":"8.0.0-alpha.7","@storybook/svelte":"8.0.0-alpha.7","@storybook/svelte-vite":"8.0.0-alpha.7","@storybook/svelte-webpack5":"8.0.0-alpha.7","@storybook/sveltekit":"8.0.0-alpha.7","@storybook/telemetry":"8.0.0-alpha.7","@storybook/test":"8.0.0-alpha.7","@storybook/theming":"8.0.0-alpha.7","@storybook/types":"8.0.0-alpha.7","@storybook/vue3":"8.0.0-alpha.7","@storybook/vue3-vite":"8.0.0-alpha.7","@storybook/vue3-webpack5":"8.0.0-alpha.7","@storybook/web-components":"8.0.0-alpha.7","@storybook/web-components-vite":"8.0.0-alpha.7","@storybook/web-components-webpack5":"8.0.0-alpha.7",sb:"8.0.0-alpha.7",storybook:"8.0.0-alpha.7"};function getCliDir(){return(0,import_path.dirname)(require.resolve("@storybook/cli/package.json"))}var resolveUsingBranchInstall=async(packageManager,request)=>{let tempDirectory=tempy.directory(),version=versions_default[request]||await packageManager.latestVersion(request),url=(0,import_get_npm_tarball_url.default)(request,version,{registry:await packageManager.getRegistryURL()});return await(0,import_get_tarball.default)({url,dir:tempDirectory}),(0,import_path.join)(tempDirectory,"package")};async function getRendererDir(packageManager,renderer){let externalFramework=externalFrameworks.find(framework=>framework.name===renderer),frameworkPackageName=externalFramework?.renderer||externalFramework?.packageName||`@storybook/${renderer}`,packageJsonPath=(0,import_path.join)(frameworkPackageName,"package.json"),errors=[];try{return(0,import_path.dirname)(require.resolve(packageJsonPath,{paths:[process.cwd()]}))}catch(e){(0,import_tiny_invariant.default)(e instanceof Error),errors.push(e)}try{return await resolveUsingBranchInstall(packageManager,frameworkPackageName)}catch(e){(0,import_tiny_invariant.default)(e instanceof Error),errors.push(e)}throw new Error(`Cannot find ${packageJsonPath}, ${errors.map(e=>e.stack).join(`
12
12
 
13
13
  `)}`)}var logger=console;var commandLog=message=>(process.stdout.write(import_chalk.default.cyan(" \u2022 ")+message),(errorMessage,errorInfo)=>{if(errorMessage){if(process.stdout.write(`. ${import_chalk.default.red("\u2716")}
14
14
  `),logger.error(`
@@ -47,7 +47,7 @@ We were not able to detect the right builder for your project. Please select one
47
47
 
48
48
  export default preview;
49
49
  `.replace(`
50
- `,"").trim();try{let prettier=(await import("prettier")).default;preview=prettier.format(preview,{...prettier.resolveConfig.sync(process.cwd()),filepath:previewPath})}catch{import_node_logger2.logger.verbose(`Failed to prettify ${previewPath}`)}await import_fs_extra2.default.writeFile(previewPath,preview,{encoding:"utf8"})}var import_util_deprecate=__toESM(require("util-deprecate")),useNpmWarning=(0,import_util_deprecate.default)(()=>{},"`--use-npm` is deprecated and will be removed in Storybook 8.0. \nPlease use the `--package-manager=npm` option instead.\nRead more at https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#cli-option---use-npm-deprecated");var import_node_path=__toESM(require("path")),import_cross_spawn=require("cross-spawn"),import_find_up7=require("find-up");var import_sort=__toESM(require("semver/functions/sort")),import_os=require("os"),import_ts_dedent3=__toESM(require("ts-dedent")),import_find_up3=require("find-up"),import_fs3=require("fs"),import_path7=__toESM(require("path")),import_semver5=__toESM(require("semver")),import_node_logger3=require("@storybook/node-logger");var import_chalk2=__toESM(require("chalk")),import_semver4=require("semver"),import_execa=require("execa"),import_path5=__toESM(require("path")),import_fs2=__toESM(require("fs")),import_ts_dedent2=__toESM(require("ts-dedent")),import_fs_extra3=require("fs-extra"),import_tiny_invariant3=__toESM(require("tiny-invariant"));var logger4=console;function getPackageDetails(pkg2){let idx=pkg2.lastIndexOf("@");if(idx<=0)return[pkg2,void 0];let packageName=pkg2.slice(0,idx),packageVersion=pkg2.slice(idx+1);return[packageName,packageVersion]}var JsPackageManager=class{async setRegistryURL(url){url?await this.executeCommand({command:"npm",args:["config","set","registry",url]}):await this.executeCommand({command:"npm",args:["config","delete","registry"]})}async getRegistryURL(){let url=(await this.executeCommand({command:"npm",args:["config","get","registry"]})).trim();return url==="undefined"?void 0:url}constructor(options){this.cwd=options?.cwd||process.cwd()}isStorybookInMonorepo(){let cwd=process.cwd();for(;;){try{let turboJsonPath=`${cwd}/turbo.json`,rushJsonPath=`${cwd}/rush.json`;if(import_fs2.default.existsSync(turboJsonPath)||import_fs2.default.existsSync(rushJsonPath))return!0;let packageJsonPath=require.resolve(`${cwd}/package.json`),packageJsonFile=(0,import_fs_extra3.readFileSync)(packageJsonPath,"utf8");if(JSON.parse(packageJsonFile).workspaces)return!0}catch{}let parentDir=import_path5.default.dirname(cwd);if(parentDir===cwd)break;cwd=parentDir}return!1}async installDependencies(){let done=commandLog("Preparing to install dependencies");done(),logger4.log(),logger4.log(),done=commandLog("Installing dependencies");try{await this.runInstall(),done()}catch(e){throw done("An error occurred while installing dependencies."),new HandledError(e)}}packageJsonPath(){if(!this.cwd)throw new Error("Missing cwd");return import_path5.default.resolve(this.cwd,"package.json")}async readPackageJson(){let packageJsonPath=this.packageJsonPath();if(!import_fs2.default.existsSync(packageJsonPath))throw new Error(`Could not read package.json file at ${packageJsonPath}`);let jsonContent=await(0,import_fs_extra3.readFile)(packageJsonPath,"utf8");return JSON.parse(jsonContent)}async writePackageJson(packageJson){let packageJsonToWrite={...packageJson};packageJsonToWrite.dependencies&&Object.keys(packageJsonToWrite.dependencies).length===0&&delete packageJsonToWrite.dependencies,packageJsonToWrite.devDependencies&&Object.keys(packageJsonToWrite.devDependencies).length===0&&delete packageJsonToWrite.devDependencies,packageJsonToWrite.peerDependencies&&Object.keys(packageJsonToWrite.peerDependencies).length===0&&delete packageJsonToWrite.peerDependencies;let content=`${JSON.stringify(packageJsonToWrite,null,2)}
50
+ `,"").trim();try{let prettier=(await import("prettier")).default;preview=prettier.format(preview,{...prettier.resolveConfig.sync(process.cwd()),filepath:previewPath})}catch{import_node_logger2.logger.verbose(`Failed to prettify ${previewPath}`)}await import_fs_extra2.default.writeFile(previewPath,preview,{encoding:"utf8"})}var import_node_path=__toESM(require("path")),import_cross_spawn=require("cross-spawn"),import_find_up7=require("find-up");var import_sort=__toESM(require("semver/functions/sort")),import_os=require("os"),import_ts_dedent3=__toESM(require("ts-dedent")),import_find_up3=require("find-up"),import_fs3=require("fs"),import_path7=__toESM(require("path")),import_semver5=__toESM(require("semver")),import_node_logger3=require("@storybook/node-logger");var import_chalk2=__toESM(require("chalk")),import_semver4=require("semver"),import_execa=require("execa"),import_path5=__toESM(require("path")),import_fs2=__toESM(require("fs")),import_ts_dedent2=__toESM(require("ts-dedent")),import_fs_extra3=require("fs-extra"),import_tiny_invariant3=__toESM(require("tiny-invariant"));var logger4=console;function getPackageDetails(pkg2){let idx=pkg2.lastIndexOf("@");if(idx<=0)return[pkg2,void 0];let packageName=pkg2.slice(0,idx),packageVersion=pkg2.slice(idx+1);return[packageName,packageVersion]}var JsPackageManager=class{async setRegistryURL(url){url?await this.executeCommand({command:"npm",args:["config","set","registry",url]}):await this.executeCommand({command:"npm",args:["config","delete","registry"]})}async getRegistryURL(){let url=(await this.executeCommand({command:"npm",args:["config","get","registry"]})).trim();return url==="undefined"?void 0:url}constructor(options){this.cwd=options?.cwd||process.cwd()}isStorybookInMonorepo(){let cwd=process.cwd();for(;;){try{let turboJsonPath=`${cwd}/turbo.json`,rushJsonPath=`${cwd}/rush.json`;if(import_fs2.default.existsSync(turboJsonPath)||import_fs2.default.existsSync(rushJsonPath))return!0;let packageJsonPath=require.resolve(`${cwd}/package.json`),packageJsonFile=(0,import_fs_extra3.readFileSync)(packageJsonPath,"utf8");if(JSON.parse(packageJsonFile).workspaces)return!0}catch{}let parentDir=import_path5.default.dirname(cwd);if(parentDir===cwd)break;cwd=parentDir}return!1}async installDependencies(){let done=commandLog("Preparing to install dependencies");done(),logger4.log(),logger4.log(),done=commandLog("Installing dependencies");try{await this.runInstall(),done()}catch(e){throw done("An error occurred while installing dependencies."),new HandledError(e)}}packageJsonPath(){if(!this.cwd)throw new Error("Missing cwd");return import_path5.default.resolve(this.cwd,"package.json")}async readPackageJson(){let packageJsonPath=this.packageJsonPath();if(!import_fs2.default.existsSync(packageJsonPath))throw new Error(`Could not read package.json file at ${packageJsonPath}`);let jsonContent=await(0,import_fs_extra3.readFile)(packageJsonPath,"utf8");return JSON.parse(jsonContent)}async writePackageJson(packageJson){let packageJsonToWrite={...packageJson};packageJsonToWrite.dependencies&&Object.keys(packageJsonToWrite.dependencies).length===0&&delete packageJsonToWrite.dependencies,packageJsonToWrite.devDependencies&&Object.keys(packageJsonToWrite.devDependencies).length===0&&delete packageJsonToWrite.devDependencies,packageJsonToWrite.peerDependencies&&Object.keys(packageJsonToWrite.peerDependencies).length===0&&delete packageJsonToWrite.peerDependencies;let content=`${JSON.stringify(packageJsonToWrite,null,2)}
51
51
  `;await(0,import_fs_extra3.writeFile)(this.packageJsonPath(),content,"utf8")}async retrievePackageJson(){let packageJson;try{packageJson=await this.readPackageJson()}catch(err){let errMessage=String(err);if(errMessage.includes("Could not read package.json"))await this.initPackageJson(),packageJson=await this.readPackageJson();else throw new Error(import_ts_dedent2.default`
52
52
  There was an error while reading the package.json file at ${this.packageJsonPath()}: ${errMessage}
53
53
  Please fix the error and try again.
@@ -119,7 +119,7 @@ An error occurred while installing dependencies:`),logger4.log(e.message),new Ha
119
119
 
120
120
  Continuing with Storybook installation...
121
121
  `,{title:import_chalk4.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),import_node_logger5.logger.line(1)},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=(0,import_fs_extra9.readdirSync)(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger9=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await detectLanguage(packageManager),pnp=await detectPnp(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case"REACT_SCRIPTS":return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Create React App" based project'));case"REACT":return REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React" app'));case"REACT_NATIVE":return REACT_NATIVE_default(packageManager,npmOptions).then(commandLog('Adding Storybook support to your "React Native" app'));case"QWIK":return QWIK_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Qwik" app'));case"WEBPACK_REACT":return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Webpack React" app'));case"REACT_PROJECT":return REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React" library'));case"NEXTJS":return NEXTJS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Next" app'));case"VUE3":return VUE3_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Vue 3" app'));case"ANGULAR":return commandLog('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case"EMBER":return EMBER_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Ember" app'));case"HTML":return HTML_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "HTML" app'));case"WEB_COMPONENTS":return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "web components" app'));case"PREACT":return PREACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Preact" app'));case"SVELTE":return SVELTE_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Svelte" app'));case"SVELTEKIT":return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "SvelteKit" app'));case"SERVER":return SERVER_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Server" app'));case"NX":throw new import_server_errors3.NxProjectDetectedError;case"SOLID":return SOLID_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "SolidJS" app'));case"UNSUPPORTED":return paddedLog("We detected a project type that we don't support yet."),paddedLog("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger9.log(),Promise.resolve();default:return paddedLog(`We couldn't detect your project type. (code: ${projectType})`),paddedLog("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/react/get-started/install"),logger9.log(),projectTypeInquirer(options,packageManager)}};try{return await runGenerator()}catch(err){throw err?.message!=="Canceled by the user"&&err?.stack&&logger9.error(`
122
- ${import_chalk5.default.red(err.stack)}`),new HandledError(err)}},projectTypeInquirer=async(options,packageManager)=>{let manualAnswer=options.yes?!0:await(0,import_prompts6.default)([{type:"confirm",name:"manual",message:"Do you want to manually choose a Storybook project type to install?"}]);if(manualAnswer!==!0&&manualAnswer.manual){let{manualFramework}=await(0,import_prompts6.default)([{type:"select",name:"manualFramework",message:"Please choose a project type from the following list:",choices:installableProjectTypes.map(type=>({title:type,value:type.toUpperCase()}))}]);if(manualFramework)return installStorybook(manualFramework,packageManager,options)}logger9.log(),logger9.log("For more information about installing Storybook: https://storybook.js.org/docs"),process.exit(0)};async function doInitiate(options,pkg2){let{packageManager:pkgMgr}=options;options.useNpm&&(useNpmWarning(),pkgMgr="npm");let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),welcomeMessage="storybook init - the simplest way to add a Storybook to your project.";logger9.log(import_chalk5.default.inverse(`
122
+ ${import_chalk5.default.red(err.stack)}`),new HandledError(err)}},projectTypeInquirer=async(options,packageManager)=>{let manualAnswer=options.yes?!0:await(0,import_prompts6.default)([{type:"confirm",name:"manual",message:"Do you want to manually choose a Storybook project type to install?"}]);if(manualAnswer!==!0&&manualAnswer.manual){let{manualFramework}=await(0,import_prompts6.default)([{type:"select",name:"manualFramework",message:"Please choose a project type from the following list:",choices:installableProjectTypes.map(type=>({title:type,value:type.toUpperCase()}))}]);if(manualFramework)return installStorybook(manualFramework,packageManager,options)}logger9.log(),logger9.log("For more information about installing Storybook: https://storybook.js.org/docs"),process.exit(0)};async function doInitiate(options,pkg2){let{packageManager:pkgMgr}=options,packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),welcomeMessage="storybook init - the simplest way to add a Storybook to your project.";logger9.log(import_chalk5.default.inverse(`
123
123
  ${welcomeMessage}
124
124
  `));let{default:updateNotifier}=await import("simple-update-notifier");await updateNotifier({pkg:pkg2,updateCheckInterval:1e3*60*60}),options.force!==!0&&currentDirectoryIsEmpty(packageManager.type)&&(await scaffoldNewProject(packageManager.type,options),(process.env.IN_STORYBOOK_SANDBOX==="true"||process.env.CI==="true")&&packageManager.addPackageResolutions({"@storybook/telemetry":versions_default["@storybook/telemetry"]}));let projectType,projectTypeProvided=options.type,infoText=projectTypeProvided?`Installing Storybook for user specified project type: ${projectTypeProvided}`:"Detecting project type",done=commandLog(infoText);if(projectTypeProvided)if(installableProjectTypes.includes(projectTypeProvided))projectType=projectTypeProvided.toUpperCase();else throw done(`The provided project type was not recognized by Storybook: ${projectTypeProvided}`),logger9.log(`
125
125
  The project types currently supported by Storybook are:
@@ -136,11 +136,11 @@ The project types currently supported by Storybook are:
136
136
  Wanna know more about Storybook? Check out ${import_chalk5.default.cyan("https://storybook.js.org/")}
137
137
  Having trouble or want to chat? Join us at ${import_chalk5.default.cyan("https://discord.gg/storybook/")}
138
138
  `,{borderStyle:"round",padding:1,borderColor:"#F1618C"})),{shouldRunDev:process.env.CI!=="true"&&process.env.IN_STORYBOOK_SANDBOX!=="true",projectType,packageManager,storybookCommand}}async function initiate(options,pkg2){let initiateResult=await(0,import_core_server.withTelemetry)("init",{cliOptions:options,printError:err=>!err.handled&&logger9.error(err)},()=>doInitiate(options,pkg2));if(initiateResult?.shouldRunDev){let{projectType,packageManager,storybookCommand}=initiateResult;logger9.log(`
139
- Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||projectType==="REACT"||projectType==="WEBPACK_REACT"||projectType==="REACT_PROJECT"||projectType==="NEXTJS",flags=[];packageManager.type==="npm"&&flags.push("--"),isReactWebProject&&flags.push("--initial-path=/onboarding"),flags.push("--quiet"),packageManager.runPackageCommandSync(storybookCommand.replace(/^yarn /,""),flags,void 0,"inherit")}catch{}}}var import_core_common2=require("@storybook/core-common"),import_csf_tools2=require("@storybook/csf-tools"),import_path17=require("path"),import_semver10=__toESM(require("semver")),import_ts_dedent13=__toESM(require("ts-dedent"));var logger10=console,postinstallAddon=async(addonName,options)=>{try{let modulePath=require.resolve(`${addonName}/postinstall`,{paths:[process.cwd()]}),postinstall=require(modulePath);try{logger10.log(`Running postinstall script for ${addonName}`),await postinstall(options)}catch(e){logger10.error(`Error running postinstall script for ${addonName}`),logger10.error(e)}}catch{}},getVersionSpecifier=addon=>{let groups=/^(...*)@(.*)$/.exec(addon);return groups?[groups[0],groups[2]]:[addon,void 0]},requireMain=configDir=>{let absoluteConfigDir=(0,import_path17.isAbsolute)(configDir)?configDir:(0,import_path17.join)(process.cwd(),configDir),mainFile=(0,import_path17.join)(absoluteConfigDir,"main");return(0,import_core_common2.serverRequire)(mainFile)??{}},checkInstalled=(addonName,main)=>!!main.addons?.find(entry=>(typeof entry=="string"?entry:entry.name)?.endsWith(addonName));async function add(addon,options){let{packageManager:pkgMgr}=options;options.useNpm&&(useNpmWarning(),pkgMgr="npm");let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),packageJson=await packageManager.retrievePackageJson(),{mainConfig,configDir}=(0,import_core_common2.getStorybookInfo)(packageJson);if(typeof configDir>"u")throw new Error(import_ts_dedent13.default`
139
+ Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||projectType==="REACT"||projectType==="WEBPACK_REACT"||projectType==="REACT_PROJECT"||projectType==="NEXTJS",flags=[];packageManager.type==="npm"&&flags.push("--"),isReactWebProject&&flags.push("--initial-path=/onboarding"),flags.push("--quiet"),packageManager.runPackageCommandSync(storybookCommand.replace(/^yarn /,""),flags,void 0,"inherit")}catch{}}}var import_core_common2=require("@storybook/core-common"),import_csf_tools2=require("@storybook/csf-tools"),import_path17=require("path"),import_semver10=__toESM(require("semver")),import_ts_dedent13=__toESM(require("ts-dedent"));var logger10=console,postinstallAddon=async(addonName,options)=>{try{let modulePath=require.resolve(`${addonName}/postinstall`,{paths:[process.cwd()]}),postinstall=require(modulePath);try{logger10.log(`Running postinstall script for ${addonName}`),await postinstall(options)}catch(e){logger10.error(`Error running postinstall script for ${addonName}`),logger10.error(e)}}catch{}},getVersionSpecifier=addon=>{let groups=/^(...*)@(.*)$/.exec(addon);return groups?[groups[0],groups[2]]:[addon,void 0]},requireMain=configDir=>{let absoluteConfigDir=(0,import_path17.isAbsolute)(configDir)?configDir:(0,import_path17.join)(process.cwd(),configDir),mainFile=(0,import_path17.join)(absoluteConfigDir,"main");return(0,import_core_common2.serverRequire)(mainFile)??{}},checkInstalled=(addonName,main)=>!!main.addons?.find(entry=>(typeof entry=="string"?entry:entry.name)?.endsWith(addonName));async function add(addon,options){let{packageManager:pkgMgr}=options,packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),packageJson=await packageManager.retrievePackageJson(),{mainConfig,configDir}=(0,import_core_common2.getStorybookInfo)(packageJson);if(typeof configDir>"u")throw new Error(import_ts_dedent13.default`
140
140
  Unable to find storybook config directory
141
141
  `);if(checkInstalled(addon,requireMain(configDir)))throw new Error(import_ts_dedent13.default`
142
142
  Addon ${addon} is already installed; we skipped adding it to your ${mainConfig}.
143
- `);let[addonName,versionSpecifier]=getVersionSpecifier(addon);if(!mainConfig){logger10.error("Unable to find storybook main.js config");return}let main=await(0,import_csf_tools2.readConfig)(mainConfig);logger10.log(`Verifying ${addonName}`);let latestVersion=await packageManager.latestVersion(addonName);latestVersion||logger10.error(`Unknown addon ${addonName}`);let isStorybookAddon=addonName.startsWith("@storybook/"),isAddonFromCore=isCorePackage(addonName),storybookVersion=await getStorybookVersion(packageManager),version=versionSpecifier||(isAddonFromCore?storybookVersion:latestVersion),addonWithVersion=import_semver10.default.valid(version)?`${addonName}@^${version}`:`${addonName}@${version}`;logger10.log(`Installing ${addonWithVersion}`),await packageManager.addDependencies({installAsDevDependencies:!0},[addonWithVersion]),logger10.log(`Adding '${addon}' to main.js addons field.`),main.appendValueToArray(["addons"],addonName),await(0,import_csf_tools2.writeConfig)(main),!options.skipPostinstall&&isStorybookAddon&&await postinstallAddon(addonName,{packageManager:packageManager.type})}var import_codemod=require("@storybook/codemod");var import_prompts9=__toESM(require("prompts")),import_chalk27=__toESM(require("chalk")),import_boxen4=__toESM(require_boxen()),import_fs_extra12=require("fs-extra"),import_tempy2=__toESM(require("tempy")),import_ts_dedent36=__toESM(require("ts-dedent")),import_path21=require("path"),import_core_common9=require("@storybook/core-common"),import_tiny_invariant6=__toESM(require("tiny-invariant"));var import_chalk9=__toESM(require("chalk")),import_ts_dedent17=require("ts-dedent"),import_semver13=__toESM(require("semver"));var import_chalk8=__toESM(require("chalk")),import_ts_dedent16=require("ts-dedent"),import_semver12=__toESM(require("semver"));var import_chalk7=__toESM(require("chalk")),import_semver11=__toESM(require("semver")),import_ts_dedent15=__toESM(require("ts-dedent"));var import_core_common3=require("@storybook/core-common"),import_csf_tools3=require("@storybook/csf-tools"),import_chalk6=__toESM(require("chalk")),import_ts_dedent14=__toESM(require("ts-dedent")),import_path18=__toESM(require("path"));var logger11=console,getFrameworkPackageName=mainConfig=>{let packageNameOrPath=typeof mainConfig?.framework=="string"?mainConfig.framework:mainConfig?.framework?.name;if(!packageNameOrPath)return null;let normalizedPath=import_path18.default.normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return Object.keys(import_core_common3.frameworkPackages).find(pkg2=>normalizedPath.endsWith(pkg2))||packageNameOrPath},getBuilderPackageName=mainConfig=>{let packageNameOrPath=typeof mainConfig?.core?.builder=="string"?mainConfig.core.builder:mainConfig?.core?.builder?.name;if(!packageNameOrPath)return null;let normalizedPath=import_path18.default.normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return import_core_common3.builderPackages.find(pkg2=>normalizedPath.endsWith(pkg2))||packageNameOrPath},getRendererPackageNameFromFramework=frameworkPackageName=>{if(frameworkPackageName){if(Object.keys(import_core_common3.rendererPackages).includes(frameworkPackageName))return frameworkPackageName;if(Object.values(import_core_common3.rendererPackages).includes(frameworkPackageName))return Object.keys(import_core_common3.rendererPackages).find(k=>import_core_common3.rendererPackages[k]===frameworkPackageName)}return null},getStorybookData=async({packageManager,configDir:userDefinedConfigDir})=>{let packageJson=await packageManager.retrievePackageJson(),{mainConfig:mainConfigPath,version:storybookVersionSpecifier,configDir:configDirFromScript,previewConfig:previewConfigPath}=(0,import_core_common3.getStorybookInfo)(packageJson,userDefinedConfigDir),storybookVersion=await getStorybookVersion(packageManager),configDir=userDefinedConfigDir||configDirFromScript||".storybook",mainConfig;try{mainConfig=await(0,import_core_common3.loadMainConfig)({configDir,noCache:!0})}catch(err){throw new Error(import_ts_dedent14.default`Unable to find or evaluate ${import_chalk6.default.blue(mainConfigPath)}: ${String(err)}`)}return{configDir,mainConfig,storybookVersionSpecifier,storybookVersion,mainConfigPath,previewConfigPath}},updateMainConfig=async({mainConfigPath,dryRun},callback)=>{try{let main=await(0,import_csf_tools3.readConfig)(mainConfigPath);await callback(main),dryRun||await(0,import_csf_tools3.writeConfig)(main)}catch(e){logger11.info(`\u274C The migration failed to update your ${import_chalk6.default.blue(mainConfigPath)} on your behalf because of the following error:
143
+ `);let[addonName,versionSpecifier]=getVersionSpecifier(addon);if(!mainConfig){logger10.error("Unable to find storybook main.js config");return}let main=await(0,import_csf_tools2.readConfig)(mainConfig);logger10.log(`Verifying ${addonName}`);let latestVersion=await packageManager.latestVersion(addonName);latestVersion||logger10.error(`Unknown addon ${addonName}`);let isStorybookAddon=addonName.startsWith("@storybook/"),isAddonFromCore=isCorePackage(addonName),storybookVersion=await getStorybookVersion(packageManager),version=versionSpecifier||(isAddonFromCore?storybookVersion:latestVersion),addonWithVersion=import_semver10.default.valid(version)?`${addonName}@^${version}`:`${addonName}@${version}`;logger10.log(`Installing ${addonWithVersion}`),await packageManager.addDependencies({installAsDevDependencies:!0},[addonWithVersion]),logger10.log(`Adding '${addon}' to main.js addons field.`),main.appendValueToArray(["addons"],addonName),await(0,import_csf_tools2.writeConfig)(main),!options.skipPostinstall&&isStorybookAddon&&await postinstallAddon(addonName,{packageManager:packageManager.type})}var import_codemod=require("@storybook/codemod");var import_prompts9=__toESM(require("prompts")),import_chalk28=__toESM(require("chalk")),import_boxen4=__toESM(require_boxen()),import_fs_extra12=require("fs-extra"),import_tempy2=__toESM(require("tempy")),import_ts_dedent37=__toESM(require("ts-dedent")),import_path21=require("path"),import_core_common9=require("@storybook/core-common"),import_tiny_invariant6=__toESM(require("tiny-invariant"));var import_chalk9=__toESM(require("chalk")),import_ts_dedent17=require("ts-dedent"),import_semver13=__toESM(require("semver"));var import_chalk8=__toESM(require("chalk")),import_ts_dedent16=require("ts-dedent"),import_semver12=__toESM(require("semver"));var import_chalk7=__toESM(require("chalk")),import_semver11=__toESM(require("semver")),import_ts_dedent15=__toESM(require("ts-dedent"));var import_core_common3=require("@storybook/core-common"),import_csf_tools3=require("@storybook/csf-tools"),import_chalk6=__toESM(require("chalk")),import_ts_dedent14=__toESM(require("ts-dedent")),import_path18=__toESM(require("path"));var logger11=console,getFrameworkPackageName=mainConfig=>{let packageNameOrPath=typeof mainConfig?.framework=="string"?mainConfig.framework:mainConfig?.framework?.name;if(!packageNameOrPath)return null;let normalizedPath=import_path18.default.normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return Object.keys(import_core_common3.frameworkPackages).find(pkg2=>normalizedPath.endsWith(pkg2))||packageNameOrPath},getBuilderPackageName=mainConfig=>{let packageNameOrPath=typeof mainConfig?.core?.builder=="string"?mainConfig.core.builder:mainConfig?.core?.builder?.name;if(!packageNameOrPath)return null;let normalizedPath=import_path18.default.normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return import_core_common3.builderPackages.find(pkg2=>normalizedPath.endsWith(pkg2))||packageNameOrPath},getRendererPackageNameFromFramework=frameworkPackageName=>{if(frameworkPackageName){if(Object.keys(import_core_common3.rendererPackages).includes(frameworkPackageName))return frameworkPackageName;if(Object.values(import_core_common3.rendererPackages).includes(frameworkPackageName))return Object.keys(import_core_common3.rendererPackages).find(k=>import_core_common3.rendererPackages[k]===frameworkPackageName)}return null},getStorybookData=async({packageManager,configDir:userDefinedConfigDir})=>{let packageJson=await packageManager.retrievePackageJson(),{mainConfig:mainConfigPath,version:storybookVersionSpecifier,configDir:configDirFromScript,previewConfig:previewConfigPath}=(0,import_core_common3.getStorybookInfo)(packageJson,userDefinedConfigDir),storybookVersion=await getStorybookVersion(packageManager),configDir=userDefinedConfigDir||configDirFromScript||".storybook",mainConfig;try{mainConfig=await(0,import_core_common3.loadMainConfig)({configDir,noCache:!0})}catch(err){throw new Error(import_ts_dedent14.default`Unable to find or evaluate ${import_chalk6.default.blue(mainConfigPath)}: ${String(err)}`)}return{configDir,mainConfig,storybookVersionSpecifier,storybookVersion,mainConfigPath,previewConfigPath}},updateMainConfig=async({mainConfigPath,dryRun},callback)=>{try{let main=await(0,import_csf_tools3.readConfig)(mainConfigPath);await callback(main),dryRun||await(0,import_csf_tools3.writeConfig)(main)}catch(e){logger11.info(`\u274C The migration failed to update your ${import_chalk6.default.blue(mainConfigPath)} on your behalf because of the following error:
144
144
  ${e}
145
145
  `),logger11.info(`\u26A0\uFE0F Storybook automigrations are based on AST parsing and it's possible that your ${import_chalk6.default.blue(mainConfigPath)} file contains a non-standard format (e.g. your export is not an object) or that there was an error when parsing dynamic values (e.g. "require" calls, or usage of environment variables). When your main config is non-standard, automigrations are unfortunately not possible. Please follow the instructions given previously and follow the documentation to make the updates manually.`)}},getAddonNames=mainConfig=>(mainConfig.addons||[]).map(addon=>{let name="";if(typeof addon=="string"?name=addon:typeof addon=="object"&&(name=addon.name),!name.startsWith("."))return name.replace(/\/dist\/.*/,"").replace(/\.[mc]?[tj]?s[x]?$/,"").replace(/\/register$/,"").replace(/\/manager$/,"").replace(/\/preset$/,"")}).filter(item=>item!=null);var logger12=console,checkWebpack5Builder=async({mainConfig,storybookVersion})=>{if(import_semver11.default.lt(storybookVersion,"6.3.0"))return logger12.warn(import_ts_dedent15.default`
146
146
  Detected SB 6.3 or below, please upgrade storybook to use webpack5.
@@ -174,7 +174,7 @@ Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||pro
174
174
  `},async run(options){return webpack5.run({...options,result:{webpackVersion:null,...options.result}})}};var import_ts_dedent19=require("ts-dedent"),import_semver15=__toESM(require("semver")),import_path19=require("path");function slash(path15){return path15.startsWith("\\\\?\\")?path15:path15.replace(/\\/g,"/")}var import_globby=__toESM(require("globby")),import_core_common4=require("@storybook/core-common");var logger14=console,mdxgfm={id:"github-flavored-markdown-mdx",async check({configDir,mainConfig,storybookVersion}){if(!import_semver15.default.gte(storybookVersion,"7.0.0"))return null;let hasMDXFiles=await mainConfig?.stories?.reduce(async(acc,item)=>{if(await acc===!0)return!0;let pattern;if(typeof configDir>"u")return!1;if(typeof item=="string")pattern=slash((0,import_path19.join)(configDir,item));else if(typeof item=="object"){let directory2=item.directory||"..",files2=item.files||"**/*.@(mdx|stories.@(mdx|js|jsx|mjs|ts|tsx))";pattern=slash((0,import_path19.join)(configDir,directory2,files2))}return pattern?(await(0,import_globby.default)(pattern,(0,import_core_common4.commonGlobOptions)(pattern))).some(f=>f.endsWith(".mdx")):!1},Promise.resolve(!1));return mainConfig?.features?.legacyMdx1===!0||!1||!hasMDXFiles||!!mainConfig.addons?.find(item=>item==="@storybook/addon-mdx-gfm"?!0:typeof item=="string"?!1:item.name==="@storybook/addon-docs"?item.options?.mdxPluginOptions?.mdxCompileOptions?.remarkPlugins?.length>0:!1)?null:{}},prompt(){return import_ts_dedent19.dedent`
175
175
  In MDX1 you had the option of using GitHub flavored markdown.
176
176
 
177
- Storybook 7.0 uses MDX2 for compiling MDX, and thus no longer supports GFM out of the box.
177
+ Storybook 8.0 uses MDX3 for compiling MDX, and thus no longer supports GFM out of the box.
178
178
  Because of this you need to explicitly add the GFM plugin in the addon-docs options:
179
179
  https://storybook.js.org/docs/react/writing-docs/mdx#lack-of-github-flavored-markdown-gfm
180
180
 
@@ -379,116 +379,122 @@ Running Storybook`);try{let isReactWebProject=projectType==="REACT_SCRIPTS"||pro
379
379
  though we recommend giving "react-docgen" for a much faster dev experience.
380
380
 
381
381
  https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-docgen-component-analysis-by-default
382
- `},async run({dryRun,mainConfigPath}){dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger24.info("\u2705 Setting typescript.reactDocgen"),dryRun||main.setFieldValue(["typescript","reactDocgen"],"react-docgen-typescript")})}};var allFixes=[nodeJsRequirement,newFrameworks,cra5,webpack5,vue3,eslintPlugin,builderVite,sbBinary,sbScripts,incompatibleAddons,removedGlobalClientAPIs,mdx1to2,mdxgfm,autodocsTrue,missingBabelRc,angularBuildersMultiproject,angularBuilders,wrapRequire,reactDocgen];var import_os2=require("os"),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")},cleanLog=str=>str.replace(ansiRegex(),"").replace(/╮│/g,`\u256E
382
+ `},async run({dryRun,mainConfigPath}){dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{logger24.info("\u2705 Setting typescript.reactDocgen"),dryRun||main.setFieldValue(["typescript","reactDocgen"],"react-docgen-typescript")})}};var import_chalk25=__toESM(require("chalk")),import_ts_dedent35=__toESM(require("ts-dedent")),storyshotsMigration={id:"storyshots-migration",promptOnly:!0,async check({mainConfig,packageManager}){return((await packageManager.getAllDependencies())["@storybook/addon-storyshots"]||mainConfig.addons?.find(addon=>(typeof addon=="string"?addon:addon.name).includes("@storybook/addon-storyshots")))??null},prompt(){return import_ts_dedent35.default`
383
+ ${import_chalk25.default.bold("Attention")}: Storyshots is now officially deprecated, is no longer being maintained, and was removed in Storybook 8.
384
+
385
+ We recommend following the migration guide we've prepared to help you during this transition period:
386
+ ${import_chalk25.default.yellow("https://storybook.js.org/docs/writing-tests/storyshots-migration-guide")}
387
+ `}};var allFixes=[nodeJsRequirement,newFrameworks,cra5,webpack5,vue3,eslintPlugin,builderVite,sbBinary,sbScripts,incompatibleAddons,removedGlobalClientAPIs,mdx1to2,mdxgfm,autodocsTrue,missingBabelRc,angularBuildersMultiproject,angularBuilders,wrapRequire,reactDocgen,storyshotsMigration];var import_os2=require("os"),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")},cleanLog=str=>str.replace(ansiRegex(),"").replace(/╮│/g,`\u256E
383
388
  \u2502`).replace(/││/g,`\u2502
384
389
  \u2502`).replace(/│╰/g,`\u2502
385
- \u2570`).replace(/⚠️ {2}failed to check/g,`${import_os2.EOL}\u26A0\uFE0F failed to check`);var import_chalk26=__toESM(require("chalk")),import_boxen3=__toESM(require_boxen()),import_ts_dedent35=__toESM(require("ts-dedent"));var import_chalk25=__toESM(require("chalk")),import_core_common8=require("@storybook/core-common");var import_semver24=__toESM(require("semver"));function hasMultipleVersions(versions){return versions.find(v=>{let major=import_semver24.default.major(v);if(major===0){let minor=import_semver24.default.minor(v);if(minor===0){let patch=import_semver24.default.patch(v);return versions.some(v2=>import_semver24.default.patch(v2)!==patch)}return versions.some(v2=>import_semver24.default.minor(v2)!==minor)}return versions.some(v2=>import_semver24.default.major(v2)!==major)})}var messageDivider=`
390
+ \u2570`).replace(/⚠️ {2}failed to check/g,`${import_os2.EOL}\u26A0\uFE0F failed to check`);var import_chalk27=__toESM(require("chalk")),import_boxen3=__toESM(require_boxen()),import_ts_dedent36=__toESM(require("ts-dedent"));var import_chalk26=__toESM(require("chalk")),import_core_common8=require("@storybook/core-common");var import_semver24=__toESM(require("semver"));function hasMultipleVersions(versions){return versions.find(v=>{let major=import_semver24.default.major(v);if(major===0){let minor=import_semver24.default.minor(v);if(minor===0){let patch=import_semver24.default.patch(v);return versions.some(v2=>import_semver24.default.patch(v2)!==patch)}return versions.some(v2=>import_semver24.default.minor(v2)!==minor)}return versions.some(v2=>import_semver24.default.major(v2)!==major)})}var messageDivider=`
386
391
 
387
- `,allowList=["@storybook/csf","@storybook/addons","@storybook/channel-postmessage","@storybook/channel-websocket","@storybook/client-api","@storybook/client-logger","@storybook/core-client","@storybook/preview-web","@storybook/preview-api","@storybook/store","@storybook/components","@storybook/router","@storybook/theming","@storybook/api","@storybook/manager-api"],disallowList=[Object.keys(import_core_common8.rendererPackages),Object.keys(import_core_common8.frameworkPackages),"@storybook/core-events","@storybook/instrumenter","@storybook/core-common","@storybook/core-server","@storybook/manager","@storybook/preview"];function getDuplicatedDepsWarnings(installationMetadata){try{if(!installationMetadata||!installationMetadata?.duplicatedDependencies||Object.keys(installationMetadata.duplicatedDependencies).length===0)return;let messages=[],{critical,trivial}=Object.entries(installationMetadata?.duplicatedDependencies).reduce((acc,[dep,packageVersions])=>{if(allowList.includes(dep))return acc;let hasMultipleMajorVersions=hasMultipleVersions(packageVersions);return disallowList.includes(dep)&&hasMultipleMajorVersions?acc.critical.push(`${import_chalk25.default.redBright(dep)}:
388
- ${packageVersions.join(", ")}`):acc.trivial.push(`${import_chalk25.default.hex("#ff9800")(dep)}:
389
- ${packageVersions.join(", ")}`),acc},{critical:[],trivial:[]});return critical.length===0&&trivial.length===0||(critical.length>0&&(messages.push(`${import_chalk25.default.bold("Critical:")} The following dependencies are duplicated and WILL cause unexpected behavior:`),messages.push(critical.join(messageDivider),`
390
- `)),trivial.length>0&&(messages.push(`${import_chalk25.default.bold("Attention:")} The following dependencies are duplicated which might cause unexpected behavior:`),messages.push(trivial.join(messageDivider))),messages.push(`
391
- `,`You can find more information for a given dependency by running ${import_chalk25.default.cyan(`${installationMetadata.infoCommand} <package-name>`)}`),messages.push(`
392
- `,`Please try de-duplicating these dependencies by running ${import_chalk25.default.cyan(`${installationMetadata.dedupeCommand}`)}`)),messages}catch{return}}var messageDivider2=`
392
+ `,allowList=["@storybook/csf","@storybook/addons","@storybook/channel-postmessage","@storybook/channel-websocket","@storybook/client-api","@storybook/client-logger","@storybook/core-client","@storybook/preview-web","@storybook/preview-api","@storybook/store","@storybook/components","@storybook/router","@storybook/theming","@storybook/api","@storybook/manager-api"],disallowList=[Object.keys(import_core_common8.rendererPackages),Object.keys(import_core_common8.frameworkPackages),"@storybook/core-events","@storybook/instrumenter","@storybook/core-common","@storybook/core-server","@storybook/manager","@storybook/preview"];function getDuplicatedDepsWarnings(installationMetadata){try{if(!installationMetadata||!installationMetadata?.duplicatedDependencies||Object.keys(installationMetadata.duplicatedDependencies).length===0)return;let messages=[],{critical,trivial}=Object.entries(installationMetadata?.duplicatedDependencies).reduce((acc,[dep,packageVersions])=>{if(allowList.includes(dep))return acc;let hasMultipleMajorVersions=hasMultipleVersions(packageVersions);return disallowList.includes(dep)&&hasMultipleMajorVersions?acc.critical.push(`${import_chalk26.default.redBright(dep)}:
393
+ ${packageVersions.join(", ")}`):acc.trivial.push(`${import_chalk26.default.hex("#ff9800")(dep)}:
394
+ ${packageVersions.join(", ")}`),acc},{critical:[],trivial:[]});return critical.length===0&&trivial.length===0||(critical.length>0&&(messages.push(`${import_chalk26.default.bold("Critical:")} The following dependencies are duplicated and WILL cause unexpected behavior:`),messages.push(critical.join(messageDivider),`
395
+ `)),trivial.length>0&&(messages.push(`${import_chalk26.default.bold("Attention:")} The following dependencies are duplicated which might cause unexpected behavior:`),messages.push(trivial.join(messageDivider))),messages.push(`
396
+ `,`You can find more information for a given dependency by running ${import_chalk26.default.cyan(`${installationMetadata.infoCommand} <package-name>`)}`),messages.push(`
397
+ `,`Please try de-duplicating these dependencies by running ${import_chalk26.default.cyan(`${installationMetadata.dedupeCommand}`)}`)),messages}catch{return}}var messageDivider2=`
393
398
 
394
399
  `,segmentDivider=`
395
400
 
396
401
  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
397
402
 
398
- `;function getGlossaryMessages(fixSummary,fixResults,logFile){let messages=[];return fixSummary.succeeded.length>0&&(messages.push(import_chalk26.default.bold("Successful migrations:")),messages.push(fixSummary.succeeded.map(m=>import_chalk26.default.green(m)).join(", "))),Object.keys(fixSummary.failed).length>0&&(messages.push(import_chalk26.default.bold("Failed migrations:")),messages.push(Object.entries(fixSummary.failed).map(([id,error])=>`${import_chalk26.default.redBright(id)}:
403
+ `;function getGlossaryMessages(fixSummary,fixResults,logFile){let messages=[];return fixSummary.succeeded.length>0&&(messages.push(import_chalk27.default.bold("Successful migrations:")),messages.push(fixSummary.succeeded.map(m=>import_chalk27.default.green(m)).join(", "))),Object.keys(fixSummary.failed).length>0&&(messages.push(import_chalk27.default.bold("Failed migrations:")),messages.push(Object.entries(fixSummary.failed).map(([id,error])=>`${import_chalk27.default.redBright(id)}:
399
404
  ${error}`).join(`
400
- `)),messages.push(`You can find the full logs in ${import_chalk26.default.cyan(logFile)}`)),fixSummary.manual.length>0&&(messages.push(import_chalk26.default.bold("Manual migrations:")),messages.push(fixSummary.manual.map(m=>fixResults[m]==="manual_succeeded"?import_chalk26.default.green(m):import_chalk26.default.blue(m)).join(", "))),fixSummary.skipped.length>0&&(messages.push(import_chalk26.default.bold("Skipped migrations:")),messages.push(fixSummary.skipped.map(m=>import_chalk26.default.cyan(m)).join(", "))),messages}function getMigrationSummary({fixResults,fixSummary,logFile,installationMetadata}){let messages=[];messages.push(getGlossaryMessages(fixSummary,fixResults,logFile).join(messageDivider2)),messages.push(import_ts_dedent35.default`If you'd like to run the migrations again, you can do so by running '${import_chalk26.default.cyan("npx storybook@next automigrate")}'
405
+ `)),messages.push(`You can find the full logs in ${import_chalk27.default.cyan(logFile)}`)),fixSummary.manual.length>0&&(messages.push(import_chalk27.default.bold("Manual migrations:")),messages.push(fixSummary.manual.map(m=>fixResults[m]==="manual_succeeded"?import_chalk27.default.green(m):import_chalk27.default.blue(m)).join(", "))),fixSummary.skipped.length>0&&(messages.push(import_chalk27.default.bold("Skipped migrations:")),messages.push(fixSummary.skipped.map(m=>import_chalk27.default.cyan(m)).join(", "))),messages}function getMigrationSummary({fixResults,fixSummary,logFile,installationMetadata}){let messages=[];messages.push(getGlossaryMessages(fixSummary,fixResults,logFile).join(messageDivider2)),messages.push(import_ts_dedent36.default`If you'd like to run the migrations again, you can do so by running '${import_chalk27.default.cyan("npx storybook@next automigrate")}'
401
406
 
402
407
  The automigrations try to migrate common patterns in your project, but might not contain everything needed to migrate to the latest version of Storybook.
403
408
 
404
- Please check the changelog and migration guide for manual migrations and more information: ${import_chalk26.default.yellow("https://storybook.js.org/migration-guides/7.0")}
405
- And reach out on Discord if you need help: ${import_chalk26.default.yellow("https://discord.gg/storybook")}
406
- `);let duplicatedDepsMessage=installationMetadata?getDuplicatedDepsWarnings(installationMetadata):getDuplicatedDepsWarnings();duplicatedDepsMessage&&messages.push(duplicatedDepsMessage.join(messageDivider2));let hasNoFixes=Object.values(fixResults).every(r=>r==="unnecessary"),hasFailures=Object.values(fixResults).some(r=>r==="failed"||r==="check_failed"),title=hasNoFixes?"No migrations were applicable to your project":hasFailures?"Migration check ran with failures":"Migration check ran successfully";return(0,import_boxen3.default)(messages.filter(Boolean).join(segmentDivider),{borderStyle:"round",padding:1,title,borderColor:hasFailures?"red":"green"})}var logger25=console,LOG_FILE_NAME="migration-storybook.log",LOG_FILE_PATH=(0,import_path21.join)(process.cwd(),LOG_FILE_NAME),TEMP_LOG_FILE_PATH="",originalStdOutWrite=process.stdout.write.bind(process.stdout),originalStdErrWrite=process.stderr.write.bind(process.stdout),augmentLogsToFile=()=>{TEMP_LOG_FILE_PATH=import_tempy2.default.file({name:LOG_FILE_NAME});let logStream=(0,import_fs_extra12.createWriteStream)(TEMP_LOG_FILE_PATH);process.stdout.write=d=>(originalStdOutWrite(d),logStream.write(cleanLog(d))),process.stderr.write=d=>logStream.write(cleanLog(d))},cleanup=()=>{process.stdout.write=originalStdOutWrite,process.stderr.write=originalStdErrWrite},logAvailableMigrations=()=>{let availableFixes=allFixes.map(f=>import_chalk27.default.yellow(f.id)).join(", ");logger25.info(`
407
- The following migrations are available: ${availableFixes}`)},automigrate=async({fixId,fixes:inputFixes,dryRun,yes,useNpm,packageManager:pkgMgr,list,configDir:userSpecifiedConfigDir,renderer:rendererPackage,skipInstall,hideMigrationSummary=!1}={})=>{if(list)return logAvailableMigrations(),null;let selectedFixes=inputFixes||allFixes,fixes=fixId?selectedFixes.filter(f=>f.id===fixId):selectedFixes;if(fixId&&fixes.length===0)return logger25.info(`\u{1F4ED} No migrations found for ${import_chalk27.default.magenta(fixId)}.`),logAvailableMigrations(),null;augmentLogsToFile(),logger25.info("\u{1F50E} checking possible migrations..");let{fixResults,fixSummary,preCheckFailure}=await runFixes({fixes,useNpm,pkgMgr,userSpecifiedConfigDir,rendererPackage,skipInstall,dryRun,yes});if(Object.values(fixResults).some(r=>r==="failed"||r==="check_failed")?await(0,import_fs_extra12.move)(TEMP_LOG_FILE_PATH,(0,import_path21.join)(process.cwd(),LOG_FILE_NAME),{overwrite:!0}):await(0,import_fs_extra12.remove)(TEMP_LOG_FILE_PATH),!hideMigrationSummary){let installationMetadata=await JsPackageManagerFactory.getPackageManager({force:pkgMgr}).findInstallations(["@storybook/*","storybook"]);logger25.info(),logger25.info(getMigrationSummary({fixResults,fixSummary,logFile:LOG_FILE_PATH,installationMetadata})),logger25.info()}return cleanup(),{fixResults,preCheckFailure}};async function runFixes({fixes,dryRun,yes,useNpm,pkgMgr,userSpecifiedConfigDir,rendererPackage,skipInstall}){useNpm&&(useNpmWarning(),pkgMgr="npm");let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),fixResults={},fixSummary={succeeded:[],failed:{},manual:[],skipped:[]},{configDir:inferredConfigDir,mainConfig:mainConfigPath}=(0,import_core_common9.getStorybookInfo)(await packageManager.retrievePackageJson(),userSpecifiedConfigDir),storybookVersion=await getStorybookVersion(packageManager);if(!storybookVersion)return logger25.info(import_ts_dedent36.default`
409
+ Please check the changelog and migration guide for manual migrations and more information: ${import_chalk27.default.yellow("https://storybook.js.org/migration-guides/7.0")}
410
+ And reach out on Discord if you need help: ${import_chalk27.default.yellow("https://discord.gg/storybook")}
411
+ `);let duplicatedDepsMessage=installationMetadata?getDuplicatedDepsWarnings(installationMetadata):getDuplicatedDepsWarnings();duplicatedDepsMessage&&messages.push(duplicatedDepsMessage.join(messageDivider2));let hasNoFixes=Object.values(fixResults).every(r=>r==="unnecessary"),hasFailures=Object.values(fixResults).some(r=>r==="failed"||r==="check_failed"),title=hasNoFixes?"No migrations were applicable to your project":hasFailures?"Migration check ran with failures":"Migration check ran successfully";return(0,import_boxen3.default)(messages.filter(Boolean).join(segmentDivider),{borderStyle:"round",padding:1,title,borderColor:hasFailures?"red":"green"})}var logger25=console,LOG_FILE_NAME="migration-storybook.log",LOG_FILE_PATH=(0,import_path21.join)(process.cwd(),LOG_FILE_NAME),TEMP_LOG_FILE_PATH="",originalStdOutWrite=process.stdout.write.bind(process.stdout),originalStdErrWrite=process.stderr.write.bind(process.stdout),augmentLogsToFile=()=>{TEMP_LOG_FILE_PATH=import_tempy2.default.file({name:LOG_FILE_NAME});let logStream=(0,import_fs_extra12.createWriteStream)(TEMP_LOG_FILE_PATH);process.stdout.write=d=>(originalStdOutWrite(d),logStream.write(cleanLog(d))),process.stderr.write=d=>logStream.write(cleanLog(d))},cleanup=()=>{process.stdout.write=originalStdOutWrite,process.stderr.write=originalStdErrWrite},logAvailableMigrations=()=>{let availableFixes=allFixes.map(f=>import_chalk28.default.yellow(f.id)).join(", ");logger25.info(`
412
+ The following migrations are available: ${availableFixes}`)},automigrate=async({fixId,fixes:inputFixes,dryRun,yes,packageManager:pkgMgr,list,configDir:userSpecifiedConfigDir,renderer:rendererPackage,skipInstall,hideMigrationSummary=!1}={})=>{if(list)return logAvailableMigrations(),null;let selectedFixes=inputFixes||allFixes,fixes=fixId?selectedFixes.filter(f=>f.id===fixId):selectedFixes;if(fixId&&fixes.length===0)return logger25.info(`\u{1F4ED} No migrations found for ${import_chalk28.default.magenta(fixId)}.`),logAvailableMigrations(),null;augmentLogsToFile(),logger25.info("\u{1F50E} checking possible migrations..");let{fixResults,fixSummary,preCheckFailure}=await runFixes({fixes,pkgMgr,userSpecifiedConfigDir,rendererPackage,skipInstall,dryRun,yes});if(Object.values(fixResults).some(r=>r==="failed"||r==="check_failed")?await(0,import_fs_extra12.move)(TEMP_LOG_FILE_PATH,(0,import_path21.join)(process.cwd(),LOG_FILE_NAME),{overwrite:!0}):await(0,import_fs_extra12.remove)(TEMP_LOG_FILE_PATH),!hideMigrationSummary){let installationMetadata=await JsPackageManagerFactory.getPackageManager({force:pkgMgr}).findInstallations(["@storybook/*","storybook"]);logger25.info(),logger25.info(getMigrationSummary({fixResults,fixSummary,logFile:LOG_FILE_PATH,installationMetadata})),logger25.info()}return cleanup(),{fixResults,preCheckFailure}};async function runFixes({fixes,dryRun,yes,pkgMgr,userSpecifiedConfigDir,rendererPackage,skipInstall}){let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),fixResults={},fixSummary={succeeded:[],failed:{},manual:[],skipped:[]},{configDir:inferredConfigDir,mainConfig:mainConfigPath}=(0,import_core_common9.getStorybookInfo)(await packageManager.retrievePackageJson(),userSpecifiedConfigDir),storybookVersion=await getStorybookVersion(packageManager);if(!storybookVersion)return logger25.info(import_ts_dedent37.default`
408
413
  [Storybook automigrate] ❌ Unable to determine storybook version so the automigrations will be skipped.
409
414
  🤔 Are you running automigrate from your project directory? Please specify your Storybook config directory with the --config-dir flag.
410
- `),{fixResults,fixSummary,preCheckFailure:"undetected_sb_version"};let configDir=userSpecifiedConfigDir||inferredConfigDir||".storybook";try{await(0,import_core_common9.loadMainConfig)({configDir})}catch(err){let errMessage=String(err);return errMessage.includes("No configuration files have been found")?(logger25.info(import_ts_dedent36.default`[Storybook automigrate] Could not find or evaluate your Storybook main.js config directory at ${import_chalk27.default.blue(configDir)} so the automigrations will be skipped. You might be running this command in a monorepo or a non-standard project structure. If that is the case, please rerun this command by specifying the path to your Storybook config directory via the --config-dir option.`),{fixResults,fixSummary,preCheckFailure:"mainjs_not_found"}):(logger25.info(import_ts_dedent36.default`[Storybook automigrate] ❌ Failed trying to evaluate ${import_chalk27.default.blue(mainConfigPath)} with the following error: ${errMessage}`),logger25.info("Please fix the error and try again."),{fixResults,fixSummary,preCheckFailure:"mainjs_evaluation_error"})}for(let i=0;i<fixes.length;i+=1){let f=fixes[i],result;try{let{mainConfig,previewConfigPath}=await getStorybookData({configDir,packageManager});result=await f.check({packageManager,configDir,rendererPackage,mainConfig,storybookVersion,previewConfigPath,mainConfigPath})}catch(error){logger25.info(`\u26A0\uFE0F failed to check fix ${import_chalk27.default.bold(f.id)}`),error instanceof Error&&(logger25.error(`
415
+ `),{fixResults,fixSummary,preCheckFailure:"undetected_sb_version"};let configDir=userSpecifiedConfigDir||inferredConfigDir||".storybook";try{await(0,import_core_common9.loadMainConfig)({configDir})}catch(err){let errMessage=String(err);return errMessage.includes("No configuration files have been found")?(logger25.info(import_ts_dedent37.default`[Storybook automigrate] Could not find or evaluate your Storybook main.js config directory at ${import_chalk28.default.blue(configDir)} so the automigrations will be skipped. You might be running this command in a monorepo or a non-standard project structure. If that is the case, please rerun this command by specifying the path to your Storybook config directory via the --config-dir option.`),{fixResults,fixSummary,preCheckFailure:"mainjs_not_found"}):(logger25.info(import_ts_dedent37.default`[Storybook automigrate] ❌ Failed trying to evaluate ${import_chalk28.default.blue(mainConfigPath)} with the following error: ${errMessage}`),logger25.info("Please fix the error and try again."),{fixResults,fixSummary,preCheckFailure:"mainjs_evaluation_error"})}for(let i=0;i<fixes.length;i+=1){let f=fixes[i],result;try{let{mainConfig,previewConfigPath}=await getStorybookData({configDir,packageManager});result=await f.check({packageManager,configDir,rendererPackage,mainConfig,storybookVersion,previewConfigPath,mainConfigPath})}catch(error){logger25.info(`\u26A0\uFE0F failed to check fix ${import_chalk28.default.bold(f.id)}`),error instanceof Error&&(logger25.error(`
411
416
  ${error.stack}`),fixSummary.failed[f.id]=error.message),fixResults[f.id]="check_failed"}if(result){logger25.info(`
412
- \u{1F50E} found a '${import_chalk27.default.cyan(f.id)}' migration:`);let message=f.prompt(result);logger25.info((0,import_boxen4.default)(message,{borderStyle:"round",padding:1,borderColor:"#F1618C",title:f.promptOnly?"Manual migration detected":"Automigration detected"}));let runAnswer;try{if(dryRun)runAnswer={fix:!1};else if(yes)runAnswer={fix:!0},f.promptOnly&&(fixResults[f.id]="manual_succeeded",fixSummary.manual.push(f.id));else if(f.promptOnly){fixResults[f.id]="manual_succeeded",fixSummary.manual.push(f.id),logger25.info();let{shouldContinue}=await(0,import_prompts9.default)({type:"toggle",name:"shouldContinue",message:"Select continue once you have made the required changes, or quit to exit the migration process",initial:!0,active:"continue",inactive:"quit"},{onCancel:()=>{throw new Error}});if(!shouldContinue){fixResults[f.id]="manual_skipped";break}}else runAnswer=await(0,import_prompts9.default)({type:"confirm",name:"fix",message:`Do you want to run the '${import_chalk27.default.cyan(f.id)}' migration on your project?`,initial:!0},{onCancel:()=>{throw new Error}})}catch{break}if(!f.promptOnly)if((0,import_tiny_invariant6.default)(runAnswer,"runAnswer must be defined if not promptOnly"),runAnswer.fix)try{(0,import_tiny_invariant6.default)(typeof f.run=="function","run method should be available in fix."),(0,import_tiny_invariant6.default)(mainConfigPath,"Main config path should be defined to run migration."),await f.run({result,packageManager,dryRun,mainConfigPath,skipInstall}),logger25.info(`\u2705 ran ${import_chalk27.default.cyan(f.id)} migration`),fixResults[f.id]="succeeded",fixSummary.succeeded.push(f.id)}catch(error){fixResults[f.id]="failed",fixSummary.failed[f.id]=error instanceof Error?error.message:"Failed to run migration",logger25.info(`\u274C error when running ${import_chalk27.default.cyan(f.id)} migration`),logger25.info(error),logger25.info()}else fixResults[f.id]="skipped",fixSummary.skipped.push(f.id)}else fixResults[f.id]=fixResults[f.id]||"unnecessary"}return{fixResults,fixSummary}}var import_chalk28=__toESM(require("chalk")),import_ts_dedent37=__toESM(require("ts-dedent")),import_semver25=__toESM(require("semver"));var logger26=console,getNextGlob=glob2=>{let extGlobsRegex=new RegExp(/(.*\.)(stories\.@.*)(\|mdx|mdx\|)(.*)$/i);if(glob2.match(extGlobsRegex))return glob2.replace(extGlobsRegex,"$1@(mdx|$2$4)");let allStoriesExtensionsRegex=new RegExp(/(.*\.)(stories\.\*)$/i);return glob2.match(allStoriesExtensionsRegex)?glob2.replace(allStoriesExtensionsRegex,"$1@(mdx|$2)"):glob2.replaceAll(".stories.mdx",".mdx")},bareMdxStoriesGlob={id:"bare-mdx-stories-glob",async check({storybookVersion,mainConfig}){if(!import_semver25.default.gte(storybookVersion,"7.0.0"))return null;let existingStoriesEntries=mainConfig.stories;if(!existingStoriesEntries)throw new Error(import_ts_dedent37.default`
413
- ❌ Unable to determine Storybook stories globs in ${import_chalk28.default.blue(mainConfig)}, skipping ${import_chalk28.default.cyan(this.id)} fix.
417
+ \u{1F50E} found a '${import_chalk28.default.cyan(f.id)}' migration:`);let message=f.prompt(result);logger25.info((0,import_boxen4.default)(message,{borderStyle:"round",padding:1,borderColor:"#F1618C",title:f.promptOnly?"Manual migration detected":"Automigration detected"}));let runAnswer;try{if(dryRun)runAnswer={fix:!1};else if(yes)runAnswer={fix:!0},f.promptOnly&&(fixResults[f.id]="manual_succeeded",fixSummary.manual.push(f.id));else if(f.promptOnly){fixResults[f.id]="manual_succeeded",fixSummary.manual.push(f.id),logger25.info();let{shouldContinue}=await(0,import_prompts9.default)({type:"toggle",name:"shouldContinue",message:"Select continue once you have made the required changes, or quit to exit the migration process",initial:!0,active:"continue",inactive:"quit"},{onCancel:()=>{throw new Error}});if(!shouldContinue){fixResults[f.id]="manual_skipped";break}}else runAnswer=await(0,import_prompts9.default)({type:"confirm",name:"fix",message:`Do you want to run the '${import_chalk28.default.cyan(f.id)}' migration on your project?`,initial:!0},{onCancel:()=>{throw new Error}})}catch{break}if(!f.promptOnly)if((0,import_tiny_invariant6.default)(runAnswer,"runAnswer must be defined if not promptOnly"),runAnswer.fix)try{(0,import_tiny_invariant6.default)(typeof f.run=="function","run method should be available in fix."),(0,import_tiny_invariant6.default)(mainConfigPath,"Main config path should be defined to run migration."),await f.run({result,packageManager,dryRun,mainConfigPath,skipInstall}),logger25.info(`\u2705 ran ${import_chalk28.default.cyan(f.id)} migration`),fixResults[f.id]="succeeded",fixSummary.succeeded.push(f.id)}catch(error){fixResults[f.id]="failed",fixSummary.failed[f.id]=error instanceof Error?error.message:"Failed to run migration",logger25.info(`\u274C error when running ${import_chalk28.default.cyan(f.id)} migration`),logger25.info(error),logger25.info()}else fixResults[f.id]="skipped",fixSummary.skipped.push(f.id)}else fixResults[f.id]=fixResults[f.id]||"unnecessary"}return{fixResults,fixSummary}}var import_chalk29=__toESM(require("chalk")),import_ts_dedent38=__toESM(require("ts-dedent")),import_semver25=__toESM(require("semver"));var logger26=console,getNextGlob=glob2=>{let extGlobsRegex=new RegExp(/(.*\.)(stories\.@.*)(\|mdx|mdx\|)(.*)$/i);if(glob2.match(extGlobsRegex))return glob2.replace(extGlobsRegex,"$1@(mdx|$2$4)");let allStoriesExtensionsRegex=new RegExp(/(.*\.)(stories\.\*)$/i);return glob2.match(allStoriesExtensionsRegex)?glob2.replace(allStoriesExtensionsRegex,"$1@(mdx|$2)"):glob2.replaceAll(".stories.mdx",".mdx")},bareMdxStoriesGlob={id:"bare-mdx-stories-glob",async check({storybookVersion,mainConfig}){if(!import_semver25.default.gte(storybookVersion,"7.0.0"))return null;let existingStoriesEntries=mainConfig.stories;if(!existingStoriesEntries)throw new Error(import_ts_dedent38.default`
418
+ ❌ Unable to determine Storybook stories globs in ${import_chalk29.default.blue(mainConfig)}, skipping ${import_chalk29.default.cyan(this.id)} fix.
414
419
 
415
420
  In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx.
416
421
 
417
422
  We were unable to automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx.
418
423
  We suggest you make this change manually.
419
424
 
420
- To learn more about this change, see: ${import_chalk28.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files")}
425
+ To learn more about this change, see: ${import_chalk29.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files")}
421
426
  `);let nextStoriesEntries=existingStoriesEntries.map(entry=>{let isSpecifier=typeof entry!="string",glob2=isSpecifier?entry.files:entry;if(!glob2)return entry;let nextGlob=getNextGlob(glob2);return isSpecifier?{...entry,files:nextGlob}:nextGlob});return existingStoriesEntries.length===nextStoriesEntries.length&&existingStoriesEntries.every((entry,index)=>{let nextEntry=nextStoriesEntries[index];return typeof entry=="string"?entry===nextEntry:typeof nextEntry=="string"?!1:entry.files===nextEntry.files})?null:{existingStoriesEntries,nextStoriesEntries}},prompt({existingStoriesEntries,nextStoriesEntries}){let prettyExistingStoriesEntries=existingStoriesEntries.map(entry=>JSON.stringify(entry,null,2)).join(`
422
427
  `),prettyNextStoriesEntries=nextStoriesEntries.map(entry=>JSON.stringify(entry,null,2)).join(`
423
- `);return import_ts_dedent37.default`
428
+ `);return import_ts_dedent38.default`
424
429
  We've detected your project has one or more globs in your 'stories' config that matches .stories.mdx files:
425
- ${import_chalk28.default.cyan(prettyExistingStoriesEntries)}
430
+ ${import_chalk29.default.cyan(prettyExistingStoriesEntries)}
426
431
 
427
432
  In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx.
428
433
 
429
434
  We can automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx.
430
435
  That would result in the following 'stories' config:
431
- ${import_chalk28.default.cyan(prettyNextStoriesEntries)}
436
+ ${import_chalk29.default.cyan(prettyNextStoriesEntries)}
432
437
 
433
- To learn more about this change, see: ${import_chalk28.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files")}
434
- `},async run({dryRun,mainConfigPath,result:{nextStoriesEntries}}){logger26.info(import_ts_dedent37.default`✅ Setting 'stories' config:
435
- ${JSON.stringify(nextStoriesEntries,null,2)}`),dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{main.setFieldValue(["stories"],nextStoriesEntries)})}};var logger27=console;async function migrate(migration,{glob:glob2,dryRun,list,rename,parser}){if(list)(0,import_codemod.listCodemods)().forEach(key=>logger27.log(key));else if(migration)migration==="mdx-to-csf"&&!dryRun&&(await runFixes({fixes:[bareMdxStoriesGlob]}),await addStorybookBlocksPackage()),await(0,import_codemod.runCodemod)(migration,{glob:glob2,dryRun,logger:logger27,rename,parser});else throw new Error("Migrate: please specify a migration name or --list")}async function addStorybookBlocksPackage(){let packageManager=JsPackageManagerFactory.getPackageManager(),packageJson=await packageManager.retrievePackageJson(),versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());logger27.info('\u2705 Adding "@storybook/blocks" package'),await packageManager.addDependencies({installAsDevDependencies:!0,packageJson},[`@storybook/blocks@${versionToInstall}`])}var import_cross_spawn2=require("cross-spawn"),import_telemetry3=require("@storybook/telemetry"),import_semver26=__toESM(require("semver")),import_node_logger6=require("@storybook/node-logger"),import_core_server2=require("@storybook/core-server");var versionRegex=/(@storybook\/[^@]+)@(\S+)/,getStorybookVersion2=line=>{if(line.startsWith("npm "))return null;let match=versionRegex.exec(line);return!match||!import_semver26.default.clean(match[2])?null:{package:match[1],version:match[2]}},deprecatedPackages=[{minVersion:"6.0.0-alpha.0",url:"https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#60-deprecations",deprecations:["@storybook/addon-notes","@storybook/addon-info","@storybook/addon-contexts","@storybook/addon-options","@storybook/addon-centered"]}],formatPackage=pkg2=>`${pkg2.package}@${pkg2.version}`,warnPackages=pkgs=>pkgs.forEach(pkg2=>import_node_logger6.logger.warn(`- ${formatPackage(pkg2)}`)),checkVersionConsistency=()=>{let storybookPackages=(0,import_cross_spawn2.sync)("npm",["ls"],{stdio:"pipe",shell:!0}).output.toString().split(`
436
- `).map(getStorybookVersion2).filter(item=>!!item).filter(pkg2=>isCorePackage(pkg2.package));if(!storybookPackages.length){import_node_logger6.logger.warn("No storybook core packages found."),import_node_logger6.logger.warn("'npm ls | grep storybook' can show if multiple versions are installed.");return}storybookPackages.sort((a,b)=>import_semver26.default.rcompare(a.version,b.version));let latestVersion=storybookPackages[0].version,outdated=storybookPackages.filter(pkg2=>pkg2.version!==latestVersion);outdated.length>0&&(import_node_logger6.logger.warn(`Found ${outdated.length} outdated packages (relative to '${formatPackage(storybookPackages[0])}')`),import_node_logger6.logger.warn("Please make sure your packages are updated to ensure a consistent experience."),warnPackages(outdated)),deprecatedPackages.forEach(({minVersion:minVersion2,url,deprecations})=>{if(import_semver26.default.gte(latestVersion,minVersion2)){let deprecated=storybookPackages.filter(pkg2=>deprecations.includes(pkg2.package));deprecated.length>0&&(import_node_logger6.logger.warn(`Found ${deprecated.length} deprecated packages since ${minVersion2}`),import_node_logger6.logger.warn(`See ${url}`),warnPackages(deprecated))}})},EXTRA_FLAGS={"react-scripts@<5":["--reject","/preset-create-react-app/"]},addExtraFlags=(extraFlags,flags,{dependencies,devDependencies})=>Object.entries(extraFlags).reduce((acc,entry)=>{let[pattern,extra]=entry,[pkg2,specifier]=getPackageDetails(pattern),pkgVersion=dependencies?.[pkg2]||devDependencies?.[pkg2];return pkgVersion&&specifier&&import_semver26.default.satisfies(coerceSemver(pkgVersion),specifier)?[...acc,...extra]:acc},[...flags]),addNxPackagesToReject=flags=>{let newFlags=[...flags],index=flags.indexOf("--reject");return index>-1?newFlags[index+1].endsWith("/")&&newFlags[index+1].startsWith("/")?(newFlags[index+1]=newFlags[index+1].substring(1,newFlags[index+1].length-1),newFlags[index+1]=`/(${newFlags[index+1]}|@nrwl/storybook|@nx/storybook)/`):newFlags[index+1]=`${newFlags[index+1]},@nrwl/storybook,@nx/storybook`:(newFlags.push("--reject"),newFlags.push("@nrwl/storybook,@nx/storybook")),newFlags},doUpgrade=async({tag,prerelease,skipCheck,useNpm,packageManager:pkgMgr,dryRun,configDir,yes,...options})=>{useNpm&&(useNpmWarning(),pkgMgr="npm");let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),beforeVersion=await(0,import_telemetry3.getStorybookCoreVersion)();if(commandLog("Checking for latest versions of '@storybook/*' packages"),tag&&prerelease)throw new Error("Cannot set both --tag and --prerelease. Use --tag next to get the latest prereleae");let target="latest";prerelease?target="@next":tag&&(target=`@${tag}`);let flags=[];dryRun||flags.push("--upgrade"),flags.push("--target"),flags.push(target),flags=addExtraFlags(EXTRA_FLAGS,flags,await packageManager.retrievePackageJson()),flags=addNxPackagesToReject(flags);let check=(0,import_cross_spawn2.sync)("npx",["npm-check-updates@latest","/storybook/",...flags],{stdio:"pipe",shell:!0});import_node_logger6.logger.info(check.stdout.toString()),import_node_logger6.logger.info(check.stderr.toString());let checkSb=(0,import_cross_spawn2.sync)("npx",["npm-check-updates@latest","sb",...flags],{stdio:"pipe",shell:!0});import_node_logger6.logger.info(checkSb.stdout.toString()),import_node_logger6.logger.info(checkSb.stderr.toString()),dryRun||(commandLog("Installing upgrades"),await packageManager.installDependencies());let automigrationResults;if(skipCheck||(checkVersionConsistency(),automigrationResults=await automigrate({dryRun,yes,packageManager:pkgMgr,configDir})),!options.disableTelemetry){let afterVersion=await(0,import_telemetry3.getStorybookCoreVersion)(),{preCheckFailure,fixResults}=automigrationResults||{};(0,import_telemetry3.telemetry)("upgrade",{prerelease,tag,beforeVersion,afterVersion,...{automigrationResults:preCheckFailure?null:fixResults,automigrationPreCheckFailure:preCheckFailure||null}})}};async function upgrade(options){await(0,import_core_server2.withTelemetry)("upgrade",{cliOptions:options},()=>doUpgrade(options))}var import_prompts10=__toESM(require("prompts")),import_path22=__toESM(require("path")),import_chalk29=__toESM(require("chalk")),import_boxen5=__toESM(require_boxen()),import_ts_dedent38=require("ts-dedent"),import_giget=require("giget"),import_fs_extra13=require("fs-extra"),import_tiny_invariant7=__toESM(require("tiny-invariant"));var baseTemplates={"cra/default-js":{name:"Create React App Latest (Webpack | JavaScript)",script:"npx create-react-app {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"cra/default-ts":{name:"Create React App Latest (Webpack | TypeScript)",script:"npx create-react-app {{beforeDir}} --template typescript",skipTasks:["smoke-test","bench"],expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"}},"nextjs/13-ts":{name:"Next.js v13.5 (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} -e https://github.com/vercel/next.js/tree/next-13/examples/hello-world && cd {{beforeDir}} && npm pkg set "dependencies.next"="^12.2.0" && yarn && git add . && git commit --amend --no-edit && cd ..',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"],inDevelopment:!0},"nextjs/default-js":{name:"Next.js Latest (Webpack | JavaScript)",script:'yarn create next-app {{beforeDir}} --javascript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/default-ts":{name:"Next.js Latest (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} --typescript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/prerelease":{name:"Next.js Prerelease (Webpack | TypeScript)",script:'npx create-next-app@canary {{beforeDir}} --typescript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"react-vite/default-js":{name:"React Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template react",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"react-vite/default-ts":{name:"React Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template react-ts",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["bench"]},"react-webpack/18-ts":{name:"React Latest (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"react-webpack/17-ts":{name:"React v17 (Webpack | TypeScript)",script:'yarn create webpack5-react {{beforeDir}} --version-react="17" --version-react-dom="17"',expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"solid-vite/default-js":{name:"SolidJS Latest (Vite | JavaScript)",script:"npx degit solidjs/templates/js {{beforeDir}}",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev","bench"]},"solid-vite/default-ts":{name:"SolidJS Latest (Vite | TypeScript)",script:"npx degit solidjs/templates/ts {{beforeDir}}",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev","bench"]},"vue3-vite/default-js":{name:"Vue v3 (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template vue",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"vue3-vite/default-ts":{name:"Vue v3 (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template vue-ts",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"html-webpack/default":{name:"HTML Latest (Webpack | JavaScript)",script:"yarn create webpack5-html {{beforeDir}}",expected:{framework:"@storybook/html-webpack5",renderer:"@storybook/html",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"html-vite/default-js":{name:"HTML Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template vanilla && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"html-vite/default-ts":{name:"HTML Latest (Vite | TypeScript)",script:'npm create vite --yes {{beforeDir}} -- --template vanilla-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-vite/default-js":{name:"Svelte Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template svelte",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-vite/default-ts":{name:"Svelte Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template svelte-ts",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"angular-cli/prerelease":{name:"Angular CLI Prerelease (Webpack | TypeScript)",script:"npx -p @angular/cli@next ng new angular-v16 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn --ssr",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"angular-cli/default-ts":{name:"Angular CLI Latest (Webpack | TypeScript)",script:"npx -p @angular/cli ng new angular-latest --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn --ssr",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"angular-cli/15-ts":{name:"Angular CLI v15 (Webpack | TypeScript)",script:"npx -p @angular/cli@15 ng new angular-v15 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-js":{name:"SvelteKit Latest (Vite | JavaScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory={{beforeDir}} --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-ts":{name:"SvelteKit Latest (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/prerelease-ts":{name:"SvelteKit Prerelease (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/prerelease-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"lit-vite/default-js":{name:"Lit Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"lit-vite/default-ts":{name:"Lit Latest (Vite | TypeScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"vue-cli/default-js":{name:"Vue CLI v3 (Webpack | JavaScript)",script:'npx -p @vue/cli vue create {{beforeDir}} --default --packageManager=yarn --force --merge && cd {{beforeDir}} && echo "module.exports = {}" > webpack.config.js',expected:{framework:"@storybook/vue3-webpack5",renderer:"@storybook/vue3",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"preact-vite/default-js":{name:"Preact Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template preact",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"preact-vite/default-ts":{name:"Preact Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template preact-ts",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"qwik-vite/default-ts":{name:"Qwik CLI Latest (Vite | TypeScript)",script:"yarn create qwik basic {{beforeDir}}",inDevelopment:!0,expected:{framework:"storybook-framework-qwik",renderer:"storybook-framework-qwik",builder:"storybook-framework-qwik"},skipTasks:["e2e-tests","e2e-tests-dev","bench"]},"ember/3-js":{name:"Ember v3 (Webpack | JavaScript)",script:"npx --package ember-cli@3.28.1 ember new {{beforeDir}}",inDevelopment:!0,expected:{framework:"@storybook/ember",renderer:"@storybook/ember",builder:"@storybook/builder-webpack5"}},"ember/default-js":{name:"Ember v4 (Webpack | JavaScript)",script:"npx --package ember-cli@4.12.1 ember new {{beforeDir}} --yarn && cd {{beforeDir}} && yarn add --dev @storybook/ember-cli-storybook && yarn build",inDevelopment:!0,expected:{framework:"@storybook/ember",renderer:"@storybook/ember",builder:"@storybook/builder-webpack5"}}},internalTemplates={"internal/swc-webpack":{...baseTemplates["react-webpack/18-ts"],name:"SWC (react-webpack/18-ts)",isInternal:!0,inDevelopment:!0,modifications:{mainConfig:{framework:{name:"@storybook/react-webpack5",options:{builder:{useSWC:!0}}}}},skipTasks:["bench"]},"internal/react16-webpack":{name:"React 16 (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}} --version-react=16 --version-react-dom=16 --version-@types/react=16 --version-@types/react-dom=16",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"],isInternal:!0},"internal/server-webpack5":{name:"Server Webpack5",script:'yarn init -y && echo "module.exports = {}" > webpack.config.js',expected:{framework:"@storybook/server-webpack5",renderer:"@storybook/server",builder:"@storybook/builder-webpack5"},isInternal:!0,skipTasks:["bench"]}},benchTemplates={"bench/react-vite-default-ts":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts)",isInternal:!0,modifications:{skipTemplateStories:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-webpack-18-ts":{...baseTemplates["react-webpack/18-ts"],name:"Bench (react-webpack/18-ts)",isInternal:!0,modifications:{skipTemplateStories:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-vite-default-ts-nodocs":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts, no docs)",isInternal:!0,modifications:{skipTemplateStories:!0,disableDocs:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-vite-default-ts-test-build":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts, test-build)",isInternal:!0,modifications:{skipTemplateStories:!0,testBuild:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests"]},"bench/react-webpack-18-ts-test-build":{...baseTemplates["react-webpack/18-ts"],name:"Bench (react-webpack/18-ts, test-build)",isInternal:!0,modifications:{skipTemplateStories:!0,testBuild:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests"]}},allTemplates={...baseTemplates,...internalTemplates,...benchTemplates},normal=["cra/default-ts","react-vite/default-ts","angular-cli/default-ts","vue3-vite/default-ts","lit-vite/default-ts","svelte-vite/default-ts","svelte-kit/skeleton-ts","nextjs/default-ts","bench/react-vite-default-ts","bench/react-webpack-18-ts","bench/react-vite-default-ts-nodocs","bench/react-vite-default-ts-test-build","bench/react-webpack-18-ts-test-build","ember/default-js"],merged=[...normal,"react-webpack/18-ts","react-webpack/17-ts","angular-cli/15-ts","preact-vite/default-ts","html-webpack/default","html-vite/default-ts"],daily=[...merged,"angular-cli/prerelease","cra/default-js","react-vite/default-js","vue3-vite/default-js","vue-cli/default-js","lit-vite/default-js","svelte-kit/skeleton-js","svelte-vite/default-js","nextjs/13-ts","nextjs/default-js","nextjs/prerelease","qwik-vite/default-ts","preact-vite/default-js","html-vite/default-js","internal/react16-webpack"];var logger29=console,toChoices=c=>({title:allTemplates[c].name,value:c}),sandbox=async({output:outputDirectory,filterValue,branch,init})=>{let selectedConfig=allTemplates[filterValue],selectedTemplate=selectedConfig?filterValue:null;if(!selectedConfig){let filterRegex=new RegExp(`^${filterValue||""}`,"i"),keys=Object.keys(allTemplates),choices=keys.reduce((acc,group)=>{let current=allTemplates[group];return(!filterValue||current.name.match(filterRegex)||group.match(filterRegex)||current.expected.builder.match(filterRegex)||current.expected.framework.match(filterRegex)||current.expected.renderer.match(filterRegex))&&acc.push(group),acc},[]);if(choices.length===0&&(logger29.info((0,import_boxen5.default)(import_ts_dedent38.dedent`
438
+ To learn more about this change, see: ${import_chalk29.default.yellow("https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files")}
439
+ `},async run({dryRun,mainConfigPath,result:{nextStoriesEntries}}){logger26.info(import_ts_dedent38.default`✅ Setting 'stories' config:
440
+ ${JSON.stringify(nextStoriesEntries,null,2)}`),dryRun||await updateMainConfig({mainConfigPath,dryRun:!!dryRun},async main=>{main.setFieldValue(["stories"],nextStoriesEntries)})}};var logger27=console;async function migrate(migration,{glob:glob2,dryRun,list,rename,parser}){if(list)(0,import_codemod.listCodemods)().forEach(key=>logger27.log(key));else if(migration)migration==="mdx-to-csf"&&!dryRun&&(await runFixes({fixes:[bareMdxStoriesGlob]}),await addStorybookBlocksPackage()),await(0,import_codemod.runCodemod)(migration,{glob:glob2,dryRun,logger:logger27,rename,parser});else throw new Error("Migrate: please specify a migration name or --list")}async function addStorybookBlocksPackage(){let packageManager=JsPackageManagerFactory.getPackageManager(),packageJson=await packageManager.retrievePackageJson(),versionToInstall=getStorybookVersionSpecifier(await packageManager.retrievePackageJson());logger27.info('\u2705 Adding "@storybook/blocks" package'),await packageManager.addDependencies({installAsDevDependencies:!0,packageJson},[`@storybook/blocks@${versionToInstall}`])}var import_cross_spawn2=require("cross-spawn"),import_telemetry3=require("@storybook/telemetry"),import_semver26=__toESM(require("semver")),import_node_logger6=require("@storybook/node-logger"),import_core_server2=require("@storybook/core-server"),import_server_errors4=require("@storybook/core-events/server-errors");var versionRegex=/(@storybook\/[^@]+)@(\S+)/,getStorybookVersion2=line=>{if(line.startsWith("npm "))return null;let match=versionRegex.exec(line);return!match||!import_semver26.default.clean(match[2])?null:{package:match[1],version:match[2]}},deprecatedPackages=[{minVersion:"6.0.0-alpha.0",url:"https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#60-deprecations",deprecations:["@storybook/addon-notes","@storybook/addon-info","@storybook/addon-contexts","@storybook/addon-options","@storybook/addon-centered"]}],formatPackage=pkg2=>`${pkg2.package}@${pkg2.version}`,warnPackages=pkgs=>pkgs.forEach(pkg2=>import_node_logger6.logger.warn(`- ${formatPackage(pkg2)}`)),checkVersionConsistency=()=>{let storybookPackages=(0,import_cross_spawn2.sync)("npm",["ls"],{stdio:"pipe",shell:!0}).output.toString().split(`
441
+ `).map(getStorybookVersion2).filter(item=>!!item).filter(pkg2=>isCorePackage(pkg2.package));if(!storybookPackages.length){import_node_logger6.logger.warn("No storybook core packages found."),import_node_logger6.logger.warn("'npm ls | grep storybook' can show if multiple versions are installed.");return}storybookPackages.sort((a,b)=>import_semver26.default.rcompare(a.version,b.version));let latestVersion=storybookPackages[0].version,outdated=storybookPackages.filter(pkg2=>pkg2.version!==latestVersion);outdated.length>0&&(import_node_logger6.logger.warn(`Found ${outdated.length} outdated packages (relative to '${formatPackage(storybookPackages[0])}')`),import_node_logger6.logger.warn("Please make sure your packages are updated to ensure a consistent experience."),warnPackages(outdated)),deprecatedPackages.forEach(({minVersion:minVersion2,url,deprecations})=>{if(import_semver26.default.gte(latestVersion,minVersion2)){let deprecated=storybookPackages.filter(pkg2=>deprecations.includes(pkg2.package));deprecated.length>0&&(import_node_logger6.logger.warn(`Found ${deprecated.length} deprecated packages since ${minVersion2}`),import_node_logger6.logger.warn(`See ${url}`),warnPackages(deprecated))}})},EXTRA_FLAGS={"react-scripts@<5":["--reject","/preset-create-react-app/"]},addExtraFlags=(extraFlags,flags,{dependencies,devDependencies})=>Object.entries(extraFlags).reduce((acc,entry)=>{let[pattern,extra]=entry,[pkg2,specifier]=getPackageDetails(pattern),pkgVersion=dependencies?.[pkg2]||devDependencies?.[pkg2];return pkgVersion&&specifier&&import_semver26.default.satisfies(coerceSemver(pkgVersion),specifier)?[...acc,...extra]:acc},[...flags]),addNxPackagesToReject=flags=>{let newFlags=[...flags],index=flags.indexOf("--reject");return index>-1?newFlags[index+1].endsWith("/")&&newFlags[index+1].startsWith("/")?(newFlags[index+1]=newFlags[index+1].substring(1,newFlags[index+1].length-1),newFlags[index+1]=`"/(${newFlags[index+1]}|@nrwl/storybook|@nx/storybook)/"`):newFlags[index+1]=`${newFlags[index+1]},@nrwl/storybook,@nx/storybook`:(newFlags.push("--reject"),newFlags.push("@nrwl/storybook,@nx/storybook")),newFlags},doUpgrade=async({tag,prerelease,skipCheck,packageManager:pkgMgr,dryRun,configDir,yes,...options})=>{let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),beforeVersion=await(0,import_telemetry3.getStorybookCoreVersion)();if(commandLog(`Checking for latest versions of '@storybook/*' packages
442
+ `),tag&&prerelease)throw new import_server_errors4.ConflictingVersionTagsError;let target="latest";prerelease?target="@next":tag&&(target=`@${tag}`);let flags=[];dryRun||flags.push("--upgrade"),flags.push("--target"),flags.push(target),flags=addExtraFlags(EXTRA_FLAGS,flags,await packageManager.retrievePackageJson()),flags=addNxPackagesToReject(flags);let command2="npx",checkArgs=["npm-check-updates@latest","/storybook/",...flags],check=(0,import_cross_spawn2.sync)(command2,checkArgs,{stdio:"pipe",shell:!0});if(check.stderr&&!check.stderr.toString().includes("npm notice"))throw new import_server_errors4.UpgradeStorybookPackagesError({command:command2,args:checkArgs,errorMessage:check.stderr.toString()});import_node_logger6.logger.info(check.stdout.toString());let checkSbArgs=["npm-check-updates@latest","sb",...flags],checkSb=(0,import_cross_spawn2.sync)(command2,checkSbArgs,{stdio:"pipe",shell:!0});if(import_node_logger6.logger.info(checkSb.stdout.toString()),import_node_logger6.logger.info(checkSb.stderr.toString()),checkSb.stderr&&!checkSb.stderr.toString().includes("npm notice"))throw new import_server_errors4.UpgradeStorybookPackagesError({command:command2,args:checkSbArgs,errorMessage:checkSb.stderr.toString()});dryRun||(commandLog("Installing upgrades"),await packageManager.installDependencies());let automigrationResults;if(skipCheck||(checkVersionConsistency(),automigrationResults=await automigrate({dryRun,yes,packageManager:pkgMgr,configDir})),!options.disableTelemetry){let afterVersion=await(0,import_telemetry3.getStorybookCoreVersion)(),{preCheckFailure,fixResults}=automigrationResults||{};(0,import_telemetry3.telemetry)("upgrade",{prerelease,tag,beforeVersion,afterVersion,...{automigrationResults:preCheckFailure?null:fixResults,automigrationPreCheckFailure:preCheckFailure||null}})}};async function upgrade(options){await(0,import_core_server2.withTelemetry)("upgrade",{cliOptions:options},()=>doUpgrade(options))}var import_prompts10=__toESM(require("prompts")),import_path22=__toESM(require("path")),import_chalk30=__toESM(require("chalk")),import_boxen5=__toESM(require_boxen()),import_ts_dedent39=require("ts-dedent"),import_giget=require("giget"),import_fs_extra13=require("fs-extra"),import_tiny_invariant7=__toESM(require("tiny-invariant"));var baseTemplates={"cra/default-js":{name:"Create React App Latest (Webpack | JavaScript)",script:"npx create-react-app {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"cra/default-ts":{name:"Create React App Latest (Webpack | TypeScript)",script:"npx create-react-app {{beforeDir}} --template typescript",skipTasks:["smoke-test","bench"],expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"}},"nextjs/13-ts":{name:"Next.js v13.5 (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} -e https://github.com/vercel/next.js/tree/next-13/examples/hello-world && cd {{beforeDir}} && npm pkg set "dependencies.next"="^12.2.0" && yarn && git add . && git commit --amend --no-edit && cd ..',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"],inDevelopment:!0},"nextjs/default-js":{name:"Next.js Latest (Webpack | JavaScript)",script:'yarn create next-app {{beforeDir}} --javascript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/default-ts":{name:"Next.js Latest (Webpack | TypeScript)",script:'yarn create next-app {{beforeDir}} --typescript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"nextjs/prerelease":{name:"Next.js Prerelease (Webpack | TypeScript)",script:'npx create-next-app@canary {{beforeDir}} --typescript --eslint --tailwind --app --import-alias="@/*" --src-dir',expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},modifications:{mainConfig:{features:{experimentalNextRSC:!0}},extraDependencies:["server-only"]},skipTasks:["e2e-tests-dev","bench"]},"react-vite/default-js":{name:"React Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template react",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"react-vite/default-ts":{name:"React Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template react-ts",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["bench"]},"react-webpack/18-ts":{name:"React Latest (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}}",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"react-webpack/17-ts":{name:"React v17 (Webpack | TypeScript)",script:'yarn create webpack5-react {{beforeDir}} --version-react="17" --version-react-dom="17"',expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"solid-vite/default-js":{name:"SolidJS Latest (Vite | JavaScript)",script:"npx degit solidjs/templates/js {{beforeDir}}",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev","bench"]},"solid-vite/default-ts":{name:"SolidJS Latest (Vite | TypeScript)",script:"npx degit solidjs/templates/ts {{beforeDir}}",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev","bench"]},"vue3-vite/default-js":{name:"Vue v3 (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template vue",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"vue3-vite/default-ts":{name:"Vue v3 (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template vue-ts",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"html-webpack/default":{name:"HTML Latest (Webpack | JavaScript)",script:"yarn create webpack5-html {{beforeDir}}",expected:{framework:"@storybook/html-webpack5",renderer:"@storybook/html",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"html-vite/default-js":{name:"HTML Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template vanilla && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"html-vite/default-ts":{name:"HTML Latest (Vite | TypeScript)",script:'npm create vite --yes {{beforeDir}} -- --template vanilla-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-vite/default-js":{name:"Svelte Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template svelte",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-vite/default-ts":{name:"Svelte Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template svelte-ts",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"angular-cli/prerelease":{name:"Angular CLI Prerelease (Webpack | TypeScript)",script:"npx -p @angular/cli@next ng new angular-v16 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn --ssr",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"angular-cli/default-ts":{name:"Angular CLI Latest (Webpack | TypeScript)",script:"npx -p @angular/cli ng new angular-latest --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn --ssr",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"angular-cli/15-ts":{name:"Angular CLI v15 (Webpack | TypeScript)",script:"npx -p @angular/cli@15 ng new angular-v15 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn",expected:{framework:"@storybook/angular",renderer:"@storybook/angular",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-js":{name:"SvelteKit Latest (Vite | JavaScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory={{beforeDir}} --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/skeleton-ts":{name:"SvelteKit Latest (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --no-svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"svelte-kit/prerelease-ts":{name:"SvelteKit Prerelease (Vite | TypeScript)",script:"yarn create svelte-with-args --name=svelte-kit/prerelease-ts --directory={{beforeDir}} --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest --svelte5",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"lit-vite/default-js":{name:"Lit Latest (Vite | JavaScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"lit-vite/default-ts":{name:"Lit Latest (Vite | TypeScript)",script:'npm create vite --yes {{beforeDir}} -- --template lit-ts && cd {{beforeDir}} && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"vue-cli/default-js":{name:"Vue CLI v3 (Webpack | JavaScript)",script:'npx -p @vue/cli vue create {{beforeDir}} --default --packageManager=yarn --force --merge && cd {{beforeDir}} && echo "module.exports = {}" > webpack.config.js',expected:{framework:"@storybook/vue3-webpack5",renderer:"@storybook/vue3",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev","bench"]},"preact-vite/default-js":{name:"Preact Latest (Vite | JavaScript)",script:"npm create vite --yes {{beforeDir}} -- --template preact",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"preact-vite/default-ts":{name:"Preact Latest (Vite | TypeScript)",script:"npm create vite --yes {{beforeDir}} -- --template preact-ts",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev","bench"]},"qwik-vite/default-ts":{name:"Qwik CLI Latest (Vite | TypeScript)",script:"yarn create qwik basic {{beforeDir}}",inDevelopment:!0,expected:{framework:"storybook-framework-qwik",renderer:"storybook-framework-qwik",builder:"storybook-framework-qwik"},skipTasks:["e2e-tests","e2e-tests-dev","bench"]},"ember/3-js":{name:"Ember v3 (Webpack | JavaScript)",script:"npx --package ember-cli@3.28.1 ember new {{beforeDir}}",inDevelopment:!0,expected:{framework:"@storybook/ember",renderer:"@storybook/ember",builder:"@storybook/builder-webpack5"}},"ember/default-js":{name:"Ember v4 (Webpack | JavaScript)",script:"npx --package ember-cli@4.12.1 ember new {{beforeDir}} --yarn && cd {{beforeDir}} && yarn add --dev @storybook/ember-cli-storybook && yarn build",inDevelopment:!0,expected:{framework:"@storybook/ember",renderer:"@storybook/ember",builder:"@storybook/builder-webpack5"}}},internalTemplates={"internal/swc-webpack":{...baseTemplates["react-webpack/18-ts"],name:"SWC (react-webpack/18-ts)",isInternal:!0,inDevelopment:!0,modifications:{mainConfig:{framework:{name:"@storybook/react-webpack5",options:{builder:{useSWC:!0}}}}},skipTasks:["bench"]},"internal/react16-webpack":{name:"React 16 (Webpack | TypeScript)",script:"yarn create webpack5-react {{beforeDir}} --version-react=16 --version-react-dom=16 --version-@types/react=16 --version-@types/react-dom=16",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev","bench"],isInternal:!0},"internal/server-webpack5":{name:"Server Webpack5",script:'yarn init -y && echo "module.exports = {}" > webpack.config.js',expected:{framework:"@storybook/server-webpack5",renderer:"@storybook/server",builder:"@storybook/builder-webpack5"},isInternal:!0,skipTasks:["bench"]}},benchTemplates={"bench/react-vite-default-ts":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts)",isInternal:!0,modifications:{skipTemplateStories:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-webpack-18-ts":{...baseTemplates["react-webpack/18-ts"],name:"Bench (react-webpack/18-ts)",isInternal:!0,modifications:{skipTemplateStories:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-vite-default-ts-nodocs":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts, no docs)",isInternal:!0,modifications:{skipTemplateStories:!0,disableDocs:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests","chromatic"]},"bench/react-vite-default-ts-test-build":{...baseTemplates["react-vite/default-ts"],name:"Bench (react-vite/default-ts, test-build)",isInternal:!0,modifications:{skipTemplateStories:!0,testBuild:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests"]},"bench/react-webpack-18-ts-test-build":{...baseTemplates["react-webpack/18-ts"],name:"Bench (react-webpack/18-ts, test-build)",isInternal:!0,modifications:{skipTemplateStories:!0,testBuild:!0},skipTasks:["e2e-tests-dev","test-runner","test-runner-dev","e2e-tests"]}},allTemplates={...baseTemplates,...internalTemplates,...benchTemplates},normal=["cra/default-ts","react-vite/default-ts","angular-cli/default-ts","vue3-vite/default-ts","lit-vite/default-ts","svelte-vite/default-ts","svelte-kit/skeleton-ts","nextjs/default-ts","bench/react-vite-default-ts","bench/react-webpack-18-ts","bench/react-vite-default-ts-nodocs","bench/react-vite-default-ts-test-build","bench/react-webpack-18-ts-test-build","ember/default-js"],merged=[...normal,"react-webpack/18-ts","react-webpack/17-ts","angular-cli/15-ts","preact-vite/default-ts","html-webpack/default","html-vite/default-ts"],daily=[...merged,"angular-cli/prerelease","cra/default-js","react-vite/default-js","vue3-vite/default-js","vue-cli/default-js","lit-vite/default-js","svelte-kit/skeleton-js","svelte-vite/default-js","nextjs/13-ts","nextjs/default-js","nextjs/prerelease","qwik-vite/default-ts","preact-vite/default-js","html-vite/default-js","internal/react16-webpack"];var logger29=console,toChoices=c=>({title:allTemplates[c].name,value:c}),sandbox=async({output:outputDirectory,filterValue,branch,init})=>{let selectedConfig=allTemplates[filterValue],selectedTemplate=selectedConfig?filterValue:null;if(!selectedConfig){let filterRegex=new RegExp(`^${filterValue||""}`,"i"),keys=Object.keys(allTemplates),choices=keys.reduce((acc,group)=>{let current=allTemplates[group];return(!filterValue||current.name.match(filterRegex)||group.match(filterRegex)||current.expected.builder.match(filterRegex)||current.expected.framework.match(filterRegex)||current.expected.renderer.match(filterRegex))&&acc.push(group),acc},[]);if(choices.length===0&&(logger29.info((0,import_boxen5.default)(import_ts_dedent39.dedent`
437
443
  🔎 You filtered out all templates. 🔍
438
444
 
439
- After filtering all the templates with "${import_chalk29.default.yellow(filterValue)}", we found no results. Please try again with a different filter.
445
+ After filtering all the templates with "${import_chalk30.default.yellow(filterValue)}", we found no results. Please try again with a different filter.
440
446
 
441
447
  Available templates:
442
- ${keys.map(key=>import_chalk29.default.blue`- ${key}`).join(`
448
+ ${keys.map(key=>import_chalk30.default.blue`- ${key}`).join(`
443
449
  `)}
444
- `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),process.exit(1)),choices.length===1?[selectedTemplate]=choices:(logger29.info((0,import_boxen5.default)(import_ts_dedent38.dedent`
445
- 🤗 Welcome to ${import_chalk29.default.yellow("sb sandbox")}! 🤗
450
+ `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),process.exit(1)),choices.length===1?[selectedTemplate]=choices:(logger29.info((0,import_boxen5.default)(import_ts_dedent39.dedent`
451
+ 🤗 Welcome to ${import_chalk30.default.yellow("sb sandbox")}! 🤗
446
452
 
447
- Create a ${import_chalk29.default.green("new project")} to minimally reproduce Storybook issues.
453
+ Create a ${import_chalk30.default.green("new project")} to minimally reproduce Storybook issues.
448
454
 
449
455
  1. select an environment that most closely matches your project setup.
450
456
  2. select a location for the reproduction, outside of your project.
451
457
 
452
458
  After the reproduction is ready, we'll guide you through the next steps.
453
- `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),selectedTemplate=await promptSelectedTemplate(choices)),!!!(selectedTemplate??null)){logger29.error("Somehow we got no templates. Please rerun this command!");return}if(selectedConfig=selectedTemplate?allTemplates[selectedTemplate]:void 0,!selectedConfig)throw new Error("\u{1F6A8} Sandbox: please specify a valid template type")}let selectedDirectory=outputDirectory,outputDirectoryName=outputDirectory||selectedTemplate;if(selectedDirectory&&(0,import_fs_extra13.existsSync)(`${selectedDirectory}`)&&logger29.info(`\u26A0\uFE0F ${selectedDirectory} already exists! Overwriting...`),!selectedDirectory){let{directory:directory2}=await(0,import_prompts10.default)({type:"text",message:"Enter the output directory",name:"directory",initial:outputDirectoryName??void 0,validate:async directoryName=>(0,import_fs_extra13.existsSync)(directoryName)?`${directoryName} already exists. Please choose another name.`:!0},{onCancel:()=>{logger29.log("Command cancelled by the user. Exiting..."),process.exit(1)}});selectedDirectory=directory2}(0,import_tiny_invariant7.default)(selectedDirectory);try{let templateDestination=import_path22.default.isAbsolute(selectedDirectory)?selectedDirectory:import_path22.default.join(process.cwd(),selectedDirectory);logger29.info(`\u{1F3C3} Adding ${selectedConfig.name} into ${templateDestination}`),logger29.log("\u{1F4E6} Downloading sandbox template...");try{let gitPath=`github:storybookjs/sandboxes/${selectedTemplate}/${init?"after-storybook":"before-storybook"}#${branch}`;if(await(0,import_giget.downloadTemplate)(gitPath,{force:!0,dir:templateDestination}),(await(0,import_fs_extra13.readdir)(templateDestination)).length===0)throw new Error(import_ts_dedent38.dedent`Template downloaded from ${import_chalk29.default.blue(gitPath)} is empty.
454
- Are you use it exists? Or did you want to set ${import_chalk29.default.yellow(selectedTemplate)} to inDevelopment first?`)}catch(err){throw logger29.error(`\u{1F6A8} Failed to download sandbox template: ${String(err)}`),err}let initMessage=init?import_chalk29.default.yellow(`yarn install
455
- yarn storybook`):`Recreate your setup, then ${import_chalk29.default.yellow("npx storybook@latest init")}`;logger29.info((0,import_boxen5.default)(import_ts_dedent38.dedent`
459
+ `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"})),selectedTemplate=await promptSelectedTemplate(choices)),!!!(selectedTemplate??null)){logger29.error("Somehow we got no templates. Please rerun this command!");return}if(selectedConfig=selectedTemplate?allTemplates[selectedTemplate]:void 0,!selectedConfig)throw new Error("\u{1F6A8} Sandbox: please specify a valid template type")}let selectedDirectory=outputDirectory,outputDirectoryName=outputDirectory||selectedTemplate;if(selectedDirectory&&(0,import_fs_extra13.existsSync)(`${selectedDirectory}`)&&logger29.info(`\u26A0\uFE0F ${selectedDirectory} already exists! Overwriting...`),!selectedDirectory){let{directory:directory2}=await(0,import_prompts10.default)({type:"text",message:"Enter the output directory",name:"directory",initial:outputDirectoryName??void 0,validate:async directoryName=>(0,import_fs_extra13.existsSync)(directoryName)?`${directoryName} already exists. Please choose another name.`:!0},{onCancel:()=>{logger29.log("Command cancelled by the user. Exiting..."),process.exit(1)}});selectedDirectory=directory2}(0,import_tiny_invariant7.default)(selectedDirectory);try{let templateDestination=import_path22.default.isAbsolute(selectedDirectory)?selectedDirectory:import_path22.default.join(process.cwd(),selectedDirectory);logger29.info(`\u{1F3C3} Adding ${selectedConfig.name} into ${templateDestination}`),logger29.log("\u{1F4E6} Downloading sandbox template...");try{let gitPath=`github:storybookjs/sandboxes/${selectedTemplate}/${init?"after-storybook":"before-storybook"}#${branch}`;if(await(0,import_giget.downloadTemplate)(gitPath,{force:!0,dir:templateDestination}),(await(0,import_fs_extra13.readdir)(templateDestination)).length===0)throw new Error(import_ts_dedent39.dedent`Template downloaded from ${import_chalk30.default.blue(gitPath)} is empty.
460
+ Are you use it exists? Or did you want to set ${import_chalk30.default.yellow(selectedTemplate)} to inDevelopment first?`)}catch(err){throw logger29.error(`\u{1F6A8} Failed to download sandbox template: ${String(err)}`),err}let initMessage=init?import_chalk30.default.yellow(`yarn install
461
+ yarn storybook`):`Recreate your setup, then ${import_chalk30.default.yellow("npx storybook@latest init")}`;logger29.info((0,import_boxen5.default)(import_ts_dedent39.dedent`
456
462
  🎉 Your Storybook reproduction project is ready to use! 🎉
457
463
 
458
- ${import_chalk29.default.yellow(`cd ${selectedDirectory}`)}
464
+ ${import_chalk30.default.yellow(`cd ${selectedDirectory}`)}
459
465
  ${initMessage}
460
466
 
461
467
  Once you've recreated the problem you're experiencing, please:
462
468
 
463
- 1. Document any additional steps in ${import_chalk29.default.cyan("README.md")}
469
+ 1. Document any additional steps in ${import_chalk30.default.cyan("README.md")}
464
470
  2. Publish the repository to github
465
471
  3. Link to the repro repository in your issue
466
472
 
467
473
  Having a clean repro helps us solve your issue faster! 🙏
468
- `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"}))}catch(error){throw logger29.error("\u{1F6A8} Failed to create sandbox"),error}};async function promptSelectedTemplate(choices){let{template}=await(0,import_prompts10.default)({type:"select",message:"\u{1F308} Select the template",name:"template",choices:choices.map(toChoices)},{onCancel:()=>{logger29.log("Command cancelled by the user. Exiting..."),process.exit(1)}});return template||null}var import_fs_extra14=__toESM(require("fs-extra")),import_path23=__toESM(require("path")),import_cross_spawn3=require("cross-spawn"),import_node_logger7=require("@storybook/node-logger"),import_chalk30=__toESM(require("chalk")),exec=async(command2,options={},{startMessage,errorMessage,dryRun}={})=>{if(startMessage&&import_node_logger7.logger.info(startMessage),dryRun){import_node_logger7.logger.info(`
474
+ `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"}))}catch(error){throw logger29.error("\u{1F6A8} Failed to create sandbox"),error}};async function promptSelectedTemplate(choices){let{template}=await(0,import_prompts10.default)({type:"select",message:"\u{1F308} Select the template",name:"template",choices:choices.map(toChoices)},{onCancel:()=>{logger29.log("Command cancelled by the user. Exiting..."),process.exit(1)}});return template||null}var import_fs_extra14=__toESM(require("fs-extra")),import_path23=__toESM(require("path")),import_cross_spawn3=require("cross-spawn"),import_node_logger7=require("@storybook/node-logger"),import_chalk31=__toESM(require("chalk")),exec=async(command2,options={},{startMessage,errorMessage,dryRun}={})=>{if(startMessage&&import_node_logger7.logger.info(startMessage),dryRun){import_node_logger7.logger.info(`
469
475
  > ${command2}
470
- `);return}return import_node_logger7.logger.info(command2),new Promise((resolve2,reject)=>{let child=(0,import_cross_spawn3.spawn)(command2,{...options,shell:!0,stdio:"pipe"});child.stderr.pipe(process.stdout),child.stdout.pipe(process.stdout),child.on("exit",code=>{code===0?resolve2(void 0):(import_node_logger7.logger.error(import_chalk30.default.red(`An error occurred while executing: \`${command2}\``)),errorMessage&&import_node_logger7.logger.info(errorMessage),reject(new Error(`command exited with code: ${code}: `)))})})},link=async({target,local,start})=>{let storybookDir=process.cwd();try{if((await import_fs_extra14.default.readJSON("package.json")).name!=="@storybook/root")throw new Error}catch{throw new Error("Expected to run link from the root of the storybook monorepo")}let reproDir=target,reproName=import_path23.default.basename(target);if(!local){let reprosDir=import_path23.default.join(storybookDir,"../storybook-repros");import_node_logger7.logger.info(`Ensuring directory ${reprosDir}`),await import_fs_extra14.default.ensureDir(reprosDir),import_node_logger7.logger.info(`Cloning ${target}`),await exec(`git clone ${target}`,{cwd:reprosDir}),reproName=import_path23.default.basename(target,import_path23.default.extname(target)),reproDir=import_path23.default.join(reprosDir,reproName)}let reproPackageJson=await import_fs_extra14.default.readJSON(import_path23.default.join(reproDir,"package.json")),version=(0,import_cross_spawn3.sync)("yarn",["--version"],{cwd:reproDir,stdio:"pipe",shell:!0}).stdout.toString();if(!/^[2-4]\./.test(version)){import_node_logger7.logger.warn(`\u{1F6A8} Expected yarn 2 or higher in ${reproDir}!`),import_node_logger7.logger.warn(""),import_node_logger7.logger.warn("Please set it up with `yarn set version berry`,"),import_node_logger7.logger.warn(`then link '${reproDir}' with the '--local' flag.`);return}import_node_logger7.logger.info(`Linking ${reproDir}`),await exec(`yarn link --all ${storybookDir}`,{cwd:reproDir}),import_node_logger7.logger.info(`Installing ${reproName}`),await exec("yarn install",{cwd:reproDir}),reproPackageJson.devDependencies?.vite||await exec("yarn add -D webpack-hot-middleware",{cwd:reproDir}),await exec("yarn add @types/node@18",{cwd:reproDir}),start&&(import_node_logger7.logger.info(`Running ${reproName} storybook`),await exec("yarn run storybook",{cwd:reproDir}))};var import_ts_dedent39=require("ts-dedent"),import_read_pkg_up=require("read-pkg-up"),import_node_logger8=require("@storybook/node-logger"),import_core_server3=require("@storybook/core-server"),import_core_common10=require("@storybook/core-common"),import_tiny_invariant8=__toESM(require("tiny-invariant"));function printError(error){import_node_logger8.instance.heading="",error instanceof Error?error.error?import_node_logger8.logger.error(error.error):error.stats&&error.stats.compilation.errors?error.stats.compilation.errors.forEach(e=>import_node_logger8.logger.plain(e)):import_node_logger8.logger.error(error):error.compilation?.errors&&error.compilation.errors.forEach(e=>import_node_logger8.logger.plain(e)),import_node_logger8.logger.line(),import_node_logger8.logger.warn(error.close?import_ts_dedent39.dedent`
476
+ `);return}return import_node_logger7.logger.info(command2),new Promise((resolve2,reject)=>{let child=(0,import_cross_spawn3.spawn)(command2,{...options,shell:!0,stdio:"pipe"});child.stderr.pipe(process.stdout),child.stdout.pipe(process.stdout),child.on("exit",code=>{code===0?resolve2(void 0):(import_node_logger7.logger.error(import_chalk31.default.red(`An error occurred while executing: \`${command2}\``)),errorMessage&&import_node_logger7.logger.info(errorMessage),reject(new Error(`command exited with code: ${code}: `)))})})},link=async({target,local,start})=>{let storybookDir=process.cwd();try{if((await import_fs_extra14.default.readJSON("package.json")).name!=="@storybook/root")throw new Error}catch{throw new Error("Expected to run link from the root of the storybook monorepo")}let reproDir=target,reproName=import_path23.default.basename(target);if(!local){let reprosDir=import_path23.default.join(storybookDir,"../storybook-repros");import_node_logger7.logger.info(`Ensuring directory ${reprosDir}`),await import_fs_extra14.default.ensureDir(reprosDir),import_node_logger7.logger.info(`Cloning ${target}`),await exec(`git clone ${target}`,{cwd:reprosDir}),reproName=import_path23.default.basename(target,import_path23.default.extname(target)),reproDir=import_path23.default.join(reprosDir,reproName)}let reproPackageJson=await import_fs_extra14.default.readJSON(import_path23.default.join(reproDir,"package.json")),version=(0,import_cross_spawn3.sync)("yarn",["--version"],{cwd:reproDir,stdio:"pipe",shell:!0}).stdout.toString();if(!/^[2-4]\./.test(version)){import_node_logger7.logger.warn(`\u{1F6A8} Expected yarn 2 or higher in ${reproDir}!`),import_node_logger7.logger.warn(""),import_node_logger7.logger.warn("Please set it up with `yarn set version berry`,"),import_node_logger7.logger.warn(`then link '${reproDir}' with the '--local' flag.`);return}import_node_logger7.logger.info(`Linking ${reproDir}`),await exec(`yarn link --all ${storybookDir}`,{cwd:reproDir}),import_node_logger7.logger.info(`Installing ${reproName}`),await exec("yarn install",{cwd:reproDir}),reproPackageJson.devDependencies?.vite||await exec("yarn add -D webpack-hot-middleware",{cwd:reproDir}),await exec("yarn add @types/node@18",{cwd:reproDir}),start&&(import_node_logger7.logger.info(`Running ${reproName} storybook`),await exec("yarn run storybook",{cwd:reproDir}))};var import_ts_dedent40=require("ts-dedent"),import_read_pkg_up=require("read-pkg-up"),import_node_logger8=require("@storybook/node-logger"),import_core_server3=require("@storybook/core-server"),import_core_common10=require("@storybook/core-common"),import_tiny_invariant8=__toESM(require("tiny-invariant"));function printError(error){import_node_logger8.instance.heading="",error instanceof Error?error.error?import_node_logger8.logger.error(error.error):error.stats&&error.stats.compilation.errors?error.stats.compilation.errors.forEach(e=>import_node_logger8.logger.plain(e)):import_node_logger8.logger.error(error):error.compilation?.errors&&error.compilation.errors.forEach(e=>import_node_logger8.logger.plain(e)),import_node_logger8.logger.line(),import_node_logger8.logger.warn(error.close?import_ts_dedent40.dedent`
471
477
  FATAL broken build!, will close the process,
472
478
  Fix the error below and restart storybook.
473
- `:import_ts_dedent39.dedent`
479
+ `:import_ts_dedent40.dedent`
474
480
  Broken build, fix the error above.
475
481
  You may need to refresh the browser.
476
- `),import_node_logger8.logger.line()}var dev=async cliOptions=>{process.env.NODE_ENV=process.env.NODE_ENV||"development";let readUpResult2=(0,import_read_pkg_up.sync)({cwd:__dirname});(0,import_tiny_invariant8.default)(readUpResult2,"Failed to find the closest package.json file.");let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",configType:"DEVELOPMENT",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,cache:import_core_common10.cache,packageJson:(0,import_read_pkg_up.sync)({cwd:__dirname})?.packageJson};await(0,import_core_server3.withTelemetry)("dev",{cliOptions,presetOptions:options,printError},()=>(0,import_core_server3.buildDevStandalone)(options))};var import_read_pkg_up2=require("read-pkg-up"),import_core_server4=require("@storybook/core-server"),import_core_common11=require("@storybook/core-common"),import_tiny_invariant9=__toESM(require("tiny-invariant")),build=async cliOptions=>{let readUpResult2=(0,import_read_pkg_up2.sync)({cwd:__dirname});(0,import_tiny_invariant9.default)(readUpResult2,"Failed to find the closest package.json file.");let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",outputDir:cliOptions.outputDir||"./storybook-static",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,configType:"PRODUCTION",cache:import_core_common11.cache,packageJson:readUpResult2.packageJson};await(0,import_core_server4.withTelemetry)("build",{cliOptions,presetOptions:options},()=>(0,import_core_server4.buildStaticStandalone)(options))};var import_chalk32=__toESM(require("chalk")),import_boxen6=__toESM(require_boxen()),import_fs_extra15=require("fs-extra"),import_tempy3=__toESM(require("tempy")),import_ts_dedent40=__toESM(require("ts-dedent")),import_path24=require("path");var import_chalk31=__toESM(require("chalk")),import_semver27=__toESM(require("semver")),import_core_common12=require("@storybook/core-common");function getPrimaryVersion(name,installationMetadata){if(!name)return;let packageMetadata=installationMetadata?.dependencies[name];if(packageMetadata)return packageMetadata[0]?.version}function getMismatchingVersionsWarnings(installationMetadata,allDependencies){if(!installationMetadata)return;let messages=[];try{let frameworkPackageName=Object.keys(installationMetadata?.dependencies||[]).find(packageName=>Object.keys(import_core_common12.frameworkPackages).includes(packageName)),cliVersion=getPrimaryVersion("@storybook/cli",installationMetadata)||getPrimaryVersion("storybook",installationMetadata),frameworkVersion=getPrimaryVersion(frameworkPackageName,installationMetadata);if(!cliVersion||!frameworkVersion||import_semver27.default.eq(cliVersion,frameworkVersion))return;messages.push(`${import_chalk31.default.bold("Attention:")} There seems to be a mismatch between your Storybook package versions. This can result in a broken Storybook installation.`);let versionToCompare,packageToDisplay;import_semver27.default.lt(cliVersion,frameworkVersion)?(versionToCompare=frameworkVersion,packageToDisplay=frameworkPackageName):(versionToCompare=cliVersion,packageToDisplay="storybook"),messages.push(`The version of your storybook core packages should align with ${import_chalk31.default.yellow(versionToCompare)} (from the ${import_chalk31.default.cyan(packageToDisplay)} package) or higher.`);let filteredDependencies=Object.entries(installationMetadata?.dependencies||[]).filter(([name,packages])=>Object.keys(versions_default).includes(name)?packages[0].version!==versionToCompare:!1);if(filteredDependencies.length>0){let packageJsonSuffix="(in your package.json)";messages.push("Based on your lockfile, these dependencies should be upgraded:",filteredDependencies.map(([name,dep])=>`${import_chalk31.default.hex("#ff9800")(name)}: ${dep[0].version} ${allDependencies?.[name]?packageJsonSuffix:""}`).sort((a,b)=>(b.includes(packageJsonSuffix)?1:0)-(a.includes(packageJsonSuffix)?1:0)).join(`
477
- `))}return messages.push(`You can run ${import_chalk31.default.cyan("npx storybook@latest upgrade")} to upgrade all of your Storybook packages to the latest version.
482
+ `),import_node_logger8.logger.line()}var dev=async cliOptions=>{process.env.NODE_ENV=process.env.NODE_ENV||"development";let readUpResult2=(0,import_read_pkg_up.sync)({cwd:__dirname});(0,import_tiny_invariant8.default)(readUpResult2,"Failed to find the closest package.json file.");let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",configType:"DEVELOPMENT",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,cache:import_core_common10.cache,packageJson:(0,import_read_pkg_up.sync)({cwd:__dirname})?.packageJson};await(0,import_core_server3.withTelemetry)("dev",{cliOptions,presetOptions:options,printError},()=>(0,import_core_server3.buildDevStandalone)(options))};var import_read_pkg_up2=require("read-pkg-up"),import_core_server4=require("@storybook/core-server"),import_core_common11=require("@storybook/core-common"),import_tiny_invariant9=__toESM(require("tiny-invariant")),build=async cliOptions=>{let readUpResult2=(0,import_read_pkg_up2.sync)({cwd:__dirname});(0,import_tiny_invariant9.default)(readUpResult2,"Failed to find the closest package.json file.");let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",outputDir:cliOptions.outputDir||"./storybook-static",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,configType:"PRODUCTION",cache:import_core_common11.cache,packageJson:readUpResult2.packageJson};await(0,import_core_server4.withTelemetry)("build",{cliOptions,presetOptions:options},()=>(0,import_core_server4.buildStaticStandalone)(options))};var import_chalk33=__toESM(require("chalk")),import_boxen6=__toESM(require_boxen()),import_fs_extra15=require("fs-extra"),import_tempy3=__toESM(require("tempy")),import_ts_dedent41=__toESM(require("ts-dedent")),import_path24=require("path");var import_chalk32=__toESM(require("chalk")),import_semver27=__toESM(require("semver")),import_core_common12=require("@storybook/core-common");function getPrimaryVersion(name,installationMetadata){if(!name)return;let packageMetadata=installationMetadata?.dependencies[name];if(packageMetadata)return packageMetadata[0]?.version}function getMismatchingVersionsWarnings(installationMetadata,allDependencies){if(!installationMetadata)return;let messages=[];try{let frameworkPackageName=Object.keys(installationMetadata?.dependencies||[]).find(packageName=>Object.keys(import_core_common12.frameworkPackages).includes(packageName)),cliVersion=getPrimaryVersion("@storybook/cli",installationMetadata)||getPrimaryVersion("storybook",installationMetadata),frameworkVersion=getPrimaryVersion(frameworkPackageName,installationMetadata);if(!cliVersion||!frameworkVersion||import_semver27.default.eq(cliVersion,frameworkVersion))return;messages.push(`${import_chalk32.default.bold("Attention:")} There seems to be a mismatch between your Storybook package versions. This can result in a broken Storybook installation.`);let versionToCompare,packageToDisplay;import_semver27.default.lt(cliVersion,frameworkVersion)?(versionToCompare=frameworkVersion,packageToDisplay=frameworkPackageName):(versionToCompare=cliVersion,packageToDisplay="storybook"),messages.push(`The version of your storybook core packages should align with ${import_chalk32.default.yellow(versionToCompare)} (from the ${import_chalk32.default.cyan(packageToDisplay)} package) or higher.`);let filteredDependencies=Object.entries(installationMetadata?.dependencies||[]).filter(([name,packages])=>Object.keys(versions_default).includes(name)?packages[0].version!==versionToCompare:!1);if(filteredDependencies.length>0){let packageJsonSuffix="(in your package.json)";messages.push("Based on your lockfile, these dependencies should be upgraded:",filteredDependencies.map(([name,dep])=>`${import_chalk32.default.hex("#ff9800")(name)}: ${dep[0].version} ${allDependencies?.[name]?packageJsonSuffix:""}`).sort((a,b)=>(b.includes(packageJsonSuffix)?1:0)-(a.includes(packageJsonSuffix)?1:0)).join(`
483
+ `))}return messages.push(`You can run ${import_chalk32.default.cyan("npx storybook@latest upgrade")} to upgrade all of your Storybook packages to the latest version.
478
484
 
479
- Alternatively you can try manually changing the versions to match in your package.json. We also recommend regenerating your lockfile, or running the following command to possibly deduplicate your Storybook package versions: ${import_chalk31.default.cyan(installationMetadata?.dedupeCommand)}`),messages.join(`
485
+ Alternatively you can try manually changing the versions to match in your package.json. We also recommend regenerating your lockfile, or running the following command to possibly deduplicate your Storybook package versions: ${import_chalk32.default.cyan(installationMetadata?.dedupeCommand)}`),messages.join(`
480
486
 
481
- `)}catch{return}}var logger32=console,LOG_FILE_NAME2="doctor-storybook.log",LOG_FILE_PATH2=(0,import_path24.join)(process.cwd(),LOG_FILE_NAME2),TEMP_LOG_FILE_PATH2="",originalStdOutWrite2=process.stdout.write.bind(process.stdout),originalStdErrWrite2=process.stderr.write.bind(process.stdout),augmentLogsToFile2=()=>{TEMP_LOG_FILE_PATH2=import_tempy3.default.file({name:LOG_FILE_NAME2});let logStream=(0,import_fs_extra15.createWriteStream)(TEMP_LOG_FILE_PATH2);process.stdout.write=d=>(originalStdOutWrite2(d),logStream.write(cleanLog(d))),process.stderr.write=d=>logStream.write(cleanLog(d))},cleanup2=()=>{process.stdout.write=originalStdOutWrite2,process.stderr.write=originalStdErrWrite2},doctor=async({configDir:userSpecifiedConfigDir,packageManager:pkgMgr}={})=>{augmentLogsToFile2();let diagnosticMessages=[];logger32.info("\u{1FA7A} checking the health of your Storybook..");let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),storybookVersion,mainConfig;try{let storybookData=await getStorybookData({configDir:userSpecifiedConfigDir,packageManager});storybookVersion=storybookData.storybookVersion,mainConfig=storybookData.mainConfig}catch(err){err.message.includes("No configuration files have been found")&&logger32.info(import_ts_dedent40.default`[Storybook doctor] Could not find or evaluate your Storybook main.js config directory at ${import_chalk32.default.blue(userSpecifiedConfigDir||".storybook")} so the doctor command cannot proceed. You might be running this command in a monorepo or a non-standard project structure. If that is the case, please rerun this command by specifying the path to your Storybook config directory via the --config-dir option.`),logger32.info(import_ts_dedent40.default`[Storybook doctor] ❌ ${err.message}`),logger32.info("Please fix the error and try again.")}if(storybookVersion||(logger32.info(import_ts_dedent40.default`
487
+ `)}catch{return}}var logger32=console,LOG_FILE_NAME2="doctor-storybook.log",LOG_FILE_PATH2=(0,import_path24.join)(process.cwd(),LOG_FILE_NAME2),TEMP_LOG_FILE_PATH2="",originalStdOutWrite2=process.stdout.write.bind(process.stdout),originalStdErrWrite2=process.stderr.write.bind(process.stdout),augmentLogsToFile2=()=>{TEMP_LOG_FILE_PATH2=import_tempy3.default.file({name:LOG_FILE_NAME2});let logStream=(0,import_fs_extra15.createWriteStream)(TEMP_LOG_FILE_PATH2);process.stdout.write=d=>(originalStdOutWrite2(d),logStream.write(cleanLog(d))),process.stderr.write=d=>logStream.write(cleanLog(d))},cleanup2=()=>{process.stdout.write=originalStdOutWrite2,process.stderr.write=originalStdErrWrite2},doctor=async({configDir:userSpecifiedConfigDir,packageManager:pkgMgr}={})=>{augmentLogsToFile2();let diagnosticMessages=[];logger32.info("\u{1FA7A} checking the health of your Storybook..");let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),storybookVersion,mainConfig;try{let storybookData=await getStorybookData({configDir:userSpecifiedConfigDir,packageManager});storybookVersion=storybookData.storybookVersion,mainConfig=storybookData.mainConfig}catch(err){err.message.includes("No configuration files have been found")&&logger32.info(import_ts_dedent41.default`[Storybook doctor] Could not find or evaluate your Storybook main.js config directory at ${import_chalk33.default.blue(userSpecifiedConfigDir||".storybook")} so the doctor command cannot proceed. You might be running this command in a monorepo or a non-standard project structure. If that is the case, please rerun this command by specifying the path to your Storybook config directory via the --config-dir option.`),logger32.info(import_ts_dedent41.default`[Storybook doctor] ❌ ${err.message}`),logger32.info("Please fix the error and try again.")}if(storybookVersion||(logger32.info(import_ts_dedent41.default`
482
488
  [Storybook doctor] ❌ Unable to determine Storybook version so the command will not proceed.
483
489
  🤔 Are you running storybook doctor from your project directory? Please specify your Storybook config directory with the --config-dir flag.
484
490
  `),process.exit(1)),!mainConfig)throw new Error("mainConfig is undefined");let incompatibleAddonList=await getIncompatibleAddons(mainConfig);incompatibleAddonList.length>0&&diagnosticMessages.push(incompatibleAddons.prompt({incompatibleAddonList}));let installationMetadata=await packageManager.findInstallations(["@storybook/*","storybook"]),allDependencies=await packageManager.getAllDependencies(),mismatchingVersionMessage=getMismatchingVersionsWarnings(installationMetadata,allDependencies);if(mismatchingVersionMessage)diagnosticMessages.push(mismatchingVersionMessage);else{let list=installationMetadata?getDuplicatedDepsWarnings(installationMetadata):getDuplicatedDepsWarnings();list&&diagnosticMessages.push(list?.join(`
485
- `))}logger32.info();let finalMessages=diagnosticMessages.filter(Boolean);finalMessages.length>0?(finalMessages.push(`You can find the full logs in ${import_chalk32.default.cyan(LOG_FILE_PATH2)}`),logger32.info((0,import_boxen6.default)(finalMessages.join(`
491
+ `))}logger32.info();let finalMessages=diagnosticMessages.filter(Boolean);finalMessages.length>0?(finalMessages.push(`You can find the full logs in ${import_chalk33.default.cyan(LOG_FILE_PATH2)}`),logger32.info((0,import_boxen6.default)(finalMessages.join(`
486
492
 
487
493
  -------
488
494
 
489
- `),{borderStyle:"round",padding:1,title:"Diagnostics",borderColor:"red"})),await(0,import_fs_extra15.move)(TEMP_LOG_FILE_PATH2,(0,import_path24.join)(process.cwd(),LOG_FILE_NAME2),{overwrite:!0})):(logger32.info("\u{1F973} Your Storybook project looks good!"),await(0,import_fs_extra15.remove)(TEMP_LOG_FILE_PATH2)),logger32.info(),cleanup2()};(0,import_telemetry4.addToGlobalContext)("cliVersion",versions_default.storybook);var readUpResult=(0,import_read_pkg_up3.sync)({cwd:__dirname});(0,import_tiny_invariant10.default)(readUpResult,"Failed to find the closest package.json file.");var pkg=readUpResult.packageJson,consoleLogger=console,command=name=>import_commander.default.command(name).option("--disable-telemetry","disable sending telemetry data",process.env.STORYBOOK_DISABLE_TELEMETRY&&process.env.STORYBOOK_DISABLE_TELEMETRY!=="false").option("--debug","Get more logs in debug mode",!1).option("--enable-crash-reports","enable sending crash reports to telemetry data");command("init").description("Initialize Storybook into your project.").option("-f --force","Force add Storybook").option("-s --skip-install","Skip installing deps").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing deps").option("-N --use-npm","Use npm to install deps (deprecated)").option("--use-pnp","Enable pnp mode for Yarn 2+").option("-p --parser <babel | babylon | flow | ts | tsx>","jscodeshift parser").option("-t --type <type>","Add Storybook for a specific project type").option("-y --yes","Answer yes to all prompts").option("-b --builder <webpack5 | vite>","Builder library").option("-l --linkable","Prepare installation for link (contributor helper)").action(options=>{initiate(options,pkg).catch(()=>process.exit(1))});command("add <addon>").description("Add an addon to your Storybook").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").option("-N --use-npm","Use NPM to install dependencies (deprecated)").option("-s --skip-postinstall","Skip package specific postinstall config modifications").action((addonName,options)=>add(addonName,options));command("babelrc").description("generate the default storybook babel config into your current working directory").action(()=>generateStorybookBabelConfigInCWD());command("upgrade").description("Upgrade your Storybook packages to the latest").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").option("-N --use-npm","Use NPM to install dependencies (deprecated)").option("-y --yes","Skip prompting the user").option("-n --dry-run","Only check for upgrades, do not install").option("-t --tag <tag>","Upgrade to a certain npm dist-tag (e.g. next, prerelease)").option("-p --prerelease","Upgrade to the pre-release packages").option("-s --skip-check","Skip postinstall version and automigration checks").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").action(async options=>upgrade(options).catch(()=>process.exit(1)));command("info").description("Prints debugging information about the local environment").action(async()=>{consoleLogger.log(import_chalk33.default.bold(`
490
- Storybook Environment Info:`));let activePackageManager=(await JsPackageManagerFactory.getPackageManager()).type.replace(/\d/,""),output=await import_envinfo.default.run({System:["OS","CPU","Shell"],Binaries:["Node","Yarn","npm","pnpm"],Browsers:["Chrome","Edge","Firefox","Safari"],npmPackages:"{@storybook/*,*storybook*,sb,chromatic}",npmGlobalPackages:"{@storybook/*,*storybook*,sb,chromatic}"}),activePackageManagerLine=output.match(new RegExp(`${activePackageManager}:.*`,"i"));consoleLogger.log(output.replace(activePackageManagerLine,import_chalk33.default.bold(`${activePackageManagerLine} <----- active`)))});command("migrate [migration]").description("Run a Storybook codemod migration on your source files").option("-l --list","List available migrations").option("-g --glob <glob>","Glob for files upon which to apply the migration","**/*.js").option("-p --parser <babel | babylon | flow | ts | tsx>","jscodeshift parser").option("-n --dry-run","Dry run: verify the migration exists and show the files to which it will be applied").option("-r --rename <from-to>",'Rename suffix of matching files after codemod has been applied, e.g. ".js:.ts"').action((migration,{configDir,glob:glob2,dryRun,list,rename,parser})=>{migrate(migration,{configDir,glob:glob2,dryRun,list,rename,parser,logger:consoleLogger}).catch(err=>{import_node_logger9.logger.error(err),process.exit(1)})});command("sandbox [filterValue]").alias("repro").description("Create a sandbox from a set of possible templates").option("-o --output <outDir>","Define an output directory").option("-b --branch <branch>","Define the branch to download from","next").option("--no-init","Whether to download a template without an initialized Storybook",!1).action((filterValue,options)=>sandbox({filterValue,...options}).catch(e=>{import_node_logger9.logger.error(e),process.exit(1)}));command("link <repo-url-or-directory>").description("Pull down a repro from a URL (or a local directory), link it, and run storybook").option("--local","Link a local directory already in your file system").option("--no-start","Start the storybook",!0).action((target,{local,start})=>link({target,local,start}).catch(e=>{import_node_logger9.logger.error(e),process.exit(1)}));command("automigrate [fixId]").description("Check storybook for incompatibilities or migrations and apply fixes").option("-y --yes","Skip prompting the user").option("-n --dry-run","Only check for fixes, do not actually run them").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-N --use-npm","Use npm as package manager (deprecated)").option("-l --list","List available migrations").option("-c, --config-dir <dir-name>","Directory of Storybook configurations to migrate").option("-s --skip-install","Skip installing deps").option("--renderer <renderer-pkg-name>","The renderer package for the framework Storybook is using.").action(async(fixId,options)=>{await automigrate({fixId,...options}).catch(e=>{import_node_logger9.logger.error(e),process.exit(1)})});command("doctor").description("Check Storybook for known problems and provide suggestions or fixes").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-c, --config-dir <dir-name>","Directory of Storybook configuration").action(async options=>{await doctor(options).catch(e=>{import_node_logger9.logger.error(e),process.exit(1)})});command("dev").option("-p, --port <number>","Port to run Storybook",str=>parseInt(str,10)).option("-h, --host <string>","Host to run Storybook").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").option("--https","Serve Storybook over HTTPS. Note: You must provide your own certificate information.").option("--ssl-ca <ca>","Provide an SSL certificate authority. (Optional with --https, required if using a self-signed certificate)",parseList).option("--ssl-cert <cert>","Provide an SSL certificate. (Required with --https)").option("--ssl-key <key>","Provide an SSL key. (Required with --https)").option("--smoke-test","Exit after successful start").option("--ci","CI mode (skip interactive prompts, don't open browser)").option("--no-open","Do not open Storybook automatically in the browser").option("--loglevel <level>","Control level of logging during build").option("--quiet","Suppress verbose build output").option("--no-version-updates","Suppress update check",!0).option("--debug-webpack","Display final webpack configurations for debugging purposes").option("--webpack-stats-json [directory]","Write Webpack Stats JSON to disk").option("--preview-url <string>","Disables the default storybook preview and lets your use your own").option("--force-build-preview","Build the preview iframe even if you are using --preview-url").option("--docs","Build a documentation-only site using addon-docs").option("--exact-port","Exit early if the desired port is not available").option("--initial-path [path]","URL path to be appended when visiting Storybook for the first time").action(async options=>{import_node_logger9.logger.setLevel(import_commander.default.loglevel),consoleLogger.log(import_chalk33.default.bold(`${pkg.name} v${pkg.version}`)+import_chalk33.default.reset(`
491
- `)),getEnvConfig(options,{port:"SBCONFIG_PORT",host:"SBCONFIG_HOSTNAME",staticDir:"SBCONFIG_STATIC_DIR",configDir:"SBCONFIG_CONFIG_DIR",ci:"CI"}),parseInt(`${options.port}`,10)&&(options.port=parseInt(`${options.port}`,10)),await dev({...options,packageJson:pkg}).catch(()=>process.exit(1))});command("build").option("-o, --output-dir <dir-name>","Directory where to store built files").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").option("--quiet","Suppress verbose build output").option("--loglevel <level>","Control level of logging during build").option("--debug-webpack","Display final webpack configurations for debugging purposes").option("--webpack-stats-json [directory]","Write Webpack Stats JSON to disk").option("--preview-url <string>","Disables the default storybook preview and lets your use your own").option("--force-build-preview","Build the preview iframe even if you are using --preview-url").option("--docs","Build a documentation-only site using addon-docs").option("--test","Build stories optimized for testing purposes.").action(async options=>{process.env.NODE_ENV=process.env.NODE_ENV||"production",import_node_logger9.logger.setLevel(import_commander.default.loglevel),consoleLogger.log(import_chalk33.default.bold(`${pkg.name} v${pkg.version}
495
+ `),{borderStyle:"round",padding:1,title:"Diagnostics",borderColor:"red"})),await(0,import_fs_extra15.move)(TEMP_LOG_FILE_PATH2,(0,import_path24.join)(process.cwd(),LOG_FILE_NAME2),{overwrite:!0})):(logger32.info("\u{1F973} Your Storybook project looks good!"),await(0,import_fs_extra15.remove)(TEMP_LOG_FILE_PATH2)),logger32.info(),cleanup2()};(0,import_telemetry4.addToGlobalContext)("cliVersion",versions_default.storybook);var readUpResult=(0,import_read_pkg_up3.sync)({cwd:__dirname});(0,import_tiny_invariant10.default)(readUpResult,"Failed to find the closest package.json file.");var pkg=readUpResult.packageJson,consoleLogger=console,command=name=>import_commander.default.command(name).option("--disable-telemetry","disable sending telemetry data",process.env.STORYBOOK_DISABLE_TELEMETRY&&process.env.STORYBOOK_DISABLE_TELEMETRY!=="false").option("--debug","Get more logs in debug mode",!1).option("--enable-crash-reports","enable sending crash reports to telemetry data");command("init").description("Initialize Storybook into your project.").option("-f --force","Force add Storybook").option("-s --skip-install","Skip installing deps").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing deps").option("--use-pnp","Enable pnp mode for Yarn 2+").option("-p --parser <babel | babylon | flow | ts | tsx>","jscodeshift parser").option("-t --type <type>","Add Storybook for a specific project type").option("-y --yes","Answer yes to all prompts").option("-b --builder <webpack5 | vite>","Builder library").option("-l --linkable","Prepare installation for link (contributor helper)").action(options=>{initiate(options,pkg).catch(()=>process.exit(1))});command("add <addon>").description("Add an addon to your Storybook").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").option("-s --skip-postinstall","Skip package specific postinstall config modifications").action((addonName,options)=>add(addonName,options));command("babelrc").description("generate the default storybook babel config into your current working directory").action(()=>generateStorybookBabelConfigInCWD());command("upgrade").description("Upgrade your Storybook packages to the latest").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager for installing dependencies").option("-y --yes","Skip prompting the user").option("-n --dry-run","Only check for upgrades, do not install").option("-t --tag <tag>","Upgrade to a certain npm dist-tag (e.g. next, prerelease)").option("-p --prerelease","Upgrade to the pre-release packages").option("-s --skip-check","Skip postinstall version and automigration checks").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").action(async options=>upgrade(options).catch(()=>process.exit(1)));command("info").description("Prints debugging information about the local environment").action(async()=>{consoleLogger.log(import_chalk34.default.bold(`
496
+ Storybook Environment Info:`));let activePackageManager=(await JsPackageManagerFactory.getPackageManager()).type.replace(/\d/,""),output=await import_envinfo.default.run({System:["OS","CPU","Shell"],Binaries:["Node","Yarn","npm","pnpm"],Browsers:["Chrome","Edge","Firefox","Safari"],npmPackages:"{@storybook/*,*storybook*,sb,chromatic}",npmGlobalPackages:"{@storybook/*,*storybook*,sb,chromatic}"}),activePackageManagerLine=output.match(new RegExp(`${activePackageManager}:.*`,"i"));consoleLogger.log(output.replace(activePackageManagerLine,import_chalk34.default.bold(`${activePackageManagerLine} <----- active`)))});command("migrate [migration]").description("Run a Storybook codemod migration on your source files").option("-l --list","List available migrations").option("-g --glob <glob>","Glob for files upon which to apply the migration","**/*.js").option("-p --parser <babel | babylon | flow | ts | tsx>","jscodeshift parser").option("-n --dry-run","Dry run: verify the migration exists and show the files to which it will be applied").option("-r --rename <from-to>",'Rename suffix of matching files after codemod has been applied, e.g. ".js:.ts"').action((migration,{configDir,glob:glob2,dryRun,list,rename,parser})=>{migrate(migration,{configDir,glob:glob2,dryRun,list,rename,parser,logger:consoleLogger}).catch(err=>{import_node_logger9.logger.error(err),process.exit(1)})});command("sandbox [filterValue]").alias("repro").description("Create a sandbox from a set of possible templates").option("-o --output <outDir>","Define an output directory").option("-b --branch <branch>","Define the branch to download from","next").option("--no-init","Whether to download a template without an initialized Storybook",!1).action((filterValue,options)=>sandbox({filterValue,...options}).catch(e=>{import_node_logger9.logger.error(e),process.exit(1)}));command("link <repo-url-or-directory>").description("Pull down a repro from a URL (or a local directory), link it, and run storybook").option("--local","Link a local directory already in your file system").option("--no-start","Start the storybook",!0).action((target,{local,start})=>link({target,local,start}).catch(e=>{import_node_logger9.logger.error(e),process.exit(1)}));command("automigrate [fixId]").description("Check storybook for incompatibilities or migrations and apply fixes").option("-y --yes","Skip prompting the user").option("-n --dry-run","Only check for fixes, do not actually run them").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-l --list","List available migrations").option("-c, --config-dir <dir-name>","Directory of Storybook configurations to migrate").option("-s --skip-install","Skip installing deps").option("--renderer <renderer-pkg-name>","The renderer package for the framework Storybook is using.").action(async(fixId,options)=>{await automigrate({fixId,...options}).catch(e=>{import_node_logger9.logger.error(e),process.exit(1)})});command("doctor").description("Check Storybook for known problems and provide suggestions or fixes").option("--package-manager <npm|pnpm|yarn1|yarn2>","Force package manager").option("-c, --config-dir <dir-name>","Directory of Storybook configuration").action(async options=>{await doctor(options).catch(e=>{import_node_logger9.logger.error(e),process.exit(1)})});command("dev").option("-p, --port <number>","Port to run Storybook",str=>parseInt(str,10)).option("-h, --host <string>","Host to run Storybook").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").option("--https","Serve Storybook over HTTPS. Note: You must provide your own certificate information.").option("--ssl-ca <ca>","Provide an SSL certificate authority. (Optional with --https, required if using a self-signed certificate)",parseList).option("--ssl-cert <cert>","Provide an SSL certificate. (Required with --https)").option("--ssl-key <key>","Provide an SSL key. (Required with --https)").option("--smoke-test","Exit after successful start").option("--ci","CI mode (skip interactive prompts, don't open browser)").option("--no-open","Do not open Storybook automatically in the browser").option("--loglevel <level>","Control level of logging during build").option("--quiet","Suppress verbose build output").option("--no-version-updates","Suppress update check",!0).option("--debug-webpack","Display final webpack configurations for debugging purposes").option("--webpack-stats-json [directory]","Write Webpack Stats JSON to disk").option("--preview-url <string>","Disables the default storybook preview and lets your use your own").option("--force-build-preview","Build the preview iframe even if you are using --preview-url").option("--docs","Build a documentation-only site using addon-docs").option("--exact-port","Exit early if the desired port is not available").option("--initial-path [path]","URL path to be appended when visiting Storybook for the first time").action(async options=>{import_node_logger9.logger.setLevel(import_commander.default.loglevel),consoleLogger.log(import_chalk34.default.bold(`${pkg.name} v${pkg.version}`)+import_chalk34.default.reset(`
497
+ `)),getEnvConfig(options,{port:"SBCONFIG_PORT",host:"SBCONFIG_HOSTNAME",staticDir:"SBCONFIG_STATIC_DIR",configDir:"SBCONFIG_CONFIG_DIR",ci:"CI"}),parseInt(`${options.port}`,10)&&(options.port=parseInt(`${options.port}`,10)),await dev({...options,packageJson:pkg}).catch(()=>process.exit(1))});command("build").option("-o, --output-dir <dir-name>","Directory where to store built files").option("-c, --config-dir <dir-name>","Directory where to load Storybook configurations from").option("--quiet","Suppress verbose build output").option("--loglevel <level>","Control level of logging during build").option("--debug-webpack","Display final webpack configurations for debugging purposes").option("--webpack-stats-json [directory]","Write Webpack Stats JSON to disk").option("--preview-url <string>","Disables the default storybook preview and lets your use your own").option("--force-build-preview","Build the preview iframe even if you are using --preview-url").option("--docs","Build a documentation-only site using addon-docs").option("--test","Build stories optimized for testing purposes.").action(async options=>{process.env.NODE_ENV=process.env.NODE_ENV||"production",import_node_logger9.logger.setLevel(import_commander.default.loglevel),consoleLogger.log(import_chalk34.default.bold(`${pkg.name} v${pkg.version}
492
498
  `)),getEnvConfig(options,{staticDir:"SBCONFIG_STATIC_DIR",outputDir:"SBCONFIG_OUTPUT_DIR",configDir:"SBCONFIG_CONFIG_DIR"}),await build({...options,packageJson:pkg,test:!!options.test||process.env.SB_TESTBUILD==="true"}).catch(()=>process.exit(1))});import_commander.default.on("command:*",([invalidCmd])=>{consoleLogger.error(` Invalid command: %s.
493
499
  See --help for a list of available commands.`,invalidCmd);let suggestion=import_commander.default.commands.map(cmd=>cmd._name).find(cmd=>(0,import_leven.default)(cmd,invalidCmd)<3);suggestion&&consoleLogger.info(`
494
500
  Did you mean ${suggestion}?`),process.exit(1)});import_commander.default.usage("<command> [options]").version(pkg.version).parse(process.argv);