@storybook/cli 7.6.3 → 8.0.0-alpha.1
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-VVMP3K5N.mjs → chunk-LS5COODT.mjs} +11 -10
- package/dist/generate.js +76 -65
- package/dist/generate.mjs +64 -55
- package/dist/index.d.ts +5 -14
- package/dist/index.js +8 -8
- package/dist/index.mjs +1 -1
- package/package.json +12 -13
- package/scripts/generate-sb-packages-versions.js +72 -0
package/dist/index.d.ts
CHANGED
|
@@ -17,28 +17,20 @@ declare const _default: {
|
|
|
17
17
|
'@storybook/addon-mdx-gfm': string;
|
|
18
18
|
'@storybook/addon-measure': string;
|
|
19
19
|
'@storybook/addon-outline': string;
|
|
20
|
-
'@storybook/addon-themes': string;
|
|
21
|
-
'@storybook/addon-storyshots': string;
|
|
22
|
-
'@storybook/addon-storyshots-puppeteer': string;
|
|
23
20
|
'@storybook/addon-storysource': string;
|
|
21
|
+
'@storybook/addon-themes': string;
|
|
24
22
|
'@storybook/addon-toolbars': string;
|
|
25
23
|
'@storybook/addon-viewport': string;
|
|
26
|
-
'@storybook/addons': string;
|
|
27
24
|
'@storybook/angular': string;
|
|
28
|
-
'@storybook/api': string;
|
|
29
25
|
'@storybook/blocks': string;
|
|
30
26
|
'@storybook/builder-manager': string;
|
|
31
27
|
'@storybook/builder-vite': string;
|
|
32
28
|
'@storybook/builder-webpack5': string;
|
|
33
|
-
'@storybook/channel-postmessage': string;
|
|
34
|
-
'@storybook/channel-websocket': string;
|
|
35
29
|
'@storybook/channels': string;
|
|
36
30
|
'@storybook/cli': string;
|
|
37
|
-
'@storybook/client-api': string;
|
|
38
31
|
'@storybook/client-logger': string;
|
|
39
32
|
'@storybook/codemod': string;
|
|
40
33
|
'@storybook/components': string;
|
|
41
|
-
'@storybook/core-client': string;
|
|
42
34
|
'@storybook/core-common': string;
|
|
43
35
|
'@storybook/core-events': string;
|
|
44
36
|
'@storybook/core-server': string;
|
|
@@ -70,7 +62,6 @@ declare const _default: {
|
|
|
70
62
|
'@storybook/preset-web-components-webpack': string;
|
|
71
63
|
'@storybook/preview': string;
|
|
72
64
|
'@storybook/preview-api': string;
|
|
73
|
-
'@storybook/preview-web': string;
|
|
74
65
|
'@storybook/react': string;
|
|
75
66
|
'@storybook/react-dom-shim': string;
|
|
76
67
|
'@storybook/react-vite': string;
|
|
@@ -79,12 +70,12 @@ declare const _default: {
|
|
|
79
70
|
'@storybook/server': string;
|
|
80
71
|
'@storybook/server-webpack5': string;
|
|
81
72
|
'@storybook/source-loader': string;
|
|
82
|
-
'@storybook/store': string;
|
|
83
73
|
'@storybook/svelte': string;
|
|
84
74
|
'@storybook/svelte-vite': string;
|
|
85
75
|
'@storybook/svelte-webpack5': string;
|
|
86
76
|
'@storybook/sveltekit': string;
|
|
87
77
|
'@storybook/telemetry': string;
|
|
78
|
+
'@storybook/test': string;
|
|
88
79
|
'@storybook/theming': string;
|
|
89
80
|
'@storybook/types': string;
|
|
90
81
|
'@storybook/vue': string;
|
|
@@ -137,7 +128,7 @@ declare abstract class JsPackageManager {
|
|
|
137
128
|
abstract getPackageJSON(packageName: string, basePath?: string): Promise<PackageJson | null>;
|
|
138
129
|
abstract getPackageVersion(packageName: string, basePath?: string): Promise<string | null>;
|
|
139
130
|
setRegistryURL(url: string): Promise<void>;
|
|
140
|
-
getRegistryURL(): Promise<string>;
|
|
131
|
+
getRegistryURL(): Promise<string | undefined>;
|
|
141
132
|
constructor(options?: JsPackageManagerOptions);
|
|
142
133
|
/** Detect whether Storybook gets initialized in a monorepository/workspace environment
|
|
143
134
|
* The cwd doesn't have to be the root of the monorepo, it can be a subdirectory
|
|
@@ -156,7 +147,7 @@ declare abstract class JsPackageManager {
|
|
|
156
147
|
* If there is no `package.json` it will create one.
|
|
157
148
|
*/
|
|
158
149
|
retrievePackageJson(): Promise<PackageJsonWithDepsAndDevDeps>;
|
|
159
|
-
getAllDependencies(): Promise<Record<string, string
|
|
150
|
+
getAllDependencies(): Promise<Partial<Record<string, string>>>;
|
|
160
151
|
/**
|
|
161
152
|
* Add dependencies to a project using `yarn add` or `npm install`.
|
|
162
153
|
*
|
|
@@ -263,7 +254,7 @@ declare class JsPackageManagerFactory {
|
|
|
263
254
|
}
|
|
264
255
|
|
|
265
256
|
declare function parseList(str: string): string[];
|
|
266
|
-
declare function getStorybookVersion(packageManager: JsPackageManager): Promise<string>;
|
|
257
|
+
declare function getStorybookVersion(packageManager: JsPackageManager): Promise<string | null>;
|
|
267
258
|
declare function getEnvConfig(program: Record<string, any>, configEnv: Record<string, any>): void;
|
|
268
259
|
/**
|
|
269
260
|
* Given a file name, creates an object with utilities to manage a log file.
|
package/dist/index.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
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,createLogStream:()=>createLogStream,getEnvConfig:()=>getEnvConfig,getPackageDetails:()=>getPackageDetails,getStorybookVersion:()=>getStorybookVersion,isCorePackage:()=>isCorePackage,parseList:()=>parseList,useNpmWarning:()=>useNpmWarning,versions:()=>versions_default});module.exports=__toCommonJS(src_exports);var versions_default={"@storybook/addon-a11y":"
|
|
1
|
+
"use strict";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,createLogStream:()=>createLogStream,getEnvConfig:()=>getEnvConfig,getPackageDetails:()=>getPackageDetails,getStorybookVersion:()=>getStorybookVersion,isCorePackage:()=>isCorePackage,parseList:()=>parseList,useNpmWarning:()=>useNpmWarning,versions:()=>versions_default});module.exports=__toCommonJS(src_exports);var versions_default={"@storybook/addon-a11y":"8.0.0-alpha.1","@storybook/addon-actions":"8.0.0-alpha.1","@storybook/addon-backgrounds":"8.0.0-alpha.1","@storybook/addon-controls":"8.0.0-alpha.1","@storybook/addon-docs":"8.0.0-alpha.1","@storybook/addon-essentials":"8.0.0-alpha.1","@storybook/addon-highlight":"8.0.0-alpha.1","@storybook/addon-interactions":"8.0.0-alpha.1","@storybook/addon-jest":"8.0.0-alpha.1","@storybook/addon-links":"8.0.0-alpha.1","@storybook/addon-mdx-gfm":"8.0.0-alpha.1","@storybook/addon-measure":"8.0.0-alpha.1","@storybook/addon-outline":"8.0.0-alpha.1","@storybook/addon-storysource":"8.0.0-alpha.1","@storybook/addon-themes":"8.0.0-alpha.1","@storybook/addon-toolbars":"8.0.0-alpha.1","@storybook/addon-viewport":"8.0.0-alpha.1","@storybook/angular":"8.0.0-alpha.1","@storybook/blocks":"8.0.0-alpha.1","@storybook/builder-manager":"8.0.0-alpha.1","@storybook/builder-vite":"8.0.0-alpha.1","@storybook/builder-webpack5":"8.0.0-alpha.1","@storybook/channels":"8.0.0-alpha.1","@storybook/cli":"8.0.0-alpha.1","@storybook/client-logger":"8.0.0-alpha.1","@storybook/codemod":"8.0.0-alpha.1","@storybook/components":"8.0.0-alpha.1","@storybook/core-common":"8.0.0-alpha.1","@storybook/core-events":"8.0.0-alpha.1","@storybook/core-server":"8.0.0-alpha.1","@storybook/core-webpack":"8.0.0-alpha.1","@storybook/csf-plugin":"8.0.0-alpha.1","@storybook/csf-tools":"8.0.0-alpha.1","@storybook/docs-tools":"8.0.0-alpha.1","@storybook/ember":"8.0.0-alpha.1","@storybook/html":"8.0.0-alpha.1","@storybook/html-vite":"8.0.0-alpha.1","@storybook/html-webpack5":"8.0.0-alpha.1","@storybook/instrumenter":"8.0.0-alpha.1","@storybook/manager":"8.0.0-alpha.1","@storybook/manager-api":"8.0.0-alpha.1","@storybook/nextjs":"8.0.0-alpha.1","@storybook/node-logger":"8.0.0-alpha.1","@storybook/postinstall":"8.0.0-alpha.1","@storybook/preact":"8.0.0-alpha.1","@storybook/preact-vite":"8.0.0-alpha.1","@storybook/preact-webpack5":"8.0.0-alpha.1","@storybook/preset-create-react-app":"8.0.0-alpha.1","@storybook/preset-html-webpack":"8.0.0-alpha.1","@storybook/preset-preact-webpack":"8.0.0-alpha.1","@storybook/preset-react-webpack":"8.0.0-alpha.1","@storybook/preset-server-webpack":"8.0.0-alpha.1","@storybook/preset-svelte-webpack":"8.0.0-alpha.1","@storybook/preset-vue-webpack":"8.0.0-alpha.1","@storybook/preset-vue3-webpack":"8.0.0-alpha.1","@storybook/preset-web-components-webpack":"8.0.0-alpha.1","@storybook/preview":"8.0.0-alpha.1","@storybook/preview-api":"8.0.0-alpha.1","@storybook/react":"8.0.0-alpha.1","@storybook/react-dom-shim":"8.0.0-alpha.1","@storybook/react-vite":"8.0.0-alpha.1","@storybook/react-webpack5":"8.0.0-alpha.1","@storybook/router":"8.0.0-alpha.1","@storybook/server":"8.0.0-alpha.1","@storybook/server-webpack5":"8.0.0-alpha.1","@storybook/source-loader":"8.0.0-alpha.1","@storybook/svelte":"8.0.0-alpha.1","@storybook/svelte-vite":"8.0.0-alpha.1","@storybook/svelte-webpack5":"8.0.0-alpha.1","@storybook/sveltekit":"8.0.0-alpha.1","@storybook/telemetry":"8.0.0-alpha.1","@storybook/test":"8.0.0-alpha.1","@storybook/theming":"8.0.0-alpha.1","@storybook/types":"8.0.0-alpha.1","@storybook/vue":"8.0.0-alpha.1","@storybook/vue-vite":"8.0.0-alpha.1","@storybook/vue-webpack5":"8.0.0-alpha.1","@storybook/vue3":"8.0.0-alpha.1","@storybook/vue3-vite":"8.0.0-alpha.1","@storybook/vue3-webpack5":"8.0.0-alpha.1","@storybook/web-components":"8.0.0-alpha.1","@storybook/web-components-vite":"8.0.0-alpha.1","@storybook/web-components-webpack5":"8.0.0-alpha.1",sb:"8.0.0-alpha.1",storybook:"8.0.0-alpha.1"};var import_util_deprecate=__toESM(require("util-deprecate")),useNpmWarning=(0,import_util_deprecate.default)(()=>{},"`--use-npm` is deprecated and will be removed in Storybook 8.0. \nPlease use the `--package-manager=npm` option instead.\nRead more at https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#cli-option---use-npm-deprecated");var import_node_path=__toESM(require("path")),import_cross_spawn=require("cross-spawn"),import_find_up6=require("find-up");var import_sort=__toESM(require("semver/functions/sort")),import_os=require("os"),import_ts_dedent2=__toESM(require("ts-dedent")),import_find_up2=require("find-up"),import_fs2=require("fs"),import_path3=__toESM(require("path")),import_semver4=__toESM(require("semver")),import_node_logger=require("@storybook/node-logger");var import_chalk2=__toESM(require("chalk")),import_semver3=require("semver"),import_execa=require("execa"),import_path=__toESM(require("path")),import_fs=__toESM(require("fs")),import_ts_dedent=__toESM(require("ts-dedent")),import_fs_extra2=require("fs-extra"),import_tiny_invariant3=__toESM(require("tiny-invariant"));var import_chalk=__toESM(require("chalk"));var import_fs_extra=__toESM(require("fs-extra"));var import_semver2=require("semver"),import_strip_json_comments=__toESM(require("strip-json-comments")),import_find_up=__toESM(require("find-up")),import_tiny_invariant2=__toESM(require("tiny-invariant"));var import_get_tarball=__toESM(require("@ndelangen/get-tarball")),import_get_npm_tarball_url=__toESM(require("get-npm-tarball-url")),tempy=__toESM(require("tempy")),import_tiny_invariant=__toESM(require("tiny-invariant"));var import_semver=require("semver");var ProjectType=(ProjectType2=>(ProjectType2.UNDETECTED="UNDETECTED",ProjectType2.UNSUPPORTED="UNSUPPORTED",ProjectType2.REACT="REACT",ProjectType2.REACT_SCRIPTS="REACT_SCRIPTS",ProjectType2.REACT_NATIVE="REACT_NATIVE",ProjectType2.REACT_PROJECT="REACT_PROJECT",ProjectType2.WEBPACK_REACT="WEBPACK_REACT",ProjectType2.NEXTJS="NEXTJS",ProjectType2.VUE="VUE",ProjectType2.VUE3="VUE3",ProjectType2.SFC_VUE="SFC_VUE",ProjectType2.ANGULAR="ANGULAR",ProjectType2.EMBER="EMBER",ProjectType2.WEB_COMPONENTS="WEB_COMPONENTS",ProjectType2.HTML="HTML",ProjectType2.QWIK="QWIK",ProjectType2.PREACT="PREACT",ProjectType2.SVELTE="SVELTE",ProjectType2.SVELTEKIT="SVELTEKIT",ProjectType2.SERVER="SERVER",ProjectType2.NX="NX",ProjectType2.SOLID="SOLID",ProjectType2))(ProjectType||{});var notInstallableProjectTypes=["UNDETECTED","UNSUPPORTED","NX"],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(`
|
|
5
5
|
`);logger.error(`${newErrorInfo}
|
|
6
6
|
`);return}process.stdout.write(`. ${import_chalk.default.green("\u2713")}
|
|
7
|
-
`)});var HandledError=class extends Error{constructor(
|
|
8
|
-
`;await(0,import_fs_extra2.writeFile)(this.packageJsonPath(),content,"utf8")}async retrievePackageJson(){let packageJson;try{packageJson=await this.readPackageJson()}catch(err){if(
|
|
9
|
-
There was an error while reading the package.json file at ${this.packageJsonPath()}: ${
|
|
7
|
+
`)});var HandledError=class extends Error{constructor(error){super(String(error));this.handled=!0;typeof error!="string"&&(this.cause=error)}};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{async setRegistryURL(url){url?await this.executeCommand({command:"npm",args:["config","set","registry",url]}):await this.executeCommand({command:"npm",args:["config","delete","registry"]})}async getRegistryURL(){let url=(await this.executeCommand({command:"npm",args:["config","get","registry"]})).trim();return url==="undefined"?void 0:url}constructor(options){this.cwd=(options==null?void 0:options.cwd)||process.cwd()}isStorybookInMonorepo(){let cwd=process.cwd();for(;;){try{let turboJsonPath=`${cwd}/turbo.json`,rushJsonPath=`${cwd}/rush.json`;if(import_fs.default.existsSync(turboJsonPath)||import_fs.default.existsSync(rushJsonPath))return!0;let packageJsonPath=require.resolve(`${cwd}/package.json`),packageJsonFile=(0,import_fs_extra2.readFileSync)(packageJsonPath,"utf8");if(JSON.parse(packageJsonFile).workspaces)return!0}catch{}let parentDir=import_path.default.dirname(cwd);if(parentDir===cwd)break;cwd=parentDir}return!1}async installDependencies(){let done=commandLog("Preparing to install dependencies");done(),logger2.log(),logger2.log(),done=commandLog("Installing dependencies");try{await this.runInstall(),done()}catch(e){throw done("An error occurred while installing dependencies."),new HandledError(e)}}packageJsonPath(){if(!this.cwd)throw new Error("Missing cwd");return import_path.default.resolve(this.cwd,"package.json")}async readPackageJson(){let packageJsonPath=this.packageJsonPath();if(!import_fs.default.existsSync(packageJsonPath))throw new Error(`Could not read package.json file at ${packageJsonPath}`);let jsonContent=await(0,import_fs_extra2.readFile)(packageJsonPath,"utf8");return JSON.parse(jsonContent)}async writePackageJson(packageJson){let packageJsonToWrite={...packageJson};packageJsonToWrite.dependencies&&Object.keys(packageJsonToWrite.dependencies).length===0&&delete packageJsonToWrite.dependencies,packageJsonToWrite.devDependencies&&Object.keys(packageJsonToWrite.devDependencies).length===0&&delete packageJsonToWrite.devDependencies,packageJsonToWrite.peerDependencies&&Object.keys(packageJsonToWrite.peerDependencies).length===0&&delete packageJsonToWrite.peerDependencies;let content=`${JSON.stringify(packageJsonToWrite,null,2)}
|
|
8
|
+
`;await(0,import_fs_extra2.writeFile)(this.packageJsonPath(),content,"utf8")}async retrievePackageJson(){let packageJson;try{packageJson=await this.readPackageJson()}catch(err){let errMessage=String(err);if(errMessage.includes("Could not read package.json"))await this.initPackageJson(),packageJson=await this.readPackageJson();else throw new Error(import_ts_dedent.default`
|
|
9
|
+
There was an error while reading the package.json file at ${this.packageJsonPath()}: ${errMessage}
|
|
10
10
|
Please fix the error and try again.
|
|
11
|
-
`)}return{...packageJson,dependencies:{...packageJson.dependencies},devDependencies:{...packageJson.devDependencies},peerDependencies:{...packageJson.peerDependencies}}}async getAllDependencies(){let{dependencies,devDependencies,peerDependencies}=await this.retrievePackageJson();return{...dependencies,...devDependencies,...peerDependencies}}async 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},await this.writePackageJson(packageJson)}else try{await this.runAddDeps(dependencies
|
|
12
|
-
An error occurred while installing dependencies:`),logger2.log(e.message),new HandledError(e)}}async 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]}),await this.writePackageJson(packageJson)}else try{await this.runRemoveDeps(dependencies)}catch(e){throw logger2.error("An error occurred while removing dependencies."),logger2.log(e
|
|
13
|
-
${import_chalk2.default.yellow(e
|
|
14
|
-
${import_chalk2.default.red(e
|
|
11
|
+
`)}return{...packageJson,dependencies:{...packageJson.dependencies},devDependencies:{...packageJson.devDependencies},peerDependencies:{...packageJson.peerDependencies}}}async getAllDependencies(){let{dependencies,devDependencies,peerDependencies}=await this.retrievePackageJson();return{...dependencies,...devDependencies,...peerDependencies}}async addDependencies(options,dependencies){let{skipInstall}=options;if(skipInstall){let{packageJson}=options;(0,import_tiny_invariant3.default)(packageJson,"Missing packageJson.");let 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},await this.writePackageJson(packageJson)}else try{await this.runAddDeps(dependencies,!!options.installAsDevDependencies)}catch(e){throw logger2.error(`
|
|
12
|
+
An error occurred while installing dependencies:`),logger2.log(e.message),new HandledError(e)}}async removeDependencies(options,dependencies){let{skipInstall}=options;if(skipInstall){let{packageJson}=options;(0,import_tiny_invariant3.default)(packageJson,"Missing packageJson."),dependencies.forEach(dep=>{packageJson.devDependencies&&delete packageJson.devDependencies[dep],packageJson.dependencies&&delete packageJson.dependencies[dep]}),await this.writePackageJson(packageJson)}else try{await this.runRemoveDeps(dependencies)}catch(e){throw logger2.error("An error occurred while removing dependencies."),logger2.log(String(e)),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(`
|
|
13
|
+
${import_chalk2.default.yellow(String(e))}`),current;throw logger2.error(`
|
|
14
|
+
${import_chalk2.default.red(String(e))}`),new HandledError(e)}return`^${current&&(!constraint||(0,import_semver3.satisfies)(current,constraint))&&(0,import_semver3.gt)(current,latest)?current:latest}`}async latestVersion(packageName,constraint){if(!constraint)return this.runGetVersions(packageName,!1);let latestVersionSatisfyingTheConstraint=(await this.runGetVersions(packageName,!0)).reverse().find(version=>(0,import_semver3.satisfies)(version,constraint));return(0,import_tiny_invariant3.default)(latestVersionSatisfyingTheConstraint!=null,"No version satisfying the constraint."),latestVersionSatisfyingTheConstraint}async 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;await this.addScripts({storybook:[preCommand,storybookCmd].filter(Boolean).join(" && "),"build-storybook":[preCommand,buildStorybookCmd].filter(Boolean).join(" && ")})}async addScripts(scripts){let packageJson=await this.retrievePackageJson();await this.writePackageJson({...packageJson,scripts:{...packageJson.scripts,...scripts}})}async addPackageResolutions(versions){let packageJson=await this.retrievePackageJson(),resolutions=this.getResolutions(packageJson,versions);this.writePackageJson({...packageJson,...resolutions})}executeCommandSync({command,args=[],stdio,cwd,ignoreError=!1,env,...execaOptions}){try{return(0,import_execa.sync)(command,args,{cwd:cwd??this.cwd,stdio:stdio??"pipe",encoding:"utf-8",shell:!0,cleanup:!0,env,...execaOptions}).stdout??""}catch(err){if(ignoreError!==!0)throw err;return""}}async executeCommand({command,args=[],stdio,cwd,ignoreError=!1,env,...execaOptions}){try{return(await(0,import_execa.command)([command,...args].join(" "),{cwd:cwd??this.cwd,stdio:stdio??"pipe",encoding:"utf-8",shell:!0,cleanup:!0,env,...execaOptions})).stdout??""}catch(err){if(ignoreError!==!0)throw err;return""}}};var import_fs_extra3=require("fs-extra"),import_path2=require("path"),import_tempy=__toESM(require("tempy")),import_core_common=require("@storybook/core-common");function parseList(str){return str.split(",").map(item=>item.trim()).filter(item=>item.length>0)}async function getStorybookVersion(packageManager){var _a;return(_a=(await Promise.all(Object.keys(import_core_common.rendererPackages).map(async pkg=>({name:pkg,version:await packageManager.getPackageVersion(pkg)})))).filter(({version})=>!!version)[0])==null?void 0:_a.version}function getEnvConfig(program,configEnv){Object.keys(configEnv).forEach(fieldName=>{let envVarName=configEnv[fieldName],envVarValue=process.env[envVarName];envVarValue&&(program[fieldName]=envVarValue)})}var createLogStream=async(logFileName="storybook.log")=>{let finalLogPath=(0,import_path2.join)(process.cwd(),logFileName),temporaryLogPath=import_tempy.default.file({name:logFileName}),logStream=(0,import_fs_extra3.createWriteStream)(temporaryLogPath,{encoding:"utf8"});return new Promise((resolve,reject)=>{logStream.once("open",()=>{resolve({logStream,moveLogFile:async()=>(0,import_fs_extra3.move)(temporaryLogPath,finalLogPath,{overwrite:!0}),clearLogFile:async()=>(0,import_fs_extra3.writeFile)(temporaryLogPath,""),removeLogFile:async()=>(0,import_fs_extra3.remove)(temporaryLogPath),readLogFile:async()=>(0,import_fs_extra3.readFile)(temporaryLogPath,"utf8")})}),logStream.once("error",reject)})},PACKAGES_EXCLUDED_FROM_CORE=["@storybook/addon-bench","@storybook/addon-console","@storybook/addon-onboarding","@storybook/addon-postcss","@storybook/addon-designs","@storybook/addon-styling","@storybook/addon-styling-webpack","@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","@nrwl/storybook","@nx/storybook"],isCorePackage=pkg=>pkg.startsWith("@storybook/")&&!pkg.startsWith("@storybook/preset-")&&!PACKAGES_EXCLUDED_FROM_CORE.includes(pkg);var NPM_ERROR_REGEX=/npm ERR! code (\w+)/,NPM_ERROR_CODES={E401:"Authentication failed or is required.",E403:"Access to the resource is forbidden.",E404:"Requested resource not found.",EACCES:"Permission issue.",EAI_FAIL:"DNS lookup failed.",EBADENGINE:"Engine compatibility check failed.",EBADPLATFORM:"Platform not supported.",ECONNREFUSED:"Connection refused.",ECONNRESET:"Connection reset.",EEXIST:"File or directory already exists.",EINVALIDTYPE:"Invalid type encountered.",EISGIT:"Git operation failed or conflicts with an existing file.",EJSONPARSE:"Error parsing JSON data.",EMISSINGARG:"Required argument missing.",ENEEDAUTH:"Authentication needed.",ENOAUDIT:"No audit available.",ENOENT:"File or directory does not exist.",ENOGIT:"Git not found or failed to run.",ENOLOCK:"Lockfile missing.",ENOSPC:"Insufficient disk space.",ENOTFOUND:"Resource not found.",EOTP:"One-time password required.",EPERM:"Permission error.",EPUBLISHCONFLICT:"Conflict during package publishing.",ERESOLVE:"Dependency resolution error.",EROFS:"File system is read-only.",ERR_SOCKET_TIMEOUT:"Socket timed out.",ETARGET:"Package target not found.",ETIMEDOUT:"Operation timed out.",ETOOMANYARGS:"Too many arguments provided.",EUNKNOWNTYPE:"Unknown type encountered."},NPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="npm"}async initPackageJson(){await this.executeCommand({command:"npm",args:["init","-y"]})}getRunStorybookCommand(){return"npm run storybook"}getRunCommand(command){return`npm run ${command}`}async getNpmVersion(){return this.executeCommand({command:"npm",args:["--version"]})}async getPackageJSON(packageName,basePath=this.cwd){let packageJsonPath=await(0,import_find_up2.sync)(dir=>{let possiblePath=import_path3.default.join(dir,"node_modules",packageName,"package.json");return(0,import_fs2.existsSync)(possiblePath)?possiblePath:void 0},{cwd:basePath});return packageJsonPath?JSON.parse((0,import_fs2.readFileSync)(packageJsonPath,"utf-8")):null}async getPackageVersion(packageName,basePath=this.cwd){var _a;let packageJson=await this.getPackageJSON(packageName,basePath);return packageJson?((_a=import_semver4.default.coerce(packageJson.version))==null?void 0:_a.version)??null:null}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}runPackageCommandSync(command,args,cwd,stdio){return this.executeCommandSync({command:"npm",args:["exec","--",command,...args],cwd,stdio})}async runPackageCommand(command,args,cwd){return this.executeCommand({command:"npm",args:["exec","--",command,...args],cwd})}async findInstallations(){let exec=async({depth})=>{let pipeToNull=(0,import_os.platform)()==="win32"?"2>NUL":"2>/dev/null";return this.executeCommand({command:"npm",args:["ls","--json",`--depth=${depth}`,pipeToNull],env:{FORCE_COLOR:"false"}})};try{let commandResult=await exec({depth:99}),parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{try{let commandResult=await exec({depth:0}),parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{import_node_logger.logger.warn("An issue occurred while trying to find dependencies metadata using npm.");return}}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}async runInstall(){await this.executeCommand({command:"npm",args:["install",...this.getInstallArgs()],stdio:"inherit"})}async runAddDeps(dependencies,installAsDevDependencies){let{logStream,readLogFile,moveLogFile,removeLogFile}=await createLogStream(),args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]);try{await this.executeCommand({command:"npm",args:["install",...args,...this.getInstallArgs()],stdio:process.env.CI?"inherit":["ignore",logStream,logStream]})}catch{let stdout=await readLogFile(),errorMessage=this.parseErrorFromLogs(stdout);throw await moveLogFile(),new Error(import_ts_dedent2.default`${errorMessage}
|
|
15
15
|
|
|
16
16
|
Please check the logfile generated at ./storybook.log for troubleshooting and try again.`)}await removeLogFile()}async runRemoveDeps(dependencies){let args=[...dependencies];await this.executeCommand({command:"npm",args:["uninstall",...this.getInstallArgs(),...args],stdio:"inherit"})}async runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=await this.executeCommand({command:"npm",args:["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",dedupeCommand:"npm dedupe"}}parseErrorFromLogs(logs){let finalMessage="NPM error",match=logs.match(NPM_ERROR_REGEX);if(match){let errorCode=match[1];errorCode&&(finalMessage=`${finalMessage} ${errorCode}`);let errorMessage=NPM_ERROR_CODES[errorCode];errorMessage&&(finalMessage=`${finalMessage} - ${errorMessage}`)}return finalMessage.trim()}};var import_fs_extra4=require("fs-extra"),import_ts_dedent3=__toESM(require("ts-dedent")),import_find_up3=require("find-up"),import_path4=__toESM(require("path")),import_fs3=__toESM(require("fs")),import_semver5=__toESM(require("semver"));var PNPM_ERROR_REGEX=/(ELIFECYCLE|ERR_PNPM_[A-Z_]+)\s+(.*)/i,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)}async initPackageJson(){await this.executeCommand({command:"pnpm",args:["init"]})}getRunStorybookCommand(){return"pnpm run storybook"}getRunCommand(command){return`pnpm run ${command}`}async getPnpmVersion(){return this.executeCommand({command:"pnpm",args:["--version"]})}getInstallArgs(){return this.installArgs||(this.installArgs=[],this.detectWorkspaceRoot()&&this.installArgs.push("-w")),this.installArgs}runPackageCommandSync(command,args,cwd,stdio){return this.executeCommandSync({command:"pnpm",args:["exec",command,...args],cwd,stdio})}async runPackageCommand(command,args,cwd){return this.executeCommand({command:"pnpm",args:["exec",command,...args],cwd})}async findInstallations(pattern){let commandResult=await this.executeCommand({command:"pnpm",args:["list",pattern.map(p=>`"${p}"`).join(" "),"--json","--depth=99"],env:{FORCE_COLOR:"false"}});try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}async getPackageJSON(packageName,basePath=this.cwd){let pnpapiPath=(0,import_find_up3.sync)([".pnp.js",".pnp.cjs"],{cwd:basePath});if(pnpapiPath)try{let pnpApi=require(pnpapiPath),resolvedPath=await pnpApi.resolveToUnqualified(packageName,basePath,{considerBuiltins:!1}),pkgLocator=pnpApi.findPackageLocator(resolvedPath),pkg=pnpApi.getPackageInformation(pkgLocator);return JSON.parse(import_fs3.default.readFileSync(import_path4.default.join(pkg.packageLocation,"package.json"),"utf-8"))}catch(error){return error.code!=="MODULE_NOT_FOUND"&&console.error("Error while fetching package version in PNPM PnP mode:",error),null}let packageJsonPath=await(0,import_find_up3.sync)(dir=>{let possiblePath=import_path4.default.join(dir,"node_modules",packageName,"package.json");return import_fs3.default.existsSync(possiblePath)?possiblePath:void 0},{cwd:basePath});return packageJsonPath?JSON.parse(import_fs3.default.readFileSync(packageJsonPath,"utf-8")):null}async getPackageVersion(packageName,basePath=this.cwd){var _a;let packageJSON=await this.getPackageJSON(packageName,basePath);return packageJSON?((_a=import_semver5.default.coerce(packageJSON.version))==null?void 0:_a.version)??null:null}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}async runInstall(){await this.executeCommand({command:"pnpm",args:["install",...this.getInstallArgs()],stdio:"inherit"})}async runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]);let{logStream,readLogFile,moveLogFile,removeLogFile}=await createLogStream();try{await this.executeCommand({command:"pnpm",args:["add",...args,...this.getInstallArgs()],stdio:process.env.CI?"inherit":["ignore",logStream,logStream]})}catch{let stdout=await readLogFile(),errorMessage=this.parseErrorFromLogs(stdout);throw await moveLogFile(),new Error(import_ts_dedent3.default`${errorMessage}
|
|
17
17
|
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { JsPackageManager, JsPackageManagerFactory, createLogStream, getEnvConfig, getPackageDetails, getStorybookVersion, isCorePackage, parseList, useNpmWarning, versions_default as versions } from './chunk-
|
|
1
|
+
export { JsPackageManager, JsPackageManagerFactory, createLogStream, getEnvConfig, getPackageDetails, getStorybookVersion, isCorePackage, parseList, useNpmWarning, versions_default as versions } from './chunk-LS5COODT.mjs';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storybook/cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.0-alpha.1",
|
|
4
4
|
"description": "Storybook's CLI - easiest method of adding storybook to your projects",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -59,14 +59,14 @@
|
|
|
59
59
|
"@babel/preset-env": "^7.23.2",
|
|
60
60
|
"@babel/types": "^7.23.0",
|
|
61
61
|
"@ndelangen/get-tarball": "^3.0.7",
|
|
62
|
-
"@storybook/codemod": "
|
|
63
|
-
"@storybook/core-common": "
|
|
64
|
-
"@storybook/core-events": "
|
|
65
|
-
"@storybook/core-server": "
|
|
66
|
-
"@storybook/csf-tools": "
|
|
67
|
-
"@storybook/node-logger": "
|
|
68
|
-
"@storybook/telemetry": "
|
|
69
|
-
"@storybook/types": "
|
|
62
|
+
"@storybook/codemod": "8.0.0-alpha.1",
|
|
63
|
+
"@storybook/core-common": "8.0.0-alpha.1",
|
|
64
|
+
"@storybook/core-events": "8.0.0-alpha.1",
|
|
65
|
+
"@storybook/core-server": "8.0.0-alpha.1",
|
|
66
|
+
"@storybook/csf-tools": "8.0.0-alpha.1",
|
|
67
|
+
"@storybook/node-logger": "8.0.0-alpha.1",
|
|
68
|
+
"@storybook/telemetry": "8.0.0-alpha.1",
|
|
69
|
+
"@storybook/types": "8.0.0-alpha.1",
|
|
70
70
|
"@types/semver": "^7.3.4",
|
|
71
71
|
"@yarnpkg/fslib": "2.10.3",
|
|
72
72
|
"@yarnpkg/libzip": "2.3.0",
|
|
@@ -88,31 +88,30 @@
|
|
|
88
88
|
"ora": "^5.4.1",
|
|
89
89
|
"prettier": "^2.8.0",
|
|
90
90
|
"prompts": "^2.4.0",
|
|
91
|
-
"puppeteer-core": "^2.1.1",
|
|
92
91
|
"read-pkg-up": "^7.0.1",
|
|
93
92
|
"semver": "^7.3.7",
|
|
94
93
|
"simple-update-notifier": "^2.0.0",
|
|
95
94
|
"strip-json-comments": "^3.0.1",
|
|
96
95
|
"tempy": "^1.0.1",
|
|
96
|
+
"tiny-invariant": "^1.3.1",
|
|
97
97
|
"ts-dedent": "^2.0.0",
|
|
98
98
|
"util-deprecate": "^1.0.2"
|
|
99
99
|
},
|
|
100
100
|
"devDependencies": {
|
|
101
|
-
"@storybook/client-api": "7.6.3",
|
|
102
101
|
"@types/cross-spawn": "^6.0.2",
|
|
103
102
|
"@types/prompts": "^2.0.9",
|
|
104
|
-
"@types/puppeteer-core": "^2.1.0",
|
|
105
103
|
"@types/semver": "^7.3.4",
|
|
106
104
|
"@types/util-deprecate": "^1.0.0",
|
|
107
105
|
"boxen": "^5.1.2",
|
|
108
106
|
"slash": "^5.0.0",
|
|
109
107
|
"strip-json-comments": "^3.1.1",
|
|
110
|
-
"typescript": "
|
|
108
|
+
"typescript": "^5.3.2"
|
|
111
109
|
},
|
|
112
110
|
"publishConfig": {
|
|
113
111
|
"access": "public"
|
|
114
112
|
},
|
|
115
113
|
"bundler": {
|
|
114
|
+
"pre": "./scripts/generate-sb-packages-versions.js",
|
|
116
115
|
"entries": [
|
|
117
116
|
"./src/generate.ts",
|
|
118
117
|
"./src/index.ts"
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { promisify } = require('util');
|
|
4
|
+
const { readJson, writeFile } = require('fs-extra');
|
|
5
|
+
const { exec } = require('child_process');
|
|
6
|
+
const path = require('path');
|
|
7
|
+
const semver = require('semver');
|
|
8
|
+
const { default: dedent } = require('ts-dedent');
|
|
9
|
+
|
|
10
|
+
const rootDirectory = path.join(__dirname, '..', '..', '..');
|
|
11
|
+
|
|
12
|
+
const logger = console;
|
|
13
|
+
|
|
14
|
+
const getMonorepoPackages = async () => {
|
|
15
|
+
const process = promisify(exec);
|
|
16
|
+
const contents = await process('yarn workspaces list --json --no-private', {
|
|
17
|
+
cwd: rootDirectory,
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
return JSON.parse(`[${contents.stdout.trim().split('\n').join(',')}]`).map((w) => w.location);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const run = async () => {
|
|
24
|
+
let updatedVersion = process.argv[process.argv.length - 1];
|
|
25
|
+
|
|
26
|
+
if (!semver.valid(updatedVersion)) {
|
|
27
|
+
updatedVersion = (await readJson(path.join(rootDirectory, 'package.json'))).version;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const storybookPackages = await getMonorepoPackages();
|
|
31
|
+
|
|
32
|
+
const packageToVersionMap = (
|
|
33
|
+
await Promise.all(
|
|
34
|
+
storybookPackages.map(async (location) => {
|
|
35
|
+
const { name, version } = await readJson(
|
|
36
|
+
path.join(rootDirectory, location, 'package.json')
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
name,
|
|
41
|
+
version,
|
|
42
|
+
};
|
|
43
|
+
})
|
|
44
|
+
)
|
|
45
|
+
)
|
|
46
|
+
.filter(({ name }) => /^(@storybook|sb$|storybook$)/.test(name))
|
|
47
|
+
// As some previous steps are asynchronous order is not always the same so sort them to avoid that
|
|
48
|
+
.sort((package1, package2) => package1.name.localeCompare(package2.name))
|
|
49
|
+
.reduce((acc, { name }) => ({ ...acc, [name]: updatedVersion }), {});
|
|
50
|
+
|
|
51
|
+
const versionsPath = path.join(__dirname, '..', 'src', 'versions.ts');
|
|
52
|
+
|
|
53
|
+
await writeFile(
|
|
54
|
+
versionsPath,
|
|
55
|
+
dedent`
|
|
56
|
+
// auto generated file, do not edit
|
|
57
|
+
export default ${JSON.stringify(packageToVersionMap, null, 2)}
|
|
58
|
+
`
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
logger.log(`Updating versions and formatting results at: ${versionsPath}`);
|
|
62
|
+
|
|
63
|
+
const prettierBin = path.join(rootDirectory, '..', 'scripts', 'node_modules', '.bin', 'prettier');
|
|
64
|
+
exec(`${prettierBin} --write ${versionsPath}`, {
|
|
65
|
+
cwd: path.join(rootDirectory),
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
run().catch((e) => {
|
|
70
|
+
logger.error(e);
|
|
71
|
+
process.exit(1);
|
|
72
|
+
});
|