UNPKG

storybook

Version:

Storybook: Develop, document, and test UI components in isolation

323 lines (322 loc) 13.5 kB
import { Bs as Settings, Hs as globalSettings, Vs as _clearGlobalSettings, Xa as StorybookConfigRaw$1, ao as SupportedFramework$1, io as SupportedRenderer$1, oo as SupportedBuilder$1 } from "../chunk-Dt_DMkuc.js"; import { t as JsPackageManager$1 } from "../chunk-D4hRFgkh.js"; import { Feature, SupportedFramework, SupportedLanguage, SupportedRenderer } from "storybook/internal/types"; import { JsPackageManager, PackageJson as PackageJson$1, PackageManagerName } from "storybook/internal/common"; //#region code/core/.dts-emit/code/core/src/cli/detect.d.ts declare function detectPnp(): Promise<boolean>; //#endregion //#region code/core/.dts-emit/code/core/src/cli/helpers.d.ts declare function readFileAsJson(jsonPath: string, allowComments?: boolean): any; declare const writeFileAsJson: (jsonPath: string, content: unknown) => boolean; /** * Detect if any babel dependencies need to be added to the project This is currently used by * react-native generator * * @example * * ```ts * const babelDependencies = await getBabelDependencies( * packageManager, * npmOptions, * packageJson * ); // you can then spread the result when using installDependencies * installDependencies(npmOptions, [ * `@storybook/react@${storybookVersion}`, * ...babelDependencies, * ]); * ``` * * @param packageJson The current package.json so we can inspect its contents * @returns Contains the packages and versions that need to be installed */ declare function getBabelDependencies(packageManager: JsPackageManager): Promise<string[]>; declare function addToDevDependenciesIfNotPresent(packageJson: PackageJson$1, name: string, packageVersion: string): void; declare function copyTemplate(templateRoot: string, destination?: string): void; type CopyTemplateFilesOptions = { packageManager: JsPackageManager; templateLocation: SupportedFramework | SupportedRenderer; language: SupportedLanguage; commonAssetsDir?: string; destination?: string; features: Set<Feature>; }; /** * Return the installed version of a package, or the coerced version specifier from package.json if * it's a dependency but not installed (e.g. in a fresh project) */ declare function getVersionSafe(packageManager: JsPackageManager, packageName: string): Promise<string | undefined>; declare const cliStoriesTargetPath: () => Promise<"./src/stories" | "./stories">; declare function copyTemplateFiles({ packageManager, templateLocation, language, destination, commonAssetsDir, features }: CopyTemplateFilesOptions): Promise<void>; declare function adjustTemplate(templatePath: string, templateData: Record<string, any>): Promise<void>; declare function coerceSemver(version: string): import("semver").SemVer; declare function hasStorybookDependencies(packageManager: JsPackageManager): boolean; //#endregion //#region code/core/.dts-emit/code/core/src/cli/angular/helpers.d.ts declare const ANGULAR_JSON_PATH = "angular.json"; /** A path into a JSON document, e.g. `['projects', 'app', 'architect', 'storybook', 'builder']`. */ type JSONEditPath = (string | number)[]; /** Apply a format-preserving edit to a JSON string at `path`. `value === undefined` removes it. */ declare const editJsonText: (text: string, path: JSONEditPath, value: unknown) => string; /** An `angular.json` architect target or Nx `project.json` target. */ interface StorybookBuilderTarget { builder?: string; executor?: string; options?: { compodoc?: boolean; experimentalZoneless?: boolean; [key: string]: unknown; }; } declare const isStorybookTarget: (target: unknown) => target is StorybookBuilderTarget; declare class AngularJSON { json: { projects: Record<string, { root: string; projectType: string; architect: Record<string, any>; }>; }; private rawText; private readonly path; constructor(path?: string); /** Apply a format-preserving edit at `path` and keep `json` in sync with the result. */ edit(path: JSONEditPath, value: unknown): void; get projects(): Record<string, { root: string; projectType: string; architect: Record<string, any>; }>; get projectsWithoutStorybook(): string[]; get hasStorybookBuilder(): boolean; get rootProject(): { root: string; projectType: string; architect: Record<string, any>; } | null; getProjectSettingsByName(projectName: string): { root: string; projectType: string; architect: Record<string, any>; }; getProjectName(): Promise<string>; addStorybookEntries({ angularProjectName, storybookFolder, useCompodoc, root, useVite }: { angularProjectName: string; storybookFolder: string; useCompodoc: boolean; root: string; useVite?: boolean; }): void; write(): void; } //#endregion //#region code/core/.dts-emit/code/core/src/cli/dirs.d.ts declare function getRendererDir(packageManager: JsPackageManager, renderer: SupportedFramework | SupportedRenderer): Promise<string | null>; //#endregion //#region code/core/.dts-emit/code/core/src/cli/projectTypes.d.ts declare enum ProjectType { ANGULAR = "angular", EMBER = "ember", HTML = "html", NEXTJS = "nextjs", NUXT = "nuxt", NX = "nx", PREACT = "preact", QWIK = "qwik", REACT = "react", TANSTACK_REACT = "tanstack_react", REACT_NATIVE = "react_native", REACT_NATIVE_AND_RNW = "react_native_and_rnw", REACT_NATIVE_WEB = "react_native_web", REACT_SCRIPTS = "react_scripts", SERVER = "server", SOLID = "solid", SVELTE = "svelte", SVELTEKIT = "sveltekit", UNDETECTED = "undetected", UNSUPPORTED = "unsupported", VUE3 = "vue3", WEB_COMPONENTS = "web_components" } //#endregion //#region code/core/.dts-emit/code/core/src/cli/NpmOptions.d.ts type NpmOptions = Parameters<JsPackageManager$1['addDependencies']>[0]; //#endregion //#region code/core/.dts-emit/code/core/src/cli/eslintPlugin.d.ts declare const SUPPORTED_ESLINT_EXTENSIONS: string[]; declare const findEslintFile: (instanceDir: string) => string | undefined; declare const configureFlatConfig: (code: string) => Promise<string>; declare function extractEslintInfo(packageManager: JsPackageManager): Promise<{ hasEslint: boolean; isStorybookPluginInstalled: boolean; eslintConfigFile: string | undefined; unsupportedExtension?: string; isFlatConfig: boolean; }>; declare const normalizeExtends: (existingExtends: any) => string[]; declare function configureEslintPlugin({ eslintConfigFile, packageManager, isFlatConfig }: { eslintConfigFile: string | undefined; packageManager: JsPackageManager; isFlatConfig: boolean; }): Promise<void>; declare const suggestESLintPlugin: () => Promise<boolean>; //#endregion //#region code/core/.dts-emit/code/core/src/cli/AddonVitestService.d.ts type Result = { compatible: boolean; reasons?: string[]; }; interface AddonVitestCompatibilityOptions { builder?: SupportedBuilder$1; framework?: SupportedFramework$1 | null; projectRoot?: string; } /** * Centralized service for @storybook/addon-vitest dependency collection and compatibility * validation * * This service consolidates logic from: * * - Code/addons/vitest/src/postinstall.ts * - Code/lib/create-storybook/src/addon-dependencies/addon-vitest.ts * - Code/lib/create-storybook/src/services/FeatureCompatibilityService.ts */ declare class AddonVitestService { private readonly packageManager; constructor(packageManager: JsPackageManager); /** * Reduce a Vitest version specifier (exact or range) to a single concrete version for * `semver.satisfies` comparisons, so dependency collection and postinstall template selection make * the same major/minor decision. Uses the lower bound of a valid range, then coerces so a * prerelease like `4.0.0-beta.1` is treated as `4.0.0` rather than failing `>=4.0.0`. */ static getComparableVersion(specifier: string | null | undefined): string | undefined; /** * Collect all dependencies needed for @storybook/addon-vitest * * Returns versioned package strings ready for installation: * * - Base packages: vitest, @vitest/browser, playwright * - Next.js specific: @storybook/nextjs-vite * - Coverage reporter: @vitest/coverage-v8 */ collectDependencies(): Promise<string[]>; /** * Install Playwright browser binaries for @storybook/addon-vitest * * Installs Chromium via `npx playwright install chromium`. In CI environments and on * macOS/Windows (officially supported platforms), also installs system-level browser dependencies * via `--with-deps`. On other platforms (e.g. Linux), `--with-deps` is omitted to avoid requiring * `sudo` — system packages are typically managed by the distro package manager. * * @param packageManager - The package manager to use for installation * @param prompt - The prompt instance for displaying progress * @param logger - The logger instance for displaying messages * @param options - Installation options * @returns Array of error messages if installation fails */ installPlaywright(options?: { yes?: boolean; /** Is set to true if Storybook didn't install the dependencies yet */ useRemotePkg?: boolean; }): Promise<{ errors: string[]; result: 'installed' | 'skipped' | 'aborted' | 'failed'; }>; /** * Validate full compatibility for @storybook/addon-vitest * * Checks: * * - Webpack configuration compatibility * - Builder compatibility (Vite or Next.js) * - Renderer/framework support * - Vitest version (>=3.0.0) * - MSW version (>=2.0.0 if installed) * - Next.js installation (if using @storybook/nextjs) * - Vitest config files (if configDir provided) */ validateCompatibility(options: AddonVitestCompatibilityOptions): Promise<Result>; /** * Validate package versions for addon-vitest compatibility Public method to allow early * validation before framework detection */ validatePackageVersions(): Promise<Result>; /** * Validate vitest config files for addon compatibility * * Public method that can be used by both postinstall and create-storybook flows */ validateConfigFiles(directory: string): Promise<Result>; } //#endregion //#region code/core/.dts-emit/code/core/src/cli/detectLanguage.d.ts /** * Detect whether the project should be treated as TypeScript or JavaScript. The js/tsconfig lookup * happens in `workingDir`, which defaults to the process cwd for callers (like `storybook init`) * that already run from the project root. */ declare function detectLanguage(packageManager: JsPackageManager, workingDir?: string): Promise<SupportedLanguage>; /** Check installed tooling versions for TypeScript compatibility constraints */ declare function detectIncompatiblePackageVersions(packageManager: JsPackageManager): Promise<string[]>; //#endregion //#region code/core/.dts-emit/code/core/src/cli/getStorybookData.d.ts /** * The project directory the config dir lives in, used to resolve story globs and to locate * `tsconfig.json`/`jsconfig.json` for language detection. Taking `dirname` before resolving (not * after) keeps `--config-dir .` anchored to the project root instead of its parent. */ declare function getWorkingDir(configDir: string): string; /** * Gathers the project metadata CLI commands need from the target Storybook: config, framework, * package manager, installed version, and story paths. The canonical collector — `automigrate`, * `doctor`, `add`, and `ai setup` all consume it. */ declare const getStorybookData: ({ configDir: userDefinedConfigDir, packageManagerName, skipCache }: { configDir?: string; packageManagerName?: PackageManagerName; /** * Skip the module cache when reading the main config. Pass `true` when a prior step in the same * process (e.g. an automigration) may have rewritten the main config on disk, otherwise this * would read back the module system's cached evaluation from before that rewrite. */ skipCache?: boolean; }) => Promise<{ configDir: string; workingDir: string; mainConfig: StorybookConfigRaw$1; /** The version specifier of Storybook from the user's package.json */ versionSpecifier: string | undefined; /** The version of Storybook installed in the user's project */ versionInstalled: string | undefined; mainConfigPath: string | undefined; previewConfigPath: string | undefined; packageManager: import("storybook/internal/common").JsPackageManager; storiesPaths: string[]; hasCsfFactoryPreview: boolean; frameworkPackage: string | undefined; rendererPackage: string | undefined; renderer: SupportedRenderer$1 | undefined; builderPackage: string | undefined; addons: string[]; }>; type GetStorybookData = typeof getStorybookData; //#endregion export { ANGULAR_JSON_PATH, AddonVitestCompatibilityOptions, AddonVitestService, AngularJSON, GetStorybookData, JSONEditPath, NpmOptions, ProjectType, SUPPORTED_ESLINT_EXTENSIONS, Settings, StorybookBuilderTarget, _clearGlobalSettings, addToDevDependenciesIfNotPresent, adjustTemplate, cliStoriesTargetPath, coerceSemver, configureEslintPlugin, configureFlatConfig, copyTemplate, copyTemplateFiles, detectIncompatiblePackageVersions, detectLanguage, detectPnp, editJsonText, extractEslintInfo, findEslintFile, getBabelDependencies, getRendererDir, getStorybookData, getVersionSafe, getWorkingDir, globalSettings, hasStorybookDependencies, isStorybookTarget, normalizeExtends, readFileAsJson, suggestESLintPlugin, writeFileAsJson };