@storybook/cli 7.1.0-alpha.3 → 7.1.0-alpha.31

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,5 +1,7 @@
1
+ import { CommonOptions } from 'execa';
1
2
  import { PackageJson } from '@storybook/types';
2
3
  export { PackageJson } from '@storybook/types';
4
+ import { WriteStream } from 'fs-extra';
3
5
 
4
6
  declare const _default: {
5
7
  '@storybook/addon-a11y': string;
@@ -126,26 +128,26 @@ interface JsPackageManagerOptions {
126
128
  }
127
129
  declare abstract class JsPackageManager {
128
130
  abstract readonly type: PackageManagerName;
129
- abstract initPackageJson(): void;
131
+ abstract initPackageJson(): Promise<void>;
130
132
  abstract getRunStorybookCommand(): string;
131
133
  abstract getRunCommand(command: string): string;
132
- setRegistryURL(url: string): void;
133
- getRegistryURL(): string;
134
134
  readonly cwd?: string;
135
+ setRegistryURL(url: string): Promise<void>;
136
+ getRegistryURL(): Promise<string>;
135
137
  constructor(options?: JsPackageManagerOptions);
136
138
  /**
137
139
  * Install dependencies listed in `package.json`
138
140
  */
139
- installDependencies(): void;
141
+ installDependencies(): Promise<void>;
140
142
  packageJsonPath(): string;
141
- readPackageJson(): PackageJson;
142
- writePackageJson(packageJson: PackageJson): void;
143
+ readPackageJson(): Promise<PackageJson>;
144
+ writePackageJson(packageJson: PackageJson): Promise<void>;
143
145
  /**
144
146
  * Read the `package.json` file available in the directory the command was call from
145
147
  * If there is no `package.json` it will create one.
146
148
  */
147
- retrievePackageJson(): PackageJsonWithDepsAndDevDeps;
148
- getAllDependencies(): Record<string, string>;
149
+ retrievePackageJson(): Promise<PackageJsonWithDepsAndDevDeps>;
150
+ getAllDependencies(): Promise<Record<string, string>>;
149
151
  /**
150
152
  * Add dependencies to a project using `yarn add` or `npm install`.
151
153
  *
@@ -163,7 +165,7 @@ declare abstract class JsPackageManager {
163
165
  skipInstall?: boolean;
164
166
  installAsDevDependencies?: boolean;
165
167
  packageJson?: PackageJson;
166
- }, dependencies: string[]): void;
168
+ }, dependencies: string[]): Promise<void>;
167
169
  /**
168
170
  * Remove dependencies from a project using `yarn remove` or `npm uninstall`.
169
171
  *
@@ -213,13 +215,12 @@ declare abstract class JsPackageManager {
213
215
  addStorybookCommandInScripts(options?: {
214
216
  port: number;
215
217
  preCommand?: string;
216
- }): void;
217
- addESLintConfig(): void;
218
- addScripts(scripts: Record<string, string>): void;
219
- addPackageResolutions(versions: Record<string, string>): void;
220
- protected abstract runInstall(): void;
221
- protected abstract runAddDeps(dependencies: string[], installAsDevDependencies: boolean): void;
222
- protected abstract runRemoveDeps(dependencies: string[]): void;
218
+ }): Promise<void>;
219
+ addScripts(scripts: Record<string, string>): Promise<void>;
220
+ addPackageResolutions(versions: Record<string, string>): Promise<void>;
221
+ protected abstract runInstall(): Promise<void>;
222
+ protected abstract runAddDeps(dependencies: string[], installAsDevDependencies: boolean): Promise<void>;
223
+ protected abstract runRemoveDeps(dependencies: string[]): Promise<void>;
223
224
  protected abstract getResolutions(packageJson: PackageJson, versions: Record<string, string>): Record<string, any>;
224
225
  /**
225
226
  * Get the latest or all versions of the input package available on npmjs.com
@@ -228,9 +229,22 @@ declare abstract class JsPackageManager {
228
229
  * @param fetchAllVersions Should return
229
230
  */
230
231
  protected abstract runGetVersions<T extends boolean>(packageName: string, fetchAllVersions: T): Promise<T extends true ? string[] : string>;
231
- abstract runPackageCommand(command: string, args: string[], cwd?: string): string;
232
- abstract findInstallations(pattern?: string[]): InstallationMetadata | undefined;
233
- executeCommand(command: string, args: string[], stdio?: 'pipe' | 'inherit', cwd?: string, ignoreError?: boolean): string;
232
+ abstract runPackageCommand(command: string, args: string[], cwd?: string, stdio?: string): Promise<string>;
233
+ abstract runPackageCommandSync(command: string, args: string[], cwd?: string, stdio?: 'inherit' | 'pipe'): string;
234
+ abstract findInstallations(pattern?: string[]): Promise<InstallationMetadata | undefined>;
235
+ abstract parseErrorFromLogs(logs?: string): string;
236
+ executeCommandSync({ command, args, stdio, cwd, ignoreError, env, ...execaOptions }: CommonOptions<string> & {
237
+ command: string;
238
+ args: string[];
239
+ cwd?: string;
240
+ ignoreError?: boolean;
241
+ }): string;
242
+ executeCommand({ command, args, stdio, cwd, ignoreError, env, ...execaOptions }: CommonOptions<string> & {
243
+ command: string;
244
+ args: string[];
245
+ cwd?: string;
246
+ ignoreError?: boolean;
247
+ }): Promise<string>;
234
248
  }
235
249
 
236
250
  declare class JsPackageManagerFactory {
@@ -241,5 +255,46 @@ declare class JsPackageManagerFactory {
241
255
 
242
256
  declare function parseList(str: string): string[];
243
257
  declare function getEnvConfig(program: Record<string, any>, configEnv: Record<string, any>): void;
258
+ /**
259
+ * Given a file name, creates an object with utilities to manage a log file.
260
+ * It creates a temporary log file which you can manage with the returned functions.
261
+ * You can then decide whether to move the log file to the users project, or remove it.
262
+ *
263
+ * @example
264
+ * ```
265
+ * const { logStream, moveLogFile, removeLogFile, clearLogFile, readLogFile } = await createLogStream('my-log-file.log');
266
+ *
267
+ * // SCENARIO 1:
268
+ * // you can write custom messages to generate a log file
269
+ * logStream.write('my log message');
270
+ * await moveLogFile();
271
+ *
272
+ * // SCENARIO 2:
273
+ * // or you can pass it to stdio and capture the output of that command
274
+ * try {
275
+ * await this.executeCommand({
276
+ * command: 'pnpm',
277
+ * args: ['info', packageName, ...args],
278
+ * // do not output to the user, and send stdio and stderr to log file
279
+ * stdio: ['ignore', logStream, logStream]
280
+ * });
281
+ * } catch (err) {
282
+ * // do something with the log file content
283
+ * const output = await readLogFile();
284
+ * // move the log file to the users project
285
+ * await moveLogFile();
286
+ * }
287
+ * // success, no need to keep the log file
288
+ * await removeLogFile();
289
+ *
290
+ * ```
291
+ */
292
+ declare const createLogStream: (logFileName?: string) => Promise<{
293
+ moveLogFile: () => Promise<void>;
294
+ removeLogFile: () => Promise<void>;
295
+ clearLogFile: () => Promise<void>;
296
+ readLogFile: () => Promise<string>;
297
+ logStream: WriteStream;
298
+ }>;
244
299
 
245
- export { JsPackageManager, JsPackageManagerFactory, PackageJsonWithDepsAndDevDeps, PackageJsonWithMaybeDeps, PackageManagerName, getEnvConfig, getPackageDetails, parseList, useNpmWarning, _default as versions };
300
+ export { JsPackageManager, JsPackageManagerFactory, PackageJsonWithDepsAndDevDeps, PackageJsonWithMaybeDeps, PackageManagerName, createLogStream, getEnvConfig, getPackageDetails, parseList, useNpmWarning, _default as versions };
package/dist/index.js CHANGED
@@ -1,11 +1,23 @@
1
- var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var src_exports={};__export(src_exports,{JsPackageManager:()=>JsPackageManager,JsPackageManagerFactory:()=>JsPackageManagerFactory,getEnvConfig:()=>getEnvConfig,getPackageDetails:()=>getPackageDetails,parseList:()=>parseList,useNpmWarning:()=>useNpmWarning,versions:()=>versions_default});module.exports=__toCommonJS(src_exports);var versions_default={"@storybook/addon-a11y":"7.1.0-alpha.3","@storybook/addon-actions":"7.1.0-alpha.3","@storybook/addon-backgrounds":"7.1.0-alpha.3","@storybook/addon-controls":"7.1.0-alpha.3","@storybook/addon-docs":"7.1.0-alpha.3","@storybook/addon-essentials":"7.1.0-alpha.3","@storybook/addon-highlight":"7.1.0-alpha.3","@storybook/addon-interactions":"7.1.0-alpha.3","@storybook/addon-jest":"7.1.0-alpha.3","@storybook/addon-links":"7.1.0-alpha.3","@storybook/addon-mdx-gfm":"7.1.0-alpha.3","@storybook/addon-measure":"7.1.0-alpha.3","@storybook/addon-outline":"7.1.0-alpha.3","@storybook/addon-storyshots":"7.1.0-alpha.3","@storybook/addon-storyshots-puppeteer":"7.1.0-alpha.3","@storybook/addon-storysource":"7.1.0-alpha.3","@storybook/addon-toolbars":"7.1.0-alpha.3","@storybook/addon-viewport":"7.1.0-alpha.3","@storybook/addons":"7.1.0-alpha.3","@storybook/angular":"7.1.0-alpha.3","@storybook/api":"7.1.0-alpha.3","@storybook/blocks":"7.1.0-alpha.3","@storybook/builder-manager":"7.1.0-alpha.3","@storybook/builder-vite":"7.1.0-alpha.3","@storybook/builder-webpack5":"7.1.0-alpha.3","@storybook/channel-postmessage":"7.1.0-alpha.3","@storybook/channel-websocket":"7.1.0-alpha.3","@storybook/channels":"7.1.0-alpha.3","@storybook/cli":"7.1.0-alpha.3","@storybook/client-api":"7.1.0-alpha.3","@storybook/client-logger":"7.1.0-alpha.3","@storybook/codemod":"7.1.0-alpha.3","@storybook/components":"7.1.0-alpha.3","@storybook/core-client":"7.1.0-alpha.3","@storybook/core-common":"7.1.0-alpha.3","@storybook/core-events":"7.1.0-alpha.3","@storybook/core-server":"7.1.0-alpha.3","@storybook/core-webpack":"7.1.0-alpha.3","@storybook/csf-plugin":"7.1.0-alpha.3","@storybook/csf-tools":"7.1.0-alpha.3","@storybook/docs-tools":"7.1.0-alpha.3","@storybook/ember":"7.1.0-alpha.3","@storybook/html":"7.1.0-alpha.3","@storybook/html-vite":"7.1.0-alpha.3","@storybook/html-webpack5":"7.1.0-alpha.3","@storybook/instrumenter":"7.1.0-alpha.3","@storybook/manager":"7.1.0-alpha.3","@storybook/manager-api":"7.1.0-alpha.3","@storybook/nextjs":"7.1.0-alpha.3","@storybook/node-logger":"7.1.0-alpha.3","@storybook/postinstall":"7.1.0-alpha.3","@storybook/preact":"7.1.0-alpha.3","@storybook/preact-vite":"7.1.0-alpha.3","@storybook/preact-webpack5":"7.1.0-alpha.3","@storybook/preset-create-react-app":"7.1.0-alpha.3","@storybook/preset-html-webpack":"7.1.0-alpha.3","@storybook/preset-preact-webpack":"7.1.0-alpha.3","@storybook/preset-react-webpack":"7.1.0-alpha.3","@storybook/preset-server-webpack":"7.1.0-alpha.3","@storybook/preset-svelte-webpack":"7.1.0-alpha.3","@storybook/preset-vue-webpack":"7.1.0-alpha.3","@storybook/preset-vue3-webpack":"7.1.0-alpha.3","@storybook/preset-web-components-webpack":"7.1.0-alpha.3","@storybook/preview":"7.1.0-alpha.3","@storybook/preview-api":"7.1.0-alpha.3","@storybook/preview-web":"7.1.0-alpha.3","@storybook/react":"7.1.0-alpha.3","@storybook/react-dom-shim":"7.1.0-alpha.3","@storybook/react-vite":"7.1.0-alpha.3","@storybook/react-webpack5":"7.1.0-alpha.3","@storybook/router":"7.1.0-alpha.3","@storybook/server":"7.1.0-alpha.3","@storybook/server-webpack5":"7.1.0-alpha.3","@storybook/source-loader":"7.1.0-alpha.3","@storybook/store":"7.1.0-alpha.3","@storybook/svelte":"7.1.0-alpha.3","@storybook/svelte-vite":"7.1.0-alpha.3","@storybook/svelte-webpack5":"7.1.0-alpha.3","@storybook/sveltekit":"7.1.0-alpha.3","@storybook/telemetry":"7.1.0-alpha.3","@storybook/theming":"7.1.0-alpha.3","@storybook/types":"7.1.0-alpha.3","@storybook/vue":"7.1.0-alpha.3","@storybook/vue-vite":"7.1.0-alpha.3","@storybook/vue-webpack5":"7.1.0-alpha.3","@storybook/vue3":"7.1.0-alpha.3","@storybook/vue3-vite":"7.1.0-alpha.3","@storybook/vue3-webpack5":"7.1.0-alpha.3","@storybook/web-components":"7.1.0-alpha.3","@storybook/web-components-vite":"7.1.0-alpha.3","@storybook/web-components-webpack5":"7.1.0-alpha.3",sb:"7.1.0-alpha.3",storybook:"7.1.0-alpha.3"};var import_util_deprecate=__toESM(require("util-deprecate")),useNpmWarning=(0,import_util_deprecate.default)(()=>{},"`--use-npm` is deprecated and will be removed in Storybook 8.0. \nPlease use the `--package-manager=npm` option instead.\nRead more at https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#cli-option---use-npm-deprecated");var import_node_path=__toESM(require("path")),import_cross_spawn2=require("cross-spawn"),import_find_up=require("find-up");var import_sort=__toESM(require("semver/functions/sort")),import_os=require("os");var import_chalk2=__toESM(require("chalk")),import_semver3=require("semver"),import_cross_spawn=require("cross-spawn"),import_path=__toESM(require("path")),import_fs=__toESM(require("fs"));var import_fs_extra=__toESM(require("fs-extra")),import_chalk=__toESM(require("chalk")),import_semver2=require("semver"),import_strip_json_comments=__toESM(require("strip-json-comments"));var import_get_tarball=__toESM(require("@ndelangen/get-tarball")),import_get_npm_tarball_url=__toESM(require("get-npm-tarball-url")),tempy=__toESM(require("tempy"));var import_semver=require("semver");var ProjectType=(ProjectType2=>(ProjectType2.UNDETECTED="UNDETECTED",ProjectType2.UNSUPPORTED="UNSUPPORTED",ProjectType2.REACT_SCRIPTS="REACT_SCRIPTS",ProjectType2.REACT="REACT",ProjectType2.REACT_NATIVE="REACT_NATIVE",ProjectType2.REACT_PROJECT="REACT_PROJECT",ProjectType2.WEBPACK_REACT="WEBPACK_REACT",ProjectType2.NEXTJS="NEXTJS",ProjectType2.VUE="VUE",ProjectType2.VUE3="VUE3",ProjectType2.SFC_VUE="SFC_VUE",ProjectType2.ANGULAR="ANGULAR",ProjectType2.EMBER="EMBER",ProjectType2.WEB_COMPONENTS="WEB_COMPONENTS",ProjectType2.MITHRIL="MITHRIL",ProjectType2.MARIONETTE="MARIONETTE",ProjectType2.MARKO="MARKO",ProjectType2.HTML="HTML",ProjectType2.QWIK="QWIK",ProjectType2.RIOT="RIOT",ProjectType2.PREACT="PREACT",ProjectType2.SVELTE="SVELTE",ProjectType2.SVELTEKIT="SVELTEKIT",ProjectType2.RAX="RAX",ProjectType2.AURELIA="AURELIA",ProjectType2.SERVER="SERVER",ProjectType2.NX="NX",ProjectType2.SOLID="SOLID",ProjectType2))(ProjectType||{});var notInstallableProjectTypes=["UNDETECTED","UNSUPPORTED"],installableProjectTypes=Object.values(ProjectType).filter(type=>!notInstallableProjectTypes.includes(type)).map(type=>type.toLowerCase());var logger=console;var commandLog=message=>(process.stdout.write(import_chalk.default.cyan(" \u2022 ")+message),(errorMessage,errorInfo)=>{if(errorMessage){if(process.stdout.write(`. ${import_chalk.default.red("\u2716")}
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,parseList:()=>parseList,useNpmWarning:()=>useNpmWarning,versions:()=>versions_default});module.exports=__toCommonJS(src_exports);var versions_default={"@storybook/addon-a11y":"7.1.0-alpha.31","@storybook/addon-actions":"7.1.0-alpha.31","@storybook/addon-backgrounds":"7.1.0-alpha.31","@storybook/addon-controls":"7.1.0-alpha.31","@storybook/addon-docs":"7.1.0-alpha.31","@storybook/addon-essentials":"7.1.0-alpha.31","@storybook/addon-highlight":"7.1.0-alpha.31","@storybook/addon-interactions":"7.1.0-alpha.31","@storybook/addon-jest":"7.1.0-alpha.31","@storybook/addon-links":"7.1.0-alpha.31","@storybook/addon-mdx-gfm":"7.1.0-alpha.31","@storybook/addon-measure":"7.1.0-alpha.31","@storybook/addon-outline":"7.1.0-alpha.31","@storybook/addon-storyshots":"7.1.0-alpha.31","@storybook/addon-storyshots-puppeteer":"7.1.0-alpha.31","@storybook/addon-storysource":"7.1.0-alpha.31","@storybook/addon-toolbars":"7.1.0-alpha.31","@storybook/addon-viewport":"7.1.0-alpha.31","@storybook/addons":"7.1.0-alpha.31","@storybook/angular":"7.1.0-alpha.31","@storybook/api":"7.1.0-alpha.31","@storybook/blocks":"7.1.0-alpha.31","@storybook/builder-manager":"7.1.0-alpha.31","@storybook/builder-vite":"7.1.0-alpha.31","@storybook/builder-webpack5":"7.1.0-alpha.31","@storybook/channel-postmessage":"7.1.0-alpha.31","@storybook/channel-websocket":"7.1.0-alpha.31","@storybook/channels":"7.1.0-alpha.31","@storybook/cli":"7.1.0-alpha.31","@storybook/client-api":"7.1.0-alpha.31","@storybook/client-logger":"7.1.0-alpha.31","@storybook/codemod":"7.1.0-alpha.31","@storybook/components":"7.1.0-alpha.31","@storybook/core-client":"7.1.0-alpha.31","@storybook/core-common":"7.1.0-alpha.31","@storybook/core-events":"7.1.0-alpha.31","@storybook/core-server":"7.1.0-alpha.31","@storybook/core-webpack":"7.1.0-alpha.31","@storybook/csf-plugin":"7.1.0-alpha.31","@storybook/csf-tools":"7.1.0-alpha.31","@storybook/docs-tools":"7.1.0-alpha.31","@storybook/ember":"7.1.0-alpha.31","@storybook/html":"7.1.0-alpha.31","@storybook/html-vite":"7.1.0-alpha.31","@storybook/html-webpack5":"7.1.0-alpha.31","@storybook/instrumenter":"7.1.0-alpha.31","@storybook/manager":"7.1.0-alpha.31","@storybook/manager-api":"7.1.0-alpha.31","@storybook/nextjs":"7.1.0-alpha.31","@storybook/node-logger":"7.1.0-alpha.31","@storybook/postinstall":"7.1.0-alpha.31","@storybook/preact":"7.1.0-alpha.31","@storybook/preact-vite":"7.1.0-alpha.31","@storybook/preact-webpack5":"7.1.0-alpha.31","@storybook/preset-create-react-app":"7.1.0-alpha.31","@storybook/preset-html-webpack":"7.1.0-alpha.31","@storybook/preset-preact-webpack":"7.1.0-alpha.31","@storybook/preset-react-webpack":"7.1.0-alpha.31","@storybook/preset-server-webpack":"7.1.0-alpha.31","@storybook/preset-svelte-webpack":"7.1.0-alpha.31","@storybook/preset-vue-webpack":"7.1.0-alpha.31","@storybook/preset-vue3-webpack":"7.1.0-alpha.31","@storybook/preset-web-components-webpack":"7.1.0-alpha.31","@storybook/preview":"7.1.0-alpha.31","@storybook/preview-api":"7.1.0-alpha.31","@storybook/preview-web":"7.1.0-alpha.31","@storybook/react":"7.1.0-alpha.31","@storybook/react-dom-shim":"7.1.0-alpha.31","@storybook/react-vite":"7.1.0-alpha.31","@storybook/react-webpack5":"7.1.0-alpha.31","@storybook/router":"7.1.0-alpha.31","@storybook/server":"7.1.0-alpha.31","@storybook/server-webpack5":"7.1.0-alpha.31","@storybook/source-loader":"7.1.0-alpha.31","@storybook/store":"7.1.0-alpha.31","@storybook/svelte":"7.1.0-alpha.31","@storybook/svelte-vite":"7.1.0-alpha.31","@storybook/svelte-webpack5":"7.1.0-alpha.31","@storybook/sveltekit":"7.1.0-alpha.31","@storybook/telemetry":"7.1.0-alpha.31","@storybook/theming":"7.1.0-alpha.31","@storybook/types":"7.1.0-alpha.31","@storybook/vue":"7.1.0-alpha.31","@storybook/vue-vite":"7.1.0-alpha.31","@storybook/vue-webpack5":"7.1.0-alpha.31","@storybook/vue3":"7.1.0-alpha.31","@storybook/vue3-vite":"7.1.0-alpha.31","@storybook/vue3-webpack5":"7.1.0-alpha.31","@storybook/web-components":"7.1.0-alpha.31","@storybook/web-components-vite":"7.1.0-alpha.31","@storybook/web-components-webpack5":"7.1.0-alpha.31",sb:"7.1.0-alpha.31",storybook:"7.1.0-alpha.31"};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_up=require("find-up");var import_sort=__toESM(require("semver/functions/sort")),import_os=require("os"),import_ts_dedent2=__toESM(require("ts-dedent"));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");var import_fs_extra=__toESM(require("fs-extra")),import_chalk=__toESM(require("chalk")),import_semver2=require("semver"),import_strip_json_comments=__toESM(require("strip-json-comments"));var import_get_tarball=__toESM(require("@ndelangen/get-tarball")),import_get_npm_tarball_url=__toESM(require("get-npm-tarball-url")),tempy=__toESM(require("tempy"));var import_semver=require("semver");var ProjectType=(ProjectType2=>(ProjectType2.UNDETECTED="UNDETECTED",ProjectType2.UNSUPPORTED="UNSUPPORTED",ProjectType2.REACT_SCRIPTS="REACT_SCRIPTS",ProjectType2.REACT="REACT",ProjectType2.REACT_NATIVE="REACT_NATIVE",ProjectType2.REACT_PROJECT="REACT_PROJECT",ProjectType2.WEBPACK_REACT="WEBPACK_REACT",ProjectType2.NEXTJS="NEXTJS",ProjectType2.VUE="VUE",ProjectType2.VUE3="VUE3",ProjectType2.SFC_VUE="SFC_VUE",ProjectType2.ANGULAR="ANGULAR",ProjectType2.EMBER="EMBER",ProjectType2.WEB_COMPONENTS="WEB_COMPONENTS",ProjectType2.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"],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(messageOrError){super(typeof messageOrError=="string"?messageOrError:messageOrError.message);this.handled=!0;typeof messageOrError!="string"&&(this.cause=messageOrError)}};var logger2=console;function getPackageDetails(pkg){let idx=pkg.lastIndexOf("@");if(idx<=0)return[pkg,void 0];let packageName=pkg.slice(0,idx),packageVersion=pkg.slice(idx+1);return[packageName,packageVersion]}var JsPackageManager=class{setRegistryURL(url){url?this.executeCommand("npm",["config","set","registry",url]):this.executeCommand("npm",["config","delete","registry"])}getRegistryURL(){let url=this.executeCommand("npm",["config","get","registry"]).trim();return url==="undefined"?void 0:url}constructor(options){this.cwd=options==null?void 0:options.cwd}installDependencies(){let done=commandLog("Preparing to install dependencies");done(),logger2.log(),logger2.log(),done=commandLog("Installing dependencies");try{this.runInstall()}catch(e){throw done("An error occurred while installing dependencies."),new HandledError(e)}done()}packageJsonPath(){return this.cwd?import_path.default.resolve(this.cwd,"package.json"):import_path.default.resolve("package.json")}readPackageJson(){let packageJsonPath=this.packageJsonPath();if(!import_fs.default.existsSync(packageJsonPath))throw new Error(`Could not read package.json file at ${packageJsonPath}`);let jsonContent=import_fs.default.readFileSync(packageJsonPath,"utf8");return JSON.parse(jsonContent)}writePackageJson(packageJson){let packageJsonToWrite={...packageJson};packageJsonToWrite.dependencies&&Object.keys(packageJsonToWrite.dependencies).length===0&&delete packageJsonToWrite.dependencies,packageJsonToWrite.devDependencies&&Object.keys(packageJsonToWrite.devDependencies).length===0&&delete packageJsonToWrite.devDependencies,packageJsonToWrite.peerDependencies&&Object.keys(packageJsonToWrite.peerDependencies).length===0&&delete packageJsonToWrite.peerDependencies;let content=`${JSON.stringify(packageJsonToWrite,null,2)}
8
- `;import_fs.default.writeFileSync(this.packageJsonPath(),content,"utf8")}retrievePackageJson(){let packageJson;try{packageJson=this.readPackageJson()}catch{this.initPackageJson(),packageJson=this.readPackageJson()}return{...packageJson,dependencies:{...packageJson.dependencies},devDependencies:{...packageJson.devDependencies},peerDependencies:{...packageJson.peerDependencies}}}getAllDependencies(){let{dependencies,devDependencies,peerDependencies}=this.retrievePackageJson();return{...dependencies,...devDependencies,...peerDependencies}}addDependencies(options,dependencies){let{skipInstall}=options;if(skipInstall){let{packageJson}=options,dependenciesMap=dependencies.reduce((acc,dep)=>{let[packageName,packageVersion]=getPackageDetails(dep);return{...acc,[packageName]:packageVersion}},{});options.installAsDevDependencies?packageJson.devDependencies={...packageJson.devDependencies,...dependenciesMap}:packageJson.dependencies={...packageJson.dependencies,...dependenciesMap},this.writePackageJson(packageJson)}else try{this.runAddDeps(dependencies,options.installAsDevDependencies)}catch(e){throw logger2.error("An error occurred while installing dependencies."),logger2.log(e.message),new HandledError(e)}}removeDependencies(options,dependencies){let{skipInstall}=options;if(skipInstall){let{packageJson}=options;dependencies.forEach(dep=>{packageJson.devDependencies&&delete packageJson.devDependencies[dep],packageJson.dependencies&&delete packageJson.dependencies[dep]}),this.writePackageJson(packageJson)}else try{this.runRemoveDeps(dependencies)}catch(e){throw logger2.error("An error occurred while removing dependencies."),logger2.log(e.message),new HandledError(e)}}getVersionedPackages(packages){return Promise.all(packages.map(async pkg=>{let[packageName,packageVersion]=getPackageDetails(pkg);return`${packageName}@${await this.getVersion(packageName,packageVersion)}`}))}getVersions(...packageNames){return Promise.all(packageNames.map(packageName=>this.getVersion(packageName)))}async getVersion(packageName,constraint){let current;/(@storybook|^sb$|^storybook$)/.test(packageName)&&(current=versions_default[packageName]);let latest;try{latest=await this.latestVersion(packageName,constraint)}catch(e){if(current)return logger2.warn(`
7
+ `)});var HandledError=class extends Error{constructor(messageOrError){super(typeof messageOrError=="string"?messageOrError:messageOrError.message);this.handled=!0;typeof messageOrError!="string"&&(this.cause=messageOrError)}};var logger2=console;function getPackageDetails(pkg){let idx=pkg.lastIndexOf("@");if(idx<=0)return[pkg,void 0];let packageName=pkg.slice(0,idx),packageVersion=pkg.slice(idx+1);return[packageName,packageVersion]}var JsPackageManager=class{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}async installDependencies(){let done=commandLog("Preparing to install dependencies");done(),logger2.log(),logger2.log(),done=commandLog("Installing dependencies");try{await this.runInstall()}catch(e){throw done("An error occurred while installing dependencies."),new HandledError(e)}done()}packageJsonPath(){return this.cwd?import_path.default.resolve(this.cwd,"package.json"):import_path.default.resolve("package.json")}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){if(err.message.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()}: ${err.message}
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,options.installAsDevDependencies)}catch(e){throw logger2.error(`
12
+ An error occurred while installing dependencies:`),logger2.log(e.message),new HandledError(e)}}removeDependencies(options,dependencies){let{skipInstall}=options;if(skipInstall){let{packageJson}=options;dependencies.forEach(dep=>{packageJson.devDependencies&&delete packageJson.devDependencies[dep],packageJson.dependencies&&delete packageJson.dependencies[dep]}),this.writePackageJson(packageJson)}else try{this.runRemoveDeps(dependencies)}catch(e){throw logger2.error("An error occurred while removing dependencies."),logger2.log(e.message),new HandledError(e)}}getVersionedPackages(packages){return Promise.all(packages.map(async pkg=>{let[packageName,packageVersion]=getPackageDetails(pkg);return`${packageName}@${await this.getVersion(packageName,packageVersion)}`}))}getVersions(...packageNames){return Promise.all(packageNames.map(packageName=>this.getVersion(packageName)))}async getVersion(packageName,constraint){let current;/(@storybook|^sb$|^storybook$)/.test(packageName)&&(current=versions_default[packageName]);let latest;try{latest=await this.latestVersion(packageName,constraint)}catch(e){if(current)return logger2.warn(`
9
13
  ${import_chalk2.default.yellow(e.message)}`),current;throw logger2.error(`
10
- ${import_chalk2.default.red(e.message)}`),new HandledError(e)}return`^${current&&(!constraint||(0,import_semver3.satisfies)(current,constraint))&&(0,import_semver3.gt)(current,latest)?current:latest}`}async latestVersion(packageName,constraint){return constraint?(await this.runGetVersions(packageName,!0)).reverse().find(version=>(0,import_semver3.satisfies)(version,constraint)):this.runGetVersions(packageName,!1)}addStorybookCommandInScripts(options){let storybookCmd=`storybook dev -p ${(options==null?void 0:options.port)??6006}`,buildStorybookCmd="storybook build",preCommand=options!=null&&options.preCommand?this.getRunCommand(options.preCommand):void 0;this.addScripts({storybook:[preCommand,storybookCmd].filter(Boolean).join(" && "),"build-storybook":[preCommand,buildStorybookCmd].filter(Boolean).join(" && ")})}addESLintConfig(){var _a;let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,eslintConfig:{...packageJson.eslintConfig,overrides:[...((_a=packageJson.eslintConfig)==null?void 0:_a.overrides)||[],{files:["**/*.stories.*"],rules:{"import/no-anonymous-default-export":"off"}}]}})}addScripts(scripts){let packageJson=this.retrievePackageJson();this.writePackageJson({...packageJson,scripts:{...packageJson.scripts,...scripts}})}addPackageResolutions(versions){let packageJson=this.retrievePackageJson(),resolutions=this.getResolutions(packageJson,versions);this.writePackageJson({...packageJson,...resolutions})}executeCommand(command,args,stdio,cwd,ignoreError){let commandResult=(0,import_cross_spawn.sync)(command,args,{cwd:cwd??this.cwd,stdio:stdio??"pipe",encoding:"utf-8",shell:!0});if(commandResult.status!==0&&ignoreError!==!0)throw new Error(commandResult.stderr??"");return commandResult.stdout??""}};var NPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="npm"}initPackageJson(){return this.executeCommand("npm",["init","-y"])}getRunStorybookCommand(){return"npm run storybook"}getRunCommand(command){return`npm run ${command}`}getNpmVersion(){return this.executeCommand("npm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}runPackageCommand(command,args,cwd){return this.executeCommand("npm",["exec","--",command,...args],void 0,cwd)}findInstallations(){let pipeToNull=(0,import_os.platform)()==="win32"?"2>NUL":"2>/dev/null",commandResult=this.executeCommand("npm",["ls","--json","--depth=99",pipeToNull],void 0,void 0,!0);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("npm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("npm",["install",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("npm",["uninstall",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("npm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using npm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},recurse=([name,packageInfo])=>{var _a;if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=(0,import_sort.default)([...existingVersions[name]||[],value.version]),existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(input.dependencies).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"npm ls --depth=1"}}};var import_fs_extra2=require("fs-extra");var PNPMProxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="pnpm"}detectWorkspaceRoot(){let pnpmWorkspaceYaml=`${process.cwd()}/pnpm-workspace.yaml`;return(0,import_fs_extra2.pathExistsSync)(pnpmWorkspaceYaml)}initPackageJson(){return this.executeCommand("pnpm",["init","-y"])}getRunStorybookCommand(){return"pnpm run storybook"}getRunCommand(command){return`pnpm run ${command}`}getPnpmVersion(){return this.executeCommand("pnpm",["--version"])}getInstallArgs(){return this.installArgs||(this.installArgs=[],this.detectWorkspaceRoot()&&this.installArgs.push("-w")),this.installArgs}runPackageCommand(command,args,cwd){return this.executeCommand("pnpm",["exec",command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("pnpm",["list",pattern.map(p=>`"${p}"`).join(" "),"--json","--depth=99"]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{overrides:{...packageJson.overrides,...versions}}}runInstall(){this.executeCommand("pnpm",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("pnpm",["add",...args,...this.getInstallArgs()],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("pnpm",["remove",...args,...this.getInstallArgs()],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("pnpm",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.error)throw new Error(parsedOutput.error.summary);return parsedOutput}catch{throw new Error(`Unable to find versions of ${packageName} using pnpm`)}}mapDependencies(input){let acc={},existingVersions={},duplicatedDependencies={},items=input.reduce((curr,item)=>{let{devDependencies,dependencies,peerDependencies}=item,allDependencies={...devDependencies,...dependencies,...peerDependencies};return Object.assign(curr,allDependencies)},{}),recurse=([name,packageInfo])=>{var _a;if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(items).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"pnpm list --depth=1"}}};var parsePackageData=(packageName="")=>{let[first,second,third]=packageName.trim().split("@"),version=(third||second).replace("npm:","");return{name:third?`@${second}`:first,value:{version,location:""}}};var Yarn2Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn2"}getInstallArgs(){return this.installArgs||(this.installArgs=[]),this.installArgs}initPackageJson(){return this.executeCommand("yarn",["init"])}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command){return`yarn ${command}`}runPackageCommand(command,args,cwd){return this.executeCommand("yarn",[command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("yarn",["info","--name-only","--recursive",pattern.map(p=>`"${p}"`).join(" "),`"${pattern}"`]);try{return this.mapDependencies(commandResult)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}runInstall(){this.executeCommand("yarn",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("yarn",["add",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("yarn",["remove",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let field=fetchAllVersions?"versions":"version",args=["--fields",field,"--json"],commandResult=this.executeCommand("yarn",["npm","info",packageName,...args]);try{return JSON.parse(commandResult)[field]}catch{throw new Error(`Unable to find versions of ${packageName} using yarn 2`)}}mapDependencies(input){let lines=input.split(`
11
- `),acc={},existingVersions={},duplicatedDependencies={};return lines.forEach(packageName=>{var _a;if(!packageName||!packageName.includes("storybook"))return;let{name,value}=parsePackageData(packageName.replaceAll('"',""));(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name]))}),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}};var Yarn1Proxy=class extends JsPackageManager{constructor(){super(...arguments);this.type="yarn1"}getInstallArgs(){return this.installArgs||(this.installArgs=["--ignore-workspace-root-check"]),this.installArgs}initPackageJson(){return this.executeCommand("yarn",["init","-y"])}getRunStorybookCommand(){return"yarn storybook"}getRunCommand(command){return`yarn ${command}`}runPackageCommand(command,args,cwd){return this.executeCommand("yarn",[command,...args],void 0,cwd)}findInstallations(pattern){let commandResult=this.executeCommand("yarn",["list","--pattern",pattern.map(p=>`"${p}"`).join(" "),"--recursive","--json"]);try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}runInstall(){this.executeCommand("yarn",["install",...this.getInstallArgs()],"inherit")}runAddDeps(dependencies,installAsDevDependencies){let args=[...dependencies];installAsDevDependencies&&(args=["-D",...args]),this.executeCommand("yarn",["add",...this.getInstallArgs(),...args],"inherit")}runRemoveDeps(dependencies){let args=[...dependencies];this.executeCommand("yarn",["remove",...this.getInstallArgs(),...args],"inherit")}runGetVersions(packageName,fetchAllVersions){let args=[fetchAllVersions?"versions":"version","--json"],commandResult=this.executeCommand("yarn",["info",packageName,...args]);try{let parsedOutput=JSON.parse(commandResult);if(parsedOutput.type==="inspect")return parsedOutput.data;throw new Error(`Unable to find versions of ${packageName} using yarn`)}catch{throw new Error(`Unable to find versions of ${packageName} using yarn`)}}mapDependencies(input){if(input.type==="tree"){let{trees}=input.data,acc={},existingVersions={},duplicatedDependencies={},recurse=tree=>{var _a;let{children}=tree,{name,value}=parsePackageData(tree.name);!name||!name.includes("storybook")||((_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),children.forEach(recurse))};return trees.forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}throw new Error("Something went wrong while parsing yarn output")}};var NPM_LOCKFILE="package-lock.json",PNPM_LOCKFILE="pnpm-lock.yaml",YARN_LOCKFILE="yarn.lock",JsPackageManagerFactory=class{static getPackageManager({force}={},cwd){if(force==="npm")return new NPMProxy({cwd});if(force==="pnpm")return new PNPMProxy({cwd});if(force==="yarn1")return new Yarn1Proxy({cwd});if(force==="yarn2")return new Yarn2Proxy({cwd});let yarnVersion=getYarnVersion(cwd),closestLockfilePath=(0,import_find_up.sync)([YARN_LOCKFILE,PNPM_LOCKFILE,NPM_LOCKFILE],{cwd}),closestLockfile=closestLockfilePath&&import_node_path.default.basename(closestLockfilePath),hasNPMCommand=hasNPM(cwd),hasPNPMCommand=hasPNPM(cwd);if(yarnVersion&&(closestLockfile===YARN_LOCKFILE||!hasNPMCommand&&!hasPNPMCommand))return yarnVersion===1?new Yarn1Proxy({cwd}):new Yarn2Proxy({cwd});if(hasPNPMCommand&&closestLockfile===PNPM_LOCKFILE)return new PNPMProxy({cwd});if(hasNPMCommand)return new NPMProxy({cwd});throw new Error("Unable to find a usable package manager within NPM, PNPM, Yarn and Yarn 2")}};function hasNPM(cwd){return(0,import_cross_spawn2.sync)("npm",["--version"],{cwd,shell:!0}).status===0}function hasPNPM(cwd){return(0,import_cross_spawn2.sync)("pnpm",["--version"],{cwd,shell:!0}).status===0}function getYarnVersion(cwd){let yarnVersionCommand=(0,import_cross_spawn2.sync)("yarn",["--version"],{cwd,shell:!0});if(yarnVersionCommand.status!==0)return;let yarnVersion=yarnVersionCommand.output.toString().replace(/,/g,"").replace(/"/g,"");return/^1\.+/.test(yarnVersion)?1:2}function parseList(str){return str.split(",").map(item=>item.trim()).filter(item=>item.length>0)}function getEnvConfig(program,configEnv){Object.keys(configEnv).forEach(fieldName=>{let envVarName=configEnv[fieldName],envVarValue=process.env[envVarName];envVarValue&&(program[fieldName]=envVarValue)})}0&&(module.exports={JsPackageManager,JsPackageManagerFactory,getEnvConfig,getPackageDetails,parseList,useNpmWarning,versions});
14
+ ${import_chalk2.default.red(e.message)}`),new HandledError(e)}return`^${current&&(!constraint||(0,import_semver3.satisfies)(current,constraint))&&(0,import_semver3.gt)(current,latest)?current:latest}`}async latestVersion(packageName,constraint){return constraint?(await this.runGetVersions(packageName,!0)).reverse().find(version=>(0,import_semver3.satisfies)(version,constraint)):this.runGetVersions(packageName,!1)}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,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,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"));function parseList(str){return str.split(",").map(item=>item.trim()).filter(item=>item.length>0)}function getEnvConfig(program,configEnv){Object.keys(configEnv).forEach(fieldName=>{let envVarName=configEnv[fieldName],envVarValue=process.env[envVarName];envVarValue&&(program[fieldName]=envVarValue)})}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)})};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"]})}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 pipeToNull=(0,import_os.platform)()==="win32"?"2>NUL":"2>/dev/null",commandResult=await this.executeCommand({command:"npm",args:["ls","--json","--depth=99",pipeToNull],ignoreError:!0});try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{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:["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])=>{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"}}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"));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"]});try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}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:["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])=>{var _a;if(!name||!name.includes("storybook"))return;let value={version:packageInfo.version,location:""};(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),packageInfo.dependencies&&Object.entries(packageInfo.dependencies).forEach(recurse)};return Object.entries(items).forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"pnpm list --depth=1"}}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"));var parsePackageData=(packageName="")=>{let[first,second,third]=packageName.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}"`]});try{return this.mapDependencies(commandResult)}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:["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=>{var _a;if(!packageName||!packageName.includes("storybook"))return;let{name,value}=parsePackageData(packageName.replaceAll('"',""));(_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name]))}),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}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"));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 findInstallations(pattern){let commandResult=await this.executeCommand({command:"yarn",args:["list","--pattern",pattern.map(p=>`"${p}"`).join(" "),"--recursive","--json"]});try{let parsedOutput=JSON.parse(commandResult);return this.mapDependencies(parsedOutput)}catch{return}}getResolutions(packageJson,versions){return{resolutions:{...packageJson.resolutions,...versions}}}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:["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=>{var _a;let{children}=tree,{name,value}=parsePackageData(tree.name);!name||!name.includes("storybook")||((_a=existingVersions[name])!=null&&_a.includes(value.version)||(acc[name]?acc[name].push(value):acc[name]=[value],existingVersions[name]=[...existingVersions[name]||[],value.version],existingVersions[name].length>1&&(duplicatedDependencies[name]=existingVersions[name])),children.forEach(recurse))};return trees.forEach(recurse),{dependencies:acc,duplicatedDependencies,infoCommand:"yarn why"}}throw new Error("Something went wrong while parsing yarn output")}parseErrorFromLogs(logs){var _a;let finalMessage="YARN1 error",match=logs.match(YARN1_ERROR_REGEX);if(match){let errorMessage=(_a=match[0])==null?void 0:_a.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==="npm")return new NPMProxy({cwd});if(force==="pnpm")return new PNPMProxy({cwd});if(force==="yarn1")return new Yarn1Proxy({cwd});if(force==="yarn2")return new Yarn2Proxy({cwd});let yarnVersion=getYarnVersion(cwd),closestLockfilePath=(0,import_find_up.sync)([YARN_LOCKFILE,PNPM_LOCKFILE,NPM_LOCKFILE],{cwd}),closestLockfile=closestLockfilePath&&import_node_path.default.basename(closestLockfilePath),hasNPMCommand=hasNPM(cwd),hasPNPMCommand=hasPNPM(cwd);if(yarnVersion&&(closestLockfile===YARN_LOCKFILE||!hasNPMCommand&&!hasPNPMCommand))return yarnVersion===1?new Yarn1Proxy({cwd}):new Yarn2Proxy({cwd});if(hasPNPMCommand&&closestLockfile===PNPM_LOCKFILE)return new PNPMProxy({cwd});if(hasNPMCommand)return new NPMProxy({cwd});throw new Error("Unable to find a usable package manager within NPM, PNPM, Yarn and Yarn 2")}};function hasNPM(cwd){return(0,import_cross_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,parseList,useNpmWarning,versions});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{JsPackageManager,JsPackageManagerFactory,getEnvConfig,getPackageDetails,parseList,useNpmWarning,versions_default}from"./chunk-Y2KXA66D.mjs";export{JsPackageManager,JsPackageManagerFactory,getEnvConfig,getPackageDetails,parseList,useNpmWarning,versions_default as versions};
1
+ export { JsPackageManager, JsPackageManagerFactory, createLogStream, getEnvConfig, getPackageDetails, parseList, useNpmWarning, versions_default as versions } from './chunk-TUOGMXOX.mjs';
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@storybook/cli",
3
- "version": "7.1.0-alpha.3",
3
+ "version": "7.1.0-alpha.31",
4
4
  "description": "Storybook's CLI - easiest method of adding storybook to your projects",
