@storybook/cli
Version:
Storybook CLI: Develop, document, and test UI components in isolation
78 lines (73 loc) • 3.14 kB
JavaScript
import CJS_COMPAT_NODE_URL_k5dk07v6ua from 'node:url';
import CJS_COMPAT_NODE_PATH_k5dk07v6ua from 'node:path';
import CJS_COMPAT_NODE_MODULE_k5dk07v6ua from "node:module";
var __filename = CJS_COMPAT_NODE_URL_k5dk07v6ua.fileURLToPath(import.meta.url);
var __dirname = CJS_COMPAT_NODE_PATH_k5dk07v6ua.dirname(__filename);
var require = CJS_COMPAT_NODE_MODULE_k5dk07v6ua.createRequire(import.meta.url);
// ------------------------------------------------------------
// end of CJS compatibility banner, injected by Storybook's esbuild configuration
// ------------------------------------------------------------
import "./chunk-BQPSG2W7.js";
import {
require_semver
} from "./chunk-D3CPWTNB.js";
import {
__toESM
} from "./chunk-3NRJWWYC.js";
// src/autoblock/block-major-version.ts
var import_semver = __toESM(require_semver(), 1);
import { versions } from "storybook/internal/common";
import { CLI_COLORS } from "storybook/internal/node-logger";
import { dedent } from "ts-dedent";
function validateVersionTransition(currentVersion, targetVersion) {
if (!currentVersion || !targetVersion)
return "ok";
let current = (0, import_semver.parse)(currentVersion), target = (0, import_semver.parse)(targetVersion);
return !current || !target || current.major === 0 || target.major === 0 ? "ok" : (0, import_semver.gt)(currentVersion, targetVersion) ? "downgrade" : target.major - current.major > 1 ? "gap-too-large" : "ok";
}
var blocker = {
id: "major-version-gap",
async check(options) {
let { packageManager } = options;
try {
let currentStorybookVersion = packageManager.getAllDependencies().storybook;
if (!currentStorybookVersion)
return !1;
let target = versions.storybook, result = validateVersionTransition(currentStorybookVersion, target);
return result === "ok" ? !1 : {
currentVersion: currentStorybookVersion,
reason: result
};
} catch {
return !1;
}
},
log(data) {
let coercedVersion = (0, import_semver.coerce)(data.currentVersion);
if (data.reason === "downgrade")
return {
title: "Downgrade Not Supported",
message: dedent`
Your Storybook version (v${data.currentVersion}) is newer than the target release (v${versions.storybook}). Downgrading is not supported.
`,
link: "https://storybook.js.org/docs/releases/migration-guide?ref=upgrade"
};
if (coercedVersion) {
let nextMajor = (0, import_semver.major)(coercedVersion) + 1;
return {
title: "Major Version Gap Detected",
message: dedent`
Your Storybook version (v${data.currentVersion}) is more than one major version behind the target release (v${versions.storybook}). Please upgrade one major version at a time.
You can upgrade to version ${nextMajor} by running:
${CLI_COLORS.info(`npx storybook@${nextMajor} upgrade`)}
`,
link: `https://storybook.js.org/docs/${nextMajor}/migration-guide?ref=upgrade`
};
}
throw new Error("No message found");
}
};
export {
blocker,
validateVersionTransition
};