@storybook/cli 10.5.0-alpha.5 → 10.5.0-alpha.7

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.
Files changed (26) hide show
  1. package/dist/_node-chunks/{block-dependencies-versions-7PHMHVXX.js → block-dependencies-versions-7OYN4OJ6.js} +11 -11
  2. package/dist/_node-chunks/{block-experimental-addon-test-5ZWFTYFW.js → block-experimental-addon-test-2YUVRX5Y.js} +9 -9
  3. package/dist/_node-chunks/{block-major-version-T3HRJYBN.js → block-major-version-SNHXUXIT.js} +9 -9
  4. package/dist/_node-chunks/{block-node-version-B3ZGAGEP.js → block-node-version-NPHJGOFN.js} +9 -9
  5. package/dist/_node-chunks/{block-webpack5-frameworks-RRJ6VM3Z.js → block-webpack5-frameworks-GZA34OZU.js} +11 -11
  6. package/dist/_node-chunks/{chunk-5XVO34EZ.js → chunk-3OLDFVDH.js} +8 -8
  7. package/dist/_node-chunks/{chunk-BI5HNNLJ.js → chunk-46TO6QSJ.js} +32 -109
  8. package/dist/_node-chunks/{chunk-QRVM2GVO.js → chunk-7UM5AIIV.js} +11 -7
  9. package/dist/_node-chunks/{chunk-6SN7AHUJ.js → chunk-QXN4FHHX.js} +10 -10
  10. package/dist/_node-chunks/chunk-RSLATG3U.js +11 -0
  11. package/dist/_node-chunks/{globby-AQ4UZZDP.js → globby-SCRW7ORA.js} +8 -8
  12. package/dist/_node-chunks/{p-limit-GYUOENIU.js → p-limit-EE6XMDEK.js} +7 -7
  13. package/dist/_node-chunks/{run-JKQ2KCEN.js → run-XZO7FX4L.js} +117 -511
  14. package/dist/bin/index.js +7 -7
  15. package/package.json +7 -5
  16. package/dist/_node-chunks/chunk-54YXNYHO.js +0 -638
  17. package/dist/_node-chunks/chunk-C5TVJBMC.js +0 -23
  18. package/dist/_node-chunks/chunk-KBY5G3BQ.js +0 -115
  19. package/dist/_node-chunks/chunk-TBHPG2HE.js +0 -20
  20. package/dist/_node-chunks/chunk-WEYGGWE4.js +0 -11
  21. package/dist/_node-chunks/monorepo-VOS454YG.js +0 -119
  22. package/dist/_node-chunks/monorepo-optimized-tests-relaxed-limits-no-story-deletion-G565RUXG.js +0 -119
  23. package/dist/_node-chunks/optimized-tests-RCEVPQBB.js +0 -20
  24. package/dist/_node-chunks/pattern-copy-play-YCEXHQK5.js +0 -810
  25. package/dist/_node-chunks/relaxed-limits-YPUP4H5P.js +0 -115
  26. package/dist/_node-chunks/setup-VMKKTPA5.js +0 -281
@@ -1,19 +1,14 @@
1
- import CJS_COMPAT_NODE_URL_vp1pw1djtui from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_vp1pw1djtui from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_vp1pw1djtui from "node:module";
1
+ import CJS_COMPAT_NODE_URL_h4vun2izro9 from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_h4vun2izro9 from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_h4vun2izro9 from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_vp1pw1djtui.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_vp1pw1djtui.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_vp1pw1djtui.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_h4vun2izro9.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_h4vun2izro9.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_h4vun2izro9.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
11
11
  // ------------------------------------------------------------
12
- import {
13
- instructions
14
- } from "./chunk-KBY5G3BQ.js";
15
- import "./chunk-54YXNYHO.js";
16
- import "./chunk-C5TVJBMC.js";
17
12
  import {
18
13
  bannerComment,
19
14
  containsDirnameUsage,
@@ -28,21 +23,20 @@ import {
28
23
  processAutoblockerResults,
29
24
  require_picocolors,
30
25
  shortenPath,
31
- up,
32
26
  updateMainConfig,
33
27
  upgradeStorybookDependencies
34
- } from "./chunk-BI5HNNLJ.js";
28
+ } from "./chunk-46TO6QSJ.js";
35
29
  import {
36
30
  slash
37
- } from "./chunk-6SN7AHUJ.js";
31
+ } from "./chunk-QXN4FHHX.js";
38
32
  import {
39
33
  require_semver
40
- } from "./chunk-5XVO34EZ.js";
34
+ } from "./chunk-3OLDFVDH.js";
41
35
  import {
42
36
  __commonJS,
43
37
  __require,
44
38
  __toESM
45
- } from "./chunk-QRVM2GVO.js";
39
+ } from "./chunk-7UM5AIIV.js";
46
40
 
47
41
  // ../../../node_modules/envinfo/dist/envinfo.js
48
42
  var require_envinfo = __commonJS({
@@ -1678,7 +1672,7 @@ ${e3}
1678
1672
  "use strict";
1679
1673
  var r = n2(5444), o = n2(5364), i = n2(3875), s = n2(1164), a = n2(2936), c = Object.assign;
1680
1674
  e2.exports = !c || n2(9316)((function() {
1681
- var e3 = {}, t12 = {}, n3 = Symbol(), r2 = "abcdefghijklmnopqrst";
1675
+ var e3 = {}, t12 = {}, n3 = /* @__PURE__ */ Symbol(), r2 = "abcdefghijklmnopqrst";
1682
1676
  return e3[n3] = 7, r2.split("").forEach((function(e4) {
1683
1677
  t12[e4] = e4;
1684
1678
  })), c({}, e3)[n3] != 7 || Object.keys(c({}, t12)).join("") != r2;
@@ -4423,9 +4417,9 @@ var require_isexe = __commonJS({
4423
4417
  if (typeof options == "function" && (cb = options, options = {}), !cb) {
4424
4418
  if (typeof Promise != "function")
4425
4419
  throw new TypeError("callback not provided");
4426
- return new Promise(function(resolve5, reject) {
4420
+ return new Promise(function(resolve3, reject) {
4427
4421
  isexe(path4, options || {}, function(er, is) {
4428
- er ? reject(er) : resolve5(is);
4422
+ er ? reject(er) : resolve3(is);
4429
4423
  });
4430
4424
  });
4431
4425
  }
@@ -4462,22 +4456,22 @@ var require_which = __commonJS({
4462
4456
  };
4463
4457
  }, which = (cmd, opt, cb) => {
4464
4458
  typeof opt == "function" && (cb = opt, opt = {}), opt || (opt = {});
4465
- let { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt), found = [], step = (i) => new Promise((resolve5, reject) => {
4459
+ let { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt), found = [], step = (i) => new Promise((resolve3, reject) => {
4466
4460
  if (i === pathEnv.length)
4467
- return opt.all && found.length ? resolve5(found) : reject(getNotFoundError(cmd));
4461
+ return opt.all && found.length ? resolve3(found) : reject(getNotFoundError(cmd));
4468
4462
  let ppRaw = pathEnv[i], pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw, pCmd = path4.join(pathPart, cmd), p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
4469
- resolve5(subStep(p, i, 0));
4470
- }), subStep = (p, i, ii) => new Promise((resolve5, reject) => {
4463
+ resolve3(subStep(p, i, 0));
4464
+ }), subStep = (p, i, ii) => new Promise((resolve3, reject) => {
4471
4465
  if (ii === pathExt.length)
4472
- return resolve5(step(i + 1));
4466
+ return resolve3(step(i + 1));
4473
4467
  let ext = pathExt[ii];
4474
4468
  isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {
4475
4469
  if (!er && is)
4476
4470
  if (opt.all)
4477
4471
  found.push(p + ext);
4478
4472
  else
4479
- return resolve5(p + ext);
4480
- return resolve5(subStep(p, i, ii + 1));
4473
+ return resolve3(p + ext);
4474
+ return resolve3(subStep(p, i, ii + 1));
4481
4475
  });
4482
4476
  });
4483
4477
  return cb ? step(0).then((res) => cb(null, res), cb) : step(0);
@@ -4716,7 +4710,7 @@ var require_cross_spawn = __commonJS({
4716
4710
  var import_envinfo = __toESM(require_envinfo(), 1);
4717
4711
  import { globalSettings } from "storybook/internal/cli";
4718
4712
  import {
4719
- HandledError as HandledError3,
4713
+ HandledError as HandledError2,
4720
4714
  JsPackageManagerFactory as JsPackageManagerFactory3,
4721
4715
  PackageManagerName as PackageManagerName3,
4722
4716
  optionalEnvToBoolean as optionalEnvToBoolean3,
@@ -4724,8 +4718,8 @@ import {
4724
4718
  versions as versions5
4725
4719
  } from "storybook/internal/common";
4726
4720
  import { withTelemetry } from "storybook/internal/core-server";
4727
- import { CLI_COLORS as CLI_COLORS5, logTracker as logTracker4, logger as logger26 } from "storybook/internal/node-logger";
4728
- import { addToGlobalContext, telemetry as telemetry3 } from "storybook/internal/telemetry";
4721
+ import { CLI_COLORS as CLI_COLORS5, logTracker as logTracker4, logger as logger24 } from "storybook/internal/node-logger";
4722
+ import { addToGlobalContext, telemetry as telemetry2 } from "storybook/internal/telemetry";
4729
4723
  import { Option, program } from "commander";
4730
4724
 
4731
4725
  // ../../../node_modules/leven/index.js
@@ -4766,7 +4760,7 @@ function leven(first, second, options) {
4766
4760
  var import_picocolors18 = __toESM(require_picocolors(), 1);
4767
4761
 
4768
4762
  // package.json
4769
- var version = "10.5.0-alpha.5";
4763
+ var version = "10.5.0-alpha.7";
4770
4764
 
4771
4765
  // src/add.ts
4772
4766
  var import_semver = __toESM(require_semver(), 1);
@@ -5006,9 +5000,9 @@ var DIR_CWD = process.cwd(), require2 = createRequire2(DIR_CWD), postinstallAddo
5006
5000
  } catch {
5007
5001
  return;
5008
5002
  }
5009
- let postinstall = moduledLoaded?.default || moduledLoaded?.postinstall || moduledLoaded, logger27 = options.logger;
5003
+ let postinstall = moduledLoaded?.default || moduledLoaded?.postinstall || moduledLoaded, logger25 = options.logger;
5010
5004
  if (!postinstall || typeof postinstall != "function") {
5011
- logger27.error(`Error finding postinstall function for ${addonName}`);
5005
+ logger25.error(`Error finding postinstall function for ${addonName}`);
5012
5006
  return;
5013
5007
  }
5014
5008
  try {
@@ -5029,7 +5023,7 @@ async function add(addon, {
5029
5023
  configDir: userSpecifiedConfigDir,
5030
5024
  yes,
5031
5025
  skipInstall
5032
- }, logger27 = nodeLogger) {
5026
+ }, logger25 = nodeLogger) {
5033
5027
  let [addonName, inputVersion] = getVersionSpecifier(addon), { mainConfig, mainConfigPath, configDir, previewConfigPath, packageManager } = await getStorybookData({
5034
5028
  configDir: userSpecifiedConfigDir,
5035
5029
  packageManagerName: pkgMgr
@@ -5039,16 +5033,16 @@ async function add(addon, {
5039
5033
  Unable to find storybook config directory. Please specify your Storybook config directory with the --config-dir flag.
5040
5034
  `);
5041
5035
  if (!mainConfigPath) {
5042
- logger27.error("Unable to find Storybook main.js config");
5036
+ logger25.error("Unable to find Storybook main.js config");
5043
5037
  return;
5044
5038
  }
5045
5039
  let shouldAddToMain = !0;
5046
- if (checkInstalled(addonName, mainConfig) && (shouldAddToMain = !1, !yes && (logger27.log(`The Storybook addon "${addonName}" is already present in ${mainConfigPath}.`), !await prompt.confirm({
5040
+ if (checkInstalled(addonName, mainConfig) && (shouldAddToMain = !1, !yes && (logger25.log(`The Storybook addon "${addonName}" is already present in ${mainConfigPath}.`), !await prompt.confirm({
5047
5041
  message: "Do you wish to install it again?"
5048
5042
  }))))
5049
5043
  return;
5050
5044
  let main = await readConfig(mainConfigPath);
5051
- logger27.log(`Verifying ${addonName}`);
5045
+ logger25.log(`Verifying ${addonName}`);
5052
5046
  let version2 = inputVersion;
5053
5047
  if (!version2 && isCoreAddon(addonName) && (version2 = versions.storybook), !version2) {
5054
5048
  let latestVersion = await packageManager.latestVersion(addonName);
@@ -5057,14 +5051,14 @@ async function add(addon, {
5057
5051
  version2 = latestVersion;
5058
5052
  }
5059
5053
  let storybookVersion = versions.storybook, versionIsStorybook = version2 === versions.storybook;
5060
- isCoreAddon(addonName) && !versionIsStorybook && logger27.warn(
5054
+ isCoreAddon(addonName) && !versionIsStorybook && logger25.warn(
5061
5055
  `The version of ${addonName} (${version2}) you are installing is not the same as the version of Storybook you are using (${storybookVersion}). This may lead to unexpected behavior.`
5062
5056
  );
5063
5057
  let versionRange = packageManager.getDependencyVersion("storybook")?.match(/^[~^]/)?.[0] ?? "", addonWithVersion = versionIsStorybook ? `${addonName}@${versionRange}${storybookVersion}` : isValidVersion(version2) && !version2.includes("-pr-") ? `${addonName}@^${version2}` : `${addonName}@${version2}`;
5064
- logger27.log(`Installing ${addonWithVersion}`), await packageManager.addDependencies(
5058
+ logger25.log(`Installing ${addonWithVersion}`), await packageManager.addDependencies(
5065
5059
  { type: "devDependencies", writeOutputToFile: !1, skipInstall },
5066
5060
  [addonWithVersion]
5067
- ), shouldAddToMain && (logger27.log(`Adding '${addon}' to the "addons" field in ${mainConfigPath}`), await setupAddonInConfig({
5061
+ ), shouldAddToMain && (logger25.log(`Adding '${addon}' to the "addons" field in ${mainConfigPath}`), await setupAddonInConfig({
5068
5062
  addonName,
5069
5063
  mainConfigCSFFile: main,
5070
5064
  previewConfigPath,
@@ -5073,7 +5067,7 @@ async function add(addon, {
5073
5067
  packageManager: packageManager.type,
5074
5068
  configDir,
5075
5069
  yes,
5076
- logger: logger27,
5070
+ logger: logger25,
5077
5071
  prompt,
5078
5072
  skipInstall
5079
5073
  });
@@ -5630,7 +5624,7 @@ import { logger as logger3 } from "storybook/internal/node-logger";
5630
5624
  import { promises as fs } from "fs";
5631
5625
  var maxConcurrentTasks = Math.max(1, os.cpus().length - 1);
5632
5626
  async function runCodemod(globPattern = "**/*.{stories,story}.{js,jsx,ts,tsx,mjs,mjsx,mts,mtsx}", transform, { dryRun = !1, skipFormatting = !1 } = {}) {
5633
- let modifiedCount = 0, unmodifiedCount = 0, errorCount = 0, { globby } = await import("./globby-AQ4UZZDP.js"), files = await globby(slash(globPattern), {
5627
+ let modifiedCount = 0, unmodifiedCount = 0, errorCount = 0, { globby } = await import("./globby-SCRW7ORA.js"), files = await globby(slash(globPattern), {
5634
5628
  followSymbolicLinks: !0,
5635
5629
  ignore: ["**/node_modules/**", "**/dist/**", "**/storybook-static/**", "**/build/**"]
5636
5630
  });
@@ -5641,7 +5635,7 @@ Please try a different pattern.
5641
5635
  `
5642
5636
  ), new Error("No files matched");
5643
5637
  try {
5644
- let pLimit = (await import("./p-limit-GYUOENIU.js")).default, limit = pLimit(maxConcurrentTasks);
5638
+ let pLimit = (await import("./p-limit-EE6XMDEK.js")).default, limit = pLimit(maxConcurrentTasks);
5645
5639
  await Promise.all(
5646
5640
  files.map(
5647
5641
  (file) => limit(async () => {
@@ -6483,7 +6477,7 @@ var addonA11yParameters = {
6483
6477
  errors.push({ file: previewFileToUpdate, error });
6484
6478
  }
6485
6479
  }
6486
- let { default: pLimit } = await import("./p-limit-GYUOENIU.js"), limit = pLimit(10);
6480
+ let { default: pLimit } = await import("./p-limit-EE6XMDEK.js"), limit = pLimit(10);
6487
6481
  if (await Promise.all(
6488
6482
  storyFilesToUpdate.map(
6489
6483
  (file) => limit(async () => {
@@ -6637,7 +6631,7 @@ var addonGlobalsApi = {
6637
6631
  }
6638
6632
  };
6639
6633
  async function transformStoryFiles(files, options, dryRun) {
6640
- let errors = [], { default: pLimit } = await import("./p-limit-GYUOENIU.js"), limit = pLimit(10);
6634
+ let errors = [], { default: pLimit } = await import("./p-limit-EE6XMDEK.js"), limit = pLimit(10);
6641
6635
  return await Promise.all(
6642
6636
  files.map(
6643
6637
  (file) => limit(async () => {
@@ -6829,7 +6823,7 @@ function transformPackageJson(content) {
6829
6823
  return hasChanges ? JSON.stringify(packageJson, null, 2) : null;
6830
6824
  }
6831
6825
  var transformPackageJsonFiles = async (files, dryRun) => {
6832
- let errors = [], { default: pLimit } = await import("./p-limit-GYUOENIU.js"), limit = pLimit(10);
6826
+ let errors = [], { default: pLimit } = await import("./p-limit-EE6XMDEK.js"), limit = pLimit(10);
6833
6827
  return await Promise.all(
6834
6828
  files.map(
6835
6829
  (file) => limit(async () => {
@@ -6868,7 +6862,7 @@ var transformPackageJsonFiles = async (files, dryRun) => {
6868
6862
  dryRun
6869
6863
  );
6870
6864
  errors.push(...packageJsonErrors);
6871
- let { globby } = await import("./globby-AQ4UZZDP.js"), configFiles = await globby([`${configDir}/**/*`]), importErrors = await transformImportFiles(
6865
+ let { globby } = await import("./globby-SCRW7ORA.js"), configFiles = await globby([`${configDir}/**/*`]), importErrors = await transformImportFiles(
6872
6866
  [...storiesPaths, ...configFiles].filter(Boolean),
6873
6867
  {
6874
6868
  ...consolidatedPackages,
@@ -7224,7 +7218,7 @@ var VITE_DEFAULT_VERSION = "^7.0.0", transformMainConfig = async (mainConfigPath
7224
7218
  ]);
7225
7219
  }
7226
7220
  mainConfigPath && (logger11.debug("Updating main config file..."), await transformMainConfig(mainConfigPath, dryRun)), logger11.debug("Scanning and updating import statements...");
7227
- let { globby } = await import("./globby-AQ4UZZDP.js"), configFiles = await globby([`${configDir}/**/*`]), allFiles = [...storiesPaths, ...configFiles].filter(Boolean), transformErrors = await transformImportFiles2(
7221
+ let { globby } = await import("./globby-SCRW7ORA.js"), configFiles = await globby([`${configDir}/**/*`]), allFiles = [...storiesPaths, ...configFiles].filter(Boolean), transformErrors = await transformImportFiles2(
7228
7222
  allFiles,
7229
7223
  {
7230
7224
  "@storybook/nextjs": "@storybook/nextjs-vite"
@@ -7248,9 +7242,9 @@ import { logger as logger12, prompt as prompt3 } from "storybook/internal/node-l
7248
7242
  import { spawn } from "node:child_process";
7249
7243
  var TIMEOUT = 2e3;
7250
7244
  function checkUnixCommandExists(command2) {
7251
- return new Promise((resolve5) => {
7245
+ return new Promise((resolve3) => {
7252
7246
  let proc = spawn("which", [command2]);
7253
- proc.on("error", () => resolve5(!1)), proc.on("close", (code) => resolve5(code === 0));
7247
+ proc.on("error", () => resolve3(!1)), proc.on("close", (code) => resolve3(code === 0));
7254
7248
  });
7255
7249
  }
7256
7250
  async function getWriteCommand() {
@@ -7270,7 +7264,7 @@ async function getWriteCommand() {
7270
7264
  }
7271
7265
  }
7272
7266
  function writeText(text) {
7273
- return new Promise(async (resolve5, reject) => {
7267
+ return new Promise(async (resolve3, reject) => {
7274
7268
  let command2 = await getWriteCommand();
7275
7269
  if (!command2)
7276
7270
  return reject(new Error("No clipboard tool found"));
@@ -7278,7 +7272,7 @@ function writeText(text) {
7278
7272
  stdio: ["pipe", "ignore", "ignore"],
7279
7273
  signal: AbortSignal.timeout(TIMEOUT)
7280
7274
  });
7281
- proc.on("error", (cause) => reject(new Error("An error occurred while copying", { cause }))), proc.on("close", (code) => code === 0 ? resolve5() : reject(new Error("An unknown error occurred while copying"))), proc.stdin.write(text), proc.stdin.end();
7275
+ proc.on("error", (cause) => reject(new Error("An error occurred while copying", { cause }))), proc.on("close", (code) => code === 0 ? resolve3() : reject(new Error("An unknown error occurred while copying"))), proc.stdin.write(text), proc.stdin.end();
7282
7276
  });
7283
7277
  }
7284
7278
 
@@ -7302,7 +7296,7 @@ var REACT_VITE_PACKAGE = "@storybook/react-vite", TANSTACK_REACT_PACKAGE = "@sto
7302
7296
  configDir,
7303
7297
  storiesPaths
7304
7298
  }) => {
7305
- let { globby } = await import("./globby-AQ4UZZDP.js"), configFiles = configDir ? await globby([`${configDir}/**/*.{ts,tsx,js,jsx,mjs,cjs}`], {
7299
+ let { globby } = await import("./globby-SCRW7ORA.js"), configFiles = configDir ? await globby([`${configDir}/**/*.{ts,tsx,js,jsx,mjs,cjs}`], {
7306
7300
  ignore: ["**/node_modules/**", "**/dist/**"]
7307
7301
  }) : [], candidateFiles = Array.from(
7308
7302
  /* @__PURE__ */ new Set([...previewConfigPath ? [previewConfigPath] : [], ...configFiles, ...storiesPaths])
@@ -7521,7 +7515,7 @@ var REACT_VITE_PACKAGE = "@storybook/react-vite", TANSTACK_REACT_PACKAGE = "@sto
7521
7515
  logger12.step(`Migrating from ${REACT_VITE_PACKAGE} to ${TANSTACK_REACT_PACKAGE}...`), dryRun ? logger12.debug("Dry run: Skipping package.json updates.") : (logger12.debug("Updating package.json files..."), await packageManager.removeDependencies([REACT_VITE_PACKAGE]), await packageManager.addDependencies({ type: "devDependencies", skipInstall: !0 }, [
7522
7516
  `${TANSTACK_REACT_PACKAGE}@${storybookVersion}`
7523
7517
  ])), mainConfigPath && (logger12.debug("Updating main config file..."), await transformMainConfig2(mainConfigPath, dryRun)), logger12.debug("Scanning and updating import statements...");
7524
- let { globby } = await import("./globby-AQ4UZZDP.js"), configFiles = configDir ? await globby([`${configDir}/**/*.{ts,tsx,js,jsx,mjs,cjs}`], {
7518
+ let { globby } = await import("./globby-SCRW7ORA.js"), configFiles = configDir ? await globby([`${configDir}/**/*.{ts,tsx,js,jsx,mjs,cjs}`], {
7525
7519
  ignore: ["**/node_modules/**", "**/dist/**"]
7526
7520
  }) : [], allFiles = [...storiesPaths, ...configFiles, previewConfigPath].filter(
7527
7521
  Boolean
@@ -7762,7 +7756,7 @@ var getAllDependencies = (packageJson) => Object.keys({
7762
7756
  let regex = new RegExp(`(['"])${renderer}(['"])`, "g");
7763
7757
  return regex.test(source) ? source.replace(regex, `$1${framework}$2`) : null;
7764
7758
  }, transformSourceFiles = async (files, renderer, framework, dryRun) => {
7765
- let errors = [], { default: pLimit } = await import("./p-limit-GYUOENIU.js"), limit = pLimit(10);
7759
+ let errors = [], { default: pLimit } = await import("./p-limit-EE6XMDEK.js"), limit = pLimit(10);
7766
7760
  return await Promise.all(
7767
7761
  files.map(
7768
7762
  (file) => limit(async () => {
@@ -7829,7 +7823,7 @@ var getAllDependencies = (packageJson) => Object.keys({
7829
7823
  continue;
7830
7824
  logger14.debug(`
7831
7825
  Migrating ${rendererPackage} to ${selectedFramework}`);
7832
- let { globby } = await import("./globby-AQ4UZZDP.js"), configFiles = await globby([`${configDir}/**/*`]);
7826
+ let { globby } = await import("./globby-SCRW7ORA.js"), configFiles = await globby([`${configDir}/**/*`]);
7833
7827
  await transformSourceFiles(
7834
7828
  [...storiesPaths, ...configFiles].filter(Boolean),
7835
7829
  rendererPackage,
@@ -7935,7 +7929,7 @@ async function renameInFile(filePath, oldText, newText) {
7935
7929
  }
7936
7930
  var getDotStorybookReferences = async (searchDir) => {
7937
7931
  try {
7938
- let { globby } = await import("./globby-AQ4UZZDP.js"), { readFile: readFile11 } = await import("node:fs/promises"), files = await globby(`${searchDir}/**/*`, {
7932
+ let { globby } = await import("./globby-SCRW7ORA.js"), { readFile: readFile11 } = await import("node:fs/promises"), files = await globby(`${searchDir}/**/*`, {
7939
7933
  onlyFiles: !0,
7940
7934
  gitignore: !0
7941
7935
  }), referencedFiles = [];
@@ -7956,7 +7950,7 @@ var getDotStorybookReferences = async (searchDir) => {
7956
7950
  async check({ packageManager, mainConfigPath }) {
7957
7951
  if (!packageManager.getAllDependencies()["@storybook/react-native"])
7958
7952
  return null;
7959
- let projectDir = mainConfigPath ? join3(mainConfigPath, "..", "..") : process.cwd(), storybookDir = join3(projectDir, ".storybook"), rnStorybookDir = join3(projectDir, RN_STORYBOOK_DIR), { globby } = await import("./globby-AQ4UZZDP.js"), requiresFiles = await globby(join3(storybookDir, "storybook.requires.*"));
7953
+ let projectDir = mainConfigPath ? join3(mainConfigPath, "..", "..") : process.cwd(), storybookDir = join3(projectDir, ".storybook"), rnStorybookDir = join3(projectDir, RN_STORYBOOK_DIR), { globby } = await import("./globby-SCRW7ORA.js"), requiresFiles = await globby(join3(storybookDir, "storybook.requires.*"));
7960
7954
  return existsSync3(storybookDir) && requiresFiles.length > 0 && !existsSync3(rnStorybookDir) ? { storybookDir, rnStorybookDir } : null;
7961
7955
  },
7962
7956
  prompt() {
@@ -9072,7 +9066,8 @@ var baseTemplates = {
9072
9066
  name: "Angular CLI Latest (Webpack | TypeScript)",
9073
9067
  script: "npx -p @angular/cli ng new angular-latest --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn --ssr",
9074
9068
  modifications: {
9075
- extraDependencies: ["@angular/forms@latest"],
9069
+ extraDependencies: ["@angular/forms@21.2.16"],
9070
+ // Move this to latest or 22 once ng new creates v22 projects
9076
9071
  useCsfFactory: !0
9077
9072
  },
9078
9073
  extraCiSteps: {
@@ -9593,383 +9588,11 @@ async function promptSelectedTemplate(choices) {
9593
9588
  });
9594
9589
  }
9595
9590
 
9596
- // src/ai/index.ts
9597
- import { writeFile as writeFile10 } from "node:fs/promises";
9598
- import { resolve as resolve4 } from "node:path";
9599
- import { cache, getPrettyPackageManagerName } from "storybook/internal/common";
9600
- import { logger as logger23 } from "storybook/internal/node-logger";
9601
- import { telemetry } from "storybook/internal/telemetry";
9602
- import { SupportedLanguage as SupportedLanguage2 } from "storybook/internal/types";
9603
-
9604
- // ../create-storybook/src/services/ProjectTypeService.ts
9605
- import { existsSync as existsSync6 } from "node:fs";
9606
- import { resolve as resolve3 } from "node:path";
9607
- import { ProjectType as ProjectType2 } from "storybook/internal/cli";
9608
- import { HandledError, getProjectRoot } from "storybook/internal/common";
9609
- import { logger as logger22 } from "storybook/internal/node-logger";
9610
- import { NxProjectDetectedError } from "storybook/internal/server-errors";
9611
- import { SupportedLanguage } from "storybook/internal/types";
9612
-
9613
- // ../../../node_modules/empathic/find.mjs
9614
- import { join as join5 } from "node:path";
9615
- import { existsSync as existsSync5, statSync } from "node:fs";
9616
- function up2(name, options) {
9617
- let dir, tmp, start = options && options.cwd || "";
9618
- for (dir of up(start, options))
9619
- if (tmp = join5(dir, name), existsSync5(tmp)) return tmp;
9620
- }
9621
-
9622
- // ../create-storybook/src/services/ProjectTypeService.ts
9623
- var import_semver7 = __toESM(require_semver(), 1);
9624
- import { dedent as dedent17 } from "ts-dedent";
9625
- var ProjectTypeService = class {
9626
- constructor(jsPackageManager) {
9627
- this.jsPackageManager = jsPackageManager;
9628
- }
9629
- /** Sorted configuration to match a Storybook preset template */
9630
- getSupportedTemplates() {
9631
- return [
9632
- {
9633
- preset: ProjectType2.NUXT,
9634
- dependencies: ["nuxt"],
9635
- matcherFunction: ({ dependencies }) => dependencies?.every(Boolean) ?? !0
9636
- },
9637
- {
9638
- preset: ProjectType2.TANSTACK_REACT,
9639
- dependencies: ["@tanstack/start", "@tanstack/react-start", "@tanstack/react-router"],
9640
- matcherFunction: ({ dependencies }) => dependencies?.some(Boolean) ?? !1
9641
- },
9642
- {
9643
- preset: ProjectType2.VUE3,
9644
- dependencies: {
9645
- // This Vue template works with Vue 3
9646
- vue: (versionRange) => versionRange === "next" || this.eqMajor(versionRange, 3)
9647
- },
9648
- matcherFunction: ({ dependencies }) => dependencies?.some(Boolean) ?? !1
9649
- },
9650
- {
9651
- preset: ProjectType2.EMBER,
9652
- dependencies: ["ember-cli"],
9653
- matcherFunction: ({ dependencies }) => dependencies?.every(Boolean) ?? !0
9654
- },
9655
- {
9656
- preset: ProjectType2.NEXTJS,
9657
- dependencies: ["next"],
9658
- matcherFunction: ({ dependencies }) => dependencies?.every(Boolean) ?? !0
9659
- },
9660
- {
9661
- preset: ProjectType2.QWIK,
9662
- dependencies: ["@builder.io/qwik"],
9663
- matcherFunction: ({ dependencies }) => dependencies?.every(Boolean) ?? !0
9664
- },
9665
- {
9666
- preset: ProjectType2.REACT_NATIVE,
9667
- dependencies: ["react-native", "react-native-scripts", "expo"],
9668
- peerDependencies: ["react-native", "react-native-scripts", "expo"],
9669
- matcherFunction: ({ dependencies, peerDependencies }) => (dependencies?.some(Boolean) || peerDependencies?.some(Boolean)) ?? !1
9670
- },
9671
- {
9672
- preset: ProjectType2.REACT_SCRIPTS,
9673
- // For projects using a custom/forked `react-scripts` package.
9674
- files: ["/node_modules/.bin/react-scripts"],
9675
- // For standard CRA projects
9676
- dependencies: ["react-scripts"],
9677
- matcherFunction: ({ dependencies, files }) => (dependencies?.every(Boolean) || files?.every(Boolean)) ?? !1
9678
- },
9679
- {
9680
- preset: ProjectType2.ANGULAR,
9681
- dependencies: ["@angular/core"],
9682
- matcherFunction: ({ dependencies }) => dependencies?.every(Boolean) ?? !0
9683
- },
9684
- {
9685
- preset: ProjectType2.WEB_COMPONENTS,
9686
- dependencies: ["lit-element", "lit-html", "lit"],
9687
- matcherFunction: ({ dependencies }) => dependencies?.some(Boolean) ?? !1
9688
- },
9689
- {
9690
- preset: ProjectType2.PREACT,
9691
- dependencies: ["preact"],
9692
- matcherFunction: ({ dependencies }) => dependencies?.every(Boolean) ?? !0
9693
- },
9694
- {
9695
- // TODO: This only works because it is before the SVELTE template. could be more explicit
9696
- preset: ProjectType2.SVELTEKIT,
9697
- dependencies: ["@sveltejs/kit"],
9698
- matcherFunction: ({ dependencies }) => dependencies?.every(Boolean) ?? !0
9699
- },
9700
- {
9701
- preset: ProjectType2.SVELTE,
9702
- dependencies: ["svelte"],
9703
- matcherFunction: ({ dependencies }) => dependencies?.every(Boolean) ?? !0
9704
- },
9705
- {
9706
- preset: ProjectType2.SOLID,
9707
- dependencies: ["solid-js"],
9708
- matcherFunction: ({ dependencies }) => dependencies?.every(Boolean) ?? !0
9709
- },
9710
- // DO NOT MOVE ANY TEMPLATES BELOW THIS LINE
9711
- // React is part of every Template, after Storybook is initialized once
9712
- {
9713
- preset: ProjectType2.REACT,
9714
- dependencies: ["react"],
9715
- peerDependencies: ["react"],
9716
- matcherFunction: ({ dependencies, peerDependencies }) => (dependencies?.some(Boolean) || peerDependencies?.some(Boolean)) ?? !1
9717
- }
9718
- ];
9719
- }
9720
- isStorybookInstantiated(configDir = resolve3(process.cwd(), ".storybook")) {
9721
- return existsSync6(configDir);
9722
- }
9723
- async validateProvidedType(projectTypeProvided) {
9724
- if (Object.values(ProjectType2).filter(
9725
- (t10) => !["undetected", "unsupported", "nx"].includes(String(t10))
9726
- ).includes(projectTypeProvided))
9727
- return projectTypeProvided;
9728
- throw logger22.error(
9729
- `The provided project type ${projectTypeProvided} was not recognized by Storybook`
9730
- ), new HandledError(`Unknown project type supplied: ${projectTypeProvided}`);
9731
- }
9732
- async autoDetectProjectType(options) {
9733
- try {
9734
- let detectedType = await this.detectProjectType(options);
9735
- if (detectedType === ProjectType2.UNDETECTED || detectedType === null)
9736
- throw logger22.error(dedent17`
9737
- Unable to initialize Storybook in this directory.
9738
-
9739
- Storybook couldn't detect a supported framework or configuration for your project. Make sure you're inside a framework project (e.g., React, Vue, Svelte, Angular, Next.js) and that its dependencies are installed.
9740
-
9741
- Tips:
9742
- - Run init in an empty directory or create a new framework app first.
9743
- - If this directory contains unrelated files, try a new directory for Storybook.
9744
- `), new HandledError("Storybook failed to detect your project type");
9745
- if (detectedType === ProjectType2.NX)
9746
- throw new NxProjectDetectedError();
9747
- return detectedType;
9748
- } catch (err) {
9749
- throw err instanceof HandledError || err instanceof NxProjectDetectedError ? err : (logger22.error(String(err)), new HandledError(err instanceof Error ? err.message : String(err)));
9750
- }
9751
- }
9752
- async detectLanguage() {
9753
- let language = SupportedLanguage.JAVASCRIPT;
9754
- return existsSync6("jsconfig.json") || (!!this.jsPackageManager.getAllDependencies().typescript ? (await this.detectIncompatiblePackageVersions()).length === 0 && (language = SupportedLanguage.TYPESCRIPT) : existsSync6("tsconfig.json") && (language = SupportedLanguage.TYPESCRIPT)), language;
9755
- }
9756
- /** Check installed tooling versions for TypeScript compatibility constraints */
9757
- async detectIncompatiblePackageVersions() {
9758
- let getModulePackageJSONVersion = async (pkg) => (await this.jsPackageManager.getModulePackageJSON(pkg))?.version ?? null, [
9759
- typescriptVersion,
9760
- prettierVersion,
9761
- babelPluginTransformTypescriptVersion,
9762
- typescriptEslintParserVersion,
9763
- eslintPluginStorybookVersion
9764
- ] = await Promise.all([
9765
- getModulePackageJSONVersion("typescript"),
9766
- getModulePackageJSONVersion("prettier"),
9767
- getModulePackageJSONVersion("@babel/plugin-transform-typescript"),
9768
- getModulePackageJSONVersion("@typescript-eslint/parser"),
9769
- getModulePackageJSONVersion("eslint-plugin-storybook")
9770
- ]), satisfies = (version2, range) => version2 ? import_semver7.default.satisfies(version2, range, { includePrerelease: !0 }) : !1, incompatibleReasons = [];
9771
- return typescriptVersion && !satisfies(typescriptVersion, ">=4.9.0") && incompatibleReasons.push(`typescript ${typescriptVersion} is below 4.9.0`), prettierVersion && !import_semver7.default.gte(prettierVersion, "2.8.0") && incompatibleReasons.push(`prettier ${prettierVersion} is below 2.8.0`), babelPluginTransformTypescriptVersion && !satisfies(babelPluginTransformTypescriptVersion, ">=7.20.0") && incompatibleReasons.push(
9772
- `@babel/plugin-transform-typescript ${babelPluginTransformTypescriptVersion} is below 7.20.0`
9773
- ), typescriptEslintParserVersion && !satisfies(typescriptEslintParserVersion, ">=5.44.0") && incompatibleReasons.push(
9774
- `@typescript-eslint/parser ${typescriptEslintParserVersion} is below 5.44.0`
9775
- ), eslintPluginStorybookVersion && !eslintPluginStorybookVersion.startsWith("0.0.0-") && !satisfies(eslintPluginStorybookVersion, ">=0.6.8") && incompatibleReasons.push(
9776
- `eslint-plugin-storybook ${eslintPluginStorybookVersion} is below 0.6.8`
9777
- ), incompatibleReasons;
9778
- }
9779
- eqMajor(versionRange, major) {
9780
- return import_semver7.default.validRange(versionRange) ? import_semver7.default.minVersion(versionRange)?.major === major : !1;
9781
- }
9782
- async detectProjectType(options) {
9783
- try {
9784
- if (this.isNxProject())
9785
- return ProjectType2.NX;
9786
- if (options.html)
9787
- return ProjectType2.HTML;
9788
- let { packageJson } = this.jsPackageManager.primaryPackageJson;
9789
- return this.detectFrameworkPreset(packageJson);
9790
- } catch {
9791
- return ProjectType2.UNDETECTED;
9792
- }
9793
- }
9794
- detectFrameworkPreset(packageJson) {
9795
- let result = [...this.getSupportedTemplates(), this.getUnsupportedTemplate()].find(
9796
- (framework) => this.getProjectType(packageJson, framework) !== null
9797
- );
9798
- return result ? result.preset : ProjectType2.UNDETECTED;
9799
- }
9800
- /** Template that matches unsupported frameworks */
9801
- getUnsupportedTemplate() {
9802
- return {
9803
- preset: ProjectType2.UNSUPPORTED,
9804
- dependencies: {},
9805
- matcherFunction: ({ dependencies }) => dependencies?.some(Boolean) ?? !1
9806
- };
9807
- }
9808
- getProjectType(packageJson, framework) {
9809
- let matcher = {
9810
- dependencies: [!1],
9811
- peerDependencies: [!1],
9812
- files: [!1]
9813
- }, { preset, files, dependencies, peerDependencies, matcherFunction } = framework, dependencySearches = [];
9814
- Array.isArray(dependencies) ? dependencySearches = dependencies.map((name) => [name, void 0]) : typeof dependencies == "object" && (dependencySearches = Object.entries(dependencies)), dependencySearches.length > 0 && (matcher.dependencies = dependencySearches.map(
9815
- ([name, matchFn]) => this.hasDependency(packageJson, name, matchFn)
9816
- ));
9817
- let peerDependencySearches = [];
9818
- return Array.isArray(peerDependencies) ? peerDependencySearches = peerDependencies.map((name) => [name, void 0]) : typeof peerDependencies == "object" && (peerDependencySearches = Object.entries(peerDependencies)), peerDependencySearches.length > 0 && (matcher.peerDependencies = peerDependencySearches.map(
9819
- ([name, matchFn]) => this.hasPeerDependency(packageJson, name, matchFn)
9820
- )), Array.isArray(files) && files.length > 0 && (matcher.files = files.map((name) => existsSync6(name))), matcherFunction(matcher) ? preset : null;
9821
- }
9822
- hasDependency(packageJson, name, matcher) {
9823
- let version2 = packageJson.dependencies?.[name] || packageJson.devDependencies?.[name];
9824
- return version2 && typeof matcher == "function" ? matcher(version2) : !!version2;
9825
- }
9826
- hasPeerDependency(packageJson, name, matcher) {
9827
- let version2 = packageJson.peerDependencies?.[name];
9828
- return version2 && typeof matcher == "function" ? matcher(version2) : !!version2;
9829
- }
9830
- isNxProject() {
9831
- return up2("nx.json", { last: getProjectRoot() });
9832
- }
9833
- };
9834
-
9835
- // src/ai/setup-prompts/index.ts
9836
- import { dedent as dedent18 } from "ts-dedent";
9837
-
9838
- // src/ai/utils/project-overview.ts
9839
- function getProjectOverview(projectInfo) {
9840
- let rows = [
9841
- ["Version", projectInfo.storybookVersion || "unknown"],
9842
- ["Renderer", projectInfo.rendererPackage || "unknown"],
9843
- ["Framework", projectInfo.framework || "unknown"],
9844
- ["Builder", projectInfo.builderPackage || "unknown"],
9845
- ["Config Dir", `\`${projectInfo.configDir}\``],
9846
- ["Language", projectInfo.language === "ts" ? "TypeScript" : "JavaScript"]
9847
- ];
9848
- return projectInfo.packageManager && rows.push(["Package Manager", projectInfo.packageManagerName || "unknown"]), rows.push(["Addons", projectInfo.addons.length > 0 ? projectInfo.addons.join(", ") : "none"]), ["## Project Info", "", "| Property | Value |", "|----------|-------|", rows.map(([key, value]) => `| ${key} | ${value} |`).join(`
9849
- `)].join(
9850
- `
9851
- `
9852
- );
9853
- }
9854
-
9855
- // src/ai/setup-prompts/index.ts
9856
- var DEFAULT_PROMPT_NAME = "optimized-tests", CURRENTLY_USED_PROMPT = {
9857
- [DEFAULT_PROMPT_NAME]: instructions
9858
- }, FORMERLY_USED_PROMPTS = {
9859
- monorepo: async () => (await import("./monorepo-VOS454YG.js")).instructions,
9860
- "optimized-tests": async () => (await import("./optimized-tests-RCEVPQBB.js")).instructions,
9861
- "relaxed-limits": async () => (await import("./relaxed-limits-YPUP4H5P.js")).instructions,
9862
- setup: async () => (await import("./setup-VMKKTPA5.js")).instructions,
9863
- "pattern-copy-play": async () => (await import("./pattern-copy-play-YCEXHQK5.js")).instructions,
9864
- "monorepo-optimized-tests-relaxed-limits-no-story-deletion": async () => (await import("./monorepo-optimized-tests-relaxed-limits-no-story-deletion-G565RUXG.js")).instructions
9865
- }, PROMPT_NAMES = [
9866
- ...Object.keys(CURRENTLY_USED_PROMPT),
9867
- ...Object.keys(FORMERLY_USED_PROMPTS)
9868
- ], EVAL_SETUP_PROMPT_ENV = "EVAL_SETUP_PROMPT";
9869
- function resolvePromptName() {
9870
- let requested = process.env[EVAL_SETUP_PROMPT_ENV]?.trim();
9871
- return requested && (Object.hasOwn(CURRENTLY_USED_PROMPT, requested) || Object.hasOwn(FORMERLY_USED_PROMPTS, requested)) ? requested : DEFAULT_PROMPT_NAME;
9872
- }
9873
- async function getAiSetupPrompt(projectInfo) {
9874
- let name = resolvePromptName();
9875
- return { content: (CURRENTLY_USED_PROMPT[name] ?? await FORMERLY_USED_PROMPTS[name]())(projectInfo), name };
9876
- }
9877
- async function getAiSetupMarkdownOutput(projectInfo) {
9878
- let { content, name } = await getAiSetupPrompt(projectInfo);
9879
- return {
9880
- markdown: dedent18`
9881
- # Storybook Setup
9882
-
9883
- ${getProjectOverview(projectInfo)}
9884
-
9885
- ${content}
9886
- `,
9887
- prompt: name
9888
- };
9889
- }
9890
-
9891
- // src/ai/index.ts
9892
- async function aiSetup(options) {
9893
- let { configDir: userConfigDir, packageManager, output } = options, projectInfo;
9894
- try {
9895
- let data = await getStorybookData({
9896
- configDir: userConfigDir,
9897
- packageManagerName: packageManager
9898
- });
9899
- if (!data.frameworkPackage || !data.rendererPackage || !data.builderPackage) {
9900
- logger23.error(
9901
- "Could not detect framework, renderer, or builder from your Storybook config. Make sure you are running this command from your project root, or specify --config-dir."
9902
- );
9903
- return;
9904
- }
9905
- let majorVersion = data.versionInstalled ? parseMajorVersion(data.versionInstalled) : void 0, language = await new ProjectTypeService(data.packageManager).detectLanguage() === SupportedLanguage2.TYPESCRIPT ? "ts" : "js", needsUserOnboarding = await cache.get("onboarding-pending", !1);
9906
- projectInfo = {
9907
- storybookVersion: data.versionInstalled,
9908
- majorVersion,
9909
- framework: data.frameworkPackage,
9910
- rendererPackage: data.rendererPackage,
9911
- renderer: data.renderer,
9912
- builderPackage: data.builderPackage,
9913
- addons: data.addons ?? [],
9914
- configDir: data.configDir,
9915
- storiesPaths: data.storiesPaths,
9916
- packageManager: data.packageManager,
9917
- packageManagerName: getPrettyPackageManagerName(data.packageManager.type),
9918
- language,
9919
- hasCsfFactoryPreview: data.hasCsfFactoryPreview,
9920
- needsUserOnboarding
9921
- };
9922
- } catch (err) {
9923
- logger23.error(
9924
- `Failed to read Storybook configuration: ${err instanceof Error ? err.message : String(err)}`
9925
- ), logger23.log(
9926
- "Make sure you are running this command from your project root, or specify --config-dir."
9927
- );
9928
- return;
9929
- }
9930
- if (projectInfo.rendererPackage !== "@storybook/react" || projectInfo.builderPackage !== "@storybook/builder-vite") {
9931
- logger23.log(
9932
- "AI-assisted setup is currently only available for projects using the React renderer with Vite builder. Detected renderer: " + projectInfo.rendererPackage + ", builder: " + projectInfo.builderPackage
9933
- );
9934
- return;
9935
- }
9936
- let result = await getAiSetupMarkdownOutput(projectInfo), markdownOutput = result.markdown;
9937
- if (await cache.set("ai-setup-ran", {
9938
- timestamp: Date.now(),
9939
- runId: options.runId,
9940
- configDir: resolve4(projectInfo.configDir)
9941
- }).catch(() => {
9942
- }), await telemetry("ai-setup", {
9943
- cliOptions: {
9944
- output: output ? "file" : void 0,
9945
- configDir: projectInfo.configDir,
9946
- packageManager: projectInfo.packageManager.type,
9947
- prompt: result.prompt
9948
- },
9949
- project: {
9950
- framework: projectInfo.framework,
9951
- renderer: projectInfo.rendererPackage,
9952
- builder: projectInfo.builderPackage,
9953
- language: projectInfo.language
9954
- },
9955
- runId: options.runId
9956
- }), output) {
9957
- let outputPath = resolve4(output);
9958
- await writeFile10(outputPath, markdownOutput, "utf-8"), logger23.log(`Prompt written to ${outputPath}`);
9959
- } else
9960
- process.stdout.write(`${markdownOutput}
9961
- `);
9962
- }
9963
- function parseMajorVersion(version2) {
9964
- let match = version2.match(/^(\d+)/);
9965
- return match ? parseInt(match[1], 10) : void 0;
9966
- }
9967
-
9968
9591
  // src/upgrade.ts
9969
- var import_cross_spawn3 = __toESM(require_cross_spawn(), 1), import_picocolors17 = __toESM(require_picocolors(), 1), import_semver8 = __toESM(require_semver(), 1);
9592
+ var import_cross_spawn3 = __toESM(require_cross_spawn(), 1), import_picocolors17 = __toESM(require_picocolors(), 1), import_semver7 = __toESM(require_semver(), 1);
9970
9593
  import { PackageManagerName as PackageManagerName2 } from "storybook/internal/common";
9971
9594
  import {
9972
- HandledError as HandledError2,
9595
+ HandledError,
9973
9596
  JsPackageManagerFactory as JsPackageManagerFactory2,
9974
9597
  isCI as isCI2,
9975
9598
  isCorePackage as isCorePackage2
@@ -9978,7 +9601,7 @@ import {
9978
9601
  CLI_COLORS as CLI_COLORS4,
9979
9602
  createHyperlink,
9980
9603
  logTracker as logTracker3,
9981
- logger as logger25,
9604
+ logger as logger23,
9982
9605
  prompt as prompt7
9983
9606
  } from "storybook/internal/node-logger";
9984
9607
  import {
@@ -9986,15 +9609,15 @@ import {
9986
9609
  UpgradeStorybookToLowerVersionError,
9987
9610
  UpgradeStorybookUnknownCurrentVersionError
9988
9611
  } from "storybook/internal/server-errors";
9989
- import { telemetry as telemetry2 } from "storybook/internal/telemetry";
9990
- import { dedent as dedent19 } from "ts-dedent";
9612
+ import { telemetry } from "storybook/internal/telemetry";
9613
+ import { dedent as dedent17 } from "ts-dedent";
9991
9614
 
9992
9615
  // src/automigrate/multi-project.ts
9993
- import { CLI_COLORS as CLI_COLORS3, logger as logger24, prompt as prompt6 } from "storybook/internal/node-logger";
9616
+ import { CLI_COLORS as CLI_COLORS3, logger as logger22, prompt as prompt6 } from "storybook/internal/node-logger";
9994
9617
  import { ErrorCollector, sanitizeError } from "storybook/internal/telemetry";
9995
9618
  async function collectAutomigrationsAcrossProjects(options) {
9996
9619
  let { fixes, projects, taskLog } = options, automigrationMap = /* @__PURE__ */ new Map();
9997
- logger24.debug(
9620
+ logger22.debug(
9998
9621
  `Starting automigration collection across ${projects.length} projects and ${fixes.length} fixes...`
9999
9622
  );
10000
9623
  function collectResult(fix, project, status, result) {
@@ -10016,10 +9639,10 @@ async function collectAutomigrationsAcrossProjects(options) {
10016
9639
  }
10017
9640
  for (let project of projects) {
10018
9641
  let projectName = shortenPath(project.configDir);
10019
- taskLog.message(`Checking automigrations for ${projectName}...`), logger24.debug(`Processing project: ${projectName}`);
9642
+ taskLog.message(`Checking automigrations for ${projectName}...`), logger22.debug(`Processing project: ${projectName}`);
10020
9643
  for (let fix of fixes)
10021
9644
  try {
10022
- logger24.debug(`Checking fix ${fix.id} for project ${projectName}...`);
9645
+ logger22.debug(`Checking fix ${fix.id} for project ${projectName}...`);
10023
9646
  let checkOptions = {
10024
9647
  packageManager: project.packageManager,
10025
9648
  configDir: project.configDir,
@@ -10032,9 +9655,9 @@ async function collectAutomigrationsAcrossProjects(options) {
10032
9655
  }, result = await fix.check(checkOptions);
10033
9656
  result !== null ? collectResult(fix, project, "check_succeeded", result) : collectResult(fix, project, "not_applicable");
10034
9657
  } catch (error) {
10035
- collectResult(fix, project, "check_failed"), logger24.debug(
9658
+ collectResult(fix, project, "check_failed"), logger22.debug(
10036
9659
  `Failed to check fix ${fix.id} for project ${shortenPath(project.configDir)}.`
10037
- ), logger24.debug(`${error instanceof Error ? error.stack : String(error)}`), ErrorCollector.addError(error);
9660
+ ), logger22.debug(`${error instanceof Error ? error.stack : String(error)}`), ErrorCollector.addError(error);
10038
9661
  }
10039
9662
  }
10040
9663
  let allAutomigrations = Array.from(automigrationMap.values()), applicableAutomigrations = allAutomigrations.filter(
@@ -10048,9 +9671,9 @@ async function collectAutomigrationsAcrossProjects(options) {
10048
9671
  );
10049
9672
  return taskLog.message(`
10050
9673
  Automigrations detected:`), successAutomigrations.forEach((fixId) => {
10051
- taskLog.message(`${CLI_COLORS3.success(`${logger24.SYMBOLS.success} ${fixId}`)}`);
9674
+ taskLog.message(`${CLI_COLORS3.success(`${logger22.SYMBOLS.success} ${fixId}`)}`);
10052
9675
  }), failedAutomigrations.forEach((fixId) => {
10053
- taskLog.message(`${CLI_COLORS3.error(`${logger24.SYMBOLS.error} ${fixId}`)}`);
9676
+ taskLog.message(`${CLI_COLORS3.error(`${logger22.SYMBOLS.error} ${fixId}`)}`);
10054
9677
  }), failedAutomigrations.length > 0 ? taskLog.error(
10055
9678
  `${failedAutomigrations.length} automigration ${failedAutomigrations.length > 1 ? "checks" : "check"} failed`
10056
9679
  ) : taskLog.success(
@@ -10068,12 +9691,12 @@ async function promptForAutomigrations(automigrations, options) {
10068
9691
  if (automigrations.length === 0)
10069
9692
  return [];
10070
9693
  if (options.dryRun)
10071
- return logger24.log("Detected automigrations (dry run - no changes will be made):"), automigrations.forEach(({ fix, reports: list }) => {
10072
- logger24.log(` - ${fix.id} (${formatProjectDirs(list)})`);
9694
+ return logger22.log("Detected automigrations (dry run - no changes will be made):"), automigrations.forEach(({ fix, reports: list }) => {
9695
+ logger22.log(` - ${fix.id} (${formatProjectDirs(list)})`);
10073
9696
  }), [];
10074
9697
  if (options.yes)
10075
- return logger24.log("Running all detected automigrations:"), automigrations.forEach(({ fix, reports: list }) => {
10076
- logger24.log(` - ${fix.id} (${formatProjectDirs(list)})`);
9698
+ return logger22.log("Running all detected automigrations:"), automigrations.forEach(({ fix, reports: list }) => {
9699
+ logger22.log(` - ${fix.id} (${formatProjectDirs(list)})`);
10077
9700
  }), automigrations;
10078
9701
  let choices = automigrations.map((am) => {
10079
9702
  let hint = [];
@@ -10122,13 +9745,13 @@ async function runAutomigrationsForProjects(selectedAutomigrations, options) {
10122
9745
  title: `${countPrefix}Running automigrations for ${projectName}`
10123
9746
  }) : {
10124
9747
  message: (message) => {
10125
- logger24.debug(`${message}`);
9748
+ logger22.debug(`${message}`);
10126
9749
  },
10127
9750
  error: (message) => {
10128
- logger24.debug(`${message}`);
9751
+ logger22.debug(`${message}`);
10129
9752
  },
10130
9753
  success: (message) => {
10131
- logger24.debug(`${message}`);
9754
+ logger22.debug(`${message}`);
10132
9755
  }
10133
9756
  }, fixResults = {}, fixFailures = {};
10134
9757
  for (let automigration of projectAutomigration) {
@@ -10162,11 +9785,11 @@ async function runAutomigrationsForProjects(selectedAutomigrations, options) {
10162
9785
  storiesPaths: project2.storiesPaths,
10163
9786
  yes
10164
9787
  };
10165
- await fix.run(runOptions), fixResults[fix.id] = "succeeded" /* SUCCEEDED */, taskLog.message(CLI_COLORS3.success(`${logger24.SYMBOLS.success} ${fix.id}`));
9788
+ await fix.run(runOptions), fixResults[fix.id] = "succeeded" /* SUCCEEDED */, taskLog.message(CLI_COLORS3.success(`${logger22.SYMBOLS.success} ${fix.id}`));
10166
9789
  }
10167
9790
  } catch (error) {
10168
9791
  let errorMessage = (error instanceof Error ? error.stack : String(error)) ?? "Unknown error";
10169
- fixResults[fix.id] = "failed" /* FAILED */, fixFailures[fix.id] = sanitizeError(error), taskLog.message(CLI_COLORS3.error(`${logger24.SYMBOLS.error} ${automigration.fix.id}`)), logger24.debug(errorMessage), ErrorCollector.addError(error);
9792
+ fixResults[fix.id] = "failed" /* FAILED */, fixFailures[fix.id] = sanitizeError(error), taskLog.message(CLI_COLORS3.error(`${logger22.SYMBOLS.error} ${automigration.fix.id}`)), logger22.debug(errorMessage), ErrorCollector.addError(error);
10170
9793
  }
10171
9794
  }
10172
9795
  let automigrationsWithErrors = Object.values(fixResults).filter(
@@ -10276,28 +9899,28 @@ function logUpgradeResults(projectResults, detectedAutomigrations, doctorResults
10276
9899
  doctorResults
10277
9900
  );
10278
9901
  if (failedProjects.length > 0) {
10279
- if (logTracker3.enableLogWriting(), logger25.step(
9902
+ if (logTracker3.enableLogWriting(), logger23.step(
10280
9903
  "The upgrade is complete, but some projects failed to upgrade or migrate completely. Please see the debug logs for more details."
10281
9904
  ), successfulProjects.length > 0) {
10282
9905
  let successfulProjectsList = successfulProjects.map((dir) => ` \u2022 ${shortenPath(dir)}`).join(`
10283
9906
  `);
10284
- logger25.log(`${CLI_COLORS4.success("Successfully upgraded:")}
9907
+ logger23.log(`${CLI_COLORS4.success("Successfully upgraded:")}
10285
9908
  ${successfulProjectsList}`);
10286
9909
  }
10287
9910
  let failedProjectsList = failedProjects.map((dir) => ` \u2022 ${shortenPath(dir)}`).join(`
10288
9911
  `);
10289
- if (logger25.log(
9912
+ if (logger23.log(
10290
9913
  `${CLI_COLORS4.error("Failed to upgrade:")}
10291
9914
  Some automigrations failed, please check the logs in the log file for more details.
10292
9915
  ${failedProjectsList}`
10293
9916
  ), projectsWithNoFixes.length > 0) {
10294
9917
  let projectList = projectsWithNoFixes.map((dir) => ` \u2022 ${shortenPath(dir)}`).join(`
10295
9918
  `);
10296
- logger25.log(`${CLI_COLORS4.info("No applicable migrations:")}
9919
+ logger23.log(`${CLI_COLORS4.info("No applicable migrations:")}
10297
9920
  ${projectList}`);
10298
9921
  }
10299
9922
  } else
10300
- Object.values(doctorResults).every((result) => result.status === "healthy") ? logger25.step(`${CLI_COLORS4.success("Your project(s) have been upgraded successfully! \u{1F389}")}`) : logger25.step(
9923
+ Object.values(doctorResults).every((result) => result.status === "healthy") ? logger23.step(`${CLI_COLORS4.success("Your project(s) have been upgraded successfully! \u{1F389}")}`) : logger23.step(
10301
9924
  `${import_picocolors17.default.yellow("Your project(s) have been upgraded successfully, but some issues were found which need your attention, please check Storybook doctor logs above.")}`
10302
9925
  );
10303
9926
  let automigrationLinks = detectedAutomigrations.filter(
@@ -10311,9 +9934,9 @@ ${projectList}`);
10311
9934
  ...automigrationLinks
10312
9935
  ].join(`
10313
9936
  `);
10314
- logger25.log(automigrationLinksMessage);
9937
+ logger23.log(automigrationLinksMessage);
10315
9938
  }
10316
- logger25.log(
9939
+ logger23.log(
10317
9940
  `For a full list of changes, please check our migration guide: ${CLI_COLORS4.cta("https://storybook.js.org/docs/releases/migration-guide?ref=upgrade")}`
10318
9941
  );
10319
9942
  }
@@ -10334,7 +9957,7 @@ async function sendMultiUpgradeTelemetry(options) {
10334
9957
  (result) => result.status !== "healthy"
10335
9958
  ).length;
10336
9959
  try {
10337
- await telemetry2("multi-upgrade", {
9960
+ await telemetry("multi-upgrade", {
10338
9961
  totalDetectedProjects: allProjects.length,
10339
9962
  totalSelectedProjects: selectedProjects.length,
10340
9963
  projectsWithSuccessfulAutomigrations: successfulProjects.length,
@@ -10345,7 +9968,7 @@ async function sendMultiUpgradeTelemetry(options) {
10345
9968
  hasUserInterrupted
10346
9969
  });
10347
9970
  } catch (error) {
10348
- logger25.debug(`Failed to send multi-upgrade telemetry: ${String(error)}`);
9971
+ logger23.debug(`Failed to send multi-upgrade telemetry: ${String(error)}`);
10349
9972
  }
10350
9973
  }
10351
9974
  async function upgrade(options) {
@@ -10353,13 +9976,13 @@ async function upgrade(options) {
10353
9976
  if (projectsResult === void 0 || projectsResult.selectedProjects.length === 0)
10354
9977
  return;
10355
9978
  let { allProjects, selectedProjects: storybookProjects } = projectsResult;
10356
- storybookProjects.length > 1 ? logger25.info(`Upgrading the following projects:
9979
+ storybookProjects.length > 1 ? logger23.info(`Upgrading the following projects:
10357
9980
  ${storybookProjects.map((p) => `${import_picocolors17.default.cyan(shortenPath(p.configDir))}: ${import_picocolors17.default.bold(p.beforeVersion)} -> ${import_picocolors17.default.bold(p.currentCLIVersion)}`).join(`
10358
- `)}`) : logger25.info(
9981
+ `)}`) : logger23.info(
10359
9982
  `Upgrading from ${import_picocolors17.default.bold(storybookProjects[0].beforeVersion)} to ${import_picocolors17.default.bold(storybookProjects[0].currentCLIVersion)}`
10360
9983
  );
10361
9984
  let automigrationResults = {}, doctorResults = {}, handleInterruption = async () => {
10362
- throw logger25.log(`
9985
+ throw logger23.log(`
10363
9986
 
10364
9987
  Upgrade interrupted by user.`), allProjects.length > 1 && await sendMultiUpgradeTelemetry({
10365
9988
  allProjects,
@@ -10367,16 +9990,16 @@ Upgrade interrupted by user.`), allProjects.length > 1 && await sendMultiUpgrade
10367
9990
  projectResults: automigrationResults,
10368
9991
  doctorResults,
10369
9992
  hasUserInterrupted: !0
10370
- }), new HandledError2("Upgrade cancelled by user");
9993
+ }), new HandledError("Upgrade cancelled by user");
10371
9994
  };
10372
9995
  process.on("SIGINT", handleInterruption), process.on("SIGTERM", handleInterruption);
10373
9996
  try {
10374
9997
  if (processAutoblockerResults(storybookProjects, (message) => {
10375
- logger25.error(dedent19`Blockers detected\n\n${message}`);
9998
+ logger23.error(dedent17`Blockers detected\n\n${message}`);
10376
9999
  }))
10377
- throw new HandledError2("Blockers detected");
10000
+ throw new HandledError("Blockers detected");
10378
10001
  if (storybookProjects.some((project) => {
10379
- if (!project.isCanary && (0, import_semver8.lt)(project.currentCLIVersion, project.beforeVersion))
10002
+ if (!project.isCanary && (0, import_semver7.lt)(project.currentCLIVersion, project.beforeVersion))
10380
10003
  throw new UpgradeStorybookToLowerVersionError({
10381
10004
  beforeVersion: project.beforeVersion,
10382
10005
  currentVersion: project.currentCLIVersion
@@ -10394,7 +10017,7 @@ Upgrade interrupted by user.`), allProjects.length > 1 && await sendMultiUpgrade
10394
10017
  } catch (error) {
10395
10018
  if (error instanceof MinimumReleaseAgeHandledError)
10396
10019
  throw error;
10397
- logger25.debug(
10020
+ logger23.debug(
10398
10021
  `Skipping minimum-release-age precheck for ${project.configDir} after an unexpected failure: ${error}`
10399
10022
  );
10400
10023
  }
@@ -10405,7 +10028,7 @@ Upgrade interrupted by user.`), allProjects.length > 1 && await sendMultiUpgrade
10405
10028
  try {
10406
10029
  let loggedPaths = [];
10407
10030
  for (let project of storybookProjects) {
10408
- logger25.debug(`Updating dependencies in ${shortenPath(project.configDir)}...`);
10031
+ logger23.debug(`Updating dependencies in ${shortenPath(project.configDir)}...`);
10409
10032
  let newPaths = project.packageManager.packageJsonPaths.map(shortenPath).filter((path4) => !loggedPaths.includes(path4));
10410
10033
  newPaths.length > 0 && (task.message(newPaths.join(`
10411
10034
  `)), loggedPaths.push(...newPaths)), await upgradeStorybookDependencies({
@@ -10423,17 +10046,17 @@ Upgrade interrupted by user.`), allProjects.length > 1 && await sendMultiUpgrade
10423
10046
  }
10424
10047
  }
10425
10048
  let automigrationResults2 = {}, detectedAutomigrations = [];
10426
- options.skipAutomigrations ? logger25.log("Skipping automigrations (--skip-automigrations).") : { automigrationResults: automigrationResults2, detectedAutomigrations } = await runAutomigrations(
10049
+ options.skipAutomigrations ? logger23.log("Skipping automigrations (--skip-automigrations).") : { automigrationResults: automigrationResults2, detectedAutomigrations } = await runAutomigrations(
10427
10050
  storybookProjects,
10428
10051
  options
10429
10052
  );
10430
10053
  let rootPackageManager = storybookProjects.length > 1 ? JsPackageManagerFactory2.getPackageManager({ force: options.packageManager }) : storybookProjects[0].packageManager;
10431
- rootPackageManager.type === "npm" ? await rootPackageManager.installDependencies({ force: !0 }) : await rootPackageManager.installDependencies(), rootPackageManager.type !== PackageManagerName2.YARN1 && rootPackageManager.isStorybookInMonorepo() && (logger25.warn(
10054
+ rootPackageManager.type === "npm" ? await rootPackageManager.installDependencies({ force: !0 }) : await rootPackageManager.installDependencies(), rootPackageManager.type !== PackageManagerName2.YARN1 && rootPackageManager.isStorybookInMonorepo() && (logger23.warn(
10432
10055
  "Since you are in a monorepo, we advise you to deduplicate your dependencies. We can do this for you but it might take some time."
10433
10056
  ), options.yes || await prompt7.confirm({
10434
10057
  message: `Execute ${rootPackageManager.getRunCommand("dedupe")}?`,
10435
10058
  initialValue: !0
10436
- }) ? rootPackageManager.type === "npm" ? await rootPackageManager.dedupeDependencies({ force: !0 }) : await rootPackageManager.dedupeDependencies() : logger25.log(
10059
+ }) ? rootPackageManager.type === "npm" ? await rootPackageManager.dedupeDependencies({ force: !0 }) : await rootPackageManager.dedupeDependencies() : logger23.log(
10437
10060
  `If you find any issues running Storybook, you can run ${rootPackageManager.getRunCommand("dedupe")} manually to deduplicate your dependencies and try again.`
10438
10061
  ));
10439
10062
  let doctorProjects = storybookProjects.map((project) => ({
@@ -10442,7 +10065,7 @@ Upgrade interrupted by user.`), allProjects.length > 1 && await sendMultiUpgrade
10442
10065
  storybookVersion: project.currentCLIVersion,
10443
10066
  mainConfig: project.mainConfig
10444
10067
  }));
10445
- logger25.step("Checking the health of your project(s).."), doctorResults = await runMultiProjectDoctor(doctorProjects), displayDoctorResults(doctorResults) && logTracker3.enableLogWriting(), logUpgradeResults(automigrationResults2, detectedAutomigrations, doctorResults);
10068
+ logger23.step("Checking the health of your project(s).."), doctorResults = await runMultiProjectDoctor(doctorProjects), displayDoctorResults(doctorResults) && logTracker3.enableLogWriting(), logUpgradeResults(automigrationResults2, detectedAutomigrations, doctorResults);
10446
10069
  for (let project of storybookProjects) {
10447
10070
  let resultData = automigrationResults2[project.configDir] || {
10448
10071
  automigrationStatuses: {},
@@ -10452,7 +10075,7 @@ Upgrade interrupted by user.`), allProjects.length > 1 && await sendMultiUpgrade
10452
10075
  status === "has_issues" && doctorFailureCount++, status === "check_error" && doctorErrorCount++;
10453
10076
  });
10454
10077
  let automigrationFailureCount = Object.keys(resultData.automigrationErrors).length, automigrationPreCheckFailure = project.autoblockerCheckResults && project.autoblockerCheckResults.length > 0 ? project.autoblockerCheckResults?.map((result) => result.result !== null ? result.blocker.id : null).filter(Boolean) : null;
10455
- await telemetry2("upgrade", {
10078
+ await telemetry("upgrade", {
10456
10079
  beforeVersion: project.beforeVersion,
10457
10080
  afterVersion: project.currentCLIVersion,
10458
10081
  automigrationResults: resultData.automigrationStatuses,
@@ -10478,13 +10101,13 @@ Upgrade interrupted by user.`), allProjects.length > 1 && await sendMultiUpgrade
10478
10101
  // src/bin/run.ts
10479
10102
  addToGlobalContext("cliVersion", versions5.storybook);
10480
10103
  var handleCommandFailure = (logFilePath) => async (error) => {
10481
- error instanceof HandledError3 || logger26.error(String(error));
10104
+ error instanceof HandledError2 || logger24.error(String(error));
10482
10105
  try {
10483
10106
  let logFile = await logTracker4.writeToFile(logFilePath);
10484
- logger26.log(`Debug logs are written to: ${logFile}`);
10107
+ logger24.log(`Debug logs are written to: ${logFile}`);
10485
10108
  } catch {
10486
10109
  }
10487
- logger26.outro(""), process.exit(1);
10110
+ logger24.outro(""), process.exit(1);
10488
10111
  }, command = (name) => program.command(name).option(
10489
10112
  "--disable-telemetry",
10490
10113
  "Disable sending telemetry data",
@@ -10494,21 +10117,21 @@ var handleCommandFailure = (logFilePath) => async (error) => {
10494
10117
  "Write all debug logs to the specified file at the end of the run. Defaults to debug-storybook.log when [path] is not provided"
10495
10118
  ).option("--loglevel <trace | debug | info | warn | error | silent>", "Define log level", "info").hook("preAction", async (self2) => {
10496
10119
  let options = self2.opts();
10497
- options.debug && logger26.setLogLevel("debug"), options.loglevel && logger26.setLogLevel(options.loglevel), options.logfile && logTracker4.enableLogWriting();
10120
+ options.debug && logger24.setLogLevel("debug"), options.loglevel && logger24.setLogLevel(options.loglevel), options.logfile && logTracker4.enableLogWriting();
10498
10121
  try {
10499
10122
  await globalSettings();
10500
10123
  } catch (e) {
10501
- logger26.error(`Error loading global settings:
10124
+ logger24.error(`Error loading global settings:
10502
10125
  ` + String(e));
10503
10126
  }
10504
10127
  }).hook("postAction", async (command2) => {
10505
10128
  if (logTracker4.shouldWriteLogsToFile) {
10506
10129
  try {
10507
10130
  let logFile = await logTracker4.writeToFile(command2.getOptionValue("logfile"));
10508
- logger26.log(`Debug logs are written to: ${logFile}`);
10131
+ logger24.log(`Debug logs are written to: ${logFile}`);
10509
10132
  } catch {
10510
10133
  }
10511
- logger26.outro(CLI_COLORS5.success("Done!"));
10134
+ logger24.outro(CLI_COLORS5.success("Done!"));
10512
10135
  }
10513
10136
  });
10514
10137
  command("init").description("Initialize Storybook into your project").option("-f --force", "Force add Storybook").option("-s --skip-install", "Skip installing deps").addOption(
@@ -10525,7 +10148,7 @@ command("add <addon>").description("Add an addon to your Storybook").addOption(
10525
10148
  )
10526
10149
  ).option("-c, --config-dir <dir-name>", "Directory where to load Storybook configurations from").option("--skip-install", "Skip installing deps").option("-s --skip-postinstall", "Skip package specific postinstall config modifications").option("-y --yes", "Skip prompting the user").option("--skip-doctor", "Skip doctor check").action((addonName, options) => {
10527
10150
  withTelemetry("add", { cliOptions: options }, async () => {
10528
- logger26.intro(`Setting up your project for ${addonName}`), await add(addonName, options), await telemetry3("add", { addon: addonName, source: "cli" }), logger26.outro("Done!");
10151
+ logger24.intro(`Setting up your project for ${addonName}`), await add(addonName, options), await telemetry2("add", { addon: addonName, source: "cli" }), logger24.outro("Done!");
10529
10152
  }).catch(handleCommandFailure);
10530
10153
  });
10531
10154
  command("remove <addon>").description("Remove an addon from your Storybook").addOption(
@@ -10534,7 +10157,7 @@ command("remove <addon>").description("Remove an addon from your Storybook").add
10534
10157
  )
10535
10158
  ).option("-c, --config-dir <dir-name>", "Directory where to load Storybook configurations from").option("-s --skip-install", "Skip installing deps").action(
10536
10159
  (addonName, options) => withTelemetry("remove", { cliOptions: options }, async () => {
10537
- logger26.intro(`Removing ${addonName} from your Storybook`);
10160
+ logger24.intro(`Removing ${addonName} from your Storybook`);
10538
10161
  let packageManager = JsPackageManagerFactory3.getPackageManager({
10539
10162
  configDir: options.configDir,
10540
10163
  force: options.packageManager
@@ -10543,7 +10166,7 @@ command("remove <addon>").description("Remove an addon from your Storybook").add
10543
10166
  configDir: options.configDir,
10544
10167
  packageManager,
10545
10168
  skipInstall: options.skipInstall
10546
- }), await telemetry3("remove", { addon: addonName, source: "cli" }), logger26.outro("Done!");
10169
+ }), await telemetry2("remove", { addon: addonName, source: "cli" }), logger24.outro("Done!");
10547
10170
  }).catch(handleCommandFailure(options.logfile))
10548
10171
  );
10549
10172
  command("upgrade").description(`Upgrade your Storybook packages to v${versions5.storybook}`).addOption(
@@ -10561,12 +10184,12 @@ command("upgrade").description(`Upgrade your Storybook packages to v${versions5.
10561
10184
  "upgrade",
10562
10185
  { cliOptions: { ...options, configDir: options.configDir?.[0] } },
10563
10186
  async () => {
10564
- logger26.intro(`Storybook upgrade - v${versions5.storybook}`), await upgrade(options), logger26.outro("Storybook upgrade completed!");
10187
+ logger24.intro(`Storybook upgrade - v${versions5.storybook}`), await upgrade(options), logger24.outro("Storybook upgrade completed!");
10565
10188
  }
10566
10189
  ).catch(handleCommandFailure(options.logfile));
10567
10190
  });
10568
10191
  command("info").description("Prints debugging information about the local environment").action(async () => {
10569
- logger26.log(import_picocolors18.default.bold(`
10192
+ logger24.log(import_picocolors18.default.bold(`
10570
10193
  Storybook Environment Info:`));
10571
10194
  let activePackageManager = JsPackageManagerFactory3.getPackageManager().type.replace(/\d/, ""), output = await import_envinfo.default.run({
10572
10195
  System: ["OS", "CPU", "Shell"],
@@ -10575,7 +10198,7 @@ Storybook Environment Info:`));
10575
10198
  npmPackages: "{@storybook/*,*storybook*,sb,chromatic}",
10576
10199
  npmGlobalPackages: "{@storybook/*,*storybook*,sb,chromatic}"
10577
10200
  }), activePackageManagerLine = output.match(new RegExp(`${activePackageManager}:.*`, "i"));
10578
- logger26.log(
10201
+ logger24.log(
10579
10202
  output.replace(
10580
10203
  activePackageManagerLine,
10581
10204
  import_picocolors18.default.bold(`${activePackageManagerLine} <----- active`)
@@ -10590,12 +10213,12 @@ command("migrate [migration]").description("Run a Storybook codemod migration on
10590
10213
  'Rename suffix of matching files after codemod has been applied, e.g. ".js:.ts"'
10591
10214
  ).action((migration, options) => {
10592
10215
  withTelemetry("migrate", { cliOptions: options }, async () => {
10593
- logger26.intro(`Running ${migration} migration`), await migrate(migration, options), logger26.outro("Migration completed");
10216
+ logger24.intro(`Running ${migration} migration`), await migrate(migration, options), logger24.outro("Migration completed");
10594
10217
  }).catch(handleCommandFailure(options.logfile));
10595
10218
  });
10596
10219
  command("sandbox [filterValue]").alias("repro").description("Create a sandbox from a set of possible templates").option("-o --output <outDir>", "Define an output directory").option("--no-init", "Whether to download a template without an initialized Storybook", !1).action((filterValue, options) => {
10597
- logger26.intro("Creating a Storybook sandbox..."), sandbox({ filterValue, ...options }).catch(handleCommandFailure).finally(() => {
10598
- logger26.outro("Done!");
10220
+ logger24.intro("Creating a Storybook sandbox..."), sandbox({ filterValue, ...options }).catch(handleCommandFailure).finally(() => {
10221
+ logger24.outro("Done!");
10599
10222
  });
10600
10223
  });
10601
10224
  command("link <repo-url-or-directory>").description("Pull down a repro from a URL (or a local directory), link it, and run storybook").option("--local", "Link a local directory already in your file system").option("--no-start", "Start the storybook", !0).action(
@@ -10610,7 +10233,7 @@ command("automigrate [fixId]").description("Check storybook for incompatibilitie
10610
10233
  "The renderer package for the framework Storybook is using."
10611
10234
  ).option("--skip-doctor", "Skip doctor check").option("--glob <pattern>", "Glob pattern for story files (for csf-factories codemod)").action(async (fixId, options) => {
10612
10235
  withTelemetry("automigrate", { cliOptions: options }, async () => {
10613
- logger26.intro(fixId ? `Running ${fixId} automigration` : "Running automigrations"), await doAutomigrate({ fixId, ...options }), logger26.outro("Done");
10236
+ logger24.intro(fixId ? `Running ${fixId} automigration` : "Running automigrations"), await doAutomigrate({ fixId, ...options }), logger24.outro("Done");
10614
10237
  }).catch(handleCommandFailure(options.logfile));
10615
10238
  });
10616
10239
  command("doctor").description("Check Storybook for known problems and provide suggestions or fixes").addOption(
@@ -10619,30 +10242,13 @@ command("doctor").description("Check Storybook for known problems and provide su
10619
10242
  )
10620
10243
  ).option("-c, --config-dir <dir-name>", "Directory of Storybook configuration").action(async (options) => {
10621
10244
  withTelemetry("doctor", { cliOptions: options }, async () => {
10622
- logger26.intro("Doctoring Storybook"), await doctor(options), logger26.outro("Done");
10245
+ logger24.intro("Doctoring Storybook"), await doctor(options), logger24.outro("Done");
10623
10246
  }).catch(handleCommandFailure(options.logfile));
10624
10247
  });
10625
- var aiCommand = command("ai").description("AI agent helpers for Storybook").option(
10626
- "-o, --output <path>",
10627
- "Write the prompt output to a file instead of printing it to stdout"
10628
- );
10629
- aiCommand.command("setup").description("Generate setup instructions to write stories for real components").addOption(
10630
- new Option("--package-manager <type>", "Force package manager for installing deps").choices(
10631
- Object.values(PackageManagerName3)
10632
- )
10633
- ).option("-c, --config-dir <dir-name>", "Directory of Storybook configuration").action(async (options, cmd) => {
10634
- let parentOptions = cmd.parent?.opts() ?? {}, runId = Math.random().toString(36), mergedOptions = { ...parentOptions, ...options, runId };
10635
- await withTelemetry("ai-setup", { cliOptions: mergedOptions }, async () => {
10636
- await aiSetup(mergedOptions);
10637
- }).catch(handleCommandFailure(mergedOptions.logfile));
10638
- });
10639
- aiCommand.action(() => {
10640
- aiCommand.outputHelp();
10641
- });
10642
10248
  program.on("command:*", ([invalidCmd]) => {
10643
10249
  let errorMessage = ` Invalid command: ${import_picocolors18.default.bold(invalidCmd)}.
10644
10250
  See --help for a list of available commands.`, suggestion = program.commands.map((cmd) => cmd.name()).find((cmd) => leven(cmd, invalidCmd) < 3);
10645
10251
  suggestion && (errorMessage += `
10646
- Did you mean ${import_picocolors18.default.yellow(suggestion)}?`), logger26.error(errorMessage), process.exit(1);
10252
+ Did you mean ${import_picocolors18.default.yellow(suggestion)}?`), logger24.error(errorMessage), process.exit(1);
10647
10253
  });
10648
10254
  program.usage("<command> [options]").version(String(version)).parse(process.argv);