5
5
  "keywords": [
6
6
  "cli",
7
7
  "generator",
8
8
  "storybook"
9
9
  ],
10
- "homepage": "https://github.com/storybookjs/storybook/tree/main/lib/cli",
10
+ "homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/cli",
11
11
  "bugs": {
12
12
  "url": "https://github.com/storybookjs/storybook/issues"
13
13
  },
14
14
  "repository": {
15
15
  "type": "git",
16
16
  "url": "https://github.com/storybookjs/storybook.git",
17
- "directory": "lib/cli"
17
+ "directory": "code/lib/cli"
18
18
  },
19
19
  "funding": {
20
20
  "type": "opencollective",
@@ -24,10 +24,10 @@
24
24
  "author": "Storybook Team",
25
25
  "exports": {
26
26
  ".": {
27
+ "types": "./dist/index.d.ts",
27
28
  "node": "./dist/index.js",
28
29
  "require": "./dist/index.js",
29
- "import": "./dist/index.mjs",
30
- "types": "./dist/index.d.ts"
30
+ "import": "./dist/index.mjs"
31
31
  },
32
32
  "./package.json": "./package.json",
33
33
  "./bin/index": "./bin/index.js"
@@ -54,16 +54,16 @@
54
54
  "test": "jest test/**/*.test.js"
55
55
  },
56
56
  "dependencies": {
57
- "@babel/core": "^7.20.2",
58
- "@babel/preset-env": "^7.20.2",
57
+ "@babel/core": "^7.22.0",
58
+ "@babel/preset-env": "^7.22.0",
59
59
  "@ndelangen/get-tarball": "^3.0.7",
60
- "@storybook/codemod": "7.1.0-alpha.3",
61
- "@storybook/core-common": "7.1.0-alpha.3",
62
- "@storybook/core-server": "7.1.0-alpha.3",
63
- "@storybook/csf-tools": "7.1.0-alpha.3",
64
- "@storybook/node-logger": "7.1.0-alpha.3",
65
- "@storybook/telemetry": "7.1.0-alpha.3",
66
- "@storybook/types": "7.1.0-alpha.3",
60
+ "@storybook/codemod": "7.1.0-alpha.31",
61
+ "@storybook/core-common": "7.1.0-alpha.31",
62
+ "@storybook/core-server": "7.1.0-alpha.31",
63
+ "@storybook/csf-tools": "7.1.0-alpha.31",
64
+ "@storybook/node-logger": "7.1.0-alpha.31",
65
+ "@storybook/telemetry": "7.1.0-alpha.31",
66
+ "@storybook/types": "7.1.0-alpha.31",
67
67
  "@types/semver": "^7.3.4",
68
68
  "boxen": "^5.1.2",
69
69
  "chalk": "^4.1.0",
@@ -81,12 +81,12 @@
81
81
  "globby": "^11.0.2",
82
82
  "jscodeshift": "^0.14.0",
83
83
  "leven": "^3.1.0",
84
+ "ora": "^5.4.1",
84
85
  "prettier": "^2.8.0",
85
86
  "prompts": "^2.4.0",
86
87
  "puppeteer-core": "^2.1.1",
87
88
  "read-pkg-up": "^7.0.1",
88
89
  "semver": "^7.3.7",
89
- "shelljs": "^0.8.5",
90
90
  "simple-update-notifier": "^1.0.0",
91
91
  "strip-json-comments": "^3.0.1",
92
92
  "tempy": "^1.0.1",
@@ -94,13 +94,13 @@
94
94
  "util-deprecate": "^1.0.2"
95
95
  },
96
96
  "devDependencies": {
97
- "@storybook/client-api": "7.1.0-alpha.3",
97
+ "@storybook/client-api": "7.1.0-alpha.31",
98
98
  "@types/cross-spawn": "^6.0.2",
99
99
  "@types/prompts": "^2.0.9",
100
100
  "@types/puppeteer-core": "^2.1.0",
101
101
  "@types/semver": "^7.3.4",
102
- "@types/shelljs": "^0.8.7",
103
102
  "@types/util-deprecate": "^1.0.0",
103
+ "slash": "^5.0.0",
104
104
  "strip-json-comments": "^3.1.1",
105
105
  "typescript": "~4.9.3"
106
106
  },
@@ -114,5 +114,5 @@
114
114
  ],
115
115
  "platform": "node"
116
116
  },
117
- "gitHead": "d0acd16fdf394463add948bac3f226b93f92c235"
118
- }
117
+ "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae16"
118
+ }
@@ -1,4 +1,4 @@
1
- .wrapper {
1
+ .storybook-header {
2
2
  font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
3
3
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
4
4
  padding: 15px 20px;
@@ -7,12 +7,12 @@
7
7
  justify-content: space-between;
8
8
  }
9
9
 
10
- svg {
10
+ .storybook-header svg {
11
11
  display: inline-block;
12
12
  vertical-align: top;
13
13
  }
14
14
 
15
- h1 {
15
+ .storybook-header h1 {
16
16
  font-weight: 700;
17
17
  font-size: 20px;
18
18
  line-height: 1;
@@ -21,11 +21,11 @@ h1 {
21
21
  vertical-align: top;
22
22
  }
23
23
 
24
- button + button {
24
+ .storybook-header button + button {
25
25
  margin-left: 10px;
26
26
  }
27
27
 
28
- .welcome {
28
+ .storybook-header .welcome {
29
29
  color: #333;
30
30
  font-size: 14px;
31
31
  margin-right: 10px;
@@ -1,4 +1,4 @@
1
- section {
1
+ .storybook-page {
2
2
  font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
3
3
  font-size: 14px;
4
4
  line-height: 24px;
@@ -8,7 +8,7 @@ section {
8
8
  color: #333;
9
9
  }
10
10
 
11
- section h2 {
11
+ .storybook-page h2 {
12
12
  font-weight: 700;
13
13
  font-size: 32px;
14
14
  line-height: 1;
@@ -17,25 +17,25 @@ section h2 {
17
17
  vertical-align: top;
18
18
  }
19
19
 
20
- section p {
20
+ .storybook-page p {
21
21
  margin: 1em 0;
22
22
  }
23
23
 
24
- section a {
24
+ .storybook-page a {
25
25
  text-decoration: none;
26
26
  color: #1ea7fd;
27
27
  }
28
28
 
29
- section ul {
29
+ .storybook-page ul {
30
30
  padding-left: 30px;
31
31
  margin: 1em 0;
32
32
  }
33
33
 
34
- section li {
34
+ .storybook-page li {
35
35
  margin-bottom: 8px;
36
36
  }
37
37
 
38
- section .tip {
38
+ .storybook-page .tip {
39
39
  display: inline-block;
40
40
  border-radius: 1em;
41
41
  font-size: 11px;
@@ -48,14 +48,14 @@ section .tip {
48
48
  vertical-align: top;
49
49
  }
50
50
 
51
- section .tip-wrapper {
51
+ .storybook-page .tip-wrapper {
52
52
  font-size: 13px;
53
53
  line-height: 20px;
54
54
  margin-top: 40px;
55
55
  margin-bottom: 40px;
56
56
  }
57
57
 
58
- section .tip-wrapper svg {
58
+ .storybook-page .tip-wrapper svg {
59
59
  display: inline-block;
60
60
  height: 12px;
61
61
  width: 12px;
@@ -64,6 +64,6 @@ section .tip-wrapper svg {
64
64
  margin-top: 3px;
65
65
  }
66
66
 
67
- section .tip-wrapper svg path {
67
+ .storybook-page .tip-wrapper svg path {
68
68
  fill: #1ea7fd;
69
69
  }
@@ -0,0 +1,73 @@
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 lerna ls --json', {
17
+ cwd: rootDirectory,
18
+ });
19
+
20
+ const projects = JSON.parse(contents.stdout);
21
+ return projects.reduce((acc, project) => {
22
+ acc[project.name] = path.join(project.location, 'package.json');
23
+ return acc;
24
+ }, []);
25
+ };
26
+
27
+ const run = async () => {
28
+ const updatedVersion = process.argv[process.argv.length - 1];
29
+
30
+ if (!semver.valid(updatedVersion)) throw new Error(`Invalid version: ${updatedVersion}`);
31
+
32
+ logger.log(`Generating versions.ts with v${updatedVersion}`);
33
+
34
+ const storybookPackages = await getMonorepoPackages();
35
+
36
+ const packageToVersionMap = (
37
+ await Promise.all(
38
+ Object.keys(storybookPackages).map(async (pkgName) => {
39
+ const { name, version } = await readJson(storybookPackages[pkgName]);
40
+
41
+ return {
42
+ name,
43
+ version,
44
+ };
45
+ })
46
+ )
47
+ )
48
+ .filter(({ name }) => /^(@storybook|sb$|storybook$)/.test(name))
49
+ // As some previous steps are asynchronous order is not always the same so sort them to avoid that
50
+ .sort((package1, package2) => package1.name.localeCompare(package2.name))
51
+ .reduce((acc, { name }) => ({ ...acc, [name]: updatedVersion }), {});
52
+
53
+ const versionsPath = path.join(__dirname, '..', 'src', 'versions.ts');
54
+
55
+ await writeFile(
56
+ versionsPath,
57
+ dedent`
58
+ // auto generated file, do not edit
59
+ export default ${JSON.stringify(packageToVersionMap, null, 2)}
60
+ `
61
+ );
62
+
63
+ logger.log(`Updating versions and formatting results at: ${versionsPath}`);
64
+
65
+ exec(`yarn lint:js:cmd --fix ${versionsPath}`, {
66
+ cwd: path.join(__dirname, '..', '..', '..'),
67
+ });
68
+ };
69
+
70
+ run().catch((e) => {
71
+ logger.error(e);
72
+ process.exit(1);
73
+ });
@@ -0,0 +1,2 @@
1
+ declare module 'envinfo';
2
+ declare var LOGLEVEL: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent' | undefined;