@storybook/cli 7.1.0-alpha.1 → 7.1.0-alpha.2
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/chunk-PUJBHUG2.mjs +17 -0
- package/dist/generate.js +4 -4
- package/dist/generate.mjs +3 -3
- package/dist/index.d.ts +98 -2
- package/dist/index.js +3 -3
- package/dist/index.mjs +1 -1
- package/package.json +10 -10
- package/dist/chunk-ZNEKSTLO.mjs +0 -17
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __require=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(a,b)=>(typeof require<"u"?require:a)[b]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+x+'" is not supported')});var versions_default={"@storybook/addon-a11y":"7.1.0-alpha.2","@storybook/addon-actions":"7.1.0-alpha.2","@storybook/addon-backgrounds":"7.1.0-alpha.2","@storybook/addon-controls":"7.1.0-alpha.2","@storybook/addon-docs":"7.1.0-alpha.2","@storybook/addon-essentials":"7.1.0-alpha.2","@storybook/addon-highlight":"7.1.0-alpha.2","@storybook/addon-interactions":"7.1.0-alpha.2","@storybook/addon-jest":"7.1.0-alpha.2","@storybook/addon-links":"7.1.0-alpha.2","@storybook/addon-mdx-gfm":"7.1.0-alpha.2","@storybook/addon-measure":"7.1.0-alpha.2","@storybook/addon-outline":"7.1.0-alpha.2","@storybook/addon-storyshots":"7.1.0-alpha.2","@storybook/addon-storyshots-puppeteer":"7.1.0-alpha.2","@storybook/addon-storysource":"7.1.0-alpha.2","@storybook/addon-toolbars":"7.1.0-alpha.2","@storybook/addon-viewport":"7.1.0-alpha.2","@storybook/addons":"7.1.0-alpha.2","@storybook/angular":"7.1.0-alpha.2","@storybook/api":"7.1.0-alpha.2","@storybook/blocks":"7.1.0-alpha.2","@storybook/builder-manager":"7.1.0-alpha.2","@storybook/builder-vite":"7.1.0-alpha.2","@storybook/builder-webpack5":"7.1.0-alpha.2","@storybook/channel-postmessage":"7.1.0-alpha.2","@storybook/channel-websocket":"7.1.0-alpha.2","@storybook/channels":"7.1.0-alpha.2","@storybook/cli":"7.1.0-alpha.2","@storybook/client-api":"7.1.0-alpha.2","@storybook/client-logger":"7.1.0-alpha.2","@storybook/codemod":"7.1.0-alpha.2","@storybook/components":"7.1.0-alpha.2","@storybook/core-client":"7.1.0-alpha.2","@storybook/core-common":"7.1.0-alpha.2","@storybook/core-events":"7.1.0-alpha.2","@storybook/core-server":"7.1.0-alpha.2","@storybook/core-webpack":"7.1.0-alpha.2","@storybook/csf-plugin":"7.1.0-alpha.2","@storybook/csf-tools":"7.1.0-alpha.2","@storybook/docs-tools":"7.1.0-alpha.2","@storybook/ember":"7.1.0-alpha.2","@storybook/html":"7.1.0-alpha.2","@storybook/html-vite":"7.1.0-alpha.2","@storybook/html-webpack5":"7.1.0-alpha.2","@storybook/instrumenter":"7.1.0-alpha.2","@storybook/manager":"7.1.0-alpha.2","@storybook/manager-api":"7.1.0-alpha.2","@storybook/nextjs":"7.1.0-alpha.2","@storybook/node-logger":"7.1.0-alpha.2","@storybook/postinstall":"7.1.0-alpha.2","@storybook/preact":"7.1.0-alpha.2","@storybook/preact-vite":"7.1.0-alpha.2","@storybook/preact-webpack5":"7.1.0-alpha.2","@storybook/preset-create-react-app":"7.1.0-alpha.2","@storybook/preset-html-webpack":"7.1.0-alpha.2","@storybook/preset-preact-webpack":"7.1.0-alpha.2","@storybook/preset-react-webpack":"7.1.0-alpha.2","@storybook/preset-server-webpack":"7.1.0-alpha.2","@storybook/preset-svelte-webpack":"7.1.0-alpha.2","@storybook/preset-vue-webpack":"7.1.0-alpha.2","@storybook/preset-vue3-webpack":"7.1.0-alpha.2","@storybook/preset-web-components-webpack":"7.1.0-alpha.2","@storybook/preview":"7.1.0-alpha.2","@storybook/preview-api":"7.1.0-alpha.2","@storybook/preview-web":"7.1.0-alpha.2","@storybook/react":"7.1.0-alpha.2","@storybook/react-dom-shim":"7.1.0-alpha.2","@storybook/react-vite":"7.1.0-alpha.2","@storybook/react-webpack5":"7.1.0-alpha.2","@storybook/router":"7.1.0-alpha.2","@storybook/server":"7.1.0-alpha.2","@storybook/server-webpack5":"7.1.0-alpha.2","@storybook/source-loader":"7.1.0-alpha.2","@storybook/store":"7.1.0-alpha.2","@storybook/svelte":"7.1.0-alpha.2","@storybook/svelte-vite":"7.1.0-alpha.2","@storybook/svelte-webpack5":"7.1.0-alpha.2","@storybook/sveltekit":"7.1.0-alpha.2","@storybook/telemetry":"7.1.0-alpha.2","@storybook/theming":"7.1.0-alpha.2","@storybook/types":"7.1.0-alpha.2","@storybook/vue":"7.1.0-alpha.2","@storybook/vue-vite":"7.1.0-alpha.2","@storybook/vue-webpack5":"7.1.0-alpha.2","@storybook/vue3":"7.1.0-alpha.2","@storybook/vue3-vite":"7.1.0-alpha.2","@storybook/vue3-webpack5":"7.1.0-alpha.2","@storybook/web-components":"7.1.0-alpha.2","@storybook/web-components-vite":"7.1.0-alpha.2","@storybook/web-components-webpack5":"7.1.0-alpha.2",sb:"7.1.0-alpha.2",storybook:"7.1.0-alpha.2"};import deprecate from"util-deprecate";var useNpmWarning=deprecate(()=>{},"`--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");import chalk2 from"chalk";import{gt,satisfies as satisfies2}from"semver";import{sync as spawnSync}from"cross-spawn";import path2 from"path";import fs2 from"fs";import path,{join as join2}from"path";import fs from"fs";import fse from"fs-extra";import chalk from"chalk";import{satisfies}from"semver";import stripJsonComments from"strip-json-comments";import{dirname,join}from"path";import downloadTarball from"@ndelangen/get-tarball";import getNpmTarballUrl from"get-npm-tarball-url";import*as tempy from"tempy";import{minVersion,validRange}from"semver";function ltMajor(versionRange,major){return validRange(versionRange)&&minVersion(versionRange).major<major}function gtMajor(versionRange,major){return validRange(versionRange)&&minVersion(versionRange).major>major}function eqMajor(versionRange,major){return validRange(versionRange)&&minVersion(versionRange).major===major}var externalFrameworks=[{name:"qwik",packageName:"storybook-framework-qwik"},{name:"solid",frameworks:["storybook-solidjs-vite"],renderer:"storybook-solidjs"}],SUPPORTED_RENDERERS=["react","react-native","vue","vue3","angular","mithril","riot","ember","marionette","marko","preact","svelte","qwik","rax","aurelia","solid"],ProjectType=(ProjectType2=>(ProjectType2.UNDETECTED="UNDETECTED",ProjectType2.UNSUPPORTED="UNSUPPORTED",ProjectType2.REACT_SCRIPTS="REACT_SCRIPTS",ProjectType2.REACT="REACT",ProjectType2.REACT_NATIVE="REACT_NATIVE",ProjectType2.REACT_PROJECT="REACT_PROJECT",ProjectType2.WEBPACK_REACT="WEBPACK_REACT",ProjectType2.NEXTJS="NEXTJS",ProjectType2.VUE="VUE",ProjectType2.VUE3="VUE3",ProjectType2.SFC_VUE="SFC_VUE",ProjectType2.ANGULAR="ANGULAR",ProjectType2.EMBER="EMBER",ProjectType2.WEB_COMPONENTS="WEB_COMPONENTS",ProjectType2.MITHRIL="MITHRIL",ProjectType2.MARIONETTE="MARIONETTE",ProjectType2.MARKO="MARKO",ProjectType2.HTML="HTML",ProjectType2.QWIK="QWIK",ProjectType2.RIOT="RIOT",ProjectType2.PREACT="PREACT",ProjectType2.SVELTE="SVELTE",ProjectType2.SVELTEKIT="SVELTEKIT",ProjectType2.RAX="RAX",ProjectType2.AURELIA="AURELIA",ProjectType2.SERVER="SERVER",ProjectType2.NX="NX",ProjectType2.SOLID="SOLID",ProjectType2))(ProjectType||{});var supportedTemplates=[{preset:"SFC_VUE",dependencies:{"vue-loader":versionRange=>ltMajor(versionRange,16),vuetify:versionRange=>ltMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"VUE",dependencies:{vue:versionRange=>ltMajor(versionRange,3),nuxt:versionRange=>ltMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"VUE3",dependencies:{vue:versionRange=>versionRange==="next"||eqMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"EMBER",dependencies:["ember-cli"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"NEXTJS",dependencies:{next:versionRange=>eqMajor(versionRange,9)||gtMajor(versionRange,9)},matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"QWIK",dependencies:["@builder.io/qwik"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"REACT_PROJECT",peerDependencies:["react"],matcherFunction:({peerDependencies})=>peerDependencies.every(Boolean)},{preset:"REACT_NATIVE",dependencies:["react-native","react-native-scripts"],matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"REACT_SCRIPTS",files:["/node_modules/.bin/react-scripts"],dependencies:["react-scripts"],matcherFunction:({dependencies,files})=>dependencies.every(Boolean)||files.every(Boolean)},{preset:"ANGULAR",dependencies:["@angular/core"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"WEB_COMPONENTS",dependencies:["lit-element","lit-html","lit"],matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"MITHRIL",dependencies:["mithril"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"MARIONETTE",dependencies:["backbone.marionette"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"MARKO",dependencies:["marko"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"RIOT",dependencies:["riot"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"PREACT",dependencies:["preact"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"SVELTEKIT",dependencies:["@sveltejs/kit"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"SVELTE",dependencies:["svelte"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"RAX",dependencies:["rax"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"AURELIA",dependencies:["aurelia-bootstrapper"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"SOLID",dependencies:["solid-js"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"WEBPACK_REACT",dependencies:["react","webpack"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"REACT",dependencies:["react"],matcherFunction:({dependencies})=>dependencies.every(Boolean)}],unsupportedTemplate={preset:"UNSUPPORTED",dependencies:{nuxt:versionRange=>eqMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},notInstallableProjectTypes=["UNDETECTED","UNSUPPORTED"],installableProjectTypes=Object.values(ProjectType).filter(type=>!notInstallableProjectTypes.includes(type)).map(type=>type.toLowerCase());function getCliDir(){return 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=getNpmTarballUrl(request,version,{registry:packageManager.getRegistryURL()});return await downloadTarball({url,dir:tempDirectory}),join(tempDirectory,"package")};async function getRendererDir(packageManager,renderer){let externalFramework=externalFrameworks.find(framework=>framework.name===renderer),frameworkPackageName=externalFramework?.renderer||externalFramework?.packageName||`@storybook/${renderer}`,packageJsonPath=`${frameworkPackageName}/package.json`,errors=[];try{return dirname(__require.resolve(packageJsonPath,{paths:[process.cwd()]}))}catch(e){errors.push(e)}try{return await resolveUsingBranchInstall(packageManager,frameworkPackageName)}catch(e){errors.push(e)}throw new Error(`Cannot find ${packageJsonPath}, ${errors.map(e=>e.stack).join(`
|
|
2
|
+
|
|
3
|
+
`)}`)}var logger=console;function getBowerJson(){let bowerJsonPath=path.resolve("bower.json");if(!fs.existsSync(bowerJsonPath))return!1;let jsonContent=fs.readFileSync(bowerJsonPath,"utf8");return JSON.parse(jsonContent)}function readFileAsJson(jsonPath,allowComments){let filePath=path.resolve(jsonPath);if(!fs.existsSync(filePath))return!1;let fileContent=fs.readFileSync(filePath,"utf8"),jsonContent=allowComments?stripJsonComments(fileContent):fileContent;try{return JSON.parse(jsonContent)}catch(e){throw logger.error(chalk.red(`Invalid json in file: ${filePath}`)),e}}var writeFileAsJson=(jsonPath,content)=>{let filePath=path.resolve(jsonPath);return fs.existsSync(filePath)?(fs.writeFileSync(filePath,`${JSON.stringify(content,null,2)}
|
|
4
|
+
`),!0):!1},commandLog=message=>(process.stdout.write(chalk.cyan(" \u2022 ")+message),(errorMessage,errorInfo)=>{if(errorMessage){if(process.stdout.write(`. ${chalk.red("\u2716")}
|
|
5
|
+
`),logger.error(`
|
|
6
|
+
${chalk.red(errorMessage)}`),!errorInfo)return;let newErrorInfo=errorInfo.split(`
|
|
7
|
+
`).map(line=>` ${chalk.dim(line)}`).join(`
|
|
8
|
+
`);logger.error(`${newErrorInfo}
|
|
9
|
+
`);return}process.stdout.write(`. ${chalk.green("\u2713")}
|
|
10
|
+
`)});function paddedLog(message){let newMessage=message.split(`
|
|
11
|
+
`).map(line=>` ${line}`).join(`
|
|
12
|
+
`);logger.log(newMessage)}function getChars(char,amount){let line="";for(let lc=0;lc<amount;lc+=1)line+=char;return line}function codeLog(codeLines,leftPadAmount){let maxLength=0,finalResult=codeLines.map(line=>(maxLength=line.length>maxLength?line.length:maxLength,line)).map(line=>{let rightPadAmount=maxLength-line.length,newLine=line+getChars(" ",rightPadAmount);return newLine=getChars(" ",leftPadAmount||2)+chalk.inverse(` ${newLine} `),newLine}).join(`
|
|
13
|
+
`);logger.log(finalResult)}async function getBabelDependencies(packageManager,packageJson){let dependenciesToAdd=[],babelLoaderVersion="^8.0.0-0",babelCoreVersion=packageJson.dependencies["babel-core"]||packageJson.devDependencies["babel-core"];if(babelCoreVersion){let latestCompatibleBabelVersion=await packageManager.latestVersion("babel-core",babelCoreVersion);satisfies(latestCompatibleBabelVersion,"^6.0.0")&&(babelLoaderVersion="^7.0.0")}else if(!packageJson.dependencies["@babel/core"]&&!packageJson.devDependencies["@babel/core"]){let babelCoreInstallVersion=await packageManager.getVersion("@babel/core");dependenciesToAdd.push(`@babel/core@${babelCoreInstallVersion}`)}if(!packageJson.dependencies["babel-loader"]&&!packageJson.devDependencies["babel-loader"]){let babelLoaderInstallVersion=await packageManager.getVersion("babel-loader",babelLoaderVersion);dependenciesToAdd.push(`babel-loader@${babelLoaderInstallVersion}`)}return dependenciesToAdd}function copyTemplate(templateRoot,destination="."){let templateDir=path.resolve(templateRoot,"template-csf/");if(!fs.existsSync(templateDir))throw new Error("Couldn't find template dir");fse.copySync(templateDir,destination,{overwrite:!0})}async function copyTemplateFiles({packageManager,renderer,language,destination,includeCommonAssets=!0}){let languageFolderMapping={typescript:"ts",["javascript"]:"js",["typescript-3-8"]:"ts-3-8",["typescript-4-9"]:"ts-4-9"},templatePath=async()=>{let baseDir=await getRendererDir(packageManager,renderer),assetsDir=join2(baseDir,"template/cli"),assetsLanguage=join2(assetsDir,languageFolderMapping[language]),assetsJS=join2(assetsDir,languageFolderMapping["javascript"]),assetsTS=join2(assetsDir,languageFolderMapping.typescript),assetsTS38=join2(assetsDir,languageFolderMapping["typescript-3-8"]);if(await fse.pathExists(assetsLanguage))return assetsLanguage;if(language==="typescript-4-9"&&await fse.pathExists(assetsTS38))return assetsTS38;if(await fse.pathExists(assetsTS))return assetsTS;if(await fse.pathExists(assetsJS))return assetsJS;if(await fse.pathExists(assetsDir))return assetsDir;throw new Error(`Unsupported renderer: ${renderer} (${baseDir})`)},destinationPath=destination??await(async()=>await fse.pathExists("./src")?"./src/stories":"./stories")();includeCommonAssets&&await fse.copy(join2(getCliDir(),"rendererAssets/common"),destinationPath,{overwrite:!0}),await fse.copy(await templatePath(),destinationPath,{overwrite:!0})}function getStorybookVersionSpecifier(packageJson){let allDeps={...packageJson.dependencies,...packageJson.devDependencies},storybookPackage=Object.keys(allDeps).find(name=>versions_default[name]);if(!storybookPackage)throw new Error("Couldn't find any official storybook packages in package.json");return allDeps[storybookPackage]}function isNxProject(packageJSON){return!!packageJSON.devDependencies?.nx||fs.existsSync("nx.json")}var HandledError=class extends Error{constructor(messageOrError){super(typeof messageOrError=="string"?messageOrError:messageOrError.message);this.handled=!0;typeof messageOrError!="string"&&(this.cause=messageOrError)}};var logger2=console;function getPackageDetails(pkg){let idx=pkg.lastIndexOf("@");if(idx<=0)return[pkg,void 0];let packageName=pkg.slice(0,idx),packageVersion=pkg.slice(idx+1);return[packageName,packageVersion]}var JsPackageManager=class{setRegistryURL(url){url?this.executeCommand("npm",["config","set","registry",url]):this.executeCommand("npm",["config","delete","registry"])}getRegistryURL(){let url=this.executeCommand("npm",["config","get","registry"]).trim();return url==="undefined"?void 0:url}constructor(options){this.cwd=options?.cwd}installDependencies(){let done=commandLog("Preparing to install dependencies");done(),logger2.log(),logger2.log(),done=commandLog("Installing dependencies");try{this.runInstall()}catch(e){throw done("An error occurred while installing dependencies."),new HandledError(e)}done()}packageJsonPath(){return this.cwd?path2.resolve(this.cwd,"package.json"):path2.resolve("package.json")}readPackageJson(){let packageJsonPath=this.packageJsonPath();if(!fs2.existsSync(packageJsonPath))throw new Error(`Could not read package.json file at ${packageJsonPath}`);let jsonContent=fs2.readFileSync(packageJsonPath,"utf8");return JSON.parse(jsonContent)}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)}
|
|
14
|
+
`;fs2.writeFileSync(this.packageJsonPath(),content,"utf8")}retrievePackageJson(){let packageJson;try{packageJson=this.readPackageJson()}catch{this.initPackageJson(),packageJson=this.readPackageJson()}return{...packageJson,dependencies:{...packageJson.dependencies},devDependencies:{...packageJson.devDependencies},peerDependencies:{...packageJson.peerDependencies}}}getAllDependencies(){let{dependencies,devDependencies,peerDependencies}=this.retrievePackageJson();return{...dependencies,...devDependencies,...peerDependencies}}addDependencies(options,dependencies){let{skipInstall}=options;if(skipInstall){let{packageJson}=options,dependenciesMap=dependencies.reduce((acc,dep)=>{let[packageName,packageVersion]=getPackageDetails(dep);return{...acc,[packageName]:packageVersion}},{});options.installAsDevDependencies?packageJson.devDependencies={...packageJson.devDependencies,...dependenciesMap}:packageJson.dependencies={...packageJson.dependencies,...dependenciesMap},this.writePackageJson(packageJson)}else try{this.runAddDeps(dependencies,options.installAsDevDependencies)}catch(e){throw logger2.error("An error occurred while installing dependencies."),logger2.log(e.message),new HandledError(e)}}removeDependencies(options,dependencies){let{skipInstall}=options;if(skipInstall){let{packageJson}=options;dependencies.forEach(dep=>{packageJson.devDependencies&&delete packageJson.devDependencies[dep],packageJson.dependencies&&delete packageJson.dependencies[dep]}),this.writePackageJson(packageJson)}else try{this.runRemoveDeps(dependencies)}catch(e){throw logger2.error("An error occurred while removing dependencies."),logger2.log(e.message),new HandledError(e)}}getVersionedPackages(packages){return Promise.all(packages.map(async pkg=>{let[packageName,packageVersion]=getPackageDetails(pkg);return`${packageName}@${await this.getVersion(packageName,packageVersion)}`}))}getVersions(...packageNames){return Promise.all(packageNames.map(packageName=>this.getVersion(packageName)))}async getVersion(packageName,constraint){let current;/(@storybook|^sb$|^storybook$)/.test(packageName)&&(current=versions_default[packageName]);let latest;try{latest=await this.latestVersion(packageName,constraint)}catch(e){if(current)return logger2.warn(`
|
|
15
|
+
${chalk2.yellow(e.message)}`),current;throw logger2.error(`
|
|
16
|
+
${chalk2.red(e.message)}`),new HandledError(e)}return`^${current&&(!constraint||satisfies2(current,constraint))&>(current,latest)?current:latest}`}async latestVersion(packageName,constraint){return constraint?(await this.runGetVersions(packageName,!0)).reverse().find(version=>satisfies2(version,constraint)):this.runGetVersions(packageName,!1)}addStorybookCommandInScripts(options){let storybookCmd=`storybook dev -p ${options?.port??6006}`,buildStorybookCmd="storybook build",preCommand=options?.preCommand?this.getRunCommand(options.preCommand):void 0;this.addScripts({storybook:[preCommand,storybookCmd].filter(Boolean).join(" && "),"build-storybook":[preCommand,buildStorybookCmd].filter(Boolean).join(" && ")})}addESLintConfig(){let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,eslintConfig:{...packageJson.eslintConfig,overrides:[...packageJson.eslintConfig?.overrides||[],{files:["**/*.stories.*"],rules:{"import/no-anonymous-default-export":"off"}}]}})}addScripts(scripts){let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,scripts:{...packageJson.scripts,...scripts}})}addPackageResolutions(versions){let packageJson=this.retrievePackageJson(),resolutions=this.getResolutions(packageJson,versions);this.writePackageJson({...packageJson,...resolutions})}executeCommand(command,args,stdio,cwd,ignoreError){let commandResult=spawnSync(command,args,{cwd:cwd??this.cwd,stdio:stdio??"pipe",encoding:"utf-8",shell:!0});if(commandResult.status!==0&&ignoreError!==!0)throw new Error(commandResult.stderr??"");return commandResult.stdout??""}};import path3 from"path";import{sync as spawnSync2}from"cross-spawn";import{sync as findUpSync}from"find-up";import sort from"semver/functions/sort";import{platform}from"os";var NPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="npm"}initPackageJson(){return this.executeCommand("npm",["init","-y"])}getRunStorybookCommand(){return"npm run storybook"}getRunCommand(command){return`npm run ${command}`}getNpmVersion(){return this.executeCommand("npm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}runPackageCommand(command,args,cwd){return this.executeCommand("npm",["exec","--",command,...args],void 0,cwd)}findInstallations(){let pipeToNull=platform()==="win32"?"2>NUL":"2>/dev/null",commandResult=this.executeCommand("npm",["ls","--json","--depth=99",pipeToNull],void 0,void 0,!0);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("npm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("npm",["install",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("npm",["uninstall",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("npm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using npm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},recurse=([name,packageInfo])=>{if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};existingVersions[name]?.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=sort([...existingVersions[name]||[],value.version]),existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(input.dependencies).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"npm ls --depth=1"}}};import{pathExistsSync}from"fs-extra";var PNPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="pnpm"}detectWorkspaceRoot(){let pnpmWorkspaceYaml=`${process.cwd()}/pnpm-workspace.yaml`;return pathExistsSync(pnpmWorkspaceYaml)}initPackageJson(){return this.executeCommand("pnpm",["init","-y"])}getRunStorybookCommand(){return"pnpm run storybook"}getRunCommand(command){return`pnpm run ${command}`}getPnpmVersion(){return this.executeCommand("pnpm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[],this.detectWorkspaceRoot()&&this.installArgs.push("-w")),this.installArgs}runPackageCommand(command,args,cwd){return this.executeCommand("pnpm",["exec",command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("pnpm",["list",pattern.map(p=>`"${p}"`).join(" "),"--json","--depth=99"]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("pnpm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("pnpm",["add",...args,...this.getInstallArgs()],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("pnpm",["remove",...args,...this.getInstallArgs()],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("pnpm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using pnpm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},items=input.reduce((curr,item)=>{let{devDependencies,dependencies,peerDependencies}=item,allDependencies={...devDependencies,...dependencies,...peerDependencies};return Object.assign(curr,allDependencies)},{}),recurse=([name,packageInfo])=>{if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};existingVersions[name]?.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(items).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"pnpm list --depth=1"}}};var parsePackageData=(packageName="")=>{let[first,second,third]=packageName.trim().split("@"),version=(third||second).replace("npm:","");return{name:third?`@${second}`:first,value:{version,location:""}}};var Yarn2Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn2"}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}initPackageJson(){return this.executeCommand("yarn",["init"])}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command){return`yarn ${command}`}runPackageCommand(command,args,cwd){return this.executeCommand("yarn",[command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("yarn",["info","--name-only","--recursive",pattern.map(p=>`"${p}"`).join(" "),`"${pattern}"`]);try{return this.mapDependencies(commandResult)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}runInstall(){this.executeCommand("yarn",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("yarn",["add",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("yarn",["remove",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let field=fetchAllVersions?"versions":"version",args=["--fields",field,"--json"],commandResult=this.executeCommand("yarn",["npm","info",packageName,...args]);try{return JSON.parse(commandResult)[field]}catch{throw new Error(`Unable to find versions of ${packageName} using yarn 2`)}}mapDependencies(input){let lines=input.split(`
|
|
17
|
+
`),acc={},existingVersions={},duplicatedDependencies={};return lines.forEach(packageName=>{if(!packageName||!packageName.includes("storybook"))return;let{name,value}=parsePackageData(packageName.replaceAll('"',""));existingVersions[name]?.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name]))}),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}};var Yarn1Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn1"}getInstallArgs(){return this.installArgs||(this.installArgs=["--ignore-workspace-root-check"]),this.installArgs}initPackageJson(){return this.executeCommand("yarn",["init","-y"])}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command){return`yarn ${command}`}runPackageCommand(command,args,cwd){return this.executeCommand("yarn",[command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("yarn",["list","--pattern",pattern.map(p=>`"${p}"`).join(" "),"--recursive","--json"]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}runInstall(){this.executeCommand("yarn",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("yarn",["add",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("yarn",["remove",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("yarn",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.type==="inspect")return parsedOutput.data;throw new Error(`Unable to find versions of ${packageName} using yarn`)}catch{throw new Error(`Unable to find versions of ${packageName} using yarn`)}}mapDependencies(input){if(input.type==="tree"){let{trees}=input.data,acc={},existingVersions={},duplicatedDependencies={},recurse=tree=>{let{children}=tree,{name,value}=parsePackageData(tree.name);!name||!name.includes("storybook")||(existingVersions[name]?.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),children.forEach(recurse))};return trees.forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}throw new Error("Something went wrong while parsing yarn output")}};var NPM_LOCKFILE="package-lock.json",PNPM_LOCKFILE="pnpm-lock.yaml",YARN_LOCKFILE="yarn.lock",JsPackageManagerFactory=class{static getPackageManager({force}={},cwd){if(force==="npm")return new NPMProxy({cwd});if(force==="pnpm")return new PNPMProxy({cwd});if(force==="yarn1")return new Yarn1Proxy({cwd});if(force==="yarn2")return new Yarn2Proxy({cwd});let yarnVersion=getYarnVersion(cwd),closestLockfilePath=findUpSync([YARN_LOCKFILE,PNPM_LOCKFILE,NPM_LOCKFILE],{cwd}),closestLockfile=closestLockfilePath&&path3.basename(closestLockfilePath),hasNPMCommand=hasNPM(cwd),hasPNPMCommand=hasPNPM(cwd);if(yarnVersion&&(closestLockfile===YARN_LOCKFILE||!hasNPMCommand&&!hasPNPMCommand))return yarnVersion===1?new Yarn1Proxy({cwd}):new Yarn2Proxy({cwd});if(hasPNPMCommand&&closestLockfile===PNPM_LOCKFILE)return new PNPMProxy({cwd});if(hasNPMCommand)return new NPMProxy({cwd});throw new Error("Unable to find a usable package manager within NPM, PNPM, Yarn and Yarn 2")}};function hasNPM(cwd){return spawnSync2("npm",["--version"],{cwd,shell:!0}).status===0}function hasPNPM(cwd){return spawnSync2("pnpm",["--version"],{cwd,shell:!0}).status===0}function getYarnVersion(cwd){let yarnVersionCommand=spawnSync2("yarn",["--version"],{cwd,shell:!0});if(yarnVersionCommand.status!==0)return;let yarnVersion=yarnVersionCommand.output.toString().replace(/,/g,"").replace(/"/g,"");return/^1\.+/.test(yarnVersion)?1:2}function parseList(str){return str.split(",").map(item=>item.trim()).filter(item=>item.length>0)}function getEnvConfig(program,configEnv){Object.keys(configEnv).forEach(fieldName=>{let envVarName=configEnv[fieldName],envVarValue=process.env[envVarName];envVarValue&&(program[fieldName]=envVarValue)})}export{__require,externalFrameworks,SUPPORTED_RENDERERS,supportedTemplates,unsupportedTemplate,installableProjectTypes,versions_default,getCliDir,getBowerJson,readFileAsJson,writeFileAsJson,commandLog,paddedLog,codeLog,getBabelDependencies,copyTemplate,copyTemplateFiles,getStorybookVersionSpecifier,isNxProject,useNpmWarning,HandledError,getPackageDetails,JsPackageManager,JsPackageManagerFactory,parseList,getEnvConfig};
|
package/dist/generate.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod));var import_commander=__toESM(require("commander")),import_path19=__toESM(require("path")),import_chalk30=__toESM(require("chalk")),import_envinfo=__toESM(require("envinfo")),import_leven=__toESM(require("leven")),import_read_pkg_up3=require("read-pkg-up"),import_node_logger7=require("@storybook/node-logger");var import_chalk26=__toESM(require("chalk")),import_prompts6=__toESM(require("prompts")),import_telemetry=require("@storybook/telemetry"),import_core_server=require("@storybook/core-server");var import_semver=require("semver");function ltMajor(versionRange,major){return(0,import_semver.validRange)(versionRange)&&(0,import_semver.minVersion)(versionRange).major<major}function gtMajor(versionRange,major){return(0,import_semver.validRange)(versionRange)&&(0,import_semver.minVersion)(versionRange).major>major}function eqMajor(versionRange,major){return(0,import_semver.validRange)(versionRange)&&(0,import_semver.minVersion)(versionRange).major===major}var externalFrameworks=[{name:"qwik",packageName:"storybook-framework-qwik"},{name:"solid",frameworks:["storybook-solidjs-vite"],renderer:"storybook-solidjs"}],SUPPORTED_RENDERERS=["react","react-native","vue","vue3","angular","mithril","riot","ember","marionette","marko","preact","svelte","qwik","rax","aurelia","solid"],ProjectType=(ProjectType2=>(ProjectType2.UNDETECTED="UNDETECTED",ProjectType2.UNSUPPORTED="UNSUPPORTED",ProjectType2.REACT_SCRIPTS="REACT_SCRIPTS",ProjectType2.REACT="REACT",ProjectType2.REACT_NATIVE="REACT_NATIVE",ProjectType2.REACT_PROJECT="REACT_PROJECT",ProjectType2.WEBPACK_REACT="WEBPACK_REACT",ProjectType2.NEXTJS="NEXTJS",ProjectType2.VUE="VUE",ProjectType2.VUE3="VUE3",ProjectType2.SFC_VUE="SFC_VUE",ProjectType2.ANGULAR="ANGULAR",ProjectType2.EMBER="EMBER",ProjectType2.WEB_COMPONENTS="WEB_COMPONENTS",ProjectType2.MITHRIL="MITHRIL",ProjectType2.MARIONETTE="MARIONETTE",ProjectType2.MARKO="MARKO",ProjectType2.HTML="HTML",ProjectType2.QWIK="QWIK",ProjectType2.RIOT="RIOT",ProjectType2.PREACT="PREACT",ProjectType2.SVELTE="SVELTE",ProjectType2.SVELTEKIT="SVELTEKIT",ProjectType2.RAX="RAX",ProjectType2.AURELIA="AURELIA",ProjectType2.SERVER="SERVER",ProjectType2.NX="NX",ProjectType2.SOLID="SOLID",ProjectType2))(ProjectType||{});var supportedTemplates=[{preset:"SFC_VUE",dependencies:{"vue-loader":versionRange=>ltMajor(versionRange,16),vuetify:versionRange=>ltMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"VUE",dependencies:{vue:versionRange=>ltMajor(versionRange,3),nuxt:versionRange=>ltMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"VUE3",dependencies:{vue:versionRange=>versionRange==="next"||eqMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"EMBER",dependencies:["ember-cli"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"NEXTJS",dependencies:{next:versionRange=>eqMajor(versionRange,9)||gtMajor(versionRange,9)},matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"QWIK",dependencies:["@builder.io/qwik"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"REACT_PROJECT",peerDependencies:["react"],matcherFunction:({peerDependencies})=>peerDependencies.every(Boolean)},{preset:"REACT_NATIVE",dependencies:["react-native","react-native-scripts"],matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"REACT_SCRIPTS",files:["/node_modules/.bin/react-scripts"],dependencies:["react-scripts"],matcherFunction:({dependencies,files})=>dependencies.every(Boolean)||files.every(Boolean)},{preset:"ANGULAR",dependencies:["@angular/core"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"WEB_COMPONENTS",dependencies:["lit-element","lit-html","lit"],matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"MITHRIL",dependencies:["mithril"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"MARIONETTE",dependencies:["backbone.marionette"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"MARKO",dependencies:["marko"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"RIOT",dependencies:["riot"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"PREACT",dependencies:["preact"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"SVELTEKIT",dependencies:["@sveltejs/kit"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"SVELTE",dependencies:["svelte"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"RAX",dependencies:["rax"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"AURELIA",dependencies:["aurelia-bootstrapper"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"SOLID",dependencies:["solid-js"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"WEBPACK_REACT",dependencies:["react","webpack"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"REACT",dependencies:["react"],matcherFunction:({dependencies})=>dependencies.every(Boolean)}],unsupportedTemplate={preset:"UNSUPPORTED",dependencies:{nuxt:versionRange=>eqMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},notInstallableProjectTypes=["UNDETECTED","UNSUPPORTED"],installableProjectTypes=Object.values(ProjectType).filter(type=>!notInstallableProjectTypes.includes(type)).map(type=>type.toLowerCase());var import_fs2=__toESM(require("fs")),import_find_up=__toESM(require("find-up")),import_semver3=__toESM(require("semver")),import_node_logger=require("@storybook/node-logger"),import_fs_extra2=require("fs-extra"),import_path3=require("path");var import_path2=__toESM(require("path")),import_fs=__toESM(require("fs")),import_fs_extra=__toESM(require("fs-extra")),import_chalk=__toESM(require("chalk")),import_semver2=require("semver"),import_strip_json_comments=__toESM(require("strip-json-comments"));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"));var versions_default={"@storybook/addon-a11y":"7.1.0-alpha.1","@storybook/addon-actions":"7.1.0-alpha.1","@storybook/addon-backgrounds":"7.1.0-alpha.1","@storybook/addon-controls":"7.1.0-alpha.1","@storybook/addon-docs":"7.1.0-alpha.1","@storybook/addon-essentials":"7.1.0-alpha.1","@storybook/addon-highlight":"7.1.0-alpha.1","@storybook/addon-interactions":"7.1.0-alpha.1","@storybook/addon-jest":"7.1.0-alpha.1","@storybook/addon-links":"7.1.0-alpha.1","@storybook/addon-mdx-gfm":"7.1.0-alpha.1","@storybook/addon-measure":"7.1.0-alpha.1","@storybook/addon-outline":"7.1.0-alpha.1","@storybook/addon-storyshots":"7.1.0-alpha.1","@storybook/addon-storyshots-puppeteer":"7.1.0-alpha.1","@storybook/addon-storysource":"7.1.0-alpha.1","@storybook/addon-toolbars":"7.1.0-alpha.1","@storybook/addon-viewport":"7.1.0-alpha.1","@storybook/addons":"7.1.0-alpha.1","@storybook/angular":"7.1.0-alpha.1","@storybook/api":"7.1.0-alpha.1","@storybook/blocks":"7.1.0-alpha.1","@storybook/builder-manager":"7.1.0-alpha.1","@storybook/builder-vite":"7.1.0-alpha.1","@storybook/builder-webpack5":"7.1.0-alpha.1","@storybook/channel-postmessage":"7.1.0-alpha.1","@storybook/channel-websocket":"7.1.0-alpha.1","@storybook/channels":"7.1.0-alpha.1","@storybook/cli":"7.1.0-alpha.1","@storybook/client-api":"7.1.0-alpha.1","@storybook/client-logger":"7.1.0-alpha.1","@storybook/codemod":"7.1.0-alpha.1","@storybook/components":"7.1.0-alpha.1","@storybook/core-client":"7.1.0-alpha.1","@storybook/core-common":"7.1.0-alpha.1","@storybook/core-events":"7.1.0-alpha.1","@storybook/core-server":"7.1.0-alpha.1","@storybook/core-webpack":"7.1.0-alpha.1","@storybook/csf-plugin":"7.1.0-alpha.1","@storybook/csf-tools":"7.1.0-alpha.1","@storybook/docs-tools":"7.1.0-alpha.1","@storybook/ember":"7.1.0-alpha.1","@storybook/html":"7.1.0-alpha.1","@storybook/html-vite":"7.1.0-alpha.1","@storybook/html-webpack5":"7.1.0-alpha.1","@storybook/instrumenter":"7.1.0-alpha.1","@storybook/manager":"7.1.0-alpha.1","@storybook/manager-api":"7.1.0-alpha.1","@storybook/nextjs":"7.1.0-alpha.1","@storybook/node-logger":"7.1.0-alpha.1","@storybook/postinstall":"7.1.0-alpha.1","@storybook/preact":"7.1.0-alpha.1","@storybook/preact-vite":"7.1.0-alpha.1","@storybook/preact-webpack5":"7.1.0-alpha.1","@storybook/preset-create-react-app":"7.1.0-alpha.1","@storybook/preset-html-webpack":"7.1.0-alpha.1","@storybook/preset-preact-webpack":"7.1.0-alpha.1","@storybook/preset-react-webpack":"7.1.0-alpha.1","@storybook/preset-server-webpack":"7.1.0-alpha.1","@storybook/preset-svelte-webpack":"7.1.0-alpha.1","@storybook/preset-vue-webpack":"7.1.0-alpha.1","@storybook/preset-vue3-webpack":"7.1.0-alpha.1","@storybook/preset-web-components-webpack":"7.1.0-alpha.1","@storybook/preview":"7.1.0-alpha.1","@storybook/preview-api":"7.1.0-alpha.1","@storybook/preview-web":"7.1.0-alpha.1","@storybook/react":"7.1.0-alpha.1","@storybook/react-dom-shim":"7.1.0-alpha.1","@storybook/react-vite":"7.1.0-alpha.1","@storybook/react-webpack5":"7.1.0-alpha.1","@storybook/router":"7.1.0-alpha.1","@storybook/server":"7.1.0-alpha.1","@storybook/server-webpack5":"7.1.0-alpha.1","@storybook/source-loader":"7.1.0-alpha.1","@storybook/store":"7.1.0-alpha.1","@storybook/svelte":"7.1.0-alpha.1","@storybook/svelte-vite":"7.1.0-alpha.1","@storybook/svelte-webpack5":"7.1.0-alpha.1","@storybook/sveltekit":"7.1.0-alpha.1","@storybook/telemetry":"7.1.0-alpha.1","@storybook/theming":"7.1.0-alpha.1","@storybook/types":"7.1.0-alpha.1","@storybook/vue":"7.1.0-alpha.1","@storybook/vue-vite":"7.1.0-alpha.1","@storybook/vue-webpack5":"7.1.0-alpha.1","@storybook/vue3":"7.1.0-alpha.1","@storybook/vue3-vite":"7.1.0-alpha.1","@storybook/vue3-webpack5":"7.1.0-alpha.1","@storybook/web-components":"7.1.0-alpha.1","@storybook/web-components-vite":"7.1.0-alpha.1","@storybook/web-components-webpack5":"7.1.0-alpha.1",sb:"7.1.0-alpha.1",storybook:"7.1.0-alpha.1"};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: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==null?void 0:externalFramework.renderer)||(externalFramework==null?void 0:externalFramework.packageName)||`@storybook/${renderer}`,packageJsonPath=`${frameworkPackageName}/package.json`,errors=[];try{return(0,import_path.dirname)(require.resolve(packageJsonPath,{paths:[process.cwd()]}))}catch(e){errors.push(e)}try{return await resolveUsingBranchInstall(packageManager,frameworkPackageName)}catch(e){errors.push(e)}throw new Error(`Cannot find ${packageJsonPath}, ${errors.map(e=>e.stack).join(`
|
|
1
|
+
var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod));var import_commander=__toESM(require("commander")),import_path19=__toESM(require("path")),import_chalk30=__toESM(require("chalk")),import_envinfo=__toESM(require("envinfo")),import_leven=__toESM(require("leven")),import_read_pkg_up3=require("read-pkg-up"),import_node_logger7=require("@storybook/node-logger"),import_telemetry3=require("@storybook/telemetry");var import_chalk26=__toESM(require("chalk")),import_prompts6=__toESM(require("prompts")),import_telemetry=require("@storybook/telemetry"),import_core_server=require("@storybook/core-server");var import_semver=require("semver");function ltMajor(versionRange,major){return(0,import_semver.validRange)(versionRange)&&(0,import_semver.minVersion)(versionRange).major<major}function gtMajor(versionRange,major){return(0,import_semver.validRange)(versionRange)&&(0,import_semver.minVersion)(versionRange).major>major}function eqMajor(versionRange,major){return(0,import_semver.validRange)(versionRange)&&(0,import_semver.minVersion)(versionRange).major===major}var externalFrameworks=[{name:"qwik",packageName:"storybook-framework-qwik"},{name:"solid",frameworks:["storybook-solidjs-vite"],renderer:"storybook-solidjs"}],SUPPORTED_RENDERERS=["react","react-native","vue","vue3","angular","mithril","riot","ember","marionette","marko","preact","svelte","qwik","rax","aurelia","solid"],ProjectType=(ProjectType2=>(ProjectType2.UNDETECTED="UNDETECTED",ProjectType2.UNSUPPORTED="UNSUPPORTED",ProjectType2.REACT_SCRIPTS="REACT_SCRIPTS",ProjectType2.REACT="REACT",ProjectType2.REACT_NATIVE="REACT_NATIVE",ProjectType2.REACT_PROJECT="REACT_PROJECT",ProjectType2.WEBPACK_REACT="WEBPACK_REACT",ProjectType2.NEXTJS="NEXTJS",ProjectType2.VUE="VUE",ProjectType2.VUE3="VUE3",ProjectType2.SFC_VUE="SFC_VUE",ProjectType2.ANGULAR="ANGULAR",ProjectType2.EMBER="EMBER",ProjectType2.WEB_COMPONENTS="WEB_COMPONENTS",ProjectType2.MITHRIL="MITHRIL",ProjectType2.MARIONETTE="MARIONETTE",ProjectType2.MARKO="MARKO",ProjectType2.HTML="HTML",ProjectType2.QWIK="QWIK",ProjectType2.RIOT="RIOT",ProjectType2.PREACT="PREACT",ProjectType2.SVELTE="SVELTE",ProjectType2.SVELTEKIT="SVELTEKIT",ProjectType2.RAX="RAX",ProjectType2.AURELIA="AURELIA",ProjectType2.SERVER="SERVER",ProjectType2.NX="NX",ProjectType2.SOLID="SOLID",ProjectType2))(ProjectType||{});var supportedTemplates=[{preset:"SFC_VUE",dependencies:{"vue-loader":versionRange=>ltMajor(versionRange,16),vuetify:versionRange=>ltMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"VUE",dependencies:{vue:versionRange=>ltMajor(versionRange,3),nuxt:versionRange=>ltMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"VUE3",dependencies:{vue:versionRange=>versionRange==="next"||eqMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"EMBER",dependencies:["ember-cli"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"NEXTJS",dependencies:{next:versionRange=>eqMajor(versionRange,9)||gtMajor(versionRange,9)},matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"QWIK",dependencies:["@builder.io/qwik"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"REACT_PROJECT",peerDependencies:["react"],matcherFunction:({peerDependencies})=>peerDependencies.every(Boolean)},{preset:"REACT_NATIVE",dependencies:["react-native","react-native-scripts"],matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"REACT_SCRIPTS",files:["/node_modules/.bin/react-scripts"],dependencies:["react-scripts"],matcherFunction:({dependencies,files})=>dependencies.every(Boolean)||files.every(Boolean)},{preset:"ANGULAR",dependencies:["@angular/core"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"WEB_COMPONENTS",dependencies:["lit-element","lit-html","lit"],matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"MITHRIL",dependencies:["mithril"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"MARIONETTE",dependencies:["backbone.marionette"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"MARKO",dependencies:["marko"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"RIOT",dependencies:["riot"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"PREACT",dependencies:["preact"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"SVELTEKIT",dependencies:["@sveltejs/kit"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"SVELTE",dependencies:["svelte"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"RAX",dependencies:["rax"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"AURELIA",dependencies:["aurelia-bootstrapper"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"SOLID",dependencies:["solid-js"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"WEBPACK_REACT",dependencies:["react","webpack"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"REACT",dependencies:["react"],matcherFunction:({dependencies})=>dependencies.every(Boolean)}],unsupportedTemplate={preset:"UNSUPPORTED",dependencies:{nuxt:versionRange=>eqMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},notInstallableProjectTypes=["UNDETECTED","UNSUPPORTED"],installableProjectTypes=Object.values(ProjectType).filter(type=>!notInstallableProjectTypes.includes(type)).map(type=>type.toLowerCase());var import_fs2=__toESM(require("fs")),import_find_up=__toESM(require("find-up")),import_semver3=__toESM(require("semver")),import_node_logger=require("@storybook/node-logger"),import_fs_extra2=require("fs-extra"),import_path3=require("path");var import_path2=__toESM(require("path")),import_fs=__toESM(require("fs")),import_fs_extra=__toESM(require("fs-extra")),import_chalk=__toESM(require("chalk")),import_semver2=require("semver"),import_strip_json_comments=__toESM(require("strip-json-comments"));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"));var versions_default={"@storybook/addon-a11y":"7.1.0-alpha.2","@storybook/addon-actions":"7.1.0-alpha.2","@storybook/addon-backgrounds":"7.1.0-alpha.2","@storybook/addon-controls":"7.1.0-alpha.2","@storybook/addon-docs":"7.1.0-alpha.2","@storybook/addon-essentials":"7.1.0-alpha.2","@storybook/addon-highlight":"7.1.0-alpha.2","@storybook/addon-interactions":"7.1.0-alpha.2","@storybook/addon-jest":"7.1.0-alpha.2","@storybook/addon-links":"7.1.0-alpha.2","@storybook/addon-mdx-gfm":"7.1.0-alpha.2","@storybook/addon-measure":"7.1.0-alpha.2","@storybook/addon-outline":"7.1.0-alpha.2","@storybook/addon-storyshots":"7.1.0-alpha.2","@storybook/addon-storyshots-puppeteer":"7.1.0-alpha.2","@storybook/addon-storysource":"7.1.0-alpha.2","@storybook/addon-toolbars":"7.1.0-alpha.2","@storybook/addon-viewport":"7.1.0-alpha.2","@storybook/addons":"7.1.0-alpha.2","@storybook/angular":"7.1.0-alpha.2","@storybook/api":"7.1.0-alpha.2","@storybook/blocks":"7.1.0-alpha.2","@storybook/builder-manager":"7.1.0-alpha.2","@storybook/builder-vite":"7.1.0-alpha.2","@storybook/builder-webpack5":"7.1.0-alpha.2","@storybook/channel-postmessage":"7.1.0-alpha.2","@storybook/channel-websocket":"7.1.0-alpha.2","@storybook/channels":"7.1.0-alpha.2","@storybook/cli":"7.1.0-alpha.2","@storybook/client-api":"7.1.0-alpha.2","@storybook/client-logger":"7.1.0-alpha.2","@storybook/codemod":"7.1.0-alpha.2","@storybook/components":"7.1.0-alpha.2","@storybook/core-client":"7.1.0-alpha.2","@storybook/core-common":"7.1.0-alpha.2","@storybook/core-events":"7.1.0-alpha.2","@storybook/core-server":"7.1.0-alpha.2","@storybook/core-webpack":"7.1.0-alpha.2","@storybook/csf-plugin":"7.1.0-alpha.2","@storybook/csf-tools":"7.1.0-alpha.2","@storybook/docs-tools":"7.1.0-alpha.2","@storybook/ember":"7.1.0-alpha.2","@storybook/html":"7.1.0-alpha.2","@storybook/html-vite":"7.1.0-alpha.2","@storybook/html-webpack5":"7.1.0-alpha.2","@storybook/instrumenter":"7.1.0-alpha.2","@storybook/manager":"7.1.0-alpha.2","@storybook/manager-api":"7.1.0-alpha.2","@storybook/nextjs":"7.1.0-alpha.2","@storybook/node-logger":"7.1.0-alpha.2","@storybook/postinstall":"7.1.0-alpha.2","@storybook/preact":"7.1.0-alpha.2","@storybook/preact-vite":"7.1.0-alpha.2","@storybook/preact-webpack5":"7.1.0-alpha.2","@storybook/preset-create-react-app":"7.1.0-alpha.2","@storybook/preset-html-webpack":"7.1.0-alpha.2","@storybook/preset-preact-webpack":"7.1.0-alpha.2","@storybook/preset-react-webpack":"7.1.0-alpha.2","@storybook/preset-server-webpack":"7.1.0-alpha.2","@storybook/preset-svelte-webpack":"7.1.0-alpha.2","@storybook/preset-vue-webpack":"7.1.0-alpha.2","@storybook/preset-vue3-webpack":"7.1.0-alpha.2","@storybook/preset-web-components-webpack":"7.1.0-alpha.2","@storybook/preview":"7.1.0-alpha.2","@storybook/preview-api":"7.1.0-alpha.2","@storybook/preview-web":"7.1.0-alpha.2","@storybook/react":"7.1.0-alpha.2","@storybook/react-dom-shim":"7.1.0-alpha.2","@storybook/react-vite":"7.1.0-alpha.2","@storybook/react-webpack5":"7.1.0-alpha.2","@storybook/router":"7.1.0-alpha.2","@storybook/server":"7.1.0-alpha.2","@storybook/server-webpack5":"7.1.0-alpha.2","@storybook/source-loader":"7.1.0-alpha.2","@storybook/store":"7.1.0-alpha.2","@storybook/svelte":"7.1.0-alpha.2","@storybook/svelte-vite":"7.1.0-alpha.2","@storybook/svelte-webpack5":"7.1.0-alpha.2","@storybook/sveltekit":"7.1.0-alpha.2","@storybook/telemetry":"7.1.0-alpha.2","@storybook/theming":"7.1.0-alpha.2","@storybook/types":"7.1.0-alpha.2","@storybook/vue":"7.1.0-alpha.2","@storybook/vue-vite":"7.1.0-alpha.2","@storybook/vue-webpack5":"7.1.0-alpha.2","@storybook/vue3":"7.1.0-alpha.2","@storybook/vue3-vite":"7.1.0-alpha.2","@storybook/vue3-webpack5":"7.1.0-alpha.2","@storybook/web-components":"7.1.0-alpha.2","@storybook/web-components-vite":"7.1.0-alpha.2","@storybook/web-components-webpack5":"7.1.0-alpha.2",sb:"7.1.0-alpha.2",storybook:"7.1.0-alpha.2"};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: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==null?void 0:externalFramework.renderer)||(externalFramework==null?void 0:externalFramework.packageName)||`@storybook/${renderer}`,packageJsonPath=`${frameworkPackageName}/package.json`,errors=[];try{return(0,import_path.dirname)(require.resolve(packageJsonPath,{paths:[process.cwd()]}))}catch(e){errors.push(e)}try{return await resolveUsingBranchInstall(packageManager,frameworkPackageName)}catch(e){errors.push(e)}throw new Error(`Cannot find ${packageJsonPath}, ${errors.map(e=>e.stack).join(`
|
|
2
2
|
|
|
3
3
|
`)}`)}var logger=console;function getBowerJson(){let bowerJsonPath=import_path2.default.resolve("bower.json");if(!import_fs.default.existsSync(bowerJsonPath))return!1;let jsonContent=import_fs.default.readFileSync(bowerJsonPath,"utf8");return JSON.parse(jsonContent)}function readFileAsJson(jsonPath,allowComments){let filePath=import_path2.default.resolve(jsonPath);if(!import_fs.default.existsSync(filePath))return!1;let fileContent=import_fs.default.readFileSync(filePath,"utf8"),jsonContent=allowComments?(0,import_strip_json_comments.default)(fileContent):fileContent;try{return JSON.parse(jsonContent)}catch(e){throw logger.error(import_chalk.default.red(`Invalid json in file: ${filePath}`)),e}}var writeFileAsJson=(jsonPath,content)=>{let filePath=import_path2.default.resolve(jsonPath);return import_fs.default.existsSync(filePath)?(import_fs.default.writeFileSync(filePath,`${JSON.stringify(content,null,2)}
|
|
4
4
|
`),!0):!1},commandLog=message=>(process.stdout.write(import_chalk.default.cyan(" \u2022 ")+message),(errorMessage,errorInfo)=>{if(errorMessage){if(process.stdout.write(`. ${import_chalk.default.red("\u2716")}
|
|
@@ -36,7 +36,7 @@ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropD
|
|
|
36
36
|
`,"").trim(),prettier=(await import("prettier")).default,prettyPreview=prettier.format(preview,{...prettier.resolveConfig.sync(process.cwd()),filepath:previewPath});await import_fs_extra3.default.writeFile(previewPath,prettyPreview,{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_spawn2=require("cross-spawn"),import_find_up2=require("find-up");var import_sort=__toESM(require("semver/functions/sort")),import_os=require("os");var import_chalk2=__toESM(require("chalk")),import_semver4=require("semver"),import_cross_spawn=require("cross-spawn"),import_path5=__toESM(require("path")),import_fs3=__toESM(require("fs"));var HandledError=class extends Error{constructor(messageOrError){super(typeof messageOrError=="string"?messageOrError:messageOrError.message);this.handled=!0;typeof messageOrError!="string"&&(this.cause=messageOrError)}};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{setRegistryURL(url){url?this.executeCommand("npm",["config","set","registry",url]):this.executeCommand("npm",["config","delete","registry"])}getRegistryURL(){let url=this.executeCommand("npm",["config","get","registry"]).trim();return url==="undefined"?void 0:url}constructor(options){this.cwd=options==null?void 0:options.cwd}installDependencies(){let done=commandLog("Preparing to install dependencies");done(),logger4.log(),logger4.log(),done=commandLog("Installing dependencies");try{this.runInstall()}catch(e){throw done("An error occurred while installing dependencies."),new HandledError(e)}done()}packageJsonPath(){return this.cwd?import_path5.default.resolve(this.cwd,"package.json"):import_path5.default.resolve("package.json")}readPackageJson(){let packageJsonPath=this.packageJsonPath();if(!import_fs3.default.existsSync(packageJsonPath))throw new Error(`Could not read package.json file at ${packageJsonPath}`);let jsonContent=import_fs3.default.readFileSync(packageJsonPath,"utf8");return JSON.parse(jsonContent)}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)}
|
|
37
37
|
`;import_fs3.default.writeFileSync(this.packageJsonPath(),content,"utf8")}retrievePackageJson(){let packageJson;try{packageJson=this.readPackageJson()}catch{this.initPackageJson(),packageJson=this.readPackageJson()}return{...packageJson,dependencies:{...packageJson.dependencies},devDependencies:{...packageJson.devDependencies},peerDependencies:{...packageJson.peerDependencies}}}getAllDependencies(){let{dependencies,devDependencies,peerDependencies}=this.retrievePackageJson();return{...dependencies,...devDependencies,...peerDependencies}}addDependencies(options,dependencies){let{skipInstall}=options;if(skipInstall){let{packageJson}=options,dependenciesMap=dependencies.reduce((acc,dep)=>{let[packageName,packageVersion]=getPackageDetails(dep);return{...acc,[packageName]:packageVersion}},{});options.installAsDevDependencies?packageJson.devDependencies={...packageJson.devDependencies,...dependenciesMap}:packageJson.dependencies={...packageJson.dependencies,...dependenciesMap},this.writePackageJson(packageJson)}else try{this.runAddDeps(dependencies,options.installAsDevDependencies)}catch(e){throw logger4.error("An error occurred while installing dependencies."),logger4.log(e.message),new HandledError(e)}}removeDependencies(options,dependencies){let{skipInstall}=options;if(skipInstall){let{packageJson}=options;dependencies.forEach(dep=>{packageJson.devDependencies&&delete packageJson.devDependencies[dep],packageJson.dependencies&&delete packageJson.dependencies[dep]}),this.writePackageJson(packageJson)}else try{this.runRemoveDeps(dependencies)}catch(e){throw logger4.error("An error occurred while removing dependencies."),logger4.log(e.message),new HandledError(e)}}getVersionedPackages(packages){return Promise.all(packages.map(async pkg2=>{let[packageName,packageVersion]=getPackageDetails(pkg2);return`${packageName}@${await this.getVersion(packageName,packageVersion)}`}))}getVersions(...packageNames){return Promise.all(packageNames.map(packageName=>this.getVersion(packageName)))}async getVersion(packageName,constraint){let current;/(@storybook|^sb$|^storybook$)/.test(packageName)&&(current=versions_default[packageName]);let latest;try{latest=await this.latestVersion(packageName,constraint)}catch(e){if(current)return logger4.warn(`
|
|
38
38
|
${import_chalk2.default.yellow(e.message)}`),current;throw logger4.error(`
|
|
39
|
-
${import_chalk2.default.red(e.message)}`),new HandledError(e)}return`^${current&&(!constraint||(0,import_semver4.satisfies)(current,constraint))&&(0,import_semver4.gt)(current,latest)?current:latest}`}async latestVersion(packageName,constraint){return constraint?(await this.runGetVersions(packageName,!0)).reverse().find(version=>(0,import_semver4.satisfies)(version,constraint)):this.runGetVersions(packageName,!1)}addStorybookCommandInScripts(options){let storybookCmd=`storybook dev -p ${(options==null?void 0:options.port)??6006}`,buildStorybookCmd="storybook build",preCommand=options!=null&&options.preCommand?this.getRunCommand(options.preCommand):void 0;this.addScripts({storybook:[preCommand,storybookCmd].filter(Boolean).join(" && "),"build-storybook":[preCommand,buildStorybookCmd].filter(Boolean).join(" && ")})}addESLintConfig(){var _a;let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,eslintConfig:{...packageJson.eslintConfig,overrides:[...((_a=packageJson.eslintConfig)==null?void 0:_a.overrides)||[],{files:["**/*.stories.*"],rules:{"import/no-anonymous-default-export":"off"}}]}})}addScripts(scripts){let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,scripts:{...packageJson.scripts,...scripts}})}addPackageResolutions(versions){let packageJson=this.retrievePackageJson(),resolutions=this.getResolutions(packageJson,versions);this.writePackageJson({...packageJson,...resolutions})}executeCommand(command2,args,stdio,cwd){let commandResult=(0,import_cross_spawn.sync)(command2,args,{cwd:cwd??this.cwd,stdio:stdio??"pipe",encoding:"utf-8",shell:!0});if(commandResult.status!==0)throw new Error(commandResult.stderr??"");return commandResult.stdout??""}};var NPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="npm"}initPackageJson(){return this.executeCommand("npm",["init","-y"])}getRunStorybookCommand(){return"npm run storybook"}getRunCommand(command2){return`npm run ${command2}`}getNpmVersion(){return this.executeCommand("npm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}runPackageCommand(command2,args,cwd){return this.executeCommand("npm",["exec","--",command2,...args],void 0,cwd)}findInstallations(){let pipeToNull=(0,import_os.platform)()==="win32"?"2>NUL":"2>/dev/null",commandResult=this.executeCommand("npm",["ls","--json","--depth=99",pipeToNull]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("npm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("npm",["install",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("npm",["uninstall",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("npm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using npm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},recurse=([name,packageInfo])=>{var _a;if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=(0,import_sort.default)([...existingVersions[name]||[],value.version]),existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(input.dependencies).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"npm ls --depth=1"}}};var import_fs_extra4=require("fs-extra");var PNPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="pnpm"}detectWorkspaceRoot(){let pnpmWorkspaceYaml=`${process.cwd()}/pnpm-workspace.yaml`;return(0,import_fs_extra4.pathExistsSync)(pnpmWorkspaceYaml)}initPackageJson(){return this.executeCommand("pnpm",["init","-y"])}getRunStorybookCommand(){return"pnpm run storybook"}getRunCommand(command2){return`pnpm run ${command2}`}getPnpmVersion(){return this.executeCommand("pnpm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[],this.detectWorkspaceRoot()&&this.installArgs.push("-w")),this.installArgs}runPackageCommand(command2,args,cwd){return this.executeCommand("pnpm",["exec",command2,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("pnpm",["list",pattern.map(p=>`"${p}"`).join(" "),"--json","--depth=99"]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("pnpm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("pnpm",["add",...args,...this.getInstallArgs()],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("pnpm",["remove",...args,...this.getInstallArgs()],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("pnpm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using pnpm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},items=input.reduce((curr,item)=>{let{devDependencies,dependencies,peerDependencies}=item,allDependencies={...devDependencies,...dependencies,...peerDependencies};return Object.assign(curr,allDependencies)},{}),recurse=([name,packageInfo])=>{var _a;if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(items).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"pnpm list --depth=1"}}};var parsePackageData=(packageName="")=>{let[first,second,third]=packageName.trim().split("@"),version=(third||second).replace("npm:","");return{name:third?`@${second}`:first,value:{version,location:""}}};var Yarn2Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn2"}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}initPackageJson(){return this.executeCommand("yarn",["init"])}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command2){return`yarn ${command2}`}runPackageCommand(command2,args,cwd){return this.executeCommand("yarn",[command2,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("yarn",["info","--name-only","--recursive",pattern.map(p=>`"${p}"`).join(" "),`"${pattern}"`]);try{return this.mapDependencies(commandResult)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}runInstall(){this.executeCommand("yarn",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("yarn",["add",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("yarn",["remove",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let field=fetchAllVersions?"versions":"version",args=["--fields",field,"--json"],commandResult=this.executeCommand("yarn",["npm","info",packageName,...args]);try{return JSON.parse(commandResult)[field]}catch{throw new Error(`Unable to find versions of ${packageName} using yarn 2`)}}mapDependencies(input){let lines=input.split(`
|
|
39
|
+
${import_chalk2.default.red(e.message)}`),new HandledError(e)}return`^${current&&(!constraint||(0,import_semver4.satisfies)(current,constraint))&&(0,import_semver4.gt)(current,latest)?current:latest}`}async latestVersion(packageName,constraint){return constraint?(await this.runGetVersions(packageName,!0)).reverse().find(version=>(0,import_semver4.satisfies)(version,constraint)):this.runGetVersions(packageName,!1)}addStorybookCommandInScripts(options){let storybookCmd=`storybook dev -p ${(options==null?void 0:options.port)??6006}`,buildStorybookCmd="storybook build",preCommand=options!=null&&options.preCommand?this.getRunCommand(options.preCommand):void 0;this.addScripts({storybook:[preCommand,storybookCmd].filter(Boolean).join(" && "),"build-storybook":[preCommand,buildStorybookCmd].filter(Boolean).join(" && ")})}addESLintConfig(){var _a;let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,eslintConfig:{...packageJson.eslintConfig,overrides:[...((_a=packageJson.eslintConfig)==null?void 0:_a.overrides)||[],{files:["**/*.stories.*"],rules:{"import/no-anonymous-default-export":"off"}}]}})}addScripts(scripts){let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,scripts:{...packageJson.scripts,...scripts}})}addPackageResolutions(versions){let packageJson=this.retrievePackageJson(),resolutions=this.getResolutions(packageJson,versions);this.writePackageJson({...packageJson,...resolutions})}executeCommand(command2,args,stdio,cwd,ignoreError){let commandResult=(0,import_cross_spawn.sync)(command2,args,{cwd:cwd??this.cwd,stdio:stdio??"pipe",encoding:"utf-8",shell:!0});if(commandResult.status!==0&&ignoreError!==!0)throw new Error(commandResult.stderr??"");return commandResult.stdout??""}};var NPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="npm"}initPackageJson(){return this.executeCommand("npm",["init","-y"])}getRunStorybookCommand(){return"npm run storybook"}getRunCommand(command2){return`npm run ${command2}`}getNpmVersion(){return this.executeCommand("npm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}runPackageCommand(command2,args,cwd){return this.executeCommand("npm",["exec","--",command2,...args],void 0,cwd)}findInstallations(){let pipeToNull=(0,import_os.platform)()==="win32"?"2>NUL":"2>/dev/null",commandResult=this.executeCommand("npm",["ls","--json","--depth=99",pipeToNull],void 0,void 0,!0);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("npm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("npm",["install",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("npm",["uninstall",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("npm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using npm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},recurse=([name,packageInfo])=>{var _a;if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=(0,import_sort.default)([...existingVersions[name]||[],value.version]),existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(input.dependencies).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"npm ls --depth=1"}}};var import_fs_extra4=require("fs-extra");var PNPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="pnpm"}detectWorkspaceRoot(){let pnpmWorkspaceYaml=`${process.cwd()}/pnpm-workspace.yaml`;return(0,import_fs_extra4.pathExistsSync)(pnpmWorkspaceYaml)}initPackageJson(){return this.executeCommand("pnpm",["init","-y"])}getRunStorybookCommand(){return"pnpm run storybook"}getRunCommand(command2){return`pnpm run ${command2}`}getPnpmVersion(){return this.executeCommand("pnpm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[],this.detectWorkspaceRoot()&&this.installArgs.push("-w")),this.installArgs}runPackageCommand(command2,args,cwd){return this.executeCommand("pnpm",["exec",command2,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("pnpm",["list",pattern.map(p=>`"${p}"`).join(" "),"--json","--depth=99"]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("pnpm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("pnpm",["add",...args,...this.getInstallArgs()],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("pnpm",["remove",...args,...this.getInstallArgs()],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("pnpm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using pnpm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},items=input.reduce((curr,item)=>{let{devDependencies,dependencies,peerDependencies}=item,allDependencies={...devDependencies,...dependencies,...peerDependencies};return Object.assign(curr,allDependencies)},{}),recurse=([name,packageInfo])=>{var _a;if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(items).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"pnpm list --depth=1"}}};var parsePackageData=(packageName="")=>{let[first,second,third]=packageName.trim().split("@"),version=(third||second).replace("npm:","");return{name:third?`@${second}`:first,value:{version,location:""}}};var Yarn2Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn2"}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}initPackageJson(){return this.executeCommand("yarn",["init"])}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command2){return`yarn ${command2}`}runPackageCommand(command2,args,cwd){return this.executeCommand("yarn",[command2,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("yarn",["info","--name-only","--recursive",pattern.map(p=>`"${p}"`).join(" "),`"${pattern}"`]);try{return this.mapDependencies(commandResult)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}runInstall(){this.executeCommand("yarn",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("yarn",["add",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("yarn",["remove",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let field=fetchAllVersions?"versions":"version",args=["--fields",field,"--json"],commandResult=this.executeCommand("yarn",["npm","info",packageName,...args]);try{return JSON.parse(commandResult)[field]}catch{throw new Error(`Unable to find versions of ${packageName} using yarn 2`)}}mapDependencies(input){let lines=input.split(`
|
|
40
40
|
`),acc={},existingVersions={},duplicatedDependencies={};return lines.forEach(packageName=>{var _a;if(!packageName||!packageName.includes("storybook"))return;let{name,value}=parsePackageData(packageName.replaceAll('"',""));(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name]))}),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}};var Yarn1Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn1"}getInstallArgs(){return this.installArgs||(this.installArgs=["--ignore-workspace-root-check"]),this.installArgs}initPackageJson(){return this.executeCommand("yarn",["init","-y"])}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command2){return`yarn ${command2}`}runPackageCommand(command2,args,cwd){return this.executeCommand("yarn",[command2,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("yarn",["list","--pattern",pattern.map(p=>`"${p}"`).join(" "),"--recursive","--json"]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}runInstall(){this.executeCommand("yarn",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("yarn",["add",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("yarn",["remove",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("yarn",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.type==="inspect")return parsedOutput.data;throw new Error(`Unable to find versions of ${packageName} using yarn`)}catch{throw new Error(`Unable to find versions of ${packageName} using yarn`)}}mapDependencies(input){if(input.type==="tree"){let{trees}=input.data,acc={},existingVersions={},duplicatedDependencies={},recurse=tree=>{var _a;let{children}=tree,{name,value}=parsePackageData(tree.name);!name||!name.includes("storybook")||((_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),children.forEach(recurse))};return trees.forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}throw new Error("Something went wrong while parsing yarn output")}};var NPM_LOCKFILE="package-lock.json",PNPM_LOCKFILE="pnpm-lock.yaml",YARN_LOCKFILE="yarn.lock",JsPackageManagerFactory=class{static getPackageManager({force}={},cwd){if(force==="npm")return new NPMProxy({cwd});if(force==="pnpm")return new PNPMProxy({cwd});if(force==="yarn1")return new Yarn1Proxy({cwd});if(force==="yarn2")return new Yarn2Proxy({cwd});let yarnVersion=getYarnVersion(cwd),closestLockfilePath=(0,import_find_up2.sync)([YARN_LOCKFILE,PNPM_LOCKFILE,NPM_LOCKFILE],{cwd}),closestLockfile=closestLockfilePath&&import_node_path.default.basename(closestLockfilePath),hasNPMCommand=hasNPM(cwd),hasPNPMCommand=hasPNPM(cwd);if(yarnVersion&&(closestLockfile===YARN_LOCKFILE||!hasNPMCommand&&!hasPNPMCommand))return yarnVersion===1?new Yarn1Proxy({cwd}):new Yarn2Proxy({cwd});if(hasPNPMCommand&&closestLockfile===PNPM_LOCKFILE)return new PNPMProxy({cwd});if(hasNPMCommand)return new NPMProxy({cwd});throw new Error("Unable to find a usable package manager within NPM, PNPM, Yarn and Yarn 2")}};function hasNPM(cwd){return(0,import_cross_spawn2.sync)("npm",["--version"],{cwd,shell:!0}).status===0}function hasPNPM(cwd){return(0,import_cross_spawn2.sync)("pnpm",["--version"],{cwd,shell:!0}).status===0}function getYarnVersion(cwd){let yarnVersionCommand=(0,import_cross_spawn2.sync)("yarn",["--version"],{cwd,shell:!0});if(yarnVersionCommand.status!==0)return;let yarnVersion=yarnVersionCommand.output.toString().replace(/,/g,"").replace(/"/g,"");return/^1\.+/.test(yarnVersion)?1:2}var import_fs_extra5=require("fs-extra"),import_node_logger2=require("@storybook/node-logger"),import_path6=__toESM(require("path")),import_prompts=__toESM(require("prompts")),import_chalk3=__toESM(require("chalk"));var generateStorybookBabelConfigInCWD=async()=>{let target=process.cwd();return generateStorybookBabelConfig({target})},generateStorybookBabelConfig=async({target})=>{import_node_logger2.logger.info(`Generating the storybook default babel config at ${target}`);let fileName=".babelrc.json",location=import_path6.default.join(target,fileName);if(await(0,import_fs_extra5.pathExists)(location)){let{overwrite}=await(0,import_prompts.default)({type:"confirm",initial:!1,name:"overwrite",message:`${fileName} already exists. Would you like overwrite it?`});if(overwrite===!1){import_node_logger2.logger.warn("Cancelled, babel config file was NOT written to file-system.");return}}import_node_logger2.logger.info(`The config will contain ${import_chalk3.default.yellow("@babel/preset-env")} and you will be prompted for additional presets, if you wish to add them depending on your project needs.`);let{typescript,jsx}=await(0,import_prompts.default)([{type:"confirm",initial:!1,name:"typescript",message:"Do you want to add the TypeScript preset?"},{type:"confirm",initial:!1,name:"jsx",message:"Do you want to add the React preset?"}]),added=["@babel/preset-env"],presets=[["@babel/preset-env",{targets:{chrome:100}}]];typescript&&(added.push("@babel/preset-typescript"),presets.push("@babel/preset-typescript")),jsx&&(added.push("@babel/preset-react"),presets.push("@babel/preset-react"));let contents=JSON.stringify({sourceType:"unambiguous",presets,plugins:[]},null,2);import_node_logger2.logger.info(`Writing file to ${location}`),await(0,import_fs_extra5.writeFile)(location,contents);let{runInstall}=await(0,import_prompts.default)({type:"confirm",initial:!0,name:"runInstall",message:`Shall we install the required dependencies now? (${added.join(", ")})`});runInstall?(import_node_logger2.logger.info("Installing dependencies..."),JsPackageManagerFactory.getPackageManager().addDependencies({installAsDevDependencies:!0},added)):import_node_logger2.logger.info(`\u26A0\uFE0F Please remember to install the required dependencies yourself: (${added.join(", ")})`)};var defaultOptions={extraPackages:[],extraAddons:[],staticDir:void 0,addScripts:!0,addMainFile:!0,addComponents:!0,addBabel:!1,addESLint:!1,extraMain:void 0,framework:void 0,extensions:void 0,componentsDestinationPath:void 0,storybookConfigFolder:".storybook"},getBuilderDetails=builder=>{let map=versions_default;if(map[builder])return builder;let builderPackage=`@storybook/${builder}`;return map[builderPackage]?builderPackage:builder},getExternalFramework=framework=>externalFrameworks.find(exFramework=>{var _a,_b;return framework!==void 0&&(exFramework.name===framework||exFramework.packageName===framework||((_b=(_a=exFramework==null?void 0:exFramework.frameworks)==null?void 0:_a.some)==null?void 0:_b.call(_a,item=>item===framework)))}),getFrameworkPackage=(framework,renderer,builder)=>{let externalFramework=getExternalFramework(framework);return externalFramework===void 0?framework?`@storybook/${framework}`:`@storybook/${renderer}-${builder}`:externalFramework.frameworks!==void 0?externalFramework.frameworks.find(item=>item.match(new RegExp(`-${builder}`))):externalFramework.packageName},getRendererPackage=(framework,renderer)=>{let externalFramework=getExternalFramework(framework);return externalFramework!==void 0?externalFramework.renderer||externalFramework.packageName:`@storybook/${renderer}`},wrapForPnp=packageName=>`%%path.dirname(require.resolve(path.join('${packageName}', 'package.json')))%%`,getFrameworkDetails=(renderer,builder,pnp,framework)=>{let frameworkPackage=getFrameworkPackage(framework,renderer,builder),frameworkPackagePath=pnp?wrapForPnp(frameworkPackage):frameworkPackage,rendererPackage=getRendererPackage(framework,renderer),rendererPackagePath=pnp?wrapForPnp(rendererPackage):rendererPackage,builderPackage=getBuilderDetails(builder),builderPackagePath=pnp?wrapForPnp(builderPackage):builderPackage,isKnownFramework=!!getExternalFramework(frameworkPackage)||!!versions_default[frameworkPackage],isKnownRenderer=!!versions_default[rendererPackage];if(isKnownFramework)return{packages:[rendererPackage,frameworkPackage],framework:frameworkPackagePath,rendererId:renderer,type:"framework"};if(isKnownRenderer)return{packages:[rendererPackage,builderPackage],builder:builderPackagePath,renderer:rendererPackagePath,rendererId:renderer,type:"renderer"};throw new Error(`Could not find the framework (${frameworkPackage}) or renderer (${rendererPackage}) package`)},stripVersions=addons=>addons.map(addon=>getPackageDetails(addon)[0]),hasInteractiveStories=rendererId=>["react","angular","preact","svelte","vue","vue3","html","solid"].includes(rendererId),hasFrameworkTemplates=framework=>["angular","nextjs"].includes(framework);async function baseGenerator(packageManager,npmOptions,{language,builder="webpack5",pnp,frameworkPreviewParts},renderer,options=defaultOptions,framework){let{extraAddons:extraAddonPackages,extraPackages,staticDir,addScripts,addMainFile,addComponents,addBabel,addESLint,extraMain,extensions,storybookConfigFolder,componentsDestinationPath}={...defaultOptions,...options},{packages:frameworkPackages4,type,rendererId,framework:frameworkInclude,builder:builderInclude}=getFrameworkDetails(renderer,builder,pnp,framework),addons=["@storybook/addon-links","@storybook/addon-essentials",...stripVersions(extraAddonPackages)],addonPackages=["@storybook/addon-links","@storybook/addon-essentials","@storybook/blocks",...extraAddonPackages];hasInteractiveStories(rendererId)&&(addons.push("@storybook/addon-interactions"),addonPackages.push("@storybook/addon-interactions","@storybook/testing-library@^0.0.14-next.1"));let files=await import_fs_extra6.default.readdir(process.cwd()),packageJson=packageManager.retrievePackageJson(),installedDependencies=new Set(Object.keys({...packageJson.dependencies,...packageJson.devDependencies}));if(installedDependencies.has("react")||addonPackages.push("react"),installedDependencies.has("react-dom")||addonPackages.push("react-dom"),type==="renderer")throw new Error(import_ts_dedent2.dedent`
|
|
41
41
|
Sorry, for now, you can not do this, please use a framework such as @storybook/react-webpack5
|
|
42
42
|
|
|
@@ -387,7 +387,7 @@ To run your Storybook, type:
|
|
|
387
387
|
(window.__STORYBOOK_PREVIEW__ && window.__STORYBOOK_PREVIEW__.extract && window.__STORYBOOK_PREVIEW__.extract()) ||
|
|
388
388
|
(window.__STORYBOOK_STORY_STORE__ && window.__STORYBOOK_STORY_STORE__.extract && window.__STORYBOOK_STORY_STORE__.extract())
|
|
389
389
|
`);let data=JSON.parse(await page.evaluate(async()=>JSON.stringify(window.__STORYBOOK_STORY_STORE__.getStoriesJsonData(),null,2)));return setImmediate(()=>{browser.close()}),data},useLocation=async input=>{if(await(0,import_fs_extra12.stat)(import_path16.default.resolve(input)),input.match(/^http/))return[input,async()=>{}];let app=(0,import_express.default)();app.use(import_express.default.static(input));let port=await(0,import_get_port.default)();return new Promise(resolve=>{let server=app.listen(port,()=>{let result=`http://localhost:${port}/iframe.html`;import_node_logger3.logger.info(`connecting to: ${result}`),resolve([result,server.close.bind(server)])})})},usePuppeteerBrowser=async()=>{let args=["--no-sandbox ","--disable-setuid-sandbox"];try{return await import_puppeteer_core.default.launch({args,executablePath:process.env.SB_CHROMIUM_PATH})}catch{return import_node_logger3.logger.info("installing puppeteer..."),new Promise((resolve,reject)=>{require("child_process").exec(`node ${require.resolve(import_path16.default.join("puppeteer-core","install.js"))}`,error=>error?reject(error):resolve(import_puppeteer_core.default.launch({args})))})}};async function extract(input,targetPath){if(input&&targetPath){let[location,exit]=await useLocation(input),data=await read(location);await(0,import_fs_extra12.writeFile)(targetPath,JSON.stringify(data,null,2)),await exit()}else throw new Error("Extract: please specify a path where your built-storybook is (can be a public url) and a target directory")}var import_cross_spawn4=require("cross-spawn"),import_telemetry2=require("@storybook/telemetry"),import_semver25=__toESM(require("semver")),import_node_logger4=require("@storybook/node-logger"),import_core_server2=require("@storybook/core-server");var versionRegex=/(@storybook\/[^@]+)@(\S+)/,getStorybookVersion=line=>{if(line.startsWith("npm "))return null;let match=versionRegex.exec(line);return!match||!import_semver25.default.clean(match[2])?null:{package:match[1],version:match[2]}},excludeList=["@storybook/addon-bench","@storybook/addon-console","@storybook/addon-postcss","@storybook/babel-plugin-require-context-hook","@storybook/bench","@storybook/builder-vite","@storybook/csf","@storybook/design-system","@storybook/ember-cli-storybook","@storybook/eslint-config-storybook","@storybook/expect","@storybook/jest","@storybook/linter-config","@storybook/mdx1-csf","@storybook/mdx2-csf","@storybook/react-docgen-typescript-plugin","@storybook/storybook-deployer","@storybook/test-runner","@storybook/testing-library","@storybook/testing-react"],isCorePackage=pkg2=>pkg2.startsWith("@storybook/")&&!pkg2.startsWith("@storybook/preset-")&&!excludeList.includes(pkg2),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_logger4.logger.warn(`- ${formatPackage(pkg2)}`)),checkVersionConsistency=()=>{let storybookPackages=(0,import_cross_spawn4.sync)("npm",["ls"],{stdio:"pipe",shell:!0}).output.toString().split(`
|
|
390
|
-
`).map(getStorybookVersion).filter(Boolean).filter(pkg2=>isCorePackage(pkg2.package));if(!storybookPackages.length){import_node_logger4.logger.warn("No storybook core packages found."),import_node_logger4.logger.warn("'npm ls | grep storybook' can show if multiple versions are installed.");return}storybookPackages.sort((a,b)=>import_semver25.default.rcompare(a.version,b.version));let latestVersion=storybookPackages[0].version,outdated=storybookPackages.filter(pkg2=>pkg2.version!==latestVersion);outdated.length>0&&(import_node_logger4.logger.warn(`Found ${outdated.length} outdated packages (relative to '${formatPackage(storybookPackages[0])}')`),import_node_logger4.logger.warn("Please make sure your packages are updated to ensure a consistent experience."),warnPackages(outdated)),deprecatedPackages.forEach(({minVersion:minVersion2,url,deprecations})=>{if(import_semver25.default.gte(latestVersion,minVersion2)){let deprecated=storybookPackages.filter(pkg2=>deprecations.includes(pkg2.package));deprecated.length>0&&(import_node_logger4.logger.warn(`Found ${deprecated.length} deprecated packages since ${minVersion2}`),import_node_logger4.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&&import_semver25.default.satisfies(import_semver25.default.coerce(pkgVersion),specifier)?[...acc,...extra]:acc},[...flags]),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_telemetry2.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,packageManager.retrievePackageJson());let check=(0,import_cross_spawn4.sync)("npx",["npm-check-updates@latest","/storybook/",...flags],{stdio:"pipe",shell:!0}).output.toString();import_node_logger4.logger.info(check);let checkSb=(0,import_cross_spawn4.sync)("npx",["npm-check-updates@latest","sb",...flags],{stdio:"pipe",shell:!0}).output.toString();import_node_logger4.logger.info(checkSb),dryRun||(commandLog("Installing upgrades"),packageManager.installDependencies());let automigrationResults;if(skipCheck||(checkVersionConsistency(),automigrationResults=await automigrate({dryRun,yes,packageManager:pkgMgr,configDir})),!options.disableTelemetry){let afterVersion=await(0,import_telemetry2.getStorybookCoreVersion)(),{preCheckFailure,...results}=automigrationResults||{};(0,import_telemetry2.telemetry)("upgrade",{prerelease,tag,beforeVersion,afterVersion,...{automigrationResults:preCheckFailure?null:results,automigrationPreCheckFailure:preCheckFailure||null}})}};async function upgrade(options){await(0,import_core_server2.withTelemetry)("upgrade",{cliOptions:options},()=>doUpgrade(options))}var import_prompts7=__toESM(require("prompts")),import_path17=__toESM(require("path")),import_chalk28=__toESM(require("chalk")),import_boxen3=__toESM(require("boxen")),import_ts_dedent29=require("ts-dedent"),import_giget=require("giget"),import_fs_extra13=require("fs-extra");var baseTemplates={"cra/default-js":{name:"Create React App (Javascript)",script:"npx create-react-app .",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"cra/default-ts":{name:"Create React App (Typescript)",script:"npx create-react-app . --template typescript",skipTasks:["smoke-test"],expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"}},"nextjs/12-js":{name:"Next.js v12 (JavaScript)",script:'yarn create next-app {{beforeDir}} -e https://github.com/vercel/next.js/tree/next-12-3-2/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"},skipTasks:["e2e-tests-dev"]},"nextjs/default-js":{name:"Next.js (JavaScript)",script:"yarn create next-app {{beforeDir}} --javascript --eslint",expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"nextjs/default-ts":{name:"Next.js (TypeScript)",script:"yarn create next-app {{beforeDir}} --typescript --eslint",expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"react-vite/default-js":{name:"React Vite (JS)",script:"yarn create vite . --template react",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"react-vite/default-ts":{name:"React Vite (TS)",script:"yarn create vite . --template react-ts",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"}},"react-webpack/18-ts":{name:"React 18 Webpack5 (TS)",script:"yarn create webpack5-react .",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"react-webpack/17-ts":{name:"React 17 Webpack5 (TS)",script:'yarn create webpack5-react . --version-react="17" --version-react-dom="17"',expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"solid-vite/default-js":{name:"SolidJS Vite (JS)",script:"npx degit solidjs/templates/js .",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev"]},"solid-vite/default-ts":{name:"SolidJS Vite (TS)",script:"npx degit solidjs/templates/ts .",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev"]},"vue3-vite/default-js":{name:"Vue3 Vite (JS)",script:"yarn create vite . --template vue",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"vue3-vite/default-ts":{name:"Vue3 Vite (TS)",script:"yarn create vite . --template vue-ts",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"vue2-vite/2.7-js":{name:"Vue2 Vite (vue 2.7 JS)",script:"npx create-vue@2 {{beforeDir}} --default",expected:{framework:"@storybook/vue-vite",renderer:"@storybook/vue",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"html-webpack/default":{name:"HTML Webpack5",script:"yarn create webpack5-html .",expected:{framework:"@storybook/html-webpack5",renderer:"@storybook/html",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"html-vite/default-js":{name:"HTML Vite JS",script:'yarn create vite . --template vanilla && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"html-vite/default-ts":{name:"HTML Vite TS",script:'yarn create vite . --template vanilla-ts && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"svelte-vite/default-js":{name:"Svelte Vite (JS)",script:"yarn create vite . --template svelte",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"svelte-vite/default-ts":{name:"Svelte Vite (TS)",script:"yarn create vite . --template svelte-ts",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"angular-cli/default-ts":{name:"Angular CLI (latest)",script:"npx -p @angular/cli ng new angular-latest --directory . --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"]},"angular-cli/14-ts":{name:"Angular CLI (Version 14)",script:"npx -p @angular/cli@14 ng new angular-v14 --directory . --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"]},"svelte-kit/skeleton-js":{name:"Svelte Kit (JS)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory=. --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"svelte-kit/skeleton-ts":{name:"Svelte Kit (TS)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory=. --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"lit-vite/default-js":{name:"Lit Vite (JS)",script:"yarn create vite . --template lit",expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"lit-vite/default-ts":{name:"Lit Vite (TS)",script:"yarn create vite . --template lit-ts",expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"vue-cli/default-js":{name:"Vue-CLI (Default JS)",script:"npx -p @vue/cli vue create . --default --packageManager=yarn --force --merge",expected:{framework:"@storybook/vue3-webpack5",renderer:"@storybook/vue3",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev"]},"vue-cli/vue2-default-js":{name:"Vue-CLI (Vue2 JS)",script:'npx -p @vue/cli vue create . --default --packageManager=yarn --force --merge --preset="Default (Vue 2)"',expected:{framework:"@storybook/vue-webpack5",renderer:"@storybook/vue",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev"]},"preact-webpack5/default-js":{name:"Preact CLI (Default JS)",script:"npx preact-cli create default {{beforeDir}} --name preact-app --yarn --no-install",expected:{framework:"@storybook/preact-webpack5",renderer:"@storybook/preact",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"preact-webpack5/default-ts":{name:"Preact CLI (Default TS)",script:"npx preact-cli create typescript {{beforeDir}} --name preact-app --yarn --no-install",expected:{framework:"@storybook/preact-webpack5",renderer:"@storybook/preact",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"preact-vite/default-js":{name:"Preact Vite (JS)",script:"yarn create vite . --template preact",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"preact-vite/default-ts":{name:"Preact Vite (TS)",script:"yarn create vite . --template preact-ts",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"qwik-vite/default-ts":{name:"Qwik CLI (Default TS)",script:"yarn create qwik basic {{beforeDir}} --no-install",inDevelopment:!0,expected:{framework:"storybook-framework-qwik",renderer:"storybook-framework-qwik",builder:"storybook-framework-qwik"},skipTasks:["e2e-tests","e2e-tests-dev"]}},internalTemplates={"internal/ssv6-vite":{...baseTemplates["react-vite/default-ts"],name:"StoryStore v6 (react-vite/default-ts)",isInternal:!0,modifications:{mainConfig:{features:{storyStoreV7:!1,storyStoreV7MdxErrors:!1}}}},"internal/ssv6-webpack":{...baseTemplates["cra/default-ts"],name:"StoryStore v6 (cra/default-ts)",isInternal:!0,modifications:{mainConfig:{features:{storyStoreV7:!1,storyStoreV7MdxErrors:!1}}}}},allTemplates={...baseTemplates,...internalTemplates},ci=["cra/default-ts","react-vite/default-ts"],pr=[...ci,"angular-cli/default-ts","vue3-vite/default-ts","vue-cli/vue2-default-js","lit-vite/default-ts","svelte-vite/default-ts","svelte-kit/skeleton-ts","nextjs/default-ts"],merged=[...pr,"react-webpack/18-ts","react-webpack/17-ts","angular-cli/14-ts","preact-webpack5/default-ts","preact-vite/default-ts","html-webpack/default","html-vite/default-ts","internal/ssv6-vite","internal/ssv6-webpack"],daily=[...merged,"cra/default-js","react-vite/default-js","vue3-vite/default-js","vue2-vite/2.7-js","vue-cli/default-js","lit-vite/default-js","svelte-kit/skeleton-js","svelte-vite/default-js","nextjs/12-js","nextjs/default-js","qwik-vite/default-ts","preact-webpack5/default-js","preact-vite/default-js","html-vite/default-js"];var logger26=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&&(logger26.info((0,import_boxen3.default)(import_ts_dedent29.dedent`
|
|
390
|
+
`).map(getStorybookVersion).filter(Boolean).filter(pkg2=>isCorePackage(pkg2.package));if(!storybookPackages.length){import_node_logger4.logger.warn("No storybook core packages found."),import_node_logger4.logger.warn("'npm ls | grep storybook' can show if multiple versions are installed.");return}storybookPackages.sort((a,b)=>import_semver25.default.rcompare(a.version,b.version));let latestVersion=storybookPackages[0].version,outdated=storybookPackages.filter(pkg2=>pkg2.version!==latestVersion);outdated.length>0&&(import_node_logger4.logger.warn(`Found ${outdated.length} outdated packages (relative to '${formatPackage(storybookPackages[0])}')`),import_node_logger4.logger.warn("Please make sure your packages are updated to ensure a consistent experience."),warnPackages(outdated)),deprecatedPackages.forEach(({minVersion:minVersion2,url,deprecations})=>{if(import_semver25.default.gte(latestVersion,minVersion2)){let deprecated=storybookPackages.filter(pkg2=>deprecations.includes(pkg2.package));deprecated.length>0&&(import_node_logger4.logger.warn(`Found ${deprecated.length} deprecated packages since ${minVersion2}`),import_node_logger4.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&&import_semver25.default.satisfies(import_semver25.default.coerce(pkgVersion),specifier)?[...acc,...extra]:acc},[...flags]),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_telemetry2.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,packageManager.retrievePackageJson());let check=(0,import_cross_spawn4.sync)("npx",["npm-check-updates@latest","/storybook/",...flags],{stdio:"pipe",shell:!0}).output.toString();import_node_logger4.logger.info(check);let checkSb=(0,import_cross_spawn4.sync)("npx",["npm-check-updates@latest","sb",...flags],{stdio:"pipe",shell:!0}).output.toString();import_node_logger4.logger.info(checkSb),dryRun||(commandLog("Installing upgrades"),packageManager.installDependencies());let automigrationResults;if(skipCheck||(checkVersionConsistency(),automigrationResults=await automigrate({dryRun,yes,packageManager:pkgMgr,configDir})),!options.disableTelemetry){let afterVersion=await(0,import_telemetry2.getStorybookCoreVersion)(),{preCheckFailure,...results}=automigrationResults||{};(0,import_telemetry2.telemetry)("upgrade",{prerelease,tag,beforeVersion,afterVersion,...{automigrationResults:preCheckFailure?null:results,automigrationPreCheckFailure:preCheckFailure||null}})}};async function upgrade(options){await(0,import_core_server2.withTelemetry)("upgrade",{cliOptions:options},()=>doUpgrade(options))}var import_prompts7=__toESM(require("prompts")),import_path17=__toESM(require("path")),import_chalk28=__toESM(require("chalk")),import_boxen3=__toESM(require("boxen")),import_ts_dedent29=require("ts-dedent"),import_giget=require("giget"),import_fs_extra13=require("fs-extra");var baseTemplates={"cra/default-js":{name:"Create React App (Javascript)",script:"npx create-react-app .",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"cra/default-ts":{name:"Create React App (Typescript)",script:"npx create-react-app . --template typescript",skipTasks:["smoke-test"],expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"}},"nextjs/12-js":{name:"Next.js v12 (JavaScript)",script:'yarn create next-app {{beforeDir}} -e https://github.com/vercel/next.js/tree/next-12-3-2/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"},skipTasks:["e2e-tests-dev"]},"nextjs/default-js":{name:"Next.js (JavaScript)",script:"yarn create next-app {{beforeDir}} --javascript --eslint",expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"nextjs/default-ts":{name:"Next.js (TypeScript)",script:"yarn create next-app {{beforeDir}} --typescript --eslint",expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"react-vite/default-js":{name:"React Vite (JS)",script:"npm create vite@beta --yes . -- --template react",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"react-vite/default-ts":{name:"React Vite (TS)",script:"npm create vite@beta --yes . -- --template react-ts",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"}},"react-webpack/18-ts":{name:"React 18 Webpack5 (TS)",script:"yarn create webpack5-react .",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"react-webpack/17-ts":{name:"React 17 Webpack5 (TS)",script:'yarn create webpack5-react . --version-react="17" --version-react-dom="17"',expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"solid-vite/default-js":{name:"SolidJS Vite (JS)",script:"npx degit solidjs/templates/js .",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev"]},"solid-vite/default-ts":{name:"SolidJS Vite (TS)",script:"npx degit solidjs/templates/ts .",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev"]},"vue3-vite/default-js":{name:"Vue3 Vite (JS)",script:"npm create vite@beta --yes . -- --template vue",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"vue3-vite/default-ts":{name:"Vue3 Vite (TS)",script:"npm create vite@beta --yes . -- --template vue-ts",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"vue2-vite/2.7-js":{name:"Vue2 Vite (vue 2.7 JS)",script:"npx create-vue@2 {{beforeDir}} --default",expected:{framework:"@storybook/vue-vite",renderer:"@storybook/vue",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"html-webpack/default":{name:"HTML Webpack5",script:"yarn create webpack5-html .",expected:{framework:"@storybook/html-webpack5",renderer:"@storybook/html",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"html-vite/default-js":{name:"HTML Vite JS",script:'npm create vite@beta --yes . -- --template vanilla && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"html-vite/default-ts":{name:"HTML Vite TS",script:'npm create vite@beta --yes . -- --template vanilla-ts && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"svelte-vite/default-js":{name:"Svelte Vite (JS)",script:"npm create vite@beta --yes . -- --template svelte",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"svelte-vite/default-ts":{name:"Svelte Vite (TS)",script:"npm create vite@beta --yes . -- --template svelte-ts",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"angular-cli/default-ts":{name:"Angular CLI (latest)",script:"npx -p @angular/cli ng new angular-latest --directory . --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"]},"angular-cli/14-ts":{name:"Angular CLI (Version 14)",script:"npx -p @angular/cli@14 ng new angular-v14 --directory . --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"]},"svelte-kit/skeleton-js":{name:"Svelte Kit (JS)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory=. --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"svelte-kit/skeleton-ts":{name:"Svelte Kit (TS)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory=. --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"lit-vite/default-js":{name:"Lit Vite (JS)",script:"npm create vite@beta --yes . -- --template lit",expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"lit-vite/default-ts":{name:"Lit Vite (TS)",script:"npm create vite@beta --yes . -- --template lit-ts",expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"vue-cli/default-js":{name:"Vue-CLI (Default JS)",script:"npx -p @vue/cli vue create . --default --packageManager=yarn --force --merge",expected:{framework:"@storybook/vue3-webpack5",renderer:"@storybook/vue3",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev"]},"vue-cli/vue2-default-js":{name:"Vue-CLI (Vue2 JS)",script:'npx -p @vue/cli vue create . --default --packageManager=yarn --force --merge --preset="Default (Vue 2)"',expected:{framework:"@storybook/vue-webpack5",renderer:"@storybook/vue",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev"]},"preact-webpack5/default-js":{name:"Preact CLI (Default JS)",script:"npx preact-cli create default {{beforeDir}} --name preact-app --yarn --no-install",expected:{framework:"@storybook/preact-webpack5",renderer:"@storybook/preact",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"preact-webpack5/default-ts":{name:"Preact CLI (Default TS)",script:"npx preact-cli create typescript {{beforeDir}} --name preact-app --yarn --no-install",expected:{framework:"@storybook/preact-webpack5",renderer:"@storybook/preact",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"preact-vite/default-js":{name:"Preact Vite (JS)",script:"npm create vite@beta --yes . -- --template preact",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"preact-vite/default-ts":{name:"Preact Vite (TS)",script:"npm create vite@beta --yes . -- --template preact-ts",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"qwik-vite/default-ts":{name:"Qwik CLI (Default TS)",script:"yarn create qwik basic {{beforeDir}} --no-install",inDevelopment:!0,expected:{framework:"storybook-framework-qwik",renderer:"storybook-framework-qwik",builder:"storybook-framework-qwik"},skipTasks:["e2e-tests","e2e-tests-dev"]}},internalTemplates={"internal/ssv6-vite":{...baseTemplates["react-vite/default-ts"],name:"StoryStore v6 (react-vite/default-ts)",isInternal:!0,modifications:{mainConfig:{features:{storyStoreV7:!1,storyStoreV7MdxErrors:!1}}}},"internal/ssv6-webpack":{...baseTemplates["cra/default-ts"],name:"StoryStore v6 (cra/default-ts)",isInternal:!0,modifications:{mainConfig:{features:{storyStoreV7:!1,storyStoreV7MdxErrors:!1}}}}},allTemplates={...baseTemplates,...internalTemplates},ci=["cra/default-ts","react-vite/default-ts"],pr=[...ci,"angular-cli/default-ts","vue3-vite/default-ts","vue-cli/vue2-default-js","lit-vite/default-ts","svelte-vite/default-ts","svelte-kit/skeleton-ts","nextjs/default-ts"],merged=[...pr,"react-webpack/18-ts","react-webpack/17-ts","angular-cli/14-ts","preact-webpack5/default-ts","preact-vite/default-ts","html-webpack/default","html-vite/default-ts","internal/ssv6-vite","internal/ssv6-webpack"],daily=[...merged,"cra/default-js","react-vite/default-js","vue3-vite/default-js","vue2-vite/2.7-js","vue-cli/default-js","lit-vite/default-js","svelte-kit/skeleton-js","svelte-vite/default-js","nextjs/12-js","nextjs/default-js","qwik-vite/default-ts","preact-webpack5/default-js","preact-vite/default-js","html-vite/default-js"];var logger26=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&&(logger26.info((0,import_boxen3.default)(import_ts_dedent29.dedent`
|
|
391
391
|
🔎 You filtered out all templates. 🔍
|
|
392
392
|
|
|
393
393
|
After filtering all the templates with "${import_chalk28.default.yellow(filterValue)}", we found no results. Please try again with a different filter.
|
|
@@ -427,7 +427,7 @@ yarn storybook`):`Recreate your setup, then ${import_chalk28.default.yellow("run
|
|
|
427
427
|
`:import_ts_dedent30.dedent`
|
|
428
428
|
Broken build, fix the error above.
|
|
429
429
|
You may need to refresh the browser.
|
|
430
|
-
`),import_node_logger6.logger.line()}var dev=async cliOptions=>{process.env.NODE_ENV=process.env.NODE_ENV||"development";let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",configType:"DEVELOPMENT",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,cache:import_core_common9.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_common10=require("@storybook/core-common"),build=async cliOptions=>{let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",outputDir:cliOptions.outputDir||"./storybook-static",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,configType:"PRODUCTION",cache:import_core_common10.cache,packageJson:(0,import_read_pkg_up2.sync)({cwd:__dirname}).packageJson};await(0,import_core_server4.withTelemetry)("build",{cliOptions,presetOptions:options},()=>(0,import_core_server4.buildStaticStandalone)(options))};function parseList(str){return str.split(",").map(item=>item.trim()).filter(item=>item.length>0)}function getEnvConfig(program2,configEnv){Object.keys(configEnv).forEach(fieldName=>{let envVarName=configEnv[fieldName],envVarValue=process.env[envVarName];envVarValue&&(program2[fieldName]=envVarValue)})}var pkg=(0,import_read_pkg_up3.sync)({cwd:__dirname}).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(()=>{consoleLogger.log(import_chalk30.default.bold(`
|
|
430
|
+
`),import_node_logger6.logger.line()}var dev=async cliOptions=>{process.env.NODE_ENV=process.env.NODE_ENV||"development";let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",configType:"DEVELOPMENT",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,cache:import_core_common9.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_common10=require("@storybook/core-common"),build=async cliOptions=>{let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",outputDir:cliOptions.outputDir||"./storybook-static",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,configType:"PRODUCTION",cache:import_core_common10.cache,packageJson:(0,import_read_pkg_up2.sync)({cwd:__dirname}).packageJson};await(0,import_core_server4.withTelemetry)("build",{cliOptions,presetOptions:options},()=>(0,import_core_server4.buildStaticStandalone)(options))};function parseList(str){return str.split(",").map(item=>item.trim()).filter(item=>item.length>0)}function getEnvConfig(program2,configEnv){Object.keys(configEnv).forEach(fieldName=>{let envVarName=configEnv[fieldName],envVarValue=process.env[envVarName];envVarValue&&(program2[fieldName]=envVarValue)})}(0,import_telemetry3.addToGlobalContext)("cliVersion",versions_default.storybook);var pkg=(0,import_read_pkg_up3.sync)({cwd:__dirname}).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(()=>{consoleLogger.log(import_chalk30.default.bold(`
|
|
431
431
|
Environment Info:`)),import_envinfo.default.run({System:["OS","CPU"],Binaries:["Node","Yarn","npm"],Browsers:["Chrome","Edge","Firefox","Safari"],npmPackages:"@storybook/*",npmGlobalPackages:"@storybook/*"}).then(consoleLogger.log)});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,dryRun,list,rename,parser})=>{migrate(migration,{configDir,glob,dryRun,list,rename,parser,logger:consoleLogger}).catch(err=>{import_node_logger7.logger.error(err),process.exit(1)})});command("extract [location] [output]").description("extract stories.json from a built version").action((location="storybook-static",output=import_path19.default.join(location,"stories.json"))=>extract(location,output).catch(e=>{import_node_logger7.logger.error(e),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","main").option("--no-init","Whether to download a template without an initialized Storybook",!1).action((filterValue,options)=>sandbox({filterValue,...options}).catch(e=>{import_node_logger7.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_logger7.logger.error(e),process.exit(1)}));command("automigrate [fixId]").description("Check storybook for known problems 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_logger7.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("-s, --static-dir <dir-names>","Directory where to load static files from",parseList).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("--no-release-notes","Suppress automatic redirects to the release notes after upgrading",!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").action(async options=>{import_node_logger7.logger.setLevel(import_commander.default.loglevel),consoleLogger.log(import_chalk30.default.bold(`${pkg.name} v${pkg.version}`)+import_chalk30.default.reset(`
|
|
432
432
|
`)),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("-s, --static-dir <dir-names>","Directory where to load static files from",parseList).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").action(async options=>{process.env.NODE_ENV=process.env.NODE_ENV||"production",import_node_logger7.logger.setLevel(import_commander.default.loglevel),consoleLogger.log(import_chalk30.default.bold(`${pkg.name} v${pkg.version}
|
|
433
433
|
`)),getEnvConfig(options,{staticDir:"SBCONFIG_STATIC_DIR",outputDir:"SBCONFIG_OUTPUT_DIR",configDir:"SBCONFIG_CONFIG_DIR"}),await build({...options,packageJson:pkg}).catch(()=>process.exit(1))});import_commander.default.on("command:*",([invalidCmd])=>{consoleLogger.error(` Invalid command: %s.
|
package/dist/generate.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{HandledError,JsPackageManagerFactory,SUPPORTED_RENDERERS,__require,codeLog,commandLog,copyTemplate,copyTemplateFiles,externalFrameworks,getBabelDependencies,getBowerJson,getCliDir,getEnvConfig,getPackageDetails,getStorybookVersionSpecifier,installableProjectTypes,isNxProject,paddedLog,parseList,readFileAsJson,supportedTemplates,unsupportedTemplate,useNpmWarning,versions_default,writeFileAsJson}from"./chunk-
|
|
1
|
+
import{HandledError,JsPackageManagerFactory,SUPPORTED_RENDERERS,__require,codeLog,commandLog,copyTemplate,copyTemplateFiles,externalFrameworks,getBabelDependencies,getBowerJson,getCliDir,getEnvConfig,getPackageDetails,getStorybookVersionSpecifier,installableProjectTypes,isNxProject,paddedLog,parseList,readFileAsJson,supportedTemplates,unsupportedTemplate,useNpmWarning,versions_default,writeFileAsJson}from"./chunk-PUJBHUG2.mjs";import program from"commander";import path10 from"path";import chalk28 from"chalk";import envinfo from"envinfo";import leven from"leven";import{sync as readUpSync3}from"read-pkg-up";import{logger as logger27}from"@storybook/node-logger";import{addToGlobalContext}from"@storybook/telemetry";import chalk24 from"chalk";import prompts6 from"prompts";import{telemetry}from"@storybook/telemetry";import{withTelemetry}from"@storybook/core-server";import fs from"fs";import findUp from"find-up";import semver from"semver";import{logger}from"@storybook/node-logger";import{pathExistsSync}from"fs-extra";import{join}from"path";var detectWebpack=packageManager=>{try{let out="";if(packageManager.type==="npm")try{out=packageManager.executeCommand("npm",["ls","webpack"])}catch{out=packageManager.executeCommand("npm",["why","webpack"])}else out=packageManager.executeCommand("yarn",["why","webpack"]);if(out.includes("webpack@4")||out.includes("webpack@npm:4"))return 4;if(out.includes("webpack@5")||out.includes("webpack@npm:5"))return 5}catch{}return!1};var viteConfigFiles=["vite.config.ts","vite.config.js","vite.config.mjs"],hasDependency=(packageJson,name,matcher)=>{let version=packageJson.dependencies?.[name]||packageJson.devDependencies?.[name];return version&&typeof matcher=="function"?matcher(version):!!version},hasPeerDependency=(packageJson,name,matcher)=>{let version=packageJson.peerDependencies?.[name];return version&&typeof matcher=="function"?matcher(version):!!version},getFrameworkPreset=(packageJson,framework)=>{let matcher={dependencies:[!1],peerDependencies:[!1],files:[!1]},{preset,files,dependencies,peerDependencies,matcherFunction}=framework,dependencySearches=[];Array.isArray(dependencies)?dependencySearches=dependencies.map(name=>[name,void 0]):typeof dependencies=="object"&&(dependencySearches=Object.entries(dependencies)),dependencySearches.length>0&&(matcher.dependencies=dependencySearches.map(([name,matchFn])=>hasDependency(packageJson,name,matchFn)));let peerDependencySearches=[];return Array.isArray(peerDependencies)?peerDependencySearches=peerDependencies.map(name=>[name,void 0]):typeof peerDependencies=="object"&&(peerDependencySearches=Object.entries(peerDependencies)),peerDependencySearches.length>0&&(matcher.peerDependencies=peerDependencySearches.map(([name,matchFn])=>hasPeerDependency(packageJson,name,matchFn))),Array.isArray(files)&&files.length>0&&(matcher.files=files.map(name=>fs.existsSync(name))),matcherFunction(matcher)?preset:null};function detectFrameworkPreset(packageJson={}){let result=[...supportedTemplates,unsupportedTemplate].find(framework=>getFrameworkPreset(packageJson,framework)!==null);return result?result.preset:"UNDETECTED"}function detectBuilder(packageManager,projectType){if(findUp.sync(viteConfigFiles))return paddedLog("Detected Vite project. Setting builder to Vite"),"vite";if(detectWebpack(packageManager))return paddedLog("Detected webpack project. Setting builder to webpack"),"webpack5";switch(projectType){case"SVELTE":case"SVELTEKIT":case"VUE":case"VUE3":case"SFC_VUE":return"vite";default:return"webpack5"}}function isStorybookInstalled(dependencies,force){return dependencies?!!(!force&&dependencies.devDependencies&&SUPPORTED_RENDERERS.reduce((storybookPresent,framework)=>storybookPresent||!!dependencies.devDependencies[`@storybook/${framework}`],!1)):!1}function detectPnp(){return pathExistsSync(join(process.cwd(),".pnp.cjs"))}function detectLanguage(packageJson){let language="javascript";return!packageJson||fs.existsSync("jsconfig.json")||(hasDependency(packageJson,"typescript",version=>semver.gte(semver.coerce(version),"4.9.0"))&&(!hasDependency(packageJson,"prettier")||hasDependency(packageJson,"prettier",version=>semver.gte(semver.coerce(version),"2.8.0")))&&(!hasDependency(packageJson,"@babel/plugin-transform-typescript")||hasDependency(packageJson,"@babel/plugin-transform-typescript",version=>semver.gte(semver.coerce(version),"7.20.0")))&&(!hasDependency(packageJson,"@typescript-eslint/parser")||hasDependency(packageJson,"@typescript-eslint/parser",version=>semver.gte(semver.coerce(version),"5.44.0")))&&(!hasDependency(packageJson,"eslint-plugin-storybook")||hasDependency(packageJson,"eslint-plugin-storybook",version=>semver.gte(semver.coerce(version),"0.6.8")))?language="typescript-4-9":hasDependency(packageJson,"typescript",version=>semver.gte(semver.coerce(version),"3.8.0"))?language="typescript-3-8":hasDependency(packageJson,"typescript",version=>semver.lt(semver.coerce(version),"3.8.0"))&&logger.warn("Detected TypeScript < 3.8, populating with JavaScript examples")),language}function detect(packageJson,options={}){let bowerJson=getBowerJson();return!packageJson&&!bowerJson?"UNDETECTED":isNxProject(packageJson)?"NX":options.html?"HTML":detectFrameworkPreset(packageJson||bowerJson)}import{join as join2}from"path";import semver2 from"semver";import path3 from"path";import fse2 from"fs-extra";import{dedent as dedent2}from"ts-dedent";import fse from"fs-extra";import path from"path";import{dedent}from"ts-dedent";var logger2=console,sanitizeFramework=framework=>{let matches=framework.match(/(@storybook\/\w+(?:-\w+)*)|(storybook-(\w+(?:-\w+)*))/g);if(matches)return matches[0]};async function configureMain({addons,extensions=["js","jsx","ts","tsx"],storybookConfigFolder,language,...custom}){let srcPath=path.resolve(storybookConfigFolder,"../src"),prefix=await fse.pathExists(srcPath)?"../src":"../stories",config={stories:[`${prefix}/**/*.mdx`,`${prefix}/**/*.stories.@(${extensions.join("|")})`],addons,...custom},isTypescript=language==="typescript-4-9"||language==="typescript-3-8",mainConfigTemplate=dedent`<<import>>const config<<type>> = <<mainContents>>;
|
|
2
2
|
export default config;`,frameworkPackage=sanitizeFramework(custom.framework?.name);frameworkPackage||(mainConfigTemplate=mainConfigTemplate.replace("<<import>>","").replace("<<type>>",""),logger2.warn("Could not find framework package name"));let mainContents=JSON.stringify(config,null,2).replace(/['"]%%/g,"").replace(/%%['"]/g,""),imports=[];custom.framework?.name.includes("path.dirname(")&&imports.push("import path from 'path';"),isTypescript?imports.push(`import type { StorybookConfig } from '${frameworkPackage}';`):imports.push(`/** @type { import('${frameworkPackage}').StorybookConfig } */`);let mainJsContents=mainConfigTemplate.replace("<<import>>",`${imports.join(`
|
|
3
3
|
|
|
4
4
|
`)}
|
|
@@ -371,7 +371,7 @@ To run your Storybook, type:
|
|
|
371
371
|
(window.__STORYBOOK_PREVIEW__ && window.__STORYBOOK_PREVIEW__.extract && window.__STORYBOOK_PREVIEW__.extract()) ||
|
|
372
372
|
(window.__STORYBOOK_STORY_STORE__ && window.__STORYBOOK_STORY_STORE__.extract && window.__STORYBOOK_STORY_STORE__.extract())
|
|
373
373
|
`);let data=JSON.parse(await page.evaluate(async()=>JSON.stringify(window.__STORYBOOK_STORY_STORE__.getStoriesJsonData(),null,2)));return setImmediate(()=>{browser.close()}),data},useLocation=async input=>{if(await stat(path7.resolve(input)),input.match(/^http/))return[input,async()=>{}];let app=express();app.use(express.static(input));let port=await getPort();return new Promise(resolve=>{let server=app.listen(port,()=>{let result=`http://localhost:${port}/iframe.html`;logger22.info(`connecting to: ${result}`),resolve([result,server.close.bind(server)])})})},usePuppeteerBrowser=async()=>{let args=["--no-sandbox ","--disable-setuid-sandbox"];try{return await puppeteerCore.launch({args,executablePath:process.env.SB_CHROMIUM_PATH})}catch{return logger22.info("installing puppeteer..."),new Promise((resolve,reject)=>{__require("child_process").exec(`node ${__require.resolve(path7.join("puppeteer-core","install.js"))}`,error=>error?reject(error):resolve(puppeteerCore.launch({args})))})}};async function extract(input,targetPath){if(input&&targetPath){let[location,exit]=await useLocation(input),data=await read(location);await writeFile2(targetPath,JSON.stringify(data,null,2)),await exit()}else throw new Error("Extract: please specify a path where your built-storybook is (can be a public url) and a target directory")}import{sync as spawnSync2}from"cross-spawn";import{telemetry as telemetry2,getStorybookCoreVersion}from"@storybook/telemetry";import semver22 from"semver";import{logger as logger23}from"@storybook/node-logger";import{withTelemetry as withTelemetry2}from"@storybook/core-server";var versionRegex=/(@storybook\/[^@]+)@(\S+)/,getStorybookVersion=line=>{if(line.startsWith("npm "))return null;let match=versionRegex.exec(line);return!match||!semver22.clean(match[2])?null:{package:match[1],version:match[2]}},excludeList=["@storybook/addon-bench","@storybook/addon-console","@storybook/addon-postcss","@storybook/babel-plugin-require-context-hook","@storybook/bench","@storybook/builder-vite","@storybook/csf","@storybook/design-system","@storybook/ember-cli-storybook","@storybook/eslint-config-storybook","@storybook/expect","@storybook/jest","@storybook/linter-config","@storybook/mdx1-csf","@storybook/mdx2-csf","@storybook/react-docgen-typescript-plugin","@storybook/storybook-deployer","@storybook/test-runner","@storybook/testing-library","@storybook/testing-react"],isCorePackage=pkg2=>pkg2.startsWith("@storybook/")&&!pkg2.startsWith("@storybook/preset-")&&!excludeList.includes(pkg2),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=>logger23.warn(`- ${formatPackage(pkg2)}`)),checkVersionConsistency=()=>{let storybookPackages=spawnSync2("npm",["ls"],{stdio:"pipe",shell:!0}).output.toString().split(`
|
|
374
|
-
`).map(getStorybookVersion).filter(Boolean).filter(pkg2=>isCorePackage(pkg2.package));if(!storybookPackages.length){logger23.warn("No storybook core packages found."),logger23.warn("'npm ls | grep storybook' can show if multiple versions are installed.");return}storybookPackages.sort((a,b)=>semver22.rcompare(a.version,b.version));let latestVersion=storybookPackages[0].version,outdated=storybookPackages.filter(pkg2=>pkg2.version!==latestVersion);outdated.length>0&&(logger23.warn(`Found ${outdated.length} outdated packages (relative to '${formatPackage(storybookPackages[0])}')`),logger23.warn("Please make sure your packages are updated to ensure a consistent experience."),warnPackages(outdated)),deprecatedPackages.forEach(({minVersion,url,deprecations})=>{if(semver22.gte(latestVersion,minVersion)){let deprecated=storybookPackages.filter(pkg2=>deprecations.includes(pkg2.package));deprecated.length>0&&(logger23.warn(`Found ${deprecated.length} deprecated packages since ${minVersion}`),logger23.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&&semver22.satisfies(semver22.coerce(pkgVersion),specifier)?[...acc,...extra]:acc},[...flags]),doUpgrade=async({tag,prerelease,skipCheck,useNpm,packageManager:pkgMgr,dryRun,configDir,yes,...options})=>{useNpm&&(useNpmWarning(),pkgMgr="npm");let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),beforeVersion=await 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,packageManager.retrievePackageJson());let check=spawnSync2("npx",["npm-check-updates@latest","/storybook/",...flags],{stdio:"pipe",shell:!0}).output.toString();logger23.info(check);let checkSb=spawnSync2("npx",["npm-check-updates@latest","sb",...flags],{stdio:"pipe",shell:!0}).output.toString();logger23.info(checkSb),dryRun||(commandLog("Installing upgrades"),packageManager.installDependencies());let automigrationResults;if(skipCheck||(checkVersionConsistency(),automigrationResults=await automigrate({dryRun,yes,packageManager:pkgMgr,configDir})),!options.disableTelemetry){let afterVersion=await getStorybookCoreVersion(),{preCheckFailure,...results}=automigrationResults||{};telemetry2("upgrade",{prerelease,tag,beforeVersion,afterVersion,...{automigrationResults:preCheckFailure?null:results,automigrationPreCheckFailure:preCheckFailure||null}})}};async function upgrade(options){await withTelemetry2("upgrade",{cliOptions:options},()=>doUpgrade(options))}import prompts7 from"prompts";import path8 from"path";import chalk26 from"chalk";import boxen3 from"boxen";import{dedent as dedent29}from"ts-dedent";import{downloadTemplate}from"giget";import{existsSync,readdir}from"fs-extra";var baseTemplates={"cra/default-js":{name:"Create React App (Javascript)",script:"npx create-react-app .",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"cra/default-ts":{name:"Create React App (Typescript)",script:"npx create-react-app . --template typescript",skipTasks:["smoke-test"],expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"}},"nextjs/12-js":{name:"Next.js v12 (JavaScript)",script:'yarn create next-app {{beforeDir}} -e https://github.com/vercel/next.js/tree/next-12-3-2/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"},skipTasks:["e2e-tests-dev"]},"nextjs/default-js":{name:"Next.js (JavaScript)",script:"yarn create next-app {{beforeDir}} --javascript --eslint",expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"nextjs/default-ts":{name:"Next.js (TypeScript)",script:"yarn create next-app {{beforeDir}} --typescript --eslint",expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"react-vite/default-js":{name:"React Vite (JS)",script:"yarn create vite . --template react",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"react-vite/default-ts":{name:"React Vite (TS)",script:"yarn create vite . --template react-ts",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"}},"react-webpack/18-ts":{name:"React 18 Webpack5 (TS)",script:"yarn create webpack5-react .",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"react-webpack/17-ts":{name:"React 17 Webpack5 (TS)",script:'yarn create webpack5-react . --version-react="17" --version-react-dom="17"',expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"solid-vite/default-js":{name:"SolidJS Vite (JS)",script:"npx degit solidjs/templates/js .",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev"]},"solid-vite/default-ts":{name:"SolidJS Vite (TS)",script:"npx degit solidjs/templates/ts .",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev"]},"vue3-vite/default-js":{name:"Vue3 Vite (JS)",script:"yarn create vite . --template vue",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"vue3-vite/default-ts":{name:"Vue3 Vite (TS)",script:"yarn create vite . --template vue-ts",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"vue2-vite/2.7-js":{name:"Vue2 Vite (vue 2.7 JS)",script:"npx create-vue@2 {{beforeDir}} --default",expected:{framework:"@storybook/vue-vite",renderer:"@storybook/vue",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"html-webpack/default":{name:"HTML Webpack5",script:"yarn create webpack5-html .",expected:{framework:"@storybook/html-webpack5",renderer:"@storybook/html",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"html-vite/default-js":{name:"HTML Vite JS",script:'yarn create vite . --template vanilla && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"html-vite/default-ts":{name:"HTML Vite TS",script:'yarn create vite . --template vanilla-ts && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"svelte-vite/default-js":{name:"Svelte Vite (JS)",script:"yarn create vite . --template svelte",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"svelte-vite/default-ts":{name:"Svelte Vite (TS)",script:"yarn create vite . --template svelte-ts",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"angular-cli/default-ts":{name:"Angular CLI (latest)",script:"npx -p @angular/cli ng new angular-latest --directory . --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"]},"angular-cli/14-ts":{name:"Angular CLI (Version 14)",script:"npx -p @angular/cli@14 ng new angular-v14 --directory . --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"]},"svelte-kit/skeleton-js":{name:"Svelte Kit (JS)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory=. --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"svelte-kit/skeleton-ts":{name:"Svelte Kit (TS)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory=. --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"lit-vite/default-js":{name:"Lit Vite (JS)",script:"yarn create vite . --template lit",expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"lit-vite/default-ts":{name:"Lit Vite (TS)",script:"yarn create vite . --template lit-ts",expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"vue-cli/default-js":{name:"Vue-CLI (Default JS)",script:"npx -p @vue/cli vue create . --default --packageManager=yarn --force --merge",expected:{framework:"@storybook/vue3-webpack5",renderer:"@storybook/vue3",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev"]},"vue-cli/vue2-default-js":{name:"Vue-CLI (Vue2 JS)",script:'npx -p @vue/cli vue create . --default --packageManager=yarn --force --merge --preset="Default (Vue 2)"',expected:{framework:"@storybook/vue-webpack5",renderer:"@storybook/vue",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev"]},"preact-webpack5/default-js":{name:"Preact CLI (Default JS)",script:"npx preact-cli create default {{beforeDir}} --name preact-app --yarn --no-install",expected:{framework:"@storybook/preact-webpack5",renderer:"@storybook/preact",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"preact-webpack5/default-ts":{name:"Preact CLI (Default TS)",script:"npx preact-cli create typescript {{beforeDir}} --name preact-app --yarn --no-install",expected:{framework:"@storybook/preact-webpack5",renderer:"@storybook/preact",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"preact-vite/default-js":{name:"Preact Vite (JS)",script:"yarn create vite . --template preact",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"preact-vite/default-ts":{name:"Preact Vite (TS)",script:"yarn create vite . --template preact-ts",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"qwik-vite/default-ts":{name:"Qwik CLI (Default TS)",script:"yarn create qwik basic {{beforeDir}} --no-install",inDevelopment:!0,expected:{framework:"storybook-framework-qwik",renderer:"storybook-framework-qwik",builder:"storybook-framework-qwik"},skipTasks:["e2e-tests","e2e-tests-dev"]}},internalTemplates={"internal/ssv6-vite":{...baseTemplates["react-vite/default-ts"],name:"StoryStore v6 (react-vite/default-ts)",isInternal:!0,modifications:{mainConfig:{features:{storyStoreV7:!1,storyStoreV7MdxErrors:!1}}}},"internal/ssv6-webpack":{...baseTemplates["cra/default-ts"],name:"StoryStore v6 (cra/default-ts)",isInternal:!0,modifications:{mainConfig:{features:{storyStoreV7:!1,storyStoreV7MdxErrors:!1}}}}},allTemplates={...baseTemplates,...internalTemplates},ci=["cra/default-ts","react-vite/default-ts"],pr=[...ci,"angular-cli/default-ts","vue3-vite/default-ts","vue-cli/vue2-default-js","lit-vite/default-ts","svelte-vite/default-ts","svelte-kit/skeleton-ts","nextjs/default-ts"],merged=[...pr,"react-webpack/18-ts","react-webpack/17-ts","angular-cli/14-ts","preact-webpack5/default-ts","preact-vite/default-ts","html-webpack/default","html-vite/default-ts","internal/ssv6-vite","internal/ssv6-webpack"],daily=[...merged,"cra/default-js","react-vite/default-js","vue3-vite/default-js","vue2-vite/2.7-js","vue-cli/default-js","lit-vite/default-js","svelte-kit/skeleton-js","svelte-vite/default-js","nextjs/12-js","nextjs/default-js","qwik-vite/default-ts","preact-webpack5/default-js","preact-vite/default-js","html-vite/default-js"];var logger24=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&&(logger24.info(boxen3(dedent29`
|
|
374
|
+
`).map(getStorybookVersion).filter(Boolean).filter(pkg2=>isCorePackage(pkg2.package));if(!storybookPackages.length){logger23.warn("No storybook core packages found."),logger23.warn("'npm ls | grep storybook' can show if multiple versions are installed.");return}storybookPackages.sort((a,b)=>semver22.rcompare(a.version,b.version));let latestVersion=storybookPackages[0].version,outdated=storybookPackages.filter(pkg2=>pkg2.version!==latestVersion);outdated.length>0&&(logger23.warn(`Found ${outdated.length} outdated packages (relative to '${formatPackage(storybookPackages[0])}')`),logger23.warn("Please make sure your packages are updated to ensure a consistent experience."),warnPackages(outdated)),deprecatedPackages.forEach(({minVersion,url,deprecations})=>{if(semver22.gte(latestVersion,minVersion)){let deprecated=storybookPackages.filter(pkg2=>deprecations.includes(pkg2.package));deprecated.length>0&&(logger23.warn(`Found ${deprecated.length} deprecated packages since ${minVersion}`),logger23.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&&semver22.satisfies(semver22.coerce(pkgVersion),specifier)?[...acc,...extra]:acc},[...flags]),doUpgrade=async({tag,prerelease,skipCheck,useNpm,packageManager:pkgMgr,dryRun,configDir,yes,...options})=>{useNpm&&(useNpmWarning(),pkgMgr="npm");let packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),beforeVersion=await 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,packageManager.retrievePackageJson());let check=spawnSync2("npx",["npm-check-updates@latest","/storybook/",...flags],{stdio:"pipe",shell:!0}).output.toString();logger23.info(check);let checkSb=spawnSync2("npx",["npm-check-updates@latest","sb",...flags],{stdio:"pipe",shell:!0}).output.toString();logger23.info(checkSb),dryRun||(commandLog("Installing upgrades"),packageManager.installDependencies());let automigrationResults;if(skipCheck||(checkVersionConsistency(),automigrationResults=await automigrate({dryRun,yes,packageManager:pkgMgr,configDir})),!options.disableTelemetry){let afterVersion=await getStorybookCoreVersion(),{preCheckFailure,...results}=automigrationResults||{};telemetry2("upgrade",{prerelease,tag,beforeVersion,afterVersion,...{automigrationResults:preCheckFailure?null:results,automigrationPreCheckFailure:preCheckFailure||null}})}};async function upgrade(options){await withTelemetry2("upgrade",{cliOptions:options},()=>doUpgrade(options))}import prompts7 from"prompts";import path8 from"path";import chalk26 from"chalk";import boxen3 from"boxen";import{dedent as dedent29}from"ts-dedent";import{downloadTemplate}from"giget";import{existsSync,readdir}from"fs-extra";var baseTemplates={"cra/default-js":{name:"Create React App (Javascript)",script:"npx create-react-app .",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"cra/default-ts":{name:"Create React App (Typescript)",script:"npx create-react-app . --template typescript",skipTasks:["smoke-test"],expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"}},"nextjs/12-js":{name:"Next.js v12 (JavaScript)",script:'yarn create next-app {{beforeDir}} -e https://github.com/vercel/next.js/tree/next-12-3-2/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"},skipTasks:["e2e-tests-dev"]},"nextjs/default-js":{name:"Next.js (JavaScript)",script:"yarn create next-app {{beforeDir}} --javascript --eslint",expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"nextjs/default-ts":{name:"Next.js (TypeScript)",script:"yarn create next-app {{beforeDir}} --typescript --eslint",expected:{framework:"@storybook/nextjs",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"react-vite/default-js":{name:"React Vite (JS)",script:"npm create vite@beta --yes . -- --template react",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"react-vite/default-ts":{name:"React Vite (TS)",script:"npm create vite@beta --yes . -- --template react-ts",expected:{framework:"@storybook/react-vite",renderer:"@storybook/react",builder:"@storybook/builder-vite"}},"react-webpack/18-ts":{name:"React 18 Webpack5 (TS)",script:"yarn create webpack5-react .",expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"react-webpack/17-ts":{name:"React 17 Webpack5 (TS)",script:'yarn create webpack5-react . --version-react="17" --version-react-dom="17"',expected:{framework:"@storybook/react-webpack5",renderer:"@storybook/react",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"solid-vite/default-js":{name:"SolidJS Vite (JS)",script:"npx degit solidjs/templates/js .",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev"]},"solid-vite/default-ts":{name:"SolidJS Vite (TS)",script:"npx degit solidjs/templates/ts .",expected:{framework:"storybook-solidjs-vite",renderer:"storybook-solidjs",builder:"@storybook/builder-vite"},inDevelopment:!0,skipTasks:["e2e-tests-dev"]},"vue3-vite/default-js":{name:"Vue3 Vite (JS)",script:"npm create vite@beta --yes . -- --template vue",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"vue3-vite/default-ts":{name:"Vue3 Vite (TS)",script:"npm create vite@beta --yes . -- --template vue-ts",expected:{framework:"@storybook/vue3-vite",renderer:"@storybook/vue3",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"vue2-vite/2.7-js":{name:"Vue2 Vite (vue 2.7 JS)",script:"npx create-vue@2 {{beforeDir}} --default",expected:{framework:"@storybook/vue-vite",renderer:"@storybook/vue",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"html-webpack/default":{name:"HTML Webpack5",script:"yarn create webpack5-html .",expected:{framework:"@storybook/html-webpack5",renderer:"@storybook/html",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"html-vite/default-js":{name:"HTML Vite JS",script:'npm create vite@beta --yes . -- --template vanilla && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"html-vite/default-ts":{name:"HTML Vite TS",script:'npm create vite@beta --yes . -- --template vanilla-ts && echo "export default {}" > vite.config.js',expected:{framework:"@storybook/html-vite",renderer:"@storybook/html",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"svelte-vite/default-js":{name:"Svelte Vite (JS)",script:"npm create vite@beta --yes . -- --template svelte",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"svelte-vite/default-ts":{name:"Svelte Vite (TS)",script:"npm create vite@beta --yes . -- --template svelte-ts",expected:{framework:"@storybook/svelte-vite",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"angular-cli/default-ts":{name:"Angular CLI (latest)",script:"npx -p @angular/cli ng new angular-latest --directory . --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"]},"angular-cli/14-ts":{name:"Angular CLI (Version 14)",script:"npx -p @angular/cli@14 ng new angular-v14 --directory . --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"]},"svelte-kit/skeleton-js":{name:"Svelte Kit (JS)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-js --directory=. --template=skeleton --types=null --no-prettier --no-eslint --no-playwright --no-vitest",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"svelte-kit/skeleton-ts":{name:"Svelte Kit (TS)",script:"yarn create svelte-with-args --name=svelte-kit/skeleton-ts --directory=. --template=skeleton --types=typescript --no-prettier --no-eslint --no-playwright --no-vitest",expected:{framework:"@storybook/sveltekit",renderer:"@storybook/svelte",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"lit-vite/default-js":{name:"Lit Vite (JS)",script:"npm create vite@beta --yes . -- --template lit",expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"lit-vite/default-ts":{name:"Lit Vite (TS)",script:"npm create vite@beta --yes . -- --template lit-ts",expected:{framework:"@storybook/web-components-vite",renderer:"@storybook/web-components",builder:"@storybook/builder-vite"},skipTasks:["smoke-test","e2e-tests-dev"]},"vue-cli/default-js":{name:"Vue-CLI (Default JS)",script:"npx -p @vue/cli vue create . --default --packageManager=yarn --force --merge",expected:{framework:"@storybook/vue3-webpack5",renderer:"@storybook/vue3",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev"]},"vue-cli/vue2-default-js":{name:"Vue-CLI (Vue2 JS)",script:'npx -p @vue/cli vue create . --default --packageManager=yarn --force --merge --preset="Default (Vue 2)"',expected:{framework:"@storybook/vue-webpack5",renderer:"@storybook/vue",builder:"@storybook/builder-webpack5"},skipTasks:["smoke-test","e2e-tests-dev"]},"preact-webpack5/default-js":{name:"Preact CLI (Default JS)",script:"npx preact-cli create default {{beforeDir}} --name preact-app --yarn --no-install",expected:{framework:"@storybook/preact-webpack5",renderer:"@storybook/preact",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"preact-webpack5/default-ts":{name:"Preact CLI (Default TS)",script:"npx preact-cli create typescript {{beforeDir}} --name preact-app --yarn --no-install",expected:{framework:"@storybook/preact-webpack5",renderer:"@storybook/preact",builder:"@storybook/builder-webpack5"},skipTasks:["e2e-tests-dev"]},"preact-vite/default-js":{name:"Preact Vite (JS)",script:"npm create vite@beta --yes . -- --template preact",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"preact-vite/default-ts":{name:"Preact Vite (TS)",script:"npm create vite@beta --yes . -- --template preact-ts",expected:{framework:"@storybook/preact-vite",renderer:"@storybook/preact",builder:"@storybook/builder-vite"},skipTasks:["e2e-tests-dev"]},"qwik-vite/default-ts":{name:"Qwik CLI (Default TS)",script:"yarn create qwik basic {{beforeDir}} --no-install",inDevelopment:!0,expected:{framework:"storybook-framework-qwik",renderer:"storybook-framework-qwik",builder:"storybook-framework-qwik"},skipTasks:["e2e-tests","e2e-tests-dev"]}},internalTemplates={"internal/ssv6-vite":{...baseTemplates["react-vite/default-ts"],name:"StoryStore v6 (react-vite/default-ts)",isInternal:!0,modifications:{mainConfig:{features:{storyStoreV7:!1,storyStoreV7MdxErrors:!1}}}},"internal/ssv6-webpack":{...baseTemplates["cra/default-ts"],name:"StoryStore v6 (cra/default-ts)",isInternal:!0,modifications:{mainConfig:{features:{storyStoreV7:!1,storyStoreV7MdxErrors:!1}}}}},allTemplates={...baseTemplates,...internalTemplates},ci=["cra/default-ts","react-vite/default-ts"],pr=[...ci,"angular-cli/default-ts","vue3-vite/default-ts","vue-cli/vue2-default-js","lit-vite/default-ts","svelte-vite/default-ts","svelte-kit/skeleton-ts","nextjs/default-ts"],merged=[...pr,"react-webpack/18-ts","react-webpack/17-ts","angular-cli/14-ts","preact-webpack5/default-ts","preact-vite/default-ts","html-webpack/default","html-vite/default-ts","internal/ssv6-vite","internal/ssv6-webpack"],daily=[...merged,"cra/default-js","react-vite/default-js","vue3-vite/default-js","vue2-vite/2.7-js","vue-cli/default-js","lit-vite/default-js","svelte-kit/skeleton-js","svelte-vite/default-js","nextjs/12-js","nextjs/default-js","qwik-vite/default-ts","preact-webpack5/default-js","preact-vite/default-js","html-vite/default-js"];var logger24=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&&(logger24.info(boxen3(dedent29`
|
|
375
375
|
🔎 You filtered out all templates. 🔍
|
|
376
376
|
|
|
377
377
|
After filtering all the templates with "${chalk26.yellow(filterValue)}", we found no results. Please try again with a different filter.
|
|
@@ -411,7 +411,7 @@ yarn storybook`):`Recreate your setup, then ${chalk26.yellow("run npx storybook
|
|
|
411
411
|
`:dedent30`
|
|
412
412
|
Broken build, fix the error above.
|
|
413
413
|
You may need to refresh the browser.
|
|
414
|
-
`),logger26.line()}var dev=async cliOptions=>{process.env.NODE_ENV=process.env.NODE_ENV||"development";let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",configType:"DEVELOPMENT",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,cache,packageJson:readUpSync({cwd:__dirname}).packageJson};await withTelemetry3("dev",{cliOptions,presetOptions:options,printError},()=>buildDevStandalone(options))};import{sync as readUpSync2}from"read-pkg-up";import{buildStaticStandalone,withTelemetry as withTelemetry4}from"@storybook/core-server";import{cache as cache2}from"@storybook/core-common";var build=async cliOptions=>{let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",outputDir:cliOptions.outputDir||"./storybook-static",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,configType:"PRODUCTION",cache:cache2,packageJson:readUpSync2({cwd:__dirname}).packageJson};await withTelemetry4("build",{cliOptions,presetOptions:options},()=>buildStaticStandalone(options))};var pkg=readUpSync3({cwd:__dirname}).packageJson,consoleLogger=console,command=name=>program.command(name).option("--disable-telemetry","disable sending telemetry data",process.env.STORYBOOK_DISABLE_TELEMETRY&&process.env.STORYBOOK_DISABLE_TELEMETRY!=="false").option("--debug","Get more logs in debug mode",!1).option("--enable-crash-reports","enable sending crash reports to telemetry data");command("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(()=>{consoleLogger.log(chalk28.bold(`
|
|
414
|
+
`),logger26.line()}var dev=async cliOptions=>{process.env.NODE_ENV=process.env.NODE_ENV||"development";let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",configType:"DEVELOPMENT",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,cache,packageJson:readUpSync({cwd:__dirname}).packageJson};await withTelemetry3("dev",{cliOptions,presetOptions:options,printError},()=>buildDevStandalone(options))};import{sync as readUpSync2}from"read-pkg-up";import{buildStaticStandalone,withTelemetry as withTelemetry4}from"@storybook/core-server";import{cache as cache2}from"@storybook/core-common";var build=async cliOptions=>{let options={...cliOptions,configDir:cliOptions.configDir||"./.storybook",outputDir:cliOptions.outputDir||"./storybook-static",ignorePreview:!!cliOptions.previewUrl&&!cliOptions.forceBuildPreview,configType:"PRODUCTION",cache:cache2,packageJson:readUpSync2({cwd:__dirname}).packageJson};await withTelemetry4("build",{cliOptions,presetOptions:options},()=>buildStaticStandalone(options))};addToGlobalContext("cliVersion",versions_default.storybook);var pkg=readUpSync3({cwd:__dirname}).packageJson,consoleLogger=console,command=name=>program.command(name).option("--disable-telemetry","disable sending telemetry data",process.env.STORYBOOK_DISABLE_TELEMETRY&&process.env.STORYBOOK_DISABLE_TELEMETRY!=="false").option("--debug","Get more logs in debug mode",!1).option("--enable-crash-reports","enable sending crash reports to telemetry data");command("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(()=>{consoleLogger.log(chalk28.bold(`
|
|
415
415
|
Environment Info:`)),envinfo.run({System:["OS","CPU"],Binaries:["Node","Yarn","npm"],Browsers:["Chrome","Edge","Firefox","Safari"],npmPackages:"@storybook/*",npmGlobalPackages:"@storybook/*"}).then(consoleLogger.log)});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,dryRun,list,rename,parser})=>{migrate(migration,{configDir,glob,dryRun,list,rename,parser,logger:consoleLogger}).catch(err=>{logger27.error(err),process.exit(1)})});command("extract [location] [output]").description("extract stories.json from a built version").action((location="storybook-static",output=path10.join(location,"stories.json"))=>extract(location,output).catch(e=>{logger27.error(e),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","main").option("--no-init","Whether to download a template without an initialized Storybook",!1).action((filterValue,options)=>sandbox({filterValue,...options}).catch(e=>{logger27.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=>{logger27.error(e),process.exit(1)}));command("automigrate [fixId]").description("Check storybook for known problems 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=>{logger27.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("-s, --static-dir <dir-names>","Directory where to load static files from",parseList).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("--no-release-notes","Suppress automatic redirects to the release notes after upgrading",!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").action(async options=>{logger27.setLevel(program.loglevel),consoleLogger.log(chalk28.bold(`${pkg.name} v${pkg.version}`)+chalk28.reset(`
|
|
416
416
|
`)),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("-s, --static-dir <dir-names>","Directory where to load static files from",parseList).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").action(async options=>{process.env.NODE_ENV=process.env.NODE_ENV||"production",logger27.setLevel(program.loglevel),consoleLogger.log(chalk28.bold(`${pkg.name} v${pkg.version}
|
|
417
417
|
`)),getEnvConfig(options,{staticDir:"SBCONFIG_STATIC_DIR",outputDir:"SBCONFIG_OUTPUT_DIR",configDir:"SBCONFIG_CONFIG_DIR"}),await build({...options,packageJson:pkg}).catch(()=>process.exit(1))});program.on("command:*",([invalidCmd])=>{consoleLogger.error(` Invalid command: %s.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,102 @@
|
|
|
1
1
|
import { PackageJson } from '@storybook/types';
|
|
2
2
|
export { PackageJson } from '@storybook/types';
|
|
3
3
|
|
|
4
|
+
declare const _default: {
|
|
5
|
+
'@storybook/addon-a11y': string;
|
|
6
|
+
'@storybook/addon-actions': string;
|
|
7
|
+
'@storybook/addon-backgrounds': string;
|
|
8
|
+
'@storybook/addon-controls': string;
|
|
9
|
+
'@storybook/addon-docs': string;
|
|
10
|
+
'@storybook/addon-essentials': string;
|
|
11
|
+
'@storybook/addon-highlight': string;
|
|
12
|
+
'@storybook/addon-interactions': string;
|
|
13
|
+
'@storybook/addon-jest': string;
|
|
14
|
+
'@storybook/addon-links': string;
|
|
15
|
+
'@storybook/addon-mdx-gfm': string;
|
|
16
|
+
'@storybook/addon-measure': string;
|
|
17
|
+
'@storybook/addon-outline': string;
|
|
18
|
+
'@storybook/addon-storyshots': string;
|
|
19
|
+
'@storybook/addon-storyshots-puppeteer': string;
|
|
20
|
+
'@storybook/addon-storysource': string;
|
|
21
|
+
'@storybook/addon-toolbars': string;
|
|
22
|
+
'@storybook/addon-viewport': string;
|
|
23
|
+
'@storybook/addons': string;
|
|
24
|
+
'@storybook/angular': string;
|
|
25
|
+
'@storybook/api': string;
|
|
26
|
+
'@storybook/blocks': string;
|
|
27
|
+
'@storybook/builder-manager': string;
|
|
28
|
+
'@storybook/builder-vite': string;
|
|
29
|
+
'@storybook/builder-webpack5': string;
|
|
30
|
+
'@storybook/channel-postmessage': string;
|
|
31
|
+
'@storybook/channel-websocket': string;
|
|
32
|
+
'@storybook/channels': string;
|
|
33
|
+
'@storybook/cli': string;
|
|
34
|
+
'@storybook/client-api': string;
|
|
35
|
+
'@storybook/client-logger': string;
|
|
36
|
+
'@storybook/codemod': string;
|
|
37
|
+
'@storybook/components': string;
|
|
38
|
+
'@storybook/core-client': string;
|
|
39
|
+
'@storybook/core-common': string;
|
|
40
|
+
'@storybook/core-events': string;
|
|
41
|
+
'@storybook/core-server': string;
|
|
42
|
+
'@storybook/core-webpack': string;
|
|
43
|
+
'@storybook/csf-plugin': string;
|
|
44
|
+
'@storybook/csf-tools': string;
|
|
45
|
+
'@storybook/docs-tools': string;
|
|
46
|
+
'@storybook/ember': string;
|
|
47
|
+
'@storybook/html': string;
|
|
48
|
+
'@storybook/html-vite': string;
|
|
49
|
+
'@storybook/html-webpack5': string;
|
|
50
|
+
'@storybook/instrumenter': string;
|
|
51
|
+
'@storybook/manager': string;
|
|
52
|
+
'@storybook/manager-api': string;
|
|
53
|
+
'@storybook/nextjs': string;
|
|
54
|
+
'@storybook/node-logger': string;
|
|
55
|
+
'@storybook/postinstall': string;
|
|
56
|
+
'@storybook/preact': string;
|
|
57
|
+
'@storybook/preact-vite': string;
|
|
58
|
+
'@storybook/preact-webpack5': string;
|
|
59
|
+
'@storybook/preset-create-react-app': string;
|
|
60
|
+
'@storybook/preset-html-webpack': string;
|
|
61
|
+
'@storybook/preset-preact-webpack': string;
|
|
62
|
+
'@storybook/preset-react-webpack': string;
|
|
63
|
+
'@storybook/preset-server-webpack': string;
|
|
64
|
+
'@storybook/preset-svelte-webpack': string;
|
|
65
|
+
'@storybook/preset-vue-webpack': string;
|
|
66
|
+
'@storybook/preset-vue3-webpack': string;
|
|
67
|
+
'@storybook/preset-web-components-webpack': string;
|
|
68
|
+
'@storybook/preview': string;
|
|
69
|
+
'@storybook/preview-api': string;
|
|
70
|
+
'@storybook/preview-web': string;
|
|
71
|
+
'@storybook/react': string;
|
|
72
|
+
'@storybook/react-dom-shim': string;
|
|
73
|
+
'@storybook/react-vite': string;
|
|
74
|
+
'@storybook/react-webpack5': string;
|
|
75
|
+
'@storybook/router': string;
|
|
76
|
+
'@storybook/server': string;
|
|
77
|
+
'@storybook/server-webpack5': string;
|
|
78
|
+
'@storybook/source-loader': string;
|
|
79
|
+
'@storybook/store': string;
|
|
80
|
+
'@storybook/svelte': string;
|
|
81
|
+
'@storybook/svelte-vite': string;
|
|
82
|
+
'@storybook/svelte-webpack5': string;
|
|
83
|
+
'@storybook/sveltekit': string;
|
|
84
|
+
'@storybook/telemetry': string;
|
|
85
|
+
'@storybook/theming': string;
|
|
86
|
+
'@storybook/types': string;
|
|
87
|
+
'@storybook/vue': string;
|
|
88
|
+
'@storybook/vue-vite': string;
|
|
89
|
+
'@storybook/vue-webpack5': string;
|
|
90
|
+
'@storybook/vue3': string;
|
|
91
|
+
'@storybook/vue3-vite': string;
|
|
92
|
+
'@storybook/vue3-webpack5': string;
|
|
93
|
+
'@storybook/web-components': string;
|
|
94
|
+
'@storybook/web-components-vite': string;
|
|
95
|
+
'@storybook/web-components-webpack5': string;
|
|
96
|
+
sb: string;
|
|
97
|
+
storybook: string;
|
|
98
|
+
};
|
|
99
|
+
|
|
4
100
|
declare const useNpmWarning: () => void;
|
|
5
101
|
|
|
6
102
|
type PackageJsonWithDepsAndDevDeps = PackageJson & Required<Pick<PackageJson, 'dependencies' | 'devDependencies'>>;
|
|
@@ -134,7 +230,7 @@ declare abstract class JsPackageManager {
|
|
|
134
230
|
protected abstract runGetVersions<T extends boolean>(packageName: string, fetchAllVersions: T): Promise<T extends true ? string[] : string>;
|
|
135
231
|
abstract runPackageCommand(command: string, args: string[], cwd?: string): string;
|
|
136
232
|
abstract findInstallations(pattern?: string[]): InstallationMetadata | undefined;
|
|
137
|
-
executeCommand(command: string, args: string[], stdio?: 'pipe' | 'inherit', cwd?: string): string;
|
|
233
|
+
executeCommand(command: string, args: string[], stdio?: 'pipe' | 'inherit', cwd?: string, ignoreError?: boolean): string;
|
|
138
234
|
}
|
|
139
235
|
|
|
140
236
|
declare class JsPackageManagerFactory {
|
|
@@ -146,4 +242,4 @@ declare class JsPackageManagerFactory {
|
|
|
146
242
|
declare function parseList(str: string): string[];
|
|
147
243
|
declare function getEnvConfig(program: Record<string, any>, configEnv: Record<string, any>): void;
|
|
148
244
|
|
|
149
|
-
export { JsPackageManager, JsPackageManagerFactory, PackageJsonWithDepsAndDevDeps, PackageJsonWithMaybeDeps, PackageManagerName, getEnvConfig, getPackageDetails, parseList, useNpmWarning };
|
|
245
|
+
export { JsPackageManager, JsPackageManagerFactory, PackageJsonWithDepsAndDevDeps, PackageJsonWithMaybeDeps, PackageManagerName, getEnvConfig, getPackageDetails, parseList, useNpmWarning, _default as versions };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var src_exports={};__export(src_exports,{JsPackageManager:()=>JsPackageManager,JsPackageManagerFactory:()=>JsPackageManagerFactory,getEnvConfig:()=>getEnvConfig,getPackageDetails:()=>getPackageDetails,parseList:()=>parseList,useNpmWarning:()=>useNpmWarning});module.exports=__toCommonJS(src_exports);var
|
|
1
|
+
var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var src_exports={};__export(src_exports,{JsPackageManager:()=>JsPackageManager,JsPackageManagerFactory:()=>JsPackageManagerFactory,getEnvConfig:()=>getEnvConfig,getPackageDetails:()=>getPackageDetails,parseList:()=>parseList,useNpmWarning:()=>useNpmWarning,versions:()=>versions_default});module.exports=__toCommonJS(src_exports);var versions_default={"@storybook/addon-a11y":"7.1.0-alpha.2","@storybook/addon-actions":"7.1.0-alpha.2","@storybook/addon-backgrounds":"7.1.0-alpha.2","@storybook/addon-controls":"7.1.0-alpha.2","@storybook/addon-docs":"7.1.0-alpha.2","@storybook/addon-essentials":"7.1.0-alpha.2","@storybook/addon-highlight":"7.1.0-alpha.2","@storybook/addon-interactions":"7.1.0-alpha.2","@storybook/addon-jest":"7.1.0-alpha.2","@storybook/addon-links":"7.1.0-alpha.2","@storybook/addon-mdx-gfm":"7.1.0-alpha.2","@storybook/addon-measure":"7.1.0-alpha.2","@storybook/addon-outline":"7.1.0-alpha.2","@storybook/addon-storyshots":"7.1.0-alpha.2","@storybook/addon-storyshots-puppeteer":"7.1.0-alpha.2","@storybook/addon-storysource":"7.1.0-alpha.2","@storybook/addon-toolbars":"7.1.0-alpha.2","@storybook/addon-viewport":"7.1.0-alpha.2","@storybook/addons":"7.1.0-alpha.2","@storybook/angular":"7.1.0-alpha.2","@storybook/api":"7.1.0-alpha.2","@storybook/blocks":"7.1.0-alpha.2","@storybook/builder-manager":"7.1.0-alpha.2","@storybook/builder-vite":"7.1.0-alpha.2","@storybook/builder-webpack5":"7.1.0-alpha.2","@storybook/channel-postmessage":"7.1.0-alpha.2","@storybook/channel-websocket":"7.1.0-alpha.2","@storybook/channels":"7.1.0-alpha.2","@storybook/cli":"7.1.0-alpha.2","@storybook/client-api":"7.1.0-alpha.2","@storybook/client-logger":"7.1.0-alpha.2","@storybook/codemod":"7.1.0-alpha.2","@storybook/components":"7.1.0-alpha.2","@storybook/core-client":"7.1.0-alpha.2","@storybook/core-common":"7.1.0-alpha.2","@storybook/core-events":"7.1.0-alpha.2","@storybook/core-server":"7.1.0-alpha.2","@storybook/core-webpack":"7.1.0-alpha.2","@storybook/csf-plugin":"7.1.0-alpha.2","@storybook/csf-tools":"7.1.0-alpha.2","@storybook/docs-tools":"7.1.0-alpha.2","@storybook/ember":"7.1.0-alpha.2","@storybook/html":"7.1.0-alpha.2","@storybook/html-vite":"7.1.0-alpha.2","@storybook/html-webpack5":"7.1.0-alpha.2","@storybook/instrumenter":"7.1.0-alpha.2","@storybook/manager":"7.1.0-alpha.2","@storybook/manager-api":"7.1.0-alpha.2","@storybook/nextjs":"7.1.0-alpha.2","@storybook/node-logger":"7.1.0-alpha.2","@storybook/postinstall":"7.1.0-alpha.2","@storybook/preact":"7.1.0-alpha.2","@storybook/preact-vite":"7.1.0-alpha.2","@storybook/preact-webpack5":"7.1.0-alpha.2","@storybook/preset-create-react-app":"7.1.0-alpha.2","@storybook/preset-html-webpack":"7.1.0-alpha.2","@storybook/preset-preact-webpack":"7.1.0-alpha.2","@storybook/preset-react-webpack":"7.1.0-alpha.2","@storybook/preset-server-webpack":"7.1.0-alpha.2","@storybook/preset-svelte-webpack":"7.1.0-alpha.2","@storybook/preset-vue-webpack":"7.1.0-alpha.2","@storybook/preset-vue3-webpack":"7.1.0-alpha.2","@storybook/preset-web-components-webpack":"7.1.0-alpha.2","@storybook/preview":"7.1.0-alpha.2","@storybook/preview-api":"7.1.0-alpha.2","@storybook/preview-web":"7.1.0-alpha.2","@storybook/react":"7.1.0-alpha.2","@storybook/react-dom-shim":"7.1.0-alpha.2","@storybook/react-vite":"7.1.0-alpha.2","@storybook/react-webpack5":"7.1.0-alpha.2","@storybook/router":"7.1.0-alpha.2","@storybook/server":"7.1.0-alpha.2","@storybook/server-webpack5":"7.1.0-alpha.2","@storybook/source-loader":"7.1.0-alpha.2","@storybook/store":"7.1.0-alpha.2","@storybook/svelte":"7.1.0-alpha.2","@storybook/svelte-vite":"7.1.0-alpha.2","@storybook/svelte-webpack5":"7.1.0-alpha.2","@storybook/sveltekit":"7.1.0-alpha.2","@storybook/telemetry":"7.1.0-alpha.2","@storybook/theming":"7.1.0-alpha.2","@storybook/types":"7.1.0-alpha.2","@storybook/vue":"7.1.0-alpha.2","@storybook/vue-vite":"7.1.0-alpha.2","@storybook/vue-webpack5":"7.1.0-alpha.2","@storybook/vue3":"7.1.0-alpha.2","@storybook/vue3-vite":"7.1.0-alpha.2","@storybook/vue3-webpack5":"7.1.0-alpha.2","@storybook/web-components":"7.1.0-alpha.2","@storybook/web-components-vite":"7.1.0-alpha.2","@storybook/web-components-webpack5":"7.1.0-alpha.2",sb:"7.1.0-alpha.2",storybook:"7.1.0-alpha.2"};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_spawn2=require("cross-spawn"),import_find_up=require("find-up");var import_sort=__toESM(require("semver/functions/sort")),import_os=require("os");var import_chalk2=__toESM(require("chalk")),import_semver3=require("semver"),import_cross_spawn=require("cross-spawn"),import_path=__toESM(require("path")),import_fs=__toESM(require("fs"));var import_fs_extra=__toESM(require("fs-extra")),import_chalk=__toESM(require("chalk")),import_semver2=require("semver"),import_strip_json_comments=__toESM(require("strip-json-comments"));var import_get_tarball=__toESM(require("@ndelangen/get-tarball")),import_get_npm_tarball_url=__toESM(require("get-npm-tarball-url")),tempy=__toESM(require("tempy"));var import_semver=require("semver");var ProjectType=(ProjectType2=>(ProjectType2.UNDETECTED="UNDETECTED",ProjectType2.UNSUPPORTED="UNSUPPORTED",ProjectType2.REACT_SCRIPTS="REACT_SCRIPTS",ProjectType2.REACT="REACT",ProjectType2.REACT_NATIVE="REACT_NATIVE",ProjectType2.REACT_PROJECT="REACT_PROJECT",ProjectType2.WEBPACK_REACT="WEBPACK_REACT",ProjectType2.NEXTJS="NEXTJS",ProjectType2.VUE="VUE",ProjectType2.VUE3="VUE3",ProjectType2.SFC_VUE="SFC_VUE",ProjectType2.ANGULAR="ANGULAR",ProjectType2.EMBER="EMBER",ProjectType2.WEB_COMPONENTS="WEB_COMPONENTS",ProjectType2.MITHRIL="MITHRIL",ProjectType2.MARIONETTE="MARIONETTE",ProjectType2.MARKO="MARKO",ProjectType2.HTML="HTML",ProjectType2.QWIK="QWIK",ProjectType2.RIOT="RIOT",ProjectType2.PREACT="PREACT",ProjectType2.SVELTE="SVELTE",ProjectType2.SVELTEKIT="SVELTEKIT",ProjectType2.RAX="RAX",ProjectType2.AURELIA="AURELIA",ProjectType2.SERVER="SERVER",ProjectType2.NX="NX",ProjectType2.SOLID="SOLID",ProjectType2))(ProjectType||{});var notInstallableProjectTypes=["UNDETECTED","UNSUPPORTED"],installableProjectTypes=Object.values(ProjectType).filter(type=>!notInstallableProjectTypes.includes(type)).map(type=>type.toLowerCase());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")}
|
|
2
2
|
`),logger.error(`
|
|
3
3
|
${import_chalk.default.red(errorMessage)}`),!errorInfo)return;let newErrorInfo=errorInfo.split(`
|
|
4
4
|
`).map(line=>` ${import_chalk.default.dim(line)}`).join(`
|
|
@@ -7,5 +7,5 @@ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropD
|
|
|
7
7
|
`)});var HandledError=class extends Error{constructor(messageOrError){super(typeof messageOrError=="string"?messageOrError:messageOrError.message);this.handled=!0;typeof messageOrError!="string"&&(this.cause=messageOrError)}};var logger2=console;function getPackageDetails(pkg){let idx=pkg.lastIndexOf("@");if(idx<=0)return[pkg,void 0];let packageName=pkg.slice(0,idx),packageVersion=pkg.slice(idx+1);return[packageName,packageVersion]}var JsPackageManager=class{setRegistryURL(url){url?this.executeCommand("npm",["config","set","registry",url]):this.executeCommand("npm",["config","delete","registry"])}getRegistryURL(){let url=this.executeCommand("npm",["config","get","registry"]).trim();return url==="undefined"?void 0:url}constructor(options){this.cwd=options==null?void 0:options.cwd}installDependencies(){let done=commandLog("Preparing to install dependencies");done(),logger2.log(),logger2.log(),done=commandLog("Installing dependencies");try{this.runInstall()}catch(e){throw done("An error occurred while installing dependencies."),new HandledError(e)}done()}packageJsonPath(){return this.cwd?import_path.default.resolve(this.cwd,"package.json"):import_path.default.resolve("package.json")}readPackageJson(){let packageJsonPath=this.packageJsonPath();if(!import_fs.default.existsSync(packageJsonPath))throw new Error(`Could not read package.json file at ${packageJsonPath}`);let jsonContent=import_fs.default.readFileSync(packageJsonPath,"utf8");return JSON.parse(jsonContent)}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)}
|
|
8
8
|
`;import_fs.default.writeFileSync(this.packageJsonPath(),content,"utf8")}retrievePackageJson(){let packageJson;try{packageJson=this.readPackageJson()}catch{this.initPackageJson(),packageJson=this.readPackageJson()}return{...packageJson,dependencies:{...packageJson.dependencies},devDependencies:{...packageJson.devDependencies},peerDependencies:{...packageJson.peerDependencies}}}getAllDependencies(){let{dependencies,devDependencies,peerDependencies}=this.retrievePackageJson();return{...dependencies,...devDependencies,...peerDependencies}}addDependencies(options,dependencies){let{skipInstall}=options;if(skipInstall){let{packageJson}=options,dependenciesMap=dependencies.reduce((acc,dep)=>{let[packageName,packageVersion]=getPackageDetails(dep);return{...acc,[packageName]:packageVersion}},{});options.installAsDevDependencies?packageJson.devDependencies={...packageJson.devDependencies,...dependenciesMap}:packageJson.dependencies={...packageJson.dependencies,...dependenciesMap},this.writePackageJson(packageJson)}else try{this.runAddDeps(dependencies,options.installAsDevDependencies)}catch(e){throw logger2.error("An error occurred while installing dependencies."),logger2.log(e.message),new HandledError(e)}}removeDependencies(options,dependencies){let{skipInstall}=options;if(skipInstall){let{packageJson}=options;dependencies.forEach(dep=>{packageJson.devDependencies&&delete packageJson.devDependencies[dep],packageJson.dependencies&&delete packageJson.dependencies[dep]}),this.writePackageJson(packageJson)}else try{this.runRemoveDeps(dependencies)}catch(e){throw logger2.error("An error occurred while removing dependencies."),logger2.log(e.message),new HandledError(e)}}getVersionedPackages(packages){return Promise.all(packages.map(async pkg=>{let[packageName,packageVersion]=getPackageDetails(pkg);return`${packageName}@${await this.getVersion(packageName,packageVersion)}`}))}getVersions(...packageNames){return Promise.all(packageNames.map(packageName=>this.getVersion(packageName)))}async getVersion(packageName,constraint){let current;/(@storybook|^sb$|^storybook$)/.test(packageName)&&(current=versions_default[packageName]);let latest;try{latest=await this.latestVersion(packageName,constraint)}catch(e){if(current)return logger2.warn(`
|
|
9
9
|
${import_chalk2.default.yellow(e.message)}`),current;throw logger2.error(`
|
|
10
|
-
${import_chalk2.default.red(e.message)}`),new HandledError(e)}return`^${current&&(!constraint||(0,import_semver3.satisfies)(current,constraint))&&(0,import_semver3.gt)(current,latest)?current:latest}`}async latestVersion(packageName,constraint){return constraint?(await this.runGetVersions(packageName,!0)).reverse().find(version=>(0,import_semver3.satisfies)(version,constraint)):this.runGetVersions(packageName,!1)}addStorybookCommandInScripts(options){let storybookCmd=`storybook dev -p ${(options==null?void 0:options.port)??6006}`,buildStorybookCmd="storybook build",preCommand=options!=null&&options.preCommand?this.getRunCommand(options.preCommand):void 0;this.addScripts({storybook:[preCommand,storybookCmd].filter(Boolean).join(" && "),"build-storybook":[preCommand,buildStorybookCmd].filter(Boolean).join(" && ")})}addESLintConfig(){var _a;let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,eslintConfig:{...packageJson.eslintConfig,overrides:[...((_a=packageJson.eslintConfig)==null?void 0:_a.overrides)||[],{files:["**/*.stories.*"],rules:{"import/no-anonymous-default-export":"off"}}]}})}addScripts(scripts){let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,scripts:{...packageJson.scripts,...scripts}})}addPackageResolutions(versions){let packageJson=this.retrievePackageJson(),resolutions=this.getResolutions(packageJson,versions);this.writePackageJson({...packageJson,...resolutions})}executeCommand(command,args,stdio,cwd){let commandResult=(0,import_cross_spawn.sync)(command,args,{cwd:cwd??this.cwd,stdio:stdio??"pipe",encoding:"utf-8",shell:!0});if(commandResult.status!==0)throw new Error(commandResult.stderr??"");return commandResult.stdout??""}};var NPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="npm"}initPackageJson(){return this.executeCommand("npm",["init","-y"])}getRunStorybookCommand(){return"npm run storybook"}getRunCommand(command){return`npm run ${command}`}getNpmVersion(){return this.executeCommand("npm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}runPackageCommand(command,args,cwd){return this.executeCommand("npm",["exec","--",command,...args],void 0,cwd)}findInstallations(){let pipeToNull=(0,import_os.platform)()==="win32"?"2>NUL":"2>/dev/null",commandResult=this.executeCommand("npm",["ls","--json","--depth=99",pipeToNull]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("npm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("npm",["install",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("npm",["uninstall",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("npm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using npm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},recurse=([name,packageInfo])=>{var _a;if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=(0,import_sort.default)([...existingVersions[name]||[],value.version]),existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(input.dependencies).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"npm ls --depth=1"}}};var import_fs_extra2=require("fs-extra");var PNPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="pnpm"}detectWorkspaceRoot(){let pnpmWorkspaceYaml=`${process.cwd()}/pnpm-workspace.yaml`;return(0,import_fs_extra2.pathExistsSync)(pnpmWorkspaceYaml)}initPackageJson(){return this.executeCommand("pnpm",["init","-y"])}getRunStorybookCommand(){return"pnpm run storybook"}getRunCommand(command){return`pnpm run ${command}`}getPnpmVersion(){return this.executeCommand("pnpm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[],this.detectWorkspaceRoot()&&this.installArgs.push("-w")),this.installArgs}runPackageCommand(command,args,cwd){return this.executeCommand("pnpm",["exec",command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("pnpm",["list",pattern.map(p=>`"${p}"`).join(" "),"--json","--depth=99"]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("pnpm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("pnpm",["add",...args,...this.getInstallArgs()],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("pnpm",["remove",...args,...this.getInstallArgs()],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("pnpm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using pnpm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},items=input.reduce((curr,item)=>{let{devDependencies,dependencies,peerDependencies}=item,allDependencies={...devDependencies,...dependencies,...peerDependencies};return Object.assign(curr,allDependencies)},{}),recurse=([name,packageInfo])=>{var _a;if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(items).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"pnpm list --depth=1"}}};var parsePackageData=(packageName="")=>{let[first,second,third]=packageName.trim().split("@"),version=(third||second).replace("npm:","");return{name:third?`@${second}`:first,value:{version,location:""}}};var Yarn2Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn2"}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}initPackageJson(){return this.executeCommand("yarn",["init"])}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command){return`yarn ${command}`}runPackageCommand(command,args,cwd){return this.executeCommand("yarn",[command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("yarn",["info","--name-only","--recursive",pattern.map(p=>`"${p}"`).join(" "),`"${pattern}"`]);try{return this.mapDependencies(commandResult)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}runInstall(){this.executeCommand("yarn",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("yarn",["add",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("yarn",["remove",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let field=fetchAllVersions?"versions":"version",args=["--fields",field,"--json"],commandResult=this.executeCommand("yarn",["npm","info",packageName,...args]);try{return JSON.parse(commandResult)[field]}catch{throw new Error(`Unable to find versions of ${packageName} using yarn 2`)}}mapDependencies(input){let lines=input.split(`
|
|
11
|
-
`),acc={},existingVersions={},duplicatedDependencies={};return lines.forEach(packageName=>{var _a;if(!packageName||!packageName.includes("storybook"))return;let{name,value}=parsePackageData(packageName.replaceAll('"',""));(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name]))}),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}};var Yarn1Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn1"}getInstallArgs(){return this.installArgs||(this.installArgs=["--ignore-workspace-root-check"]),this.installArgs}initPackageJson(){return this.executeCommand("yarn",["init","-y"])}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command){return`yarn ${command}`}runPackageCommand(command,args,cwd){return this.executeCommand("yarn",[command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("yarn",["list","--pattern",pattern.map(p=>`"${p}"`).join(" "),"--recursive","--json"]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}runInstall(){this.executeCommand("yarn",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("yarn",["add",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("yarn",["remove",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("yarn",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.type==="inspect")return parsedOutput.data;throw new Error(`Unable to find versions of ${packageName} using yarn`)}catch{throw new Error(`Unable to find versions of ${packageName} using yarn`)}}mapDependencies(input){if(input.type==="tree"){let{trees}=input.data,acc={},existingVersions={},duplicatedDependencies={},recurse=tree=>{var _a;let{children}=tree,{name,value}=parsePackageData(tree.name);!name||!name.includes("storybook")||((_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),children.forEach(recurse))};return trees.forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}throw new Error("Something went wrong while parsing yarn output")}};var NPM_LOCKFILE="package-lock.json",PNPM_LOCKFILE="pnpm-lock.yaml",YARN_LOCKFILE="yarn.lock",JsPackageManagerFactory=class{static getPackageManager({force}={},cwd){if(force==="npm")return new NPMProxy({cwd});if(force==="pnpm")return new PNPMProxy({cwd});if(force==="yarn1")return new Yarn1Proxy({cwd});if(force==="yarn2")return new Yarn2Proxy({cwd});let yarnVersion=getYarnVersion(cwd),closestLockfilePath=(0,import_find_up.sync)([YARN_LOCKFILE,PNPM_LOCKFILE,NPM_LOCKFILE],{cwd}),closestLockfile=closestLockfilePath&&import_node_path.default.basename(closestLockfilePath),hasNPMCommand=hasNPM(cwd),hasPNPMCommand=hasPNPM(cwd);if(yarnVersion&&(closestLockfile===YARN_LOCKFILE||!hasNPMCommand&&!hasPNPMCommand))return yarnVersion===1?new Yarn1Proxy({cwd}):new Yarn2Proxy({cwd});if(hasPNPMCommand&&closestLockfile===PNPM_LOCKFILE)return new PNPMProxy({cwd});if(hasNPMCommand)return new NPMProxy({cwd});throw new Error("Unable to find a usable package manager within NPM, PNPM, Yarn and Yarn 2")}};function hasNPM(cwd){return(0,import_cross_spawn2.sync)("npm",["--version"],{cwd,shell:!0}).status===0}function hasPNPM(cwd){return(0,import_cross_spawn2.sync)("pnpm",["--version"],{cwd,shell:!0}).status===0}function getYarnVersion(cwd){let yarnVersionCommand=(0,import_cross_spawn2.sync)("yarn",["--version"],{cwd,shell:!0});if(yarnVersionCommand.status!==0)return;let yarnVersion=yarnVersionCommand.output.toString().replace(/,/g,"").replace(/"/g,"");return/^1\.+/.test(yarnVersion)?1:2}function parseList(str){return str.split(",").map(item=>item.trim()).filter(item=>item.length>0)}function getEnvConfig(program,configEnv){Object.keys(configEnv).forEach(fieldName=>{let envVarName=configEnv[fieldName],envVarValue=process.env[envVarName];envVarValue&&(program[fieldName]=envVarValue)})}0&&(module.exports={JsPackageManager,JsPackageManagerFactory,getEnvConfig,getPackageDetails,parseList,useNpmWarning});
|
|
10
|
+
${import_chalk2.default.red(e.message)}`),new HandledError(e)}return`^${current&&(!constraint||(0,import_semver3.satisfies)(current,constraint))&&(0,import_semver3.gt)(current,latest)?current:latest}`}async latestVersion(packageName,constraint){return constraint?(await this.runGetVersions(packageName,!0)).reverse().find(version=>(0,import_semver3.satisfies)(version,constraint)):this.runGetVersions(packageName,!1)}addStorybookCommandInScripts(options){let storybookCmd=`storybook dev -p ${(options==null?void 0:options.port)??6006}`,buildStorybookCmd="storybook build",preCommand=options!=null&&options.preCommand?this.getRunCommand(options.preCommand):void 0;this.addScripts({storybook:[preCommand,storybookCmd].filter(Boolean).join(" && "),"build-storybook":[preCommand,buildStorybookCmd].filter(Boolean).join(" && ")})}addESLintConfig(){var _a;let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,eslintConfig:{...packageJson.eslintConfig,overrides:[...((_a=packageJson.eslintConfig)==null?void 0:_a.overrides)||[],{files:["**/*.stories.*"],rules:{"import/no-anonymous-default-export":"off"}}]}})}addScripts(scripts){let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,scripts:{...packageJson.scripts,...scripts}})}addPackageResolutions(versions){let packageJson=this.retrievePackageJson(),resolutions=this.getResolutions(packageJson,versions);this.writePackageJson({...packageJson,...resolutions})}executeCommand(command,args,stdio,cwd,ignoreError){let commandResult=(0,import_cross_spawn.sync)(command,args,{cwd:cwd??this.cwd,stdio:stdio??"pipe",encoding:"utf-8",shell:!0});if(commandResult.status!==0&&ignoreError!==!0)throw new Error(commandResult.stderr??"");return commandResult.stdout??""}};var NPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="npm"}initPackageJson(){return this.executeCommand("npm",["init","-y"])}getRunStorybookCommand(){return"npm run storybook"}getRunCommand(command){return`npm run ${command}`}getNpmVersion(){return this.executeCommand("npm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}runPackageCommand(command,args,cwd){return this.executeCommand("npm",["exec","--",command,...args],void 0,cwd)}findInstallations(){let pipeToNull=(0,import_os.platform)()==="win32"?"2>NUL":"2>/dev/null",commandResult=this.executeCommand("npm",["ls","--json","--depth=99",pipeToNull],void 0,void 0,!0);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("npm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("npm",["install",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("npm",["uninstall",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("npm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using npm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},recurse=([name,packageInfo])=>{var _a;if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=(0,import_sort.default)([...existingVersions[name]||[],value.version]),existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(input.dependencies).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"npm ls --depth=1"}}};var import_fs_extra2=require("fs-extra");var PNPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="pnpm"}detectWorkspaceRoot(){let pnpmWorkspaceYaml=`${process.cwd()}/pnpm-workspace.yaml`;return(0,import_fs_extra2.pathExistsSync)(pnpmWorkspaceYaml)}initPackageJson(){return this.executeCommand("pnpm",["init","-y"])}getRunStorybookCommand(){return"pnpm run storybook"}getRunCommand(command){return`pnpm run ${command}`}getPnpmVersion(){return this.executeCommand("pnpm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[],this.detectWorkspaceRoot()&&this.installArgs.push("-w")),this.installArgs}runPackageCommand(command,args,cwd){return this.executeCommand("pnpm",["exec",command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("pnpm",["list",pattern.map(p=>`"${p}"`).join(" "),"--json","--depth=99"]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("pnpm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("pnpm",["add",...args,...this.getInstallArgs()],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("pnpm",["remove",...args,...this.getInstallArgs()],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("pnpm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using pnpm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},items=input.reduce((curr,item)=>{let{devDependencies,dependencies,peerDependencies}=item,allDependencies={...devDependencies,...dependencies,...peerDependencies};return Object.assign(curr,allDependencies)},{}),recurse=([name,packageInfo])=>{var _a;if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(items).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"pnpm list --depth=1"}}};var parsePackageData=(packageName="")=>{let[first,second,third]=packageName.trim().split("@"),version=(third||second).replace("npm:","");return{name:third?`@${second}`:first,value:{version,location:""}}};var Yarn2Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn2"}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}initPackageJson(){return this.executeCommand("yarn",["init"])}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command){return`yarn ${command}`}runPackageCommand(command,args,cwd){return this.executeCommand("yarn",[command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("yarn",["info","--name-only","--recursive",pattern.map(p=>`"${p}"`).join(" "),`"${pattern}"`]);try{return this.mapDependencies(commandResult)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}runInstall(){this.executeCommand("yarn",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("yarn",["add",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("yarn",["remove",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let field=fetchAllVersions?"versions":"version",args=["--fields",field,"--json"],commandResult=this.executeCommand("yarn",["npm","info",packageName,...args]);try{return JSON.parse(commandResult)[field]}catch{throw new Error(`Unable to find versions of ${packageName} using yarn 2`)}}mapDependencies(input){let lines=input.split(`
|
|
11
|
+
`),acc={},existingVersions={},duplicatedDependencies={};return lines.forEach(packageName=>{var _a;if(!packageName||!packageName.includes("storybook"))return;let{name,value}=parsePackageData(packageName.replaceAll('"',""));(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name]))}),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}};var Yarn1Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn1"}getInstallArgs(){return this.installArgs||(this.installArgs=["--ignore-workspace-root-check"]),this.installArgs}initPackageJson(){return this.executeCommand("yarn",["init","-y"])}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command){return`yarn ${command}`}runPackageCommand(command,args,cwd){return this.executeCommand("yarn",[command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("yarn",["list","--pattern",pattern.map(p=>`"${p}"`).join(" "),"--recursive","--json"]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}runInstall(){this.executeCommand("yarn",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("yarn",["add",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("yarn",["remove",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("yarn",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.type==="inspect")return parsedOutput.data;throw new Error(`Unable to find versions of ${packageName} using yarn`)}catch{throw new Error(`Unable to find versions of ${packageName} using yarn`)}}mapDependencies(input){if(input.type==="tree"){let{trees}=input.data,acc={},existingVersions={},duplicatedDependencies={},recurse=tree=>{var _a;let{children}=tree,{name,value}=parsePackageData(tree.name);!name||!name.includes("storybook")||((_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),children.forEach(recurse))};return trees.forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}throw new Error("Something went wrong while parsing yarn output")}};var NPM_LOCKFILE="package-lock.json",PNPM_LOCKFILE="pnpm-lock.yaml",YARN_LOCKFILE="yarn.lock",JsPackageManagerFactory=class{static getPackageManager({force}={},cwd){if(force==="npm")return new NPMProxy({cwd});if(force==="pnpm")return new PNPMProxy({cwd});if(force==="yarn1")return new Yarn1Proxy({cwd});if(force==="yarn2")return new Yarn2Proxy({cwd});let yarnVersion=getYarnVersion(cwd),closestLockfilePath=(0,import_find_up.sync)([YARN_LOCKFILE,PNPM_LOCKFILE,NPM_LOCKFILE],{cwd}),closestLockfile=closestLockfilePath&&import_node_path.default.basename(closestLockfilePath),hasNPMCommand=hasNPM(cwd),hasPNPMCommand=hasPNPM(cwd);if(yarnVersion&&(closestLockfile===YARN_LOCKFILE||!hasNPMCommand&&!hasPNPMCommand))return yarnVersion===1?new Yarn1Proxy({cwd}):new Yarn2Proxy({cwd});if(hasPNPMCommand&&closestLockfile===PNPM_LOCKFILE)return new PNPMProxy({cwd});if(hasNPMCommand)return new NPMProxy({cwd});throw new Error("Unable to find a usable package manager within NPM, PNPM, Yarn and Yarn 2")}};function hasNPM(cwd){return(0,import_cross_spawn2.sync)("npm",["--version"],{cwd,shell:!0}).status===0}function hasPNPM(cwd){return(0,import_cross_spawn2.sync)("pnpm",["--version"],{cwd,shell:!0}).status===0}function getYarnVersion(cwd){let yarnVersionCommand=(0,import_cross_spawn2.sync)("yarn",["--version"],{cwd,shell:!0});if(yarnVersionCommand.status!==0)return;let yarnVersion=yarnVersionCommand.output.toString().replace(/,/g,"").replace(/"/g,"");return/^1\.+/.test(yarnVersion)?1:2}function parseList(str){return str.split(",").map(item=>item.trim()).filter(item=>item.length>0)}function getEnvConfig(program,configEnv){Object.keys(configEnv).forEach(fieldName=>{let envVarName=configEnv[fieldName],envVarValue=process.env[envVarName];envVarValue&&(program[fieldName]=envVarValue)})}0&&(module.exports={JsPackageManager,JsPackageManagerFactory,getEnvConfig,getPackageDetails,parseList,useNpmWarning,versions});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{JsPackageManager,JsPackageManagerFactory,getEnvConfig,getPackageDetails,parseList,useNpmWarning}from"./chunk-
|
|
1
|
+
import{JsPackageManager,JsPackageManagerFactory,getEnvConfig,getPackageDetails,parseList,useNpmWarning,versions_default}from"./chunk-PUJBHUG2.mjs";export{JsPackageManager,JsPackageManagerFactory,getEnvConfig,getPackageDetails,parseList,useNpmWarning,versions_default as versions};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storybook/cli",
|
|
3
|
-
"version": "7.1.0-alpha.
|
|
3
|
+
"version": "7.1.0-alpha.2",
|
|
4
4
|
"description": "Storybook's CLI - easiest method of adding storybook to your projects",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -57,13 +57,13 @@
|
|
|
57
57
|
"@babel/core": "^7.20.2",
|
|
58
58
|
"@babel/preset-env": "^7.20.2",
|
|
59
59
|
"@ndelangen/get-tarball": "^3.0.7",
|
|
60
|
-
"@storybook/codemod": "7.1.0-alpha.
|
|
61
|
-
"@storybook/core-common": "7.1.0-alpha.
|
|
62
|
-
"@storybook/core-server": "7.1.0-alpha.
|
|
63
|
-
"@storybook/csf-tools": "7.1.0-alpha.
|
|
64
|
-
"@storybook/node-logger": "7.1.0-alpha.
|
|
65
|
-
"@storybook/telemetry": "7.1.0-alpha.
|
|
66
|
-
"@storybook/types": "7.1.0-alpha.
|
|
60
|
+
"@storybook/codemod": "7.1.0-alpha.2",
|
|
61
|
+
"@storybook/core-common": "7.1.0-alpha.2",
|
|
62
|
+
"@storybook/core-server": "7.1.0-alpha.2",
|
|
63
|
+
"@storybook/csf-tools": "7.1.0-alpha.2",
|
|
64
|
+
"@storybook/node-logger": "7.1.0-alpha.2",
|
|
65
|
+
"@storybook/telemetry": "7.1.0-alpha.2",
|
|
66
|
+
"@storybook/types": "7.1.0-alpha.2",
|
|
67
67
|
"@types/semver": "^7.3.4",
|
|
68
68
|
"boxen": "^5.1.2",
|
|
69
69
|
"chalk": "^4.1.0",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"util-deprecate": "^1.0.2"
|
|
95
95
|
},
|
|
96
96
|
"devDependencies": {
|
|
97
|
-
"@storybook/client-api": "7.1.0-alpha.
|
|
97
|
+
"@storybook/client-api": "7.1.0-alpha.2",
|
|
98
98
|
"@types/cross-spawn": "^6.0.2",
|
|
99
99
|
"@types/prompts": "^2.0.9",
|
|
100
100
|
"@types/puppeteer-core": "^2.1.0",
|
|
@@ -114,5 +114,5 @@
|
|
|
114
114
|
],
|
|
115
115
|
"platform": "node"
|
|
116
116
|
},
|
|
117
|
-
"gitHead": "
|
|
117
|
+
"gitHead": "3f0c9a6636b9e69006ffb841234cf785598e0572"
|
|
118
118
|
}
|
package/dist/chunk-ZNEKSTLO.mjs
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
var __require=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(a,b)=>(typeof require<"u"?require:a)[b]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+x+'" is not supported')});import deprecate from"util-deprecate";var useNpmWarning=deprecate(()=>{},"`--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");import chalk2 from"chalk";import{gt,satisfies as satisfies2}from"semver";import{sync as spawnSync}from"cross-spawn";import path2 from"path";import fs2 from"fs";import path,{join as join2}from"path";import fs from"fs";import fse from"fs-extra";import chalk from"chalk";import{satisfies}from"semver";import stripJsonComments from"strip-json-comments";import{dirname,join}from"path";import downloadTarball from"@ndelangen/get-tarball";import getNpmTarballUrl from"get-npm-tarball-url";import*as tempy from"tempy";import{minVersion,validRange}from"semver";function ltMajor(versionRange,major){return validRange(versionRange)&&minVersion(versionRange).major<major}function gtMajor(versionRange,major){return validRange(versionRange)&&minVersion(versionRange).major>major}function eqMajor(versionRange,major){return validRange(versionRange)&&minVersion(versionRange).major===major}var externalFrameworks=[{name:"qwik",packageName:"storybook-framework-qwik"},{name:"solid",frameworks:["storybook-solidjs-vite"],renderer:"storybook-solidjs"}],SUPPORTED_RENDERERS=["react","react-native","vue","vue3","angular","mithril","riot","ember","marionette","marko","preact","svelte","qwik","rax","aurelia","solid"],ProjectType=(ProjectType2=>(ProjectType2.UNDETECTED="UNDETECTED",ProjectType2.UNSUPPORTED="UNSUPPORTED",ProjectType2.REACT_SCRIPTS="REACT_SCRIPTS",ProjectType2.REACT="REACT",ProjectType2.REACT_NATIVE="REACT_NATIVE",ProjectType2.REACT_PROJECT="REACT_PROJECT",ProjectType2.WEBPACK_REACT="WEBPACK_REACT",ProjectType2.NEXTJS="NEXTJS",ProjectType2.VUE="VUE",ProjectType2.VUE3="VUE3",ProjectType2.SFC_VUE="SFC_VUE",ProjectType2.ANGULAR="ANGULAR",ProjectType2.EMBER="EMBER",ProjectType2.WEB_COMPONENTS="WEB_COMPONENTS",ProjectType2.MITHRIL="MITHRIL",ProjectType2.MARIONETTE="MARIONETTE",ProjectType2.MARKO="MARKO",ProjectType2.HTML="HTML",ProjectType2.QWIK="QWIK",ProjectType2.RIOT="RIOT",ProjectType2.PREACT="PREACT",ProjectType2.SVELTE="SVELTE",ProjectType2.SVELTEKIT="SVELTEKIT",ProjectType2.RAX="RAX",ProjectType2.AURELIA="AURELIA",ProjectType2.SERVER="SERVER",ProjectType2.NX="NX",ProjectType2.SOLID="SOLID",ProjectType2))(ProjectType||{});var supportedTemplates=[{preset:"SFC_VUE",dependencies:{"vue-loader":versionRange=>ltMajor(versionRange,16),vuetify:versionRange=>ltMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"VUE",dependencies:{vue:versionRange=>ltMajor(versionRange,3),nuxt:versionRange=>ltMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"VUE3",dependencies:{vue:versionRange=>versionRange==="next"||eqMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"EMBER",dependencies:["ember-cli"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"NEXTJS",dependencies:{next:versionRange=>eqMajor(versionRange,9)||gtMajor(versionRange,9)},matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"QWIK",dependencies:["@builder.io/qwik"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"REACT_PROJECT",peerDependencies:["react"],matcherFunction:({peerDependencies})=>peerDependencies.every(Boolean)},{preset:"REACT_NATIVE",dependencies:["react-native","react-native-scripts"],matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"REACT_SCRIPTS",files:["/node_modules/.bin/react-scripts"],dependencies:["react-scripts"],matcherFunction:({dependencies,files})=>dependencies.every(Boolean)||files.every(Boolean)},{preset:"ANGULAR",dependencies:["@angular/core"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"WEB_COMPONENTS",dependencies:["lit-element","lit-html","lit"],matcherFunction:({dependencies})=>dependencies.some(Boolean)},{preset:"MITHRIL",dependencies:["mithril"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"MARIONETTE",dependencies:["backbone.marionette"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"MARKO",dependencies:["marko"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"RIOT",dependencies:["riot"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"PREACT",dependencies:["preact"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"SVELTEKIT",dependencies:["@sveltejs/kit"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"SVELTE",dependencies:["svelte"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"RAX",dependencies:["rax"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"AURELIA",dependencies:["aurelia-bootstrapper"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"SOLID",dependencies:["solid-js"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"WEBPACK_REACT",dependencies:["react","webpack"],matcherFunction:({dependencies})=>dependencies.every(Boolean)},{preset:"REACT",dependencies:["react"],matcherFunction:({dependencies})=>dependencies.every(Boolean)}],unsupportedTemplate={preset:"UNSUPPORTED",dependencies:{nuxt:versionRange=>eqMajor(versionRange,3)},matcherFunction:({dependencies})=>dependencies.some(Boolean)},notInstallableProjectTypes=["UNDETECTED","UNSUPPORTED"],installableProjectTypes=Object.values(ProjectType).filter(type=>!notInstallableProjectTypes.includes(type)).map(type=>type.toLowerCase());var versions_default={"@storybook/addon-a11y":"7.1.0-alpha.1","@storybook/addon-actions":"7.1.0-alpha.1","@storybook/addon-backgrounds":"7.1.0-alpha.1","@storybook/addon-controls":"7.1.0-alpha.1","@storybook/addon-docs":"7.1.0-alpha.1","@storybook/addon-essentials":"7.1.0-alpha.1","@storybook/addon-highlight":"7.1.0-alpha.1","@storybook/addon-interactions":"7.1.0-alpha.1","@storybook/addon-jest":"7.1.0-alpha.1","@storybook/addon-links":"7.1.0-alpha.1","@storybook/addon-mdx-gfm":"7.1.0-alpha.1","@storybook/addon-measure":"7.1.0-alpha.1","@storybook/addon-outline":"7.1.0-alpha.1","@storybook/addon-storyshots":"7.1.0-alpha.1","@storybook/addon-storyshots-puppeteer":"7.1.0-alpha.1","@storybook/addon-storysource":"7.1.0-alpha.1","@storybook/addon-toolbars":"7.1.0-alpha.1","@storybook/addon-viewport":"7.1.0-alpha.1","@storybook/addons":"7.1.0-alpha.1","@storybook/angular":"7.1.0-alpha.1","@storybook/api":"7.1.0-alpha.1","@storybook/blocks":"7.1.0-alpha.1","@storybook/builder-manager":"7.1.0-alpha.1","@storybook/builder-vite":"7.1.0-alpha.1","@storybook/builder-webpack5":"7.1.0-alpha.1","@storybook/channel-postmessage":"7.1.0-alpha.1","@storybook/channel-websocket":"7.1.0-alpha.1","@storybook/channels":"7.1.0-alpha.1","@storybook/cli":"7.1.0-alpha.1","@storybook/client-api":"7.1.0-alpha.1","@storybook/client-logger":"7.1.0-alpha.1","@storybook/codemod":"7.1.0-alpha.1","@storybook/components":"7.1.0-alpha.1","@storybook/core-client":"7.1.0-alpha.1","@storybook/core-common":"7.1.0-alpha.1","@storybook/core-events":"7.1.0-alpha.1","@storybook/core-server":"7.1.0-alpha.1","@storybook/core-webpack":"7.1.0-alpha.1","@storybook/csf-plugin":"7.1.0-alpha.1","@storybook/csf-tools":"7.1.0-alpha.1","@storybook/docs-tools":"7.1.0-alpha.1","@storybook/ember":"7.1.0-alpha.1","@storybook/html":"7.1.0-alpha.1","@storybook/html-vite":"7.1.0-alpha.1","@storybook/html-webpack5":"7.1.0-alpha.1","@storybook/instrumenter":"7.1.0-alpha.1","@storybook/manager":"7.1.0-alpha.1","@storybook/manager-api":"7.1.0-alpha.1","@storybook/nextjs":"7.1.0-alpha.1","@storybook/node-logger":"7.1.0-alpha.1","@storybook/postinstall":"7.1.0-alpha.1","@storybook/preact":"7.1.0-alpha.1","@storybook/preact-vite":"7.1.0-alpha.1","@storybook/preact-webpack5":"7.1.0-alpha.1","@storybook/preset-create-react-app":"7.1.0-alpha.1","@storybook/preset-html-webpack":"7.1.0-alpha.1","@storybook/preset-preact-webpack":"7.1.0-alpha.1","@storybook/preset-react-webpack":"7.1.0-alpha.1","@storybook/preset-server-webpack":"7.1.0-alpha.1","@storybook/preset-svelte-webpack":"7.1.0-alpha.1","@storybook/preset-vue-webpack":"7.1.0-alpha.1","@storybook/preset-vue3-webpack":"7.1.0-alpha.1","@storybook/preset-web-components-webpack":"7.1.0-alpha.1","@storybook/preview":"7.1.0-alpha.1","@storybook/preview-api":"7.1.0-alpha.1","@storybook/preview-web":"7.1.0-alpha.1","@storybook/react":"7.1.0-alpha.1","@storybook/react-dom-shim":"7.1.0-alpha.1","@storybook/react-vite":"7.1.0-alpha.1","@storybook/react-webpack5":"7.1.0-alpha.1","@storybook/router":"7.1.0-alpha.1","@storybook/server":"7.1.0-alpha.1","@storybook/server-webpack5":"7.1.0-alpha.1","@storybook/source-loader":"7.1.0-alpha.1","@storybook/store":"7.1.0-alpha.1","@storybook/svelte":"7.1.0-alpha.1","@storybook/svelte-vite":"7.1.0-alpha.1","@storybook/svelte-webpack5":"7.1.0-alpha.1","@storybook/sveltekit":"7.1.0-alpha.1","@storybook/telemetry":"7.1.0-alpha.1","@storybook/theming":"7.1.0-alpha.1","@storybook/types":"7.1.0-alpha.1","@storybook/vue":"7.1.0-alpha.1","@storybook/vue-vite":"7.1.0-alpha.1","@storybook/vue-webpack5":"7.1.0-alpha.1","@storybook/vue3":"7.1.0-alpha.1","@storybook/vue3-vite":"7.1.0-alpha.1","@storybook/vue3-webpack5":"7.1.0-alpha.1","@storybook/web-components":"7.1.0-alpha.1","@storybook/web-components-vite":"7.1.0-alpha.1","@storybook/web-components-webpack5":"7.1.0-alpha.1",sb:"7.1.0-alpha.1",storybook:"7.1.0-alpha.1"};function getCliDir(){return 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=getNpmTarballUrl(request,version,{registry:packageManager.getRegistryURL()});return await downloadTarball({url,dir:tempDirectory}),join(tempDirectory,"package")};async function getRendererDir(packageManager,renderer){let externalFramework=externalFrameworks.find(framework=>framework.name===renderer),frameworkPackageName=externalFramework?.renderer||externalFramework?.packageName||`@storybook/${renderer}`,packageJsonPath=`${frameworkPackageName}/package.json`,errors=[];try{return dirname(__require.resolve(packageJsonPath,{paths:[process.cwd()]}))}catch(e){errors.push(e)}try{return await resolveUsingBranchInstall(packageManager,frameworkPackageName)}catch(e){errors.push(e)}throw new Error(`Cannot find ${packageJsonPath}, ${errors.map(e=>e.stack).join(`
|
|
2
|
-
|
|
3
|
-
`)}`)}var logger=console;function getBowerJson(){let bowerJsonPath=path.resolve("bower.json");if(!fs.existsSync(bowerJsonPath))return!1;let jsonContent=fs.readFileSync(bowerJsonPath,"utf8");return JSON.parse(jsonContent)}function readFileAsJson(jsonPath,allowComments){let filePath=path.resolve(jsonPath);if(!fs.existsSync(filePath))return!1;let fileContent=fs.readFileSync(filePath,"utf8"),jsonContent=allowComments?stripJsonComments(fileContent):fileContent;try{return JSON.parse(jsonContent)}catch(e){throw logger.error(chalk.red(`Invalid json in file: ${filePath}`)),e}}var writeFileAsJson=(jsonPath,content)=>{let filePath=path.resolve(jsonPath);return fs.existsSync(filePath)?(fs.writeFileSync(filePath,`${JSON.stringify(content,null,2)}
|
|
4
|
-
`),!0):!1},commandLog=message=>(process.stdout.write(chalk.cyan(" \u2022 ")+message),(errorMessage,errorInfo)=>{if(errorMessage){if(process.stdout.write(`. ${chalk.red("\u2716")}
|
|
5
|
-
`),logger.error(`
|
|
6
|
-
${chalk.red(errorMessage)}`),!errorInfo)return;let newErrorInfo=errorInfo.split(`
|
|
7
|
-
`).map(line=>` ${chalk.dim(line)}`).join(`
|
|
8
|
-
`);logger.error(`${newErrorInfo}
|
|
9
|
-
`);return}process.stdout.write(`. ${chalk.green("\u2713")}
|
|
10
|
-
`)});function paddedLog(message){let newMessage=message.split(`
|
|
11
|
-
`).map(line=>` ${line}`).join(`
|
|
12
|
-
`);logger.log(newMessage)}function getChars(char,amount){let line="";for(let lc=0;lc<amount;lc+=1)line+=char;return line}function codeLog(codeLines,leftPadAmount){let maxLength=0,finalResult=codeLines.map(line=>(maxLength=line.length>maxLength?line.length:maxLength,line)).map(line=>{let rightPadAmount=maxLength-line.length,newLine=line+getChars(" ",rightPadAmount);return newLine=getChars(" ",leftPadAmount||2)+chalk.inverse(` ${newLine} `),newLine}).join(`
|
|
13
|
-
`);logger.log(finalResult)}async function getBabelDependencies(packageManager,packageJson){let dependenciesToAdd=[],babelLoaderVersion="^8.0.0-0",babelCoreVersion=packageJson.dependencies["babel-core"]||packageJson.devDependencies["babel-core"];if(babelCoreVersion){let latestCompatibleBabelVersion=await packageManager.latestVersion("babel-core",babelCoreVersion);satisfies(latestCompatibleBabelVersion,"^6.0.0")&&(babelLoaderVersion="^7.0.0")}else if(!packageJson.dependencies["@babel/core"]&&!packageJson.devDependencies["@babel/core"]){let babelCoreInstallVersion=await packageManager.getVersion("@babel/core");dependenciesToAdd.push(`@babel/core@${babelCoreInstallVersion}`)}if(!packageJson.dependencies["babel-loader"]&&!packageJson.devDependencies["babel-loader"]){let babelLoaderInstallVersion=await packageManager.getVersion("babel-loader",babelLoaderVersion);dependenciesToAdd.push(`babel-loader@${babelLoaderInstallVersion}`)}return dependenciesToAdd}function copyTemplate(templateRoot,destination="."){let templateDir=path.resolve(templateRoot,"template-csf/");if(!fs.existsSync(templateDir))throw new Error("Couldn't find template dir");fse.copySync(templateDir,destination,{overwrite:!0})}async function copyTemplateFiles({packageManager,renderer,language,destination,includeCommonAssets=!0}){let languageFolderMapping={typescript:"ts",["javascript"]:"js",["typescript-3-8"]:"ts-3-8",["typescript-4-9"]:"ts-4-9"},templatePath=async()=>{let baseDir=await getRendererDir(packageManager,renderer),assetsDir=join2(baseDir,"template/cli"),assetsLanguage=join2(assetsDir,languageFolderMapping[language]),assetsJS=join2(assetsDir,languageFolderMapping["javascript"]),assetsTS=join2(assetsDir,languageFolderMapping.typescript),assetsTS38=join2(assetsDir,languageFolderMapping["typescript-3-8"]);if(await fse.pathExists(assetsLanguage))return assetsLanguage;if(language==="typescript-4-9"&&await fse.pathExists(assetsTS38))return assetsTS38;if(await fse.pathExists(assetsTS))return assetsTS;if(await fse.pathExists(assetsJS))return assetsJS;if(await fse.pathExists(assetsDir))return assetsDir;throw new Error(`Unsupported renderer: ${renderer} (${baseDir})`)},destinationPath=destination??await(async()=>await fse.pathExists("./src")?"./src/stories":"./stories")();includeCommonAssets&&await fse.copy(join2(getCliDir(),"rendererAssets/common"),destinationPath,{overwrite:!0}),await fse.copy(await templatePath(),destinationPath,{overwrite:!0})}function getStorybookVersionSpecifier(packageJson){let allDeps={...packageJson.dependencies,...packageJson.devDependencies},storybookPackage=Object.keys(allDeps).find(name=>versions_default[name]);if(!storybookPackage)throw new Error("Couldn't find any official storybook packages in package.json");return allDeps[storybookPackage]}function isNxProject(packageJSON){return!!packageJSON.devDependencies?.nx||fs.existsSync("nx.json")}var HandledError=class extends Error{constructor(messageOrError){super(typeof messageOrError=="string"?messageOrError:messageOrError.message);this.handled=!0;typeof messageOrError!="string"&&(this.cause=messageOrError)}};var logger2=console;function getPackageDetails(pkg){let idx=pkg.lastIndexOf("@");if(idx<=0)return[pkg,void 0];let packageName=pkg.slice(0,idx),packageVersion=pkg.slice(idx+1);return[packageName,packageVersion]}var JsPackageManager=class{setRegistryURL(url){url?this.executeCommand("npm",["config","set","registry",url]):this.executeCommand("npm",["config","delete","registry"])}getRegistryURL(){let url=this.executeCommand("npm",["config","get","registry"]).trim();return url==="undefined"?void 0:url}constructor(options){this.cwd=options?.cwd}installDependencies(){let done=commandLog("Preparing to install dependencies");done(),logger2.log(),logger2.log(),done=commandLog("Installing dependencies");try{this.runInstall()}catch(e){throw done("An error occurred while installing dependencies."),new HandledError(e)}done()}packageJsonPath(){return this.cwd?path2.resolve(this.cwd,"package.json"):path2.resolve("package.json")}readPackageJson(){let packageJsonPath=this.packageJsonPath();if(!fs2.existsSync(packageJsonPath))throw new Error(`Could not read package.json file at ${packageJsonPath}`);let jsonContent=fs2.readFileSync(packageJsonPath,"utf8");return JSON.parse(jsonContent)}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)}
|
|
14
|
-
`;fs2.writeFileSync(this.packageJsonPath(),content,"utf8")}retrievePackageJson(){let packageJson;try{packageJson=this.readPackageJson()}catch{this.initPackageJson(),packageJson=this.readPackageJson()}return{...packageJson,dependencies:{...packageJson.dependencies},devDependencies:{...packageJson.devDependencies},peerDependencies:{...packageJson.peerDependencies}}}getAllDependencies(){let{dependencies,devDependencies,peerDependencies}=this.retrievePackageJson();return{...dependencies,...devDependencies,...peerDependencies}}addDependencies(options,dependencies){let{skipInstall}=options;if(skipInstall){let{packageJson}=options,dependenciesMap=dependencies.reduce((acc,dep)=>{let[packageName,packageVersion]=getPackageDetails(dep);return{...acc,[packageName]:packageVersion}},{});options.installAsDevDependencies?packageJson.devDependencies={...packageJson.devDependencies,...dependenciesMap}:packageJson.dependencies={...packageJson.dependencies,...dependenciesMap},this.writePackageJson(packageJson)}else try{this.runAddDeps(dependencies,options.installAsDevDependencies)}catch(e){throw logger2.error("An error occurred while installing dependencies."),logger2.log(e.message),new HandledError(e)}}removeDependencies(options,dependencies){let{skipInstall}=options;if(skipInstall){let{packageJson}=options;dependencies.forEach(dep=>{packageJson.devDependencies&&delete packageJson.devDependencies[dep],packageJson.dependencies&&delete packageJson.dependencies[dep]}),this.writePackageJson(packageJson)}else try{this.runRemoveDeps(dependencies)}catch(e){throw logger2.error("An error occurred while removing dependencies."),logger2.log(e.message),new HandledError(e)}}getVersionedPackages(packages){return Promise.all(packages.map(async pkg=>{let[packageName,packageVersion]=getPackageDetails(pkg);return`${packageName}@${await this.getVersion(packageName,packageVersion)}`}))}getVersions(...packageNames){return Promise.all(packageNames.map(packageName=>this.getVersion(packageName)))}async getVersion(packageName,constraint){let current;/(@storybook|^sb$|^storybook$)/.test(packageName)&&(current=versions_default[packageName]);let latest;try{latest=await this.latestVersion(packageName,constraint)}catch(e){if(current)return logger2.warn(`
|
|
15
|
-
${chalk2.yellow(e.message)}`),current;throw logger2.error(`
|
|
16
|
-
${chalk2.red(e.message)}`),new HandledError(e)}return`^${current&&(!constraint||satisfies2(current,constraint))&>(current,latest)?current:latest}`}async latestVersion(packageName,constraint){return constraint?(await this.runGetVersions(packageName,!0)).reverse().find(version=>satisfies2(version,constraint)):this.runGetVersions(packageName,!1)}addStorybookCommandInScripts(options){let storybookCmd=`storybook dev -p ${options?.port??6006}`,buildStorybookCmd="storybook build",preCommand=options?.preCommand?this.getRunCommand(options.preCommand):void 0;this.addScripts({storybook:[preCommand,storybookCmd].filter(Boolean).join(" && "),"build-storybook":[preCommand,buildStorybookCmd].filter(Boolean).join(" && ")})}addESLintConfig(){let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,eslintConfig:{...packageJson.eslintConfig,overrides:[...packageJson.eslintConfig?.overrides||[],{files:["**/*.stories.*"],rules:{"import/no-anonymous-default-export":"off"}}]}})}addScripts(scripts){let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,scripts:{...packageJson.scripts,...scripts}})}addPackageResolutions(versions){let packageJson=this.retrievePackageJson(),resolutions=this.getResolutions(packageJson,versions);this.writePackageJson({...packageJson,...resolutions})}executeCommand(command,args,stdio,cwd){let commandResult=spawnSync(command,args,{cwd:cwd??this.cwd,stdio:stdio??"pipe",encoding:"utf-8",shell:!0});if(commandResult.status!==0)throw new Error(commandResult.stderr??"");return commandResult.stdout??""}};import path3 from"path";import{sync as spawnSync2}from"cross-spawn";import{sync as findUpSync}from"find-up";import sort from"semver/functions/sort";import{platform}from"os";var NPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="npm"}initPackageJson(){return this.executeCommand("npm",["init","-y"])}getRunStorybookCommand(){return"npm run storybook"}getRunCommand(command){return`npm run ${command}`}getNpmVersion(){return this.executeCommand("npm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}runPackageCommand(command,args,cwd){return this.executeCommand("npm",["exec","--",command,...args],void 0,cwd)}findInstallations(){let pipeToNull=platform()==="win32"?"2>NUL":"2>/dev/null",commandResult=this.executeCommand("npm",["ls","--json","--depth=99",pipeToNull]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("npm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("npm",["install",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("npm",["uninstall",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("npm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using npm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},recurse=([name,packageInfo])=>{if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};existingVersions[name]?.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=sort([...existingVersions[name]||[],value.version]),existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(input.dependencies).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"npm ls --depth=1"}}};import{pathExistsSync}from"fs-extra";var PNPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="pnpm"}detectWorkspaceRoot(){let pnpmWorkspaceYaml=`${process.cwd()}/pnpm-workspace.yaml`;return pathExistsSync(pnpmWorkspaceYaml)}initPackageJson(){return this.executeCommand("pnpm",["init","-y"])}getRunStorybookCommand(){return"pnpm run storybook"}getRunCommand(command){return`pnpm run ${command}`}getPnpmVersion(){return this.executeCommand("pnpm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[],this.detectWorkspaceRoot()&&this.installArgs.push("-w")),this.installArgs}runPackageCommand(command,args,cwd){return this.executeCommand("pnpm",["exec",command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("pnpm",["list",pattern.map(p=>`"${p}"`).join(" "),"--json","--depth=99"]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("pnpm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("pnpm",["add",...args,...this.getInstallArgs()],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("pnpm",["remove",...args,...this.getInstallArgs()],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("pnpm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using pnpm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},items=input.reduce((curr,item)=>{let{devDependencies,dependencies,peerDependencies}=item,allDependencies={...devDependencies,...dependencies,...peerDependencies};return Object.assign(curr,allDependencies)},{}),recurse=([name,packageInfo])=>{if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};existingVersions[name]?.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(items).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"pnpm list --depth=1"}}};var parsePackageData=(packageName="")=>{let[first,second,third]=packageName.trim().split("@"),version=(third||second).replace("npm:","");return{name:third?`@${second}`:first,value:{version,location:""}}};var Yarn2Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn2"}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}initPackageJson(){return this.executeCommand("yarn",["init"])}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command){return`yarn ${command}`}runPackageCommand(command,args,cwd){return this.executeCommand("yarn",[command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("yarn",["info","--name-only","--recursive",pattern.map(p=>`"${p}"`).join(" "),`"${pattern}"`]);try{return this.mapDependencies(commandResult)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}runInstall(){this.executeCommand("yarn",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("yarn",["add",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("yarn",["remove",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let field=fetchAllVersions?"versions":"version",args=["--fields",field,"--json"],commandResult=this.executeCommand("yarn",["npm","info",packageName,...args]);try{return JSON.parse(commandResult)[field]}catch{throw new Error(`Unable to find versions of ${packageName} using yarn 2`)}}mapDependencies(input){let lines=input.split(`
|
|
17
|
-
`),acc={},existingVersions={},duplicatedDependencies={};return lines.forEach(packageName=>{if(!packageName||!packageName.includes("storybook"))return;let{name,value}=parsePackageData(packageName.replaceAll('"',""));existingVersions[name]?.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name]))}),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}};var Yarn1Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn1"}getInstallArgs(){return this.installArgs||(this.installArgs=["--ignore-workspace-root-check"]),this.installArgs}initPackageJson(){return this.executeCommand("yarn",["init","-y"])}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command){return`yarn ${command}`}runPackageCommand(command,args,cwd){return this.executeCommand("yarn",[command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("yarn",["list","--pattern",pattern.map(p=>`"${p}"`).join(" "),"--recursive","--json"]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}runInstall(){this.executeCommand("yarn",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("yarn",["add",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("yarn",["remove",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("yarn",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.type==="inspect")return parsedOutput.data;throw new Error(`Unable to find versions of ${packageName} using yarn`)}catch{throw new Error(`Unable to find versions of ${packageName} using yarn`)}}mapDependencies(input){if(input.type==="tree"){let{trees}=input.data,acc={},existingVersions={},duplicatedDependencies={},recurse=tree=>{let{children}=tree,{name,value}=parsePackageData(tree.name);!name||!name.includes("storybook")||(existingVersions[name]?.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),children.forEach(recurse))};return trees.forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}throw new Error("Something went wrong while parsing yarn output")}};var NPM_LOCKFILE="package-lock.json",PNPM_LOCKFILE="pnpm-lock.yaml",YARN_LOCKFILE="yarn.lock",JsPackageManagerFactory=class{static getPackageManager({force}={},cwd){if(force==="npm")return new NPMProxy({cwd});if(force==="pnpm")return new PNPMProxy({cwd});if(force==="yarn1")return new Yarn1Proxy({cwd});if(force==="yarn2")return new Yarn2Proxy({cwd});let yarnVersion=getYarnVersion(cwd),closestLockfilePath=findUpSync([YARN_LOCKFILE,PNPM_LOCKFILE,NPM_LOCKFILE],{cwd}),closestLockfile=closestLockfilePath&&path3.basename(closestLockfilePath),hasNPMCommand=hasNPM(cwd),hasPNPMCommand=hasPNPM(cwd);if(yarnVersion&&(closestLockfile===YARN_LOCKFILE||!hasNPMCommand&&!hasPNPMCommand))return yarnVersion===1?new Yarn1Proxy({cwd}):new Yarn2Proxy({cwd});if(hasPNPMCommand&&closestLockfile===PNPM_LOCKFILE)return new PNPMProxy({cwd});if(hasNPMCommand)return new NPMProxy({cwd});throw new Error("Unable to find a usable package manager within NPM, PNPM, Yarn and Yarn 2")}};function hasNPM(cwd){return spawnSync2("npm",["--version"],{cwd,shell:!0}).status===0}function hasPNPM(cwd){return spawnSync2("pnpm",["--version"],{cwd,shell:!0}).status===0}function getYarnVersion(cwd){let yarnVersionCommand=spawnSync2("yarn",["--version"],{cwd,shell:!0});if(yarnVersionCommand.status!==0)return;let yarnVersion=yarnVersionCommand.output.toString().replace(/,/g,"").replace(/"/g,"");return/^1\.+/.test(yarnVersion)?1:2}function parseList(str){return str.split(",").map(item=>item.trim()).filter(item=>item.length>0)}function getEnvConfig(program,configEnv){Object.keys(configEnv).forEach(fieldName=>{let envVarName=configEnv[fieldName],envVarValue=process.env[envVarName];envVarValue&&(program[fieldName]=envVarValue)})}export{__require,externalFrameworks,SUPPORTED_RENDERERS,supportedTemplates,unsupportedTemplate,installableProjectTypes,versions_default,getCliDir,getBowerJson,readFileAsJson,writeFileAsJson,commandLog,paddedLog,codeLog,getBabelDependencies,copyTemplate,copyTemplateFiles,getStorybookVersionSpecifier,isNxProject,useNpmWarning,HandledError,getPackageDetails,JsPackageManager,JsPackageManagerFactory,parseList,getEnvConfig};
|