@storybook/cli 8.0.0-alpha.8 → 8.0.0-beta.0

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/index.d.ts CHANGED
@@ -1,305 +1,2 @@
1
- import { CommonOptions } from 'execa';
2
- import { PackageJson } from '@storybook/types';
3
- export { PackageJson } from '@storybook/types';
4
- import { WriteStream } from 'fs-extra';
5
1
 
6
- declare const _default: {
7
- '@storybook/addon-a11y': string;
8
- '@storybook/addon-actions': string;
9
- '@storybook/addon-backgrounds': string;
10
- '@storybook/addon-controls': string;
11
- '@storybook/addon-docs': string;
12
- '@storybook/addon-essentials': string;
13
- '@storybook/addon-highlight': string;
14
- '@storybook/addon-interactions': string;
15
- '@storybook/addon-jest': string;
16
- '@storybook/addon-links': string;
17
- '@storybook/addon-mdx-gfm': string;
18
- '@storybook/addon-measure': string;
19
- '@storybook/addon-outline': string;
20
- '@storybook/addon-storysource': string;
21
- '@storybook/addon-themes': string;
22
- '@storybook/addon-toolbars': string;
23
- '@storybook/addon-viewport': string;
24
- '@storybook/angular': string;
25
- '@storybook/blocks': string;
26
- '@storybook/builder-manager': string;
27
- '@storybook/builder-vite': string;
28
- '@storybook/builder-webpack5': string;
29
- '@storybook/channels': string;
30
- '@storybook/cli': string;
31
- '@storybook/client-logger': string;
32
- '@storybook/codemod': string;
33
- '@storybook/components': string;
34
- '@storybook/core-common': string;
35
- '@storybook/core-events': string;
36
- '@storybook/core-server': string;
37
- '@storybook/core-webpack': string;
38
- '@storybook/csf-plugin': string;
39
- '@storybook/csf-tools': string;
40
- '@storybook/docs-tools': string;
41
- '@storybook/ember': string;
42
- '@storybook/html': string;
43
- '@storybook/html-vite': string;
44
- '@storybook/html-webpack5': string;
45
- '@storybook/instrumenter': string;
46
- '@storybook/manager': string;
47
- '@storybook/manager-api': string;
48
- '@storybook/nextjs': string;
49
- '@storybook/node-logger': string;
50
- '@storybook/preact': string;
51
- '@storybook/preact-vite': string;
52
- '@storybook/preact-webpack5': string;
53
- '@storybook/preset-create-react-app': string;
54
- '@storybook/preset-html-webpack': string;
55
- '@storybook/preset-preact-webpack': string;
56
- '@storybook/preset-react-webpack': string;
57
- '@storybook/preset-server-webpack': string;
58
- '@storybook/preset-svelte-webpack': string;
59
- '@storybook/preset-vue3-webpack': string;
60
- '@storybook/preset-web-components-webpack': string;
61
- '@storybook/preview': string;
62
- '@storybook/preview-api': string;
63
- '@storybook/react': string;
64
- '@storybook/react-dom-shim': string;
65
- '@storybook/react-vite': string;
66
- '@storybook/react-webpack5': string;
67
- '@storybook/router': string;
68
- '@storybook/server': string;
69
- '@storybook/server-webpack5': string;
70
- '@storybook/source-loader': string;
71
- '@storybook/svelte': string;
72
- '@storybook/svelte-vite': string;
73
- '@storybook/svelte-webpack5': string;
74
- '@storybook/sveltekit': string;
75
- '@storybook/telemetry': string;
76
- '@storybook/test': string;
77
- '@storybook/theming': string;
78
- '@storybook/types': string;
79
- '@storybook/vue3': string;
80
- '@storybook/vue3-vite': string;
81
- '@storybook/vue3-webpack5': string;
82
- '@storybook/web-components': string;
83
- '@storybook/web-components-vite': string;
84
- '@storybook/web-components-webpack5': string;
85
- sb: string;
86
- storybook: string;
87
- };
88
-
89
- type PackageJsonWithDepsAndDevDeps = PackageJson & Required<Pick<PackageJson, 'dependencies' | 'devDependencies'>>;
90
- type PackageJsonWithMaybeDeps = Partial<Pick<PackageJson, 'dependencies' | 'devDependencies' | 'peerDependencies' | 'files'>>;
91
-
92
- type PackageMetadata = {
93
- version: string;
94
- location?: string;
95
- reasons?: string[];
96
- };
97
- type InstallationMetadata = {
98
- dependencies: Record<string, PackageMetadata[]>;
99
- duplicatedDependencies: Record<string, string[]>;
100
- infoCommand: string;
101
- dedupeCommand: string;
102
- };
103
-
104
- type PackageManagerName = 'npm' | 'yarn1' | 'yarn2' | 'pnpm';
105
- /**
106
- * Extract package name and version from input
107
- *
108
- * @param pkg A string like `@storybook/cli`, `react` or `react@^16`
109
- * @return A tuple of 2 elements: [packageName, packageVersion]
110
- */
111
- declare function getPackageDetails(pkg: string): [string, string?];
112
- interface JsPackageManagerOptions {
113
- cwd?: string;
114
- }
115
- declare abstract class JsPackageManager {
116
- abstract readonly type: PackageManagerName;
117
- abstract initPackageJson(): Promise<void>;
118
- abstract getRunStorybookCommand(): string;
119
- abstract getRunCommand(command: string): string;
120
- readonly cwd?: string;
121
- abstract getPackageJSON(packageName: string, basePath?: string): Promise<PackageJson | null>;
122
- abstract getPackageVersion(packageName: string, basePath?: string): Promise<string | null>;
123
- setRegistryURL(url: string): Promise<void>;
124
- getRegistryURL(): Promise<string | undefined>;
125
- constructor(options?: JsPackageManagerOptions);
126
- /** Detect whether Storybook gets initialized in a monorepository/workspace environment
127
- * The cwd doesn't have to be the root of the monorepo, it can be a subdirectory
128
- * @returns true, if Storybook is initialized inside a monorepository/workspace
129
- */
130
- isStorybookInMonorepo(): boolean;
131
- /**
132
- * Install dependencies listed in `package.json`
133
- */
134
- installDependencies(): Promise<void>;
135
- packageJsonPath(): string;
136
- readPackageJson(): Promise<PackageJson>;
137
- writePackageJson(packageJson: PackageJson): Promise<void>;
138
- /**
139
- * Read the `package.json` file available in the directory the command was call from
140
- * If there is no `package.json` it will create one.
141
- */
142
- retrievePackageJson(): Promise<PackageJsonWithDepsAndDevDeps>;
143
- getAllDependencies(): Promise<Partial<Record<string, string>>>;
144
- /**
145
- * Add dependencies to a project using `yarn add` or `npm install`.
146
- *
147
- * @param {Object} options contains `skipInstall`, `packageJson` and `installAsDevDependencies` which we use to determine how we install packages.
148
- * @param {Array} dependencies contains a list of packages to add.
149
- * @example
150
- * addDependencies(options, [
151
- * `@storybook/react@${storybookVersion}`,
152
- * `@storybook/addon-actions@${actionsVersion}`,
153
- * `@storybook/addon-links@${linksVersion}`,
154
- * `@storybook/preview-api@${addonsVersion}`,
155
- * ]);
156
- */
157
- addDependencies(options: {
158
- skipInstall?: boolean;
159
- installAsDevDependencies?: boolean;
160
- packageJson?: PackageJson;
161
- }, dependencies: string[]): Promise<void>;
162
- /**
163
- * Remove dependencies from a project using `yarn remove` or `npm uninstall`.
164
- *
165
- * @param {Object} options contains `skipInstall`, `packageJson` and `installAsDevDependencies` which we use to determine how we install packages.
166
- * @param {Array} dependencies contains a list of packages to remove.
167
- * @example
168
- * removeDependencies(options, [
169
- * `@storybook/react`,
170
- * `@storybook/addon-actions`,
171
- * ]);
172
- */
173
- removeDependencies(options: {
174
- skipInstall?: boolean;
175
- packageJson?: PackageJson;
176
- }, dependencies: string[]): Promise<void>;
177
- /**
178
- * Return an array of strings matching following format: `<package_name>@<package_latest_version>`
179
- *
180
- * @param packages
181
- */
182
- getVersionedPackages(packages: string[]): Promise<string[]>;
183
- /**
184
- * Return an array of string standing for the latest version of the input packages.
185
- * To be able to identify which version goes with which package the order of the input array is keep.
186
- *
187
- * @param packageNames
188
- */
189
- getVersions(...packageNames: string[]): Promise<string[]>;
190
- /**
191
- * Return the latest version of the input package available on npmjs registry.
192
- * If constraint are provided it return the latest version matching the constraints.
193
- *
194
- * For `@storybook/*` packages the latest version is retrieved from `cli/src/versions.json` file directly
195
- *
196
- * @param packageName The name of the package
197
- * @param constraint A valid semver constraint, example: '1.x || >=2.5.0 || 5.0.0 - 7.2.3'
198
- */
199
- getVersion(packageName: string, constraint?: string): Promise<string>;
200
- /**
201
- * Get the latest version of the package available on npmjs.com.
202
- * If constraint is set then it returns a version satisfying it, otherwise the latest version available is returned.
203
- *
204
- * @param packageName Name of the package
205
- * @param constraint Version range to use to constraint the returned version
206
- */
207
- latestVersion(packageName: string, constraint?: string): Promise<string>;
208
- addStorybookCommandInScripts(options?: {
209
- port: number;
210
- preCommand?: string;
211
- }): Promise<void>;
212
- addScripts(scripts: Record<string, string>): Promise<void>;
213
- addPackageResolutions(versions: Record<string, string>): Promise<void>;
214
- protected abstract runInstall(): Promise<void>;
215
- protected abstract runAddDeps(dependencies: string[], installAsDevDependencies: boolean): Promise<void>;
216
- protected abstract runRemoveDeps(dependencies: string[]): Promise<void>;
217
- protected abstract getResolutions(packageJson: PackageJson, versions: Record<string, string>): Record<string, any>;
218
- /**
219
- * Get the latest or all versions of the input package available on npmjs.com
220
- *
221
- * @param packageName Name of the package
222
- * @param fetchAllVersions Should return
223
- */
224
- protected abstract runGetVersions<T extends boolean>(packageName: string, fetchAllVersions: T): Promise<T extends true ? string[] : string>;
225
- abstract runPackageCommand(command: string, args: string[], cwd?: string, stdio?: string): Promise<string>;
226
- abstract runPackageCommandSync(command: string, args: string[], cwd?: string, stdio?: 'inherit' | 'pipe'): string;
227
- abstract findInstallations(pattern?: string[]): Promise<InstallationMetadata | undefined>;
228
- abstract parseErrorFromLogs(logs?: string): string;
229
- executeCommandSync({ command, args, stdio, cwd, ignoreError, env, ...execaOptions }: CommonOptions<string> & {
230
- command: string;
231
- args: string[];
232
- cwd?: string;
233
- ignoreError?: boolean;
234
- }): string;
235
- executeCommand({ command, args, stdio, cwd, ignoreError, env, ...execaOptions }: CommonOptions<string> & {
236
- command: string;
237
- args: string[];
238
- cwd?: string;
239
- ignoreError?: boolean;
240
- }): Promise<string>;
241
- }
242
-
243
- declare class JsPackageManagerFactory {
244
- static getPackageManager({ force }?: {
245
- force?: PackageManagerName;
246
- }, cwd?: string): JsPackageManager;
247
- /**
248
- * Look up map of package manager proxies by name
249
- */
250
- private static PROXY_MAP;
251
- /**
252
- * Infer the package manager based on the command the user is running.
253
- * Each package manager sets the `npm_config_user_agent` environment variable with its name and version e.g. "npm/7.24.0"
254
- * Which is really useful when invoking commands via npx/pnpx/yarn create/etc.
255
- */
256
- private static inferPackageManagerFromUserAgent;
257
- }
258
-
259
- declare function parseList(str: string): string[];
260
- declare function getStorybookVersion(packageManager: JsPackageManager): Promise<string | null>;
261
- declare function getEnvConfig(program: Record<string, any>, configEnv: Record<string, any>): void;
262
- /**
263
- * Given a file name, creates an object with utilities to manage a log file.
264
- * It creates a temporary log file which you can manage with the returned functions.
265
- * You can then decide whether to move the log file to the users project, or remove it.
266
- *
267
- * @example
268
- * ```
269
- * const { logStream, moveLogFile, removeLogFile, clearLogFile, readLogFile } = await createLogStream('my-log-file.log');
270
- *
271
- * // SCENARIO 1:
272
- * // you can write custom messages to generate a log file
273
- * logStream.write('my log message');
274
- * await moveLogFile();
275
- *
276
- * // SCENARIO 2:
277
- * // or you can pass it to stdio and capture the output of that command
278
- * try {
279
- * await this.executeCommand({
280
- * command: 'pnpm',
281
- * args: ['info', packageName, ...args],
282
- * // do not output to the user, and send stdio and stderr to log file
283
- * stdio: ['ignore', logStream, logStream]
284
- * });
285
- * } catch (err) {
286
- * // do something with the log file content
287
- * const output = await readLogFile();
288
- * // move the log file to the users project
289
- * await moveLogFile();
290
- * }
291
- * // success, no need to keep the log file
292
- * await removeLogFile();
293
- *
294
- * ```
295
- */
296
- declare const createLogStream: (logFileName?: string) => Promise<{
297
- moveLogFile: () => Promise<void>;
298
- removeLogFile: () => Promise<void>;
299
- clearLogFile: () => Promise<void>;
300
- readLogFile: () => Promise<string>;
301
- logStream: WriteStream;
302
- }>;
303
- declare const isCorePackage: (pkg: string) => boolean;
304
-
305
- export { JsPackageManager, JsPackageManagerFactory, PackageJsonWithDepsAndDevDeps, PackageJsonWithMaybeDeps, PackageManagerName, createLogStream, getEnvConfig, getPackageDetails, getStorybookVersion, isCorePackage, parseList, _default as versions };
2
+ export { }
package/dist/index.js CHANGED
@@ -1,23 +1 @@
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,versions:()=>versions_default});module.exports=__toCommonJS(src_exports);var versions_default={"@storybook/addon-a11y":"8.0.0-alpha.8","@storybook/addon-actions":"8.0.0-alpha.8","@storybook/addon-backgrounds":"8.0.0-alpha.8","@storybook/addon-controls":"8.0.0-alpha.8","@storybook/addon-docs":"8.0.0-alpha.8","@storybook/addon-essentials":"8.0.0-alpha.8","@storybook/addon-highlight":"8.0.0-alpha.8","@storybook/addon-interactions":"8.0.0-alpha.8","@storybook/addon-jest":"8.0.0-alpha.8","@storybook/addon-links":"8.0.0-alpha.8","@storybook/addon-mdx-gfm":"8.0.0-alpha.8","@storybook/addon-measure":"8.0.0-alpha.8","@storybook/addon-outline":"8.0.0-alpha.8","@storybook/addon-storysource":"8.0.0-alpha.8","@storybook/addon-themes":"8.0.0-alpha.8","@storybook/addon-toolbars":"8.0.0-alpha.8","@storybook/addon-viewport":"8.0.0-alpha.8","@storybook/angular":"8.0.0-alpha.8","@storybook/blocks":"8.0.0-alpha.8","@storybook/builder-manager":"8.0.0-alpha.8","@storybook/builder-vite":"8.0.0-alpha.8","@storybook/builder-webpack5":"8.0.0-alpha.8","@storybook/channels":"8.0.0-alpha.8","@storybook/cli":"8.0.0-alpha.8","@storybook/client-logger":"8.0.0-alpha.8","@storybook/codemod":"8.0.0-alpha.8","@storybook/components":"8.0.0-alpha.8","@storybook/core-common":"8.0.0-alpha.8","@storybook/core-events":"8.0.0-alpha.8","@storybook/core-server":"8.0.0-alpha.8","@storybook/core-webpack":"8.0.0-alpha.8","@storybook/csf-plugin":"8.0.0-alpha.8","@storybook/csf-tools":"8.0.0-alpha.8","@storybook/docs-tools":"8.0.0-alpha.8","@storybook/ember":"8.0.0-alpha.8","@storybook/html":"8.0.0-alpha.8","@storybook/html-vite":"8.0.0-alpha.8","@storybook/html-webpack5":"8.0.0-alpha.8","@storybook/instrumenter":"8.0.0-alpha.8","@storybook/manager":"8.0.0-alpha.8","@storybook/manager-api":"8.0.0-alpha.8","@storybook/nextjs":"8.0.0-alpha.8","@storybook/node-logger":"8.0.0-alpha.8","@storybook/preact":"8.0.0-alpha.8","@storybook/preact-vite":"8.0.0-alpha.8","@storybook/preact-webpack5":"8.0.0-alpha.8","@storybook/preset-create-react-app":"8.0.0-alpha.8","@storybook/preset-html-webpack":"8.0.0-alpha.8","@storybook/preset-preact-webpack":"8.0.0-alpha.8","@storybook/preset-react-webpack":"8.0.0-alpha.8","@storybook/preset-server-webpack":"8.0.0-alpha.8","@storybook/preset-svelte-webpack":"8.0.0-alpha.8","@storybook/preset-vue3-webpack":"8.0.0-alpha.8","@storybook/preset-web-components-webpack":"8.0.0-alpha.8","@storybook/preview":"8.0.0-alpha.8","@storybook/preview-api":"8.0.0-alpha.8","@storybook/react":"8.0.0-alpha.8","@storybook/react-dom-shim":"8.0.0-alpha.8","@storybook/react-vite":"8.0.0-alpha.8","@storybook/react-webpack5":"8.0.0-alpha.8","@storybook/router":"8.0.0-alpha.8","@storybook/server":"8.0.0-alpha.8","@storybook/server-webpack5":"8.0.0-alpha.8","@storybook/source-loader":"8.0.0-alpha.8","@storybook/svelte":"8.0.0-alpha.8","@storybook/svelte-vite":"8.0.0-alpha.8","@storybook/svelte-webpack5":"8.0.0-alpha.8","@storybook/sveltekit":"8.0.0-alpha.8","@storybook/telemetry":"8.0.0-alpha.8","@storybook/test":"8.0.0-alpha.8","@storybook/theming":"8.0.0-alpha.8","@storybook/types":"8.0.0-alpha.8","@storybook/vue3":"8.0.0-alpha.8","@storybook/vue3-vite":"8.0.0-alpha.8","@storybook/vue3-webpack5":"8.0.0-alpha.8","@storybook/web-components":"8.0.0-alpha.8","@storybook/web-components-vite":"8.0.0-alpha.8","@storybook/web-components-webpack5":"8.0.0-alpha.8",sb:"8.0.0-alpha.8",storybook:"8.0.0-alpha.8"};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.VUE3="VUE3",ProjectType2.ANGULAR="ANGULAR",ProjectType2.EMBER="EMBER",ProjectType2.WEB_COMPONENTS="WEB_COMPONENTS",ProjectType2.HTML="HTML",ProjectType2.QWIK="QWIK",ProjectType2.PREACT="PREACT",ProjectType2.SVELTE="SVELTE",ProjectType2.SVELTEKIT="SVELTEKIT",ProjectType2.SERVER="SERVER",ProjectType2.NX="NX",ProjectType2.SOLID="SOLID",ProjectType2))(ProjectType||{});var 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
- `),logger.error(`
3
- ${import_chalk.default.red(errorMessage)}`),!errorInfo)return;let newErrorInfo=errorInfo.split(`
4
- `).map(line=>` ${import_chalk.default.dim(line)}`).join(`
5
- `);logger.error(`${newErrorInfo}
6
- `);return}process.stdout.write(`. ${import_chalk.default.green("\u2713")}
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?.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
- 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;(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?.port??6006}`,buildStorybookCmd="storybook build",preCommand=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){return(await Promise.all(Object.keys(import_core_common.rendererPackages).map(async pkg=>({name:pkg,version:await packageManager.getPackageVersion(pkg)})))).filter(({version})=>!!version)[0]?.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){let packageJson=await this.getPackageJSON(packageName,basePath);return packageJson?import_semver4.default.coerce(packageJson.version)?.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
-
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])=>{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]=(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){let packageJSON=await this.getPackageJSON(packageName,basePath);return packageJSON?import_semver5.default.coerce(packageJSON.version)?.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
-
18
- 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:"pnpm",args:["remove",...args,...this.getInstallArgs()],stdio:"inherit"})}async runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=await this.executeCommand({command:"pnpm",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 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",dedupeCommand:"pnpm dedupe"}}parseErrorFromLogs(logs){let finalMessage="PNPM error",match=logs.match(PNPM_ERROR_REGEX);if(match){let[errorCode]=match;errorCode&&(finalMessage=`${finalMessage} ${errorCode}`)}return finalMessage.trim()}};var import_ts_dedent4=__toESM(require("ts-dedent")),import_find_up4=require("find-up"),import_fs4=require("fs"),import_path5=__toESM(require("path")),import_fslib=require("@yarnpkg/fslib"),import_libzip=require("@yarnpkg/libzip"),import_semver6=__toESM(require("semver"));var parsePackageData=(packageName="")=>{let[first,second,third]=packageName.replace(/[└─├]+/g,"").trim().split("@"),version=(third||second).replace("npm:","");return{name:third?`@${second}`:first,value:{version,location:""}}};var YARN2_ERROR_REGEX=/(YN\d{4}):.*?Error:\s+(.*)/i,YARN2_ERROR_CODES={YN0000:"UNNAMED",YN0001:"EXCEPTION",YN0002:"MISSING_PEER_DEPENDENCY",YN0003:"CYCLIC_DEPENDENCIES",YN0004:"DISABLED_BUILD_SCRIPTS",YN0005:"BUILD_DISABLED",YN0006:"SOFT_LINK_BUILD",YN0007:"MUST_BUILD",YN0008:"MUST_REBUILD",YN0009:"BUILD_FAILED",YN0010:"RESOLVER_NOT_FOUND",YN0011:"FETCHER_NOT_FOUND",YN0012:"LINKER_NOT_FOUND",YN0013:"FETCH_NOT_CACHED",YN0014:"YARN_IMPORT_FAILED",YN0015:"REMOTE_INVALID",YN0016:"REMOTE_NOT_FOUND",YN0017:"RESOLUTION_PACK",YN0018:"CACHE_CHECKSUM_MISMATCH",YN0019:"UNUSED_CACHE_ENTRY",YN0020:"MISSING_LOCKFILE_ENTRY",YN0021:"WORKSPACE_NOT_FOUND",YN0022:"TOO_MANY_MATCHING_WORKSPACES",YN0023:"CONSTRAINTS_MISSING_DEPENDENCY",YN0024:"CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",YN0025:"CONSTRAINTS_EXTRANEOUS_DEPENDENCY",YN0026:"CONSTRAINTS_INVALID_DEPENDENCY",YN0027:"CANT_SUGGEST_RESOLUTIONS",YN0028:"FROZEN_LOCKFILE_EXCEPTION",YN0029:"CROSS_DRIVE_VIRTUAL_LOCAL",YN0030:"FETCH_FAILED",YN0031:"DANGEROUS_NODE_MODULES",YN0032:"NODE_GYP_INJECTED",YN0046:"AUTOMERGE_FAILED_TO_PARSE",YN0047:"AUTOMERGE_IMMUTABLE",YN0048:"AUTOMERGE_SUCCESS",YN0049:"AUTOMERGE_REQUIRED",YN0050:"DEPRECATED_CLI_SETTINGS",YN0059:"INVALID_RANGE_PEER_DEPENDENCY",YN0060:"INCOMPATIBLE_PEER_DEPENDENCY",YN0061:"DEPRECATED_PACKAGE",YN0062:"INCOMPATIBLE_OS",YN0063:"INCOMPATIBLE_CPU",YN0068:"UNUSED_PACKAGE_EXTENSION",YN0069:"REDUNDANT_PACKAGE_EXTENSION",YN0071:"NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",YN0072:"NM_PRESERVE_SYMLINKS_REQUIRED",YN0074:"NM_HARDLINKS_MODE_DOWNGRADED",YN0075:"PROLOG_INSTANTIATION_ERROR",YN0076:"INCOMPATIBLE_ARCHITECTURE",YN0077:"GHOST_ARCHITECTURE"},Yarn2Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn2"}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}async initPackageJson(){await this.executeCommand({command:"yarn",args:["init"]})}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command){return`yarn ${command}`}runPackageCommandSync(command,args,cwd,stdio){return this.executeCommandSync({command:"yarn",args:[command,...args],cwd,stdio})}async runPackageCommand(command,args,cwd){return this.executeCommand({command:"yarn",args:[command,...args],cwd})}async findInstallations(pattern){let commandResult=await this.executeCommand({command:"yarn",args:["info","--name-only","--recursive",pattern.map(p=>`"${p}"`).join(" "),`"${pattern}"`],env:{FORCE_COLOR:"false"}});try{return this.mapDependencies(commandResult)}catch{return}}async getPackageJSON(packageName,basePath=this.cwd){let pnpapiPath=(0,import_find_up4.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),zipOpenFs=new import_fslib.ZipOpenFS({libzip:(0,import_libzip.getLibzipSync)()}),virtualFs=new import_fslib.VirtualFS({baseFs:zipOpenFs}),crossFs=new import_fslib.PosixFS(virtualFs),virtualPath=import_path5.default.join(pkg.packageLocation,"package.json");return crossFs.readJsonSync(virtualPath)}catch(error){return error.code!=="MODULE_NOT_FOUND"&&console.error("Error while fetching package version in Yarn PnP mode:",error),null}let packageJsonPath=await(0,import_find_up4.sync)(dir=>{let possiblePath=import_path5.default.join(dir,"node_modules",packageName,"package.json");return(0,import_fs4.existsSync)(possiblePath)?possiblePath:void 0},{cwd:basePath});return packageJsonPath?JSON.parse((0,import_fs4.readFileSync)(packageJsonPath,"utf-8")):null}async getPackageVersion(packageName,basePath=this.cwd){let packageJSON=await this.getPackageJSON(packageName,basePath);return packageJSON?import_semver6.default.coerce(packageJSON.version)?.version??null:null}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}async runInstall(){await this.executeCommand({command:"yarn",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:"yarn",args:["add",...this.getInstallArgs(),...args],stdio:process.env.CI?"inherit":["ignore",logStream,logStream]})}catch{let stdout=await readLogFile(),errorMessage=this.parseErrorFromLogs(stdout);throw await moveLogFile(),new Error(import_ts_dedent4.default`${errorMessage}
19
-
20
- 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:"yarn",args:["remove",...this.getInstallArgs(),...args],stdio:"inherit"})}async runGetVersions(packageName,fetchAllVersions){let field=fetchAllVersions?"versions":"version",args=["--fields",field,"--json"],commandResult=await this.executeCommand({command:"yarn",args:["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(`
21
- `),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",dedupeCommand:"yarn dedupe"}}parseErrorFromLogs(logs){let finalMessage="YARN2 error",match=logs.match(YARN2_ERROR_REGEX);if(match){let errorCode=match[1];errorCode&&(finalMessage=`${finalMessage} ${errorCode}`);let errorType=YARN2_ERROR_CODES[errorCode];errorType&&(finalMessage=`${finalMessage} - ${errorType}`);let errorMessage=match[2];errorMessage&&(finalMessage=`${finalMessage}: ${errorMessage}`)}return finalMessage.trim()}};var import_ts_dedent5=__toESM(require("ts-dedent")),import_find_up5=require("find-up"),import_fs5=require("fs"),import_path6=__toESM(require("path")),import_semver7=__toESM(require("semver"));var YARN1_ERROR_REGEX=/^error\s(.*)$/gm,Yarn1Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn1"}getInstallArgs(){return this.installArgs||(this.installArgs=["--ignore-workspace-root-check"]),this.installArgs}async initPackageJson(){await this.executeCommand({command:"yarn",args:["init","-y"]})}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command){return`yarn ${command}`}runPackageCommandSync(command,args,cwd,stdio){return this.executeCommandSync({command:"yarn",args:[command,...args],cwd,stdio})}async runPackageCommand(command,args,cwd){return this.executeCommand({command:"yarn",args:[command,...args],cwd})}async getPackageJSON(packageName,basePath=this.cwd){let packageJsonPath=await(0,import_find_up5.sync)(dir=>{let possiblePath=import_path6.default.join(dir,"node_modules",packageName,"package.json");return(0,import_fs5.existsSync)(possiblePath)?possiblePath:void 0},{cwd:basePath});return packageJsonPath?JSON.parse((0,import_fs5.readFileSync)(packageJsonPath,"utf-8")):null}async getPackageVersion(packageName,basePath=this.cwd){let packageJson=await this.getPackageJSON(packageName,basePath);return packageJson?import_semver7.default.coerce(packageJson.version)?.version??null:null}async findInstallations(pattern){let commandResult=await this.executeCommand({command:"yarn",args:["list","--pattern",pattern.map(p=>`"${p}"`).join(" "),"--recursive","--json"],env:{FORCE_COLOR:"false"}});try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}async runInstall(){await this.executeCommand({command:"yarn",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:"yarn",args:["add",...this.getInstallArgs(),...args],stdio:process.env.CI?"inherit":["ignore",logStream,logStream]})}catch{let stdout=await readLogFile(),errorMessage=this.parseErrorFromLogs(stdout);throw await moveLogFile(),new Error(import_ts_dedent5.default`${errorMessage}
22
-
23
- 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:"yarn",args:["remove",...this.getInstallArgs(),...args],stdio:"inherit"})}async runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=await this.executeCommand({command:"yarn",args:["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",dedupeCommand:"yarn dedupe"}}throw new Error("Something went wrong while parsing yarn output")}parseErrorFromLogs(logs){let finalMessage="YARN1 error",match=logs.match(YARN1_ERROR_REGEX);if(match){let errorMessage=match[0]?.replace(/^error\s(.*)$/,"$1");errorMessage&&(finalMessage=`${finalMessage}: ${errorMessage}`)}return finalMessage.trim()}};var NPM_LOCKFILE="package-lock.json",PNPM_LOCKFILE="pnpm-lock.yaml",YARN_LOCKFILE="yarn.lock",JsPackageManagerFactory=class{static getPackageManager({force}={},cwd){if(force&&force in this.PROXY_MAP)return new this.PROXY_MAP[force]({cwd});let inferredPackageManager=this.inferPackageManagerFromUserAgent();if(inferredPackageManager&&inferredPackageManager in this.PROXY_MAP)return new this.PROXY_MAP[inferredPackageManager]({cwd});let yarnVersion=getYarnVersion(cwd),closestLockfilePath=(0,import_find_up6.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")}static{this.PROXY_MAP={npm:NPMProxy,pnpm:PNPMProxy,yarn1:Yarn1Proxy,yarn2:Yarn2Proxy}}static inferPackageManagerFromUserAgent(){let userAgent=process.env.npm_config_user_agent;if(userAgent){let packageSpec=userAgent.split(" ")[0],[pkgMgrName,pkgMgrVersion]=packageSpec.split("/");if(pkgMgrName==="pnpm")return"pnpm";if(pkgMgrName==="npm")return"npm";if(pkgMgrName==="yarn")return`yarn${pkgMgrVersion?.startsWith("1.")?"1":"2"}`}}};function hasNPM(cwd){return(0,import_cross_spawn.sync)("npm",["--version"],{cwd,shell:!0}).status===0}function hasPNPM(cwd){return(0,import_cross_spawn.sync)("pnpm",["--version"],{cwd,shell:!0}).status===0}function getYarnVersion(cwd){let yarnVersionCommand=(0,import_cross_spawn.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}0&&(module.exports={JsPackageManager,JsPackageManagerFactory,createLogStream,getEnvConfig,getPackageDetails,getStorybookVersion,isCorePackage,parseList,versions});
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.");
package/dist/index.mjs CHANGED
@@ -1 +1,3 @@
1
- export { JsPackageManager, JsPackageManagerFactory, createLogStream, getEnvConfig, getPackageDetails, getStorybookVersion, isCorePackage, parseList, versions_default as versions } from './chunk-ED7B3YAD.mjs';
1
+ import { deprecate } from '@storybook/node-logger';
2
+
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": "8.0.0-alpha.8",
3
+ "version": "8.0.0-beta.0",
4
4
  "description": "Storybook's CLI - install, dev, build, upgrade, and more",
5
5
  "keywords": [
6
6
  "cli",
@@ -56,18 +56,16 @@
56
56
  "prep": "node --loader ../../../scripts/node_modules/esbuild-register/loader.js -r ../../../scripts/node_modules/esbuild-register/register.js ../../../scripts/prepare/bundle.ts"
57
57
  },
58
58
  "dependencies": {
59
- "@babel/core": "^7.23.2",
60
- "@babel/preset-env": "^7.23.2",
61
59
  "@babel/types": "^7.23.0",
62
60
  "@ndelangen/get-tarball": "^3.0.7",
63
- "@storybook/codemod": "8.0.0-alpha.8",
64
- "@storybook/core-common": "8.0.0-alpha.8",
65
- "@storybook/core-events": "8.0.0-alpha.8",
66
- "@storybook/core-server": "8.0.0-alpha.8",
67
- "@storybook/csf-tools": "8.0.0-alpha.8",
68
- "@storybook/node-logger": "8.0.0-alpha.8",
69
- "@storybook/telemetry": "8.0.0-alpha.8",
70
- "@storybook/types": "8.0.0-alpha.8",
61
+ "@storybook/codemod": "8.0.0-beta.0",
62
+ "@storybook/core-common": "8.0.0-beta.0",
63
+ "@storybook/core-events": "8.0.0-beta.0",
64
+ "@storybook/core-server": "8.0.0-beta.0",
65
+ "@storybook/csf-tools": "8.0.0-beta.0",
66
+ "@storybook/node-logger": "8.0.0-beta.0",
67
+ "@storybook/telemetry": "8.0.0-beta.0",
68
+ "@storybook/types": "8.0.0-beta.0",
71
69
  "@types/semver": "^7.3.4",
72
70
  "@yarnpkg/fslib": "2.10.3",
73
71
  "@yarnpkg/libzip": "2.3.0",
@@ -77,32 +75,28 @@
77
75
  "detect-indent": "^6.1.0",
78
76
  "envinfo": "^7.7.3",
79
77
  "execa": "^5.0.0",
80
- "express": "^4.17.3",
81
78
  "find-up": "^5.0.0",
82
79
  "fs-extra": "^11.1.0",
83
80
  "get-npm-tarball-url": "^2.0.3",
84
- "get-port": "^5.1.1",
85
81
  "giget": "^1.0.0",
86
82
  "globby": "^11.0.2",
87
83
  "jscodeshift": "^0.15.1",
88
84
  "leven": "^3.1.0",
89
85
  "ora": "^5.4.1",
90
- "prettier": "^2.8.0",
86
+ "prettier": "^3.1.1",
91
87
  "prompts": "^2.4.0",
92
88
  "read-pkg-up": "^7.0.1",
93
89
  "semver": "^7.3.7",
94
- "simple-update-notifier": "^2.0.0",
95
90
  "strip-json-comments": "^3.0.1",
96
91
  "tempy": "^1.0.1",
97
92
  "tiny-invariant": "^1.3.1",
98
- "ts-dedent": "^2.0.0",
99
- "util-deprecate": "^1.0.2"
93
+ "ts-dedent": "^2.0.0"
100
94
  },
101
95
  "devDependencies": {
102
96
  "@types/cross-spawn": "^6.0.2",
103
97
  "@types/prompts": "^2.0.9",
104
98
  "@types/util-deprecate": "^1.0.0",
105
- "boxen": "^5.1.2",
99
+ "boxen": "^7.1.1",
106
100
  "slash": "^5.0.0",
107
101
  "strip-json-comments": "^3.1.1",
108
102
  "typescript": "^5.3.2"
@@ -111,7 +105,6 @@
111
105
  "access": "public"
112
106
  },
113
107
  "bundler": {
114
- "pre": "./scripts/generate-sb-packages-versions.js",
115
108
  "entries": [
116
109
  "./src/generate.ts",
117
110
  "./src/index.ts"