storybook
Version:
Storybook: Develop, document, and test UI components in isolation
167 lines (155 loc) • 6.31 kB
JavaScript
import CJS_COMPAT_NODE_URL_qjinduibsyq from 'node:url';
import CJS_COMPAT_NODE_PATH_qjinduibsyq from 'node:path';
import CJS_COMPAT_NODE_MODULE_qjinduibsyq from "node:module";
var __filename = CJS_COMPAT_NODE_URL_qjinduibsyq.fileURLToPath(import.meta.url);
var __dirname = CJS_COMPAT_NODE_PATH_qjinduibsyq.dirname(__filename);
var require = CJS_COMPAT_NODE_MODULE_qjinduibsyq.createRequire(import.meta.url);
// ------------------------------------------------------------
// end of CJS compatibility banner, injected by Storybook's esbuild configuration
// ------------------------------------------------------------
import {
getService
} from "./chunk-UAW7LJY2.js";
import {
importModule
} from "./chunk-5G6TGQDE.js";
// src/cli/skills/addon-a11y.ts
async function isAddonA11yEnabled(options) {
try {
return await options.presets.apply("isAddonA11yEnabled", !1);
} catch {
return !1;
}
}
// src/cli/skills/addon-vitest.ts
async function isAddonVitestEnabled(options) {
try {
return await options.presets.apply("isAddonVitestEnabled", !1);
} catch {
return !1;
}
}
// src/cli/skills/manifest-status.ts
var hasComponentManifestFeature = (features) => !!(features?.componentsManifest ?? features?.experimentalComponentsManifest), isDocgenServerMode = (features) => !!(features?.experimentalDocgenServer && features?.componentsManifest), getManifestStatus = async (options) => {
let [
features,
manifests,
// Added for backwards compatibility with Storybook versions prior to v10.2.0-alpha.10
// Should be removed once support for Storybook version < 10.2.0 is dropped
legacyComponentManifestGenerator
] = await Promise.all([
options.presets.apply("features"),
options.presets.apply("experimental_manifests", void 0, {
manifestEntries: []
}),
options.presets.apply("experimental_componentManifestGenerator")
]), hasFeatureFlag = hasComponentManifestFeature(features), docgenServer = isDocgenServerMode(features), hasManifests = docgenServer || manifests && "components" in manifests || !!legacyComponentManifestGenerator;
return {
available: hasFeatureFlag && hasManifests,
hasManifests,
hasFeatureFlag,
docgenServer
};
};
// src/cli/skills/review-status.ts
var getReviewStatus = async (options, { features } = {}) => {
let resolvedFeatures = features ?? await options.presets.apply("features", {}), hasFeatureFlag = !!resolvedFeatures?.experimentalReview, changeDetection = !!resolvedFeatures?.changeDetection;
return {
// Review is opt-in via `experimentalReview` for direct MCP clients and
// builds on the change-detection pipeline, so it needs both flags.
available: hasFeatureFlag && changeDetection,
availableForCli: resolvedFeatures?.experimentalReview !== !1 && changeDetection,
hasFeatureFlag
};
};
// src/cli/skills/availability.ts
function getEffectiveToolAvailability(availability, { multiSource = !1 } = {}) {
return multiSource ? {
...availability,
docsEnabled: !0,
docsEnabledForCli: !0,
docsHasManifests: !0,
docsFeatureEnabled: !0
} : availability;
}
async function isModuleGraphSupported() {
try {
return getService("core/module-graph", { internal: !0 }) !== void 0;
} catch {
return !1;
}
}
async function isModuleGraphSupportedByBuilder(options) {
let builder = (await options.presets.apply("core", {}))?.builder, builderName = typeof builder == "string" ? builder : builder?.name;
if (!builderName)
return !1;
try {
return typeof (await importModule(builderName)).changeDetectionAdapter == "function";
} catch {
return !1;
}
}
async function getToolAvailability(options, { features, moduleGraphSupported: moduleGraphSupportedOverride } = {}) {
let resolvedFeatures = features ?? await options.presets.apply("features", {}), [moduleGraphSupported, reviewStatus, manifestStatus, addonVitestEnabled, a11yEnabled] = await Promise.all([
moduleGraphSupportedOverride ?? isModuleGraphSupported(),
getReviewStatus(options, { features: resolvedFeatures }),
getManifestStatus(options),
isAddonVitestEnabled(options),
isAddonA11yEnabled(options)
]);
return {
moduleGraphSupported,
changeDetectionEnabled: resolvedFeatures?.changeDetection ?? !1,
reviewEnabled: reviewStatus.available,
reviewEnabledForCli: reviewStatus.availableForCli,
docsEnabled: manifestStatus.available,
docsEnabledForCli: manifestStatus.hasManifests,
docsHasManifests: manifestStatus.hasManifests,
docsFeatureEnabled: manifestStatus.hasFeatureFlag,
testSupported: addonVitestEnabled,
a11yEnabled,
docgenServer: manifestStatus.docgenServer
};
}
// src/cli/skills/content/framework-renderer.ts
var frameworkToRendererMap = {
"@storybook/react-vite": "@storybook/react",
"@storybook/react-webpack5": "@storybook/react",
"@storybook/nextjs": "@storybook/react",
"@storybook/nextjs-vite": "@storybook/react",
"@storybook/react-native-web-vite": "@storybook/react",
"@storybook/vue3-vite": "@storybook/vue3",
"@nuxtjs/storybook": "@storybook/vue3",
"@storybook/angular": "@storybook/angular",
"@storybook/angular-vite": "@storybook/angular",
"@storybook/svelte-vite": "@storybook/svelte",
"@storybook/sveltekit": "@storybook/svelte",
"@storybook/preact-vite": "@storybook/preact",
"@storybook/web-components-vite": "@storybook/web-components",
"@storybook/html-vite": "@storybook/html"
};
// src/cli/skills/inputs.ts
async function resolveSkillInputs(options, opts = {}) {
let [availability, frameworkPreset] = await Promise.all([
getToolAvailability(options, opts),
options.presets.apply("framework")
]), framework = typeof frameworkPreset == "string" ? frameworkPreset : frameworkPreset?.name ?? "";
return { ...availability, framework, renderer: frameworkToRendererMap[framework] };
}
// src/shared/utils/agent-environment.ts
function isClaudePreviewLaunch(env = process.env) {
return !!env.CLAUDE_AGENT_SDK_VERSION && !env.AI_AGENT;
}
export {
isClaudePreviewLaunch,
isAddonA11yEnabled,
isAddonVitestEnabled,
getManifestStatus,
getReviewStatus,
getEffectiveToolAvailability,
isModuleGraphSupported,
isModuleGraphSupportedByBuilder,
getToolAvailability,
frameworkToRendererMap,
resolveSkillInputs
};