@storybook/cli 0.0.0-pr-27171-sha-04378b75 → 0.0.0-pr-27039-sha-9bd21423

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/generate.mjs CHANGED
@@ -5,17 +5,16 @@ import envinfo from 'envinfo';
5
5
  import leven from 'leven';
6
6
  import { sync as sync$1 } from 'read-pkg-up';
7
7
  import invariant5 from 'tiny-invariant';
8
- import { logger, instance } from '@storybook/node-logger';
9
- import { addToGlobalContext, telemetry } from '@storybook/telemetry';
10
- import { versions, removeAddon, JsPackageManagerFactory, parseList, getEnvConfig, getStorybookInfo, getCoercedStorybookVersion, cache, commandLog, paddedLog, HandledError, getProjectRoot, serverRequire, loadMainConfig, isCorePackage, frameworkPackages, commonGlobOptions, rendererPackages, frameworkToRenderer as frameworkToRenderer$1, extractProperFrameworkName, builderPackages, getPackageDetails } from '@storybook/core-common';
8
+ import { logger, instance } from '@storybook/core/dist/node-logger';
9
+ import { addToGlobalContext, telemetry } from '@storybook/core/dist/telemetry';
10
+ import { versions, removeAddon, JsPackageManagerFactory, parseList, getEnvConfig, getStorybookInfo, getCoercedStorybookVersion, cache, commandLog, paddedLog, HandledError, getProjectRoot, serverRequire, loadMainConfig, isCorePackage, frameworkPackages, commonGlobOptions, rendererPackages, frameworkToRenderer as frameworkToRenderer$1, extractProperFrameworkName, builderPackages, getPackageDetails } from '@storybook/core/dist/common';
11
11
  import { withTelemetry, buildDevStandalone, buildStaticStandalone } from '@storybook/core-server';
12
- import * as fs5 from 'fs/promises';
13
12
  import { readFile, appendFile, lstat, readdir as readdir$2, readlink, realpath } from 'fs/promises';
14
13
  import findUp2 from 'find-up';
15
14
  import prompts5, { prompt } from 'prompts';
16
- import { UpgradeStorybookInWrongWorkingDirectory, UpgradeStorybookToLowerVersionError, UpgradeStorybookToSameVersionError, UpgradeStorybookUnknownCurrentVersionError, GenerateNewProjectOnInitError, MissingAngularJsonError, NxProjectDetectedError } from '@storybook/core-events/server-errors';
15
+ import { UpgradeStorybookInWrongWorkingDirectory, UpgradeStorybookToLowerVersionError, UpgradeStorybookToSameVersionError, UpgradeStorybookUnknownCurrentVersionError, GenerateNewProjectOnInitError, MissingAngularJsonError, NxProjectDetectedError } from '@storybook/core/dist/server-errors';
17
16
  import dedent21, { dedent } from 'ts-dedent';
18
- import process2 from 'process';
17
+ import process2 from 'node:process';
19
18
  import semver, { prerelease, lt, gt, eq, validRange, minVersion, satisfies } from 'semver';
20
19
  import * as fs2 from 'fs';
21
20
  import fs2__default, { realpathSync as realpathSync$1, lstatSync, readdir as readdir$1, readdirSync as readdirSync$1, readlinkSync, existsSync as existsSync$1 } from 'fs';
@@ -28,7 +27,7 @@ import * as tempy from 'tempy';
28
27
  import tempy__default from 'tempy';
29
28
  import ora from 'ora';
30
29
  import detectIndent from 'detect-indent';
31
- import { readConfig, writeConfig, babelParse } from '@storybook/csf-tools';
30
+ import { readConfig, writeConfig, babelParse } from '@storybook/core/dist/csf-tools';
32
31
  import execa from 'execa';
33
32
  import { listCodemods, runCodemod } from '@storybook/codemod';
34
33
  import * as t from '@babel/types';
@@ -36,6 +35,7 @@ import { fileURLToPath } from 'url';
36
35
  import { EventEmitter } from 'events';
37
36
  import Stream from 'stream';
38
37
  import { StringDecoder } from 'string_decoder';
38
+ import * as fs5 from 'node:fs/promises';
39
39
  import * as babel from '@babel/core';
40
40
  import { EOL } from 'os';
41
41
  import { sync as sync$2, spawn } from 'cross-spawn';
@@ -87,7 +87,7 @@ We were not able to detect the right builder for your project. Please select one
87
87
  Sorry, for now, you can not do this, please use a framework such as @storybook/react-webpack5
88
88
 
89
89
  https://github.com/storybookjs/storybook/issues/18360
90
- `);let extraPackagesToInstall=typeof extraPackages=="function"?await extraPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraPackages,allPackages=["storybook",getExternalFramework(rendererId)?void 0:`@storybook/${rendererId}`,...frameworkPackages8,...addonPackages,...extraPackagesToInstall||[]].filter(Boolean),packages=[...new Set(allPackages)].filter(packageToInstall=>!installedDependencies.has(getPackageDetails(packageToInstall)[0]));logger3.log();let versionedPackagesSpinner=ora({indent:2,text:`Getting the correct version of ${packages.length} packages`}).start(),versionedPackages=await packageManager.getVersionedPackages(packages);versionedPackagesSpinner.succeed();try{if(process.env.CI!=="true"){let{hasEslint,isStorybookPluginInstalled,eslintConfigFile}=await extractEslintInfo(packageManager);hasEslint&&!isStorybookPluginInstalled&&(versionedPackages.push("eslint-plugin-storybook"),await configureEslintPlugin(eslintConfigFile??void 0,packageManager));}}catch{}if(versionedPackages.length>0){let addDependenciesSpinner=ora({indent:2,text:"Installing Storybook dependencies"}).start();await packageManager.addDependencies({...npmOptions,packageJson},versionedPackages),addDependenciesSpinner.succeed();}if(await fse.ensureDir(`./${storybookConfigFolder}`),addMainFile){let prefixes=shouldApplyRequireWrapperOnPackageNames?['import { join, dirname } from "path"',language==="javascript"?dedent`/**
90
+ `);let extraPackagesToInstall=typeof extraPackages=="function"?await extraPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraPackages,allPackages=["storybook","@storybook/core",getExternalFramework(rendererId)?void 0:`@storybook/${rendererId}`,...frameworkPackages8,...addonPackages,...extraPackagesToInstall||[]].filter(Boolean),packages=[...new Set(allPackages)].filter(packageToInstall=>!installedDependencies.has(getPackageDetails(packageToInstall)[0]));logger3.log();let versionedPackagesSpinner=ora({indent:2,text:`Getting the correct version of ${packages.length} packages`}).start(),versionedPackages=await packageManager.getVersionedPackages(packages);versionedPackagesSpinner.succeed();try{if(process.env.CI!=="true"){let{hasEslint,isStorybookPluginInstalled,eslintConfigFile}=await extractEslintInfo(packageManager);hasEslint&&!isStorybookPluginInstalled&&(versionedPackages.push("eslint-plugin-storybook"),await configureEslintPlugin(eslintConfigFile??void 0,packageManager));}}catch{}if(versionedPackages.length>0){let addDependenciesSpinner=ora({indent:2,text:"Installing Storybook dependencies"}).start();await packageManager.addDependencies({...npmOptions,packageJson},versionedPackages),addDependenciesSpinner.succeed();}if(await fse.ensureDir(`./${storybookConfigFolder}`),addMainFile){let prefixes=shouldApplyRequireWrapperOnPackageNames?['import { join, dirname } from "path"',language==="javascript"?dedent`/**
91
91
  * This function is used to resolve the absolute path of a package.
92
92
  * It is needed in projects that use Yarn PnP or are set up within a monorepo.
93
93
  */
@@ -144,7 +144,7 @@ We were not able to detect the right builder for your project. Please select one
144
144
 
145
145
  You may want to CTRL+C to stop, and run with the latest version instead.
146
146
  `),prelease:chalk15.yellow("This is a pre-release version.")};logger6.log(boxen([messages.welcome].concat(isOutdated&&!isPrerelease?[messages.notLatest]:[]).concat(isPrerelease?[messages.prelease]:[]).join(`
147
- `),{borderStyle:"round",padding:1,borderColor})),options.force!==!0&&currentDirectoryIsEmpty(packageManager.type)&&(packageManager.type==="yarn1"&&(packageManager=JsPackageManagerFactory.getPackageManager({force:"npm"})),await scaffoldNewProject(packageManager.type,options),(process.env.IN_STORYBOOK_SANDBOX==="true"||process.env.CI==="true")&&packageManager.addPackageResolutions({"@storybook/telemetry":versions["@storybook/telemetry"]}));let projectType,projectTypeProvided=options.type,infoText=projectTypeProvided?`Installing Storybook for user specified project type: ${projectTypeProvided}`:"Detecting project type",done=commandLog(infoText);if(projectTypeProvided)if(installableProjectTypes.includes(projectTypeProvided))projectType=projectTypeProvided.toUpperCase();else throw done(`The provided project type was not recognized by Storybook: ${projectTypeProvided}`),logger6.log(`
147
+ `),{borderStyle:"round",padding:1,borderColor})),options.force!==!0&&currentDirectoryIsEmpty(packageManager.type)&&(packageManager.type==="yarn1"&&(packageManager=JsPackageManagerFactory.getPackageManager({force:"npm"})),await scaffoldNewProject(packageManager.type,options));let projectType,projectTypeProvided=options.type,infoText=projectTypeProvided?`Installing Storybook for user specified project type: ${projectTypeProvided}`:"Detecting project type",done=commandLog(infoText);if(projectTypeProvided)if(installableProjectTypes.includes(projectTypeProvided))projectType=projectTypeProvided.toUpperCase();else throw done(`The provided project type was not recognized by Storybook: ${projectTypeProvided}`),logger6.log(`
148
148
  The project types currently supported by Storybook are:
149
149
  `),installableProjectTypes.sort().forEach(framework=>paddedLog(`- ${framework}`)),logger6.log(),new HandledError(`Unknown project type supplied: ${projectTypeProvided}`);else try{projectType=await detect(packageManager,options);}catch(err){throw done(String(err)),new HandledError(err)}done();let storybookInstantiated=isStorybookInstantiated();if(options.force===!1&&storybookInstantiated&&projectType!=="ANGULAR"){logger6.log();let{force}=await prompts5([{type:"confirm",name:"force",message:"We found a .storybook config directory in your project. Therefore we assume that Storybook is already instantiated for your project. Do you still want to continue and force the initialization?"}]);logger6.log(),force?options.force=!0:process.exit(0);}options.skipInstall||await packageManager.installDependencies();let installResult=await installStorybook(projectType,packageManager,options);if(options.skipInstall||await packageManager.installDependencies(),options.disableTelemetry||await telemetry("init",{projectType}),projectType==="REACT_NATIVE")return logger6.log(dedent21`
150
150
  ${chalk15.yellow("NOTE: installation is not 100% automated.")}
@@ -607,7 +607,7 @@ ${error}`).join(`
607
607
 
608
608
  `)}catch{return}}function hasMultipleVersions(versions7){return versions7.find(v=>{let major=semver.major(v);if(major===0){let minor=semver.minor(v);if(minor===0){let patch=semver.patch(v);return versions7.some(v2=>semver.patch(v2)!==patch)}return versions7.some(v2=>semver.minor(v2)!==minor)}return versions7.some(v2=>semver.major(v2)!==major)})}var messageDivider2=`
609
609
 
610
- `,allowList=["@storybook/csf","@storybook/addons","@storybook/channel-postmessage","@storybook/channel-websocket","@storybook/client-api","@storybook/client-logger","@storybook/core-client","@storybook/preview-web","@storybook/preview-api","@storybook/store","@storybook/components","@storybook/router","@storybook/theming","@storybook/api","@storybook/manager-api"],disallowList=[Object.keys(rendererPackages),Object.keys(frameworkPackages),"@storybook/core-events","@storybook/instrumenter","@storybook/core-common","@storybook/core-server","@storybook/manager","@storybook/preview"];function getDuplicatedDepsWarnings(installationMetadata){try{if(!installationMetadata||!installationMetadata?.duplicatedDependencies||Object.keys(installationMetadata.duplicatedDependencies).length===0)return;let messages=[],{critical,trivial}=Object.entries(installationMetadata?.duplicatedDependencies).reduce((acc,[dep,packageVersions2])=>{if(allowList.includes(dep))return acc;let hasMultipleMajorVersions=hasMultipleVersions(packageVersions2);return disallowList.includes(dep)&&hasMultipleMajorVersions?acc.critical.push(`${chalk15.redBright(dep)}:
610
+ `,allowList=["@storybook/csf","@storybook/addons","@storybook/channel-postmessage","@storybook/channel-websocket","@storybook/client-api","@storybook/core/dist/client-logger","@storybook/core-client","@storybook/preview-web","@storybook/core/dist/preview-api","@storybook/store","@storybook/components","@storybook/core/dist/router","@storybook/core/dist/theming","@storybook/api","@storybook/manager-api"],disallowList=[Object.keys(rendererPackages),Object.keys(frameworkPackages),"@storybook/core/dist/core-events","@storybook/core/dist/instrumenter","@storybook/core/dist/common","@storybook/core-server","@storybook/manager","@storybook/preview"];function getDuplicatedDepsWarnings(installationMetadata){try{if(!installationMetadata||!installationMetadata?.duplicatedDependencies||Object.keys(installationMetadata.duplicatedDependencies).length===0)return;let messages=[],{critical,trivial}=Object.entries(installationMetadata?.duplicatedDependencies).reduce((acc,[dep,packageVersions2])=>{if(allowList.includes(dep))return acc;let hasMultipleMajorVersions=hasMultipleVersions(packageVersions2);return disallowList.includes(dep)&&hasMultipleMajorVersions?acc.critical.push(`${chalk15.redBright(dep)}:
611
611
  ${packageVersions2.join(", ")}`):acc.trivial.push(`${chalk15.hex("#ff9800")(dep)}:
612
612
  ${packageVersions2.join(", ")}`),acc},{critical:[],trivial:[]});return critical.length===0&&trivial.length===0||(critical.length>0&&(messages.push(`${chalk15.bold("Critical:")} The following dependencies are duplicated and WILL cause unexpected behavior:`),messages.push(critical.join(messageDivider2),`
613
613
  `)),trivial.length>0&&(messages.push(`${chalk15.bold("Attention:")} The following dependencies are duplicated which might cause unexpected behavior:`),messages.push(trivial.join(messageDivider2))),messages.push(`
@@ -690,7 +690,7 @@ ${error.stack}`),fixSummary.failed[f.id]=error.message),fixResults[f.id]="check_
690
690
  Having a clean repro helps us solve your issue faster! 🙏
691
691
  `.trim(),{borderStyle:"round",padding:1,borderColor:"#F1618C"}));}catch(error){throw logger30.error("\u{1F6A8} Failed to create sandbox"),error}};async function promptSelectedTemplate(choices){let{template}=await prompts5({type:"select",message:"\u{1F308} Select the template",name:"template",choices:choices.map(toChoices)},{onCancel:()=>{logger30.log("Command cancelled by the user. Exiting..."),process.exit(1);}});return template||null}var exec2=async(command2,options={},{startMessage,errorMessage,dryRun}={})=>{if(startMessage&&logger.info(startMessage),dryRun){logger.info(`
692
692
  > ${command2}
693
- `);return}return logger.info(command2),new Promise((resolve2,reject)=>{let child=spawn(command2,{...options,shell:!0,stdio:"pipe"});child.stderr.pipe(process.stdout),child.stdout.pipe(process.stdout),child.on("exit",code=>{code===0?resolve2(void 0):(logger.error(chalk15.red(`An error occurred while executing: \`${command2}\``)),errorMessage&&logger.info(errorMessage),reject(new Error(`command exited with code: ${code}: `)));});})},link=async({target,local,start})=>{let storybookDir=process.cwd();try{if((await fse.readJSON("package.json")).name!=="@storybook/root")throw new Error}catch{throw new Error("Expected to run link from the root of the storybook monorepo")}let reproDir=target,reproName=path9.basename(target);if(!local){let reprosDir=path9.join(storybookDir,"../storybook-repros");logger.info(`Ensuring directory ${reprosDir}`),await fse.ensureDir(reprosDir),logger.info(`Cloning ${target}`),await exec2(`git clone ${target}`,{cwd:reprosDir}),reproName=path9.basename(target,path9.extname(target)),reproDir=path9.join(reprosDir,reproName);}let reproPackageJson=await fse.readJSON(path9.join(reproDir,"package.json")),version=sync$2("yarn",["--version"],{cwd:reproDir,stdio:"pipe",shell:!0}).stdout.toString();if(!/^[2-4]\./.test(version)){logger.warn(`\u{1F6A8} Expected yarn 2 or higher in ${reproDir}!`),logger.warn(""),logger.warn("Please set it up with `yarn set version berry`,"),logger.warn(`then link '${reproDir}' with the '--local' flag.`);return}logger.info(`Linking ${reproDir}`),await exec2(`yarn link --all ${storybookDir}`,{cwd:reproDir}),logger.info(`Installing ${reproName}`),await exec2("yarn install",{cwd:reproDir}),reproPackageJson.devDependencies?.vite||await exec2("yarn add -D webpack-hot-middleware",{cwd:reproDir}),await exec2("yarn add @types/node@18",{cwd:reproDir}),start&&(logger.info(`Running ${reproName} storybook`),await exec2("yarn run storybook",{cwd:reproDir}));};function printError(error){instance.heading="",error instanceof Error?error.error?logger.error(error.error):error.stats&&error.stats.compilation.errors?error.stats.compilation.errors.forEach(e=>logger.plain(e)):logger.error(error):error.compilation?.errors&&error.compilation.errors.forEach(e=>logger.plain(e)),logger.line(),logger.warn(error.close?dedent`
693
+ `);return}return logger.info(command2),new Promise((resolve2,reject)=>{let child=spawn(command2,{...options,shell:!0,stdio:"pipe"});child.stderr.pipe(process.stdout),child.stdout.pipe(process.stdout),child.on("exit",code=>{code===0?resolve2(void 0):(logger.error(chalk15.red(`An error occurred while executing: \`${command2}\``)),errorMessage&&logger.info(errorMessage),reject(new Error(`command exited with code: ${code}: `)));});})},link=async({target,local,start})=>{let storybookDir=process.cwd();try{if((await fse.readJSON("package.json")).name!=="@storybook/root")throw new Error}catch{throw new Error("Expected to run link from the root of the storybook monorepo")}let reproDir=target,reproName=path9.basename(target);if(!local){let reprosDir=path9.join(storybookDir,"../storybook-repros");logger.info(`Ensuring directory ${reprosDir}`),await fse.ensureDir(reprosDir),logger.info(`Cloning ${target}`),await exec2(`git clone ${target}`,{cwd:reprosDir}),reproName=path9.basename(target,path9.extname(target)),reproDir=path9.join(reprosDir,reproName);}let reproPackageJson=await fse.readJSON(path9.join(reproDir,"package.json")),version=sync$2("yarn",["--version"],{cwd:reproDir,stdio:"pipe",shell:!0}).stdout.toString();if(!/^[2-4]\./.test(version)){logger.warn(`\u{1F6A8} Expected yarn 2 or higher in ${reproDir}!`),logger.warn(""),logger.warn("Please set it up with `yarn set version berry`,"),logger.warn(`then link '${reproDir}' with the '--local' flag.`);return}logger.info(`Linking ${reproDir}`),await exec2(`yarn link --all --relative ${storybookDir}`,{cwd:reproDir}),logger.info(`Installing ${reproName}`),await exec2("yarn install",{cwd:reproDir}),reproPackageJson.devDependencies?.vite||await exec2("yarn add -D webpack-hot-middleware",{cwd:reproDir}),await exec2("yarn add @types/node@18",{cwd:reproDir}),start&&(logger.info(`Running ${reproName} storybook`),await exec2("yarn run storybook",{cwd:reproDir}));};function printError(error){instance.heading="",error instanceof Error?error.error?logger.error(error.error):error.stats&&error.stats.compilation.errors?error.stats.compilation.errors.forEach(e=>logger.plain(e)):logger.error(error):error.compilation?.errors&&error.compilation.errors.forEach(e=>logger.plain(e)),logger.line(),logger.warn(error.close?dedent`
694
694
  FATAL broken build!, will close the process,
695
695
  Fix the error below and restart storybook.
696
696
  `:dedent`
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var import_node_logger=require("@storybook/node-logger");(0,import_node_logger.deprecate)("Exports from @storybook/cli are removed. Please import from @storybook/core-common instead.");
1
+ "use strict";var import_node_logger=require("@storybook/core/dist/node-logger");(0,import_node_logger.deprecate)("Exports from @storybook/cli are removed. Please import from @storybook/core-common instead.");
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { deprecate } from '@storybook/node-logger';
1
+ import { deprecate } from '@storybook/core/dist/node-logger';
2
2
 
3
3
  deprecate("Exports from @storybook/cli are removed. Please import from @storybook/core-common instead.");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/cli",
3
- "version": "0.0.0-pr-27171-sha-04378b75",
3
+ "version": "0.0.0-pr-27039-sha-9bd21423",
4
4
  "description": "Storybook's CLI - install, dev, build, upgrade, and more",
5
5
  "keywords": [
6
6
  "cli",
@@ -59,14 +59,8 @@
59
59
  "@babel/core": "^7.24.4",
60
60
  "@babel/types": "^7.24.0",
61
61
  "@ndelangen/get-tarball": "^3.0.7",
62
- "@storybook/codemod": "0.0.0-pr-27171-sha-04378b75",
63
- "@storybook/core-common": "0.0.0-pr-27171-sha-04378b75",
64
- "@storybook/core-events": "0.0.0-pr-27171-sha-04378b75",
65
- "@storybook/core-server": "0.0.0-pr-27171-sha-04378b75",
66
- "@storybook/csf-tools": "0.0.0-pr-27171-sha-04378b75",
67
- "@storybook/node-logger": "0.0.0-pr-27171-sha-04378b75",
68
- "@storybook/telemetry": "0.0.0-pr-27171-sha-04378b75",
69
- "@storybook/types": "0.0.0-pr-27171-sha-04378b75",
62
+ "@storybook/codemod": "0.0.0-pr-27039-sha-9bd21423",
63
+ "@storybook/core-server": "0.0.0-pr-27039-sha-9bd21423",
70
64
  "@types/semver": "^7.3.4",
71
65
  "@yarnpkg/fslib": "2.10.3",
72
66
  "@yarnpkg/libzip": "2.3.0",
@@ -103,6 +97,9 @@
103
97
  "strip-json-comments": "^3.1.1",
104
98
  "typescript": "^5.3.2"
105
99
  },
100
+ "peerDependencies": {
101
+ "@storybook/core": "0.0.0-pr-27039-sha-9bd21423"
102
+ },
106
103
  "publishConfig": {
107
104
  "access": "public"
108
105
  },