@storybook/core-common 8.0.0-beta.1 → 8.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -72,6 +72,9 @@ declare abstract class JsPackageManager {
72
72
  abstract getRunCommand(command: string): string;
73
73
  readonly cwd?: string;
74
74
  abstract getPackageJSON(packageName: string, basePath?: string): Promise<PackageJson | null>;
75
+ /**
76
+ * Get the INSTALLED version of a package from the package.json file
77
+ */
75
78
  getPackageVersion(packageName: string, basePath?: string | undefined): Promise<string | null>;
76
79
  setRegistryURL(url: string): Promise<void>;
77
80
  getRegistryURL(): Promise<string | undefined>;
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@
12
12
  `)}function loadCustomPresets({configDir}){validateConfigurationFiles(configDir);let presets=serverRequire(import_path2.default.resolve(configDir,"presets"));if(serverRequire(import_path2.default.resolve(configDir,"main"))){let resolved=serverResolve(import_path2.default.resolve(configDir,"main"));if(resolved)return[resolved]}return presets||[]}var import_resolve_from=__toESM(require("resolve-from")),safeResolveFrom=(path18,file)=>{try{return(0,import_resolve_from.default)(path18,file)}catch{return}},safeResolve=file=>{try{return require.resolve(file)}catch{return}};var import_path3=__toESM(require("path"));function normalizePath(id){return import_path3.default.posix.normalize(slash(id))}function stripAbsNodeModulesPath(absPath){let splits=absPath.split(`node_modules${import_path3.default.sep}`);return normalizePath(splits[splits.length-1])}var isObject=val=>val!=null&&typeof val=="object"&&Array.isArray(val)===!1,isFunction=val=>typeof val=="function";function filterPresetsConfig(presetsConfig){return presetsConfig.filter(preset=>{let presetName=typeof preset=="string"?preset:preset.name;return!/@storybook[\\\\/]preset-typescript/.test(presetName)})}function resolvePathToMjs(filePath){let{dir,name}=(0,import_path4.parse)(filePath),mjsPath=(0,import_path4.join)(dir,`${name}.mjs`);return safeResolve(mjsPath)?mjsPath:filePath}function resolvePresetFunction(input,presetOptions,storybookOptions){return isFunction(input)?[...input({...storybookOptions,...presetOptions})]:Array.isArray(input)?[...input]:[]}var resolveAddonName=(configDir,name,options)=>{let resolve=name.startsWith("/")?safeResolve:safeResolveFrom.bind(null,configDir),resolved=resolve(name);if(resolved){let{dir:fdir,name:fname}=(0,import_path4.parse)(resolved);if(name.match(/\/(manager|register(-panel)?)(\.(js|mjs|ts|tsx|jsx))?$/))return{type:"virtual",name,managerEntries:[resolvePathToMjs((0,import_path4.join)(fdir,fname))]};if(name.match(/\/(preset)(\.(js|mjs|ts|tsx|jsx))?$/))return{type:"presets",name:resolved}}let checkExists=exportName=>{if(resolve(`${name}${exportName}`))return`${name}${exportName}`},absolutizeExport=(exportName,preferMJS)=>{let found=resolve(`${name}${exportName}`);if(found)return preferMJS?resolvePathToMjs(found):found},managerFile=absolutizeExport("/manager",!0),registerFile=absolutizeExport("/register",!0)||absolutizeExport("/register-panel",!0),previewFile=checkExists("/preview"),previewFileAbsolute=absolutizeExport("/preview",!0),presetFile=absolutizeExport("/preset",!1);if(!(managerFile||previewFile)&&presetFile)return{type:"presets",name:presetFile};if(managerFile||registerFile||previewFile||presetFile){let managerEntries=[];return managerFile&&managerEntries.push(managerFile),!managerFile&&registerFile&&!presetFile&&managerEntries.push(registerFile),{type:"virtual",name,...managerEntries.length?{managerEntries}:{},...previewFile?{previewAnnotations:[previewFileAbsolute?{bare:previewFile.includes("node_modules")?stripAbsNodeModulesPath(previewFile):previewFile,absolute:previewFileAbsolute}:previewFile]}:{},...presetFile?{presets:[{name:presetFile,options}]}:{}}}if(resolved)return{type:"presets",name:resolved}},map=({configDir})=>item=>{let options=isObject(item)&&item.options||void 0,name=isObject(item)?item.name:item,resolved;try{resolved=resolveAddonName(configDir,name,options)}catch{import_node_logger2.logger.error(`Addon value should end in /manager or /preview or /register OR it should be a valid preset https://storybook.js.org/docs/react/addons/writing-presets/
13
13
  ${item}`);return}if(!resolved){import_node_logger2.logger.warn(`Could not resolve addon "${name}", skipping. Is it installed?`);return}return{...options?{options}:{},...resolved}};async function getContent(input){if(input.type==="virtual"){let{type,name:name2,...rest}=input;return rest}let name=input.name?input.name:input;return interopRequireDefault(name)}async function loadPreset(input,level,storybookOptions){let presetName=input.name?input.name:input;try{let presetOptions=input.options?input.options:{},contents=await getContent(input);if(typeof contents=="function"&&(contents=contents(storybookOptions,presetOptions)),Array.isArray(contents))return await loadPresets(contents,level+1,storybookOptions);if(isObject(contents)){let{addons:addonsInput=[],presets:presetsInput=[],...rest}=contents,filter=i=>!0;storybookOptions.isCritical!==!0&&(storybookOptions.build?.test?.disabledAddons?.length||0)>0&&(filter=i=>{let name=i.name?i.name:i;return!storybookOptions.build?.test?.disabledAddons?.find(n=>name.includes(n))});let subPresets=resolvePresetFunction(presetsInput,presetOptions,storybookOptions).filter(filter),subAddons=resolvePresetFunction(addonsInput,presetOptions,storybookOptions).filter(filter);return[...await loadPresets([...subPresets],level+1,storybookOptions),...await loadPresets([...subAddons.map(map(storybookOptions))].filter(Boolean),level+1,storybookOptions),{name:presetName,preset:rest,options:presetOptions}]}throw new Error(import_ts_dedent2.dedent`
14
14
  ${input} is not a valid preset
15
- `)}catch(error){if(storybookOptions?.isCritical)throw new import_server_errors.CriticalPresetLoadError({error,presetName});let warning=level>0?` Failed to load preset: ${JSON.stringify(input)} on level ${level}`:` Failed to load preset: ${JSON.stringify(input)}`;return import_node_logger2.logger.warn(warning),import_node_logger2.logger.error(error),[]}}async function loadPresets(presets,level,storybookOptions){return!presets||!Array.isArray(presets)||!presets.length?[]:(await Promise.all(presets.map(async preset=>loadPreset(preset,level,storybookOptions)))).reduce((acc,loaded)=>acc.concat(loaded),[])}function applyPresets(presets,extension,config,args,storybookOptions){let presetResult=new Promise(res=>res(config));return presets.length?presets.reduce((accumulationPromise,{preset,options})=>{let change=preset[extension];if(!change)return accumulationPromise;if(typeof change=="function"){let extensionFn=change,context={preset,combinedOptions:{...storybookOptions,...args,...options,presetsList:presets,presets:{apply:async(ext,c,a={})=>applyPresets(presets,ext,c,a,storybookOptions)}}};return accumulationPromise.then(newConfig=>extensionFn.call(context.preset,newConfig,context.combinedOptions))}return accumulationPromise.then(newConfig=>Array.isArray(newConfig)&&Array.isArray(change)?[...newConfig,...change]:isObject(newConfig)&&isObject(change)?{...newConfig,...change}:change)},presetResult):presetResult}async function getPresets(presets,storybookOptions){let loadedPresets=await loadPresets(presets,0,storybookOptions);return{apply:async(extension,config,args={})=>applyPresets(loadedPresets,extension,config,args,storybookOptions)}}async function loadAllPresets(options){let{corePresets=[],overridePresets=[],...restOptions}=options,presetsConfig=[...corePresets,...loadCustomPresets(options),...overridePresets],filteredPresetConfig=filterPresetsConfig(presetsConfig);return filteredPresetConfig.length<presetsConfig.length&&import_node_logger2.logger.warn("Storybook now supports TypeScript natively. You can safely remove `@storybook/preset-typescript`."),getPresets(filteredPresetConfig,restOptions)}var import_file_system_cache=__toESM(require("file-system-cache"));function createFileSystemCache(options){return(0,import_file_system_cache.default)(options)}var import_path5=__toESM(require("path")),import_find_cache_dir=__toESM(require("find-cache-dir"));function resolvePathInStorybookCache(fileOrDirectoryName,sub="default"){let cacheDirectory=(0,import_find_cache_dir.default)({name:"storybook"});return cacheDirectory||=import_path5.default.join(process.cwd(),".cache","storybook"),import_path5.default.join(cacheDirectory,sub,fileOrDirectoryName)}var cache=createFileSystemCache({basePath:resolvePathInStorybookCache("dev-server"),ns:"storybook"});var import_fs_extra2=require("fs-extra"),import_path7=require("path"),import_tempy=__toESM(require("tempy"));var import_path6=__toESM(require("path")),import_fs_extra=__toESM(require("fs-extra"));function getStorybookConfiguration(storybookScript,shortName,longName){if(!storybookScript)return null;let parts=storybookScript.split(/[\s='"]+/),index=parts.indexOf(longName);return index===-1&&(index=parts.indexOf(shortName)),index===-1?null:parts[index+1]}var rendererPackages={"@storybook/react":"react","@storybook/vue3":"vue3","@storybook/angular":"angular","@storybook/html":"html","@storybook/web-components":"web-components","@storybook/polymer":"polymer","@storybook/ember":"ember","@storybook/svelte":"svelte","@storybook/preact":"preact","@storybook/server":"server","storybook-framework-qwik":"qwik","storybook-solidjs":"solid"},frameworkPackages={"@storybook/angular":"angular","@storybook/ember":"ember","@storybook/html-vite":"html-vite","@storybook/html-webpack5":"html-webpack5","@storybook/nextjs":"nextjs","@storybook/preact-vite":"preact-vite","@storybook/preact-webpack5":"preact-webpack5","@storybook/react-vite":"react-vite","@storybook/react-webpack5":"react-webpack5","@storybook/server-webpack5":"server-webpack5","@storybook/svelte-vite":"svelte-vite","@storybook/svelte-webpack5":"svelte-webpack5","@storybook/sveltekit":"sveltekit","@storybook/vue3-vite":"vue3-vite","@storybook/vue3-webpack5":"vue3-webpack5","@storybook/web-components-vite":"web-components-vite","@storybook/web-components-webpack5":"web-components-webpack5","storybook-framework-qwik":"qwik","storybook-solidjs-vite":"solid"},builderPackages=["@storybook/builder-webpack5","@storybook/builder-vite"],logger2=console,findDependency=({dependencies,devDependencies,peerDependencies},predicate)=>[Object.entries(dependencies||{}).find(predicate),Object.entries(devDependencies||{}).find(predicate),Object.entries(peerDependencies||{}).find(predicate)],getRendererInfo=packageJson=>{let[dep,devDep,peerDep]=findDependency(packageJson,([key])=>rendererPackages[key]),[pkg,version]=dep||devDep||peerDep||[];return dep&&devDep&&dep[0]===devDep[0]&&logger2.warn(`Found "${dep[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),dep&&peerDep&&dep[0]===peerDep[0]&&logger2.warn(`Found "${dep[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{version,frameworkPackage:pkg}},validConfigExtensions=["ts","js","tsx","jsx","mjs","cjs"],findConfigFile=(prefix,configDir)=>{let filePrefix=import_path6.default.join(configDir,prefix),extension=validConfigExtensions.find(ext=>import_fs_extra.default.existsSync(`${filePrefix}.${ext}`));return extension?`${filePrefix}.${extension}`:null},getConfigInfo=(packageJson,configDir)=>{let storybookConfigDir=configDir??".storybook",storybookScript=packageJson.scripts?.storybook;if(storybookScript&&!configDir){let configParam=getStorybookConfiguration(storybookScript,"-c","--config-dir");configParam&&(storybookConfigDir=configParam)}return{configDir:storybookConfigDir,mainConfig:findConfigFile("main",storybookConfigDir),previewConfig:findConfigFile("preview",storybookConfigDir),managerConfig:findConfigFile("manager",storybookConfigDir)}},getStorybookInfo=(packageJson,configDir)=>{let rendererInfo=getRendererInfo(packageJson),configInfo=getConfigInfo(packageJson,configDir);return{...rendererInfo,...configInfo}};var versions_default={"@storybook/addon-a11y":"8.0.0-beta.1","@storybook/addon-actions":"8.0.0-beta.1","@storybook/addon-backgrounds":"8.0.0-beta.1","@storybook/addon-controls":"8.0.0-beta.1","@storybook/addon-docs":"8.0.0-beta.1","@storybook/addon-essentials":"8.0.0-beta.1","@storybook/addon-highlight":"8.0.0-beta.1","@storybook/addon-interactions":"8.0.0-beta.1","@storybook/addon-jest":"8.0.0-beta.1","@storybook/addon-links":"8.0.0-beta.1","@storybook/addon-mdx-gfm":"8.0.0-beta.1","@storybook/addon-measure":"8.0.0-beta.1","@storybook/addon-outline":"8.0.0-beta.1","@storybook/addon-storysource":"8.0.0-beta.1","@storybook/addon-themes":"8.0.0-beta.1","@storybook/addon-toolbars":"8.0.0-beta.1","@storybook/addon-viewport":"8.0.0-beta.1","@storybook/angular":"8.0.0-beta.1","@storybook/blocks":"8.0.0-beta.1","@storybook/builder-manager":"8.0.0-beta.1","@storybook/builder-vite":"8.0.0-beta.1","@storybook/builder-webpack5":"8.0.0-beta.1","@storybook/channels":"8.0.0-beta.1","@storybook/cli":"8.0.0-beta.1","@storybook/client-logger":"8.0.0-beta.1","@storybook/codemod":"8.0.0-beta.1","@storybook/components":"8.0.0-beta.1","@storybook/core-common":"8.0.0-beta.1","@storybook/core-events":"8.0.0-beta.1","@storybook/core-server":"8.0.0-beta.1","@storybook/core-webpack":"8.0.0-beta.1","@storybook/csf-plugin":"8.0.0-beta.1","@storybook/csf-tools":"8.0.0-beta.1","@storybook/docs-tools":"8.0.0-beta.1","@storybook/ember":"8.0.0-beta.1","@storybook/html":"8.0.0-beta.1","@storybook/html-vite":"8.0.0-beta.1","@storybook/html-webpack5":"8.0.0-beta.1","@storybook/instrumenter":"8.0.0-beta.1","@storybook/manager":"8.0.0-beta.1","@storybook/manager-api":"8.0.0-beta.1","@storybook/nextjs":"8.0.0-beta.1","@storybook/node-logger":"8.0.0-beta.1","@storybook/preact":"8.0.0-beta.1","@storybook/preact-vite":"8.0.0-beta.1","@storybook/preact-webpack5":"8.0.0-beta.1","@storybook/preset-create-react-app":"8.0.0-beta.1","@storybook/preset-html-webpack":"8.0.0-beta.1","@storybook/preset-preact-webpack":"8.0.0-beta.1","@storybook/preset-react-webpack":"8.0.0-beta.1","@storybook/preset-server-webpack":"8.0.0-beta.1","@storybook/preset-svelte-webpack":"8.0.0-beta.1","@storybook/preset-vue3-webpack":"8.0.0-beta.1","@storybook/preview":"8.0.0-beta.1","@storybook/preview-api":"8.0.0-beta.1","@storybook/react":"8.0.0-beta.1","@storybook/react-dom-shim":"8.0.0-beta.1","@storybook/react-vite":"8.0.0-beta.1","@storybook/react-webpack5":"8.0.0-beta.1","@storybook/router":"8.0.0-beta.1","@storybook/server":"8.0.0-beta.1","@storybook/server-webpack5":"8.0.0-beta.1","@storybook/source-loader":"8.0.0-beta.1","@storybook/svelte":"8.0.0-beta.1","@storybook/svelte-vite":"8.0.0-beta.1","@storybook/svelte-webpack5":"8.0.0-beta.1","@storybook/sveltekit":"8.0.0-beta.1","@storybook/telemetry":"8.0.0-beta.1","@storybook/test":"8.0.0-beta.1","@storybook/theming":"8.0.0-beta.1","@storybook/types":"8.0.0-beta.1","@storybook/vue3":"8.0.0-beta.1","@storybook/vue3-vite":"8.0.0-beta.1","@storybook/vue3-webpack5":"8.0.0-beta.1","@storybook/web-components":"8.0.0-beta.1","@storybook/web-components-vite":"8.0.0-beta.1","@storybook/web-components-webpack5":"8.0.0-beta.1",sb:"8.0.0-beta.1",storybook:"8.0.0-beta.1"};function parseList(str){return str.split(",").map(item=>item.trim()).filter(item=>item.length>0)}async function getCoercedStorybookVersion(packageManager){return(await Promise.all(Object.keys(rendererPackages).map(async pkg=>({name:pkg,version:await packageManager.getPackageVersion(pkg)})))).filter(({version})=>!!version)[0]?.version}function getEnvConfig(program,configEnv){Object.keys(configEnv).forEach(fieldName=>{let envVarName=configEnv[fieldName],envVarValue=process.env[envVarName];envVarValue&&(program[fieldName]=envVarValue)})}var createLogStream=async(logFileName="storybook.log")=>{let finalLogPath=(0,import_path7.join)(process.cwd(),logFileName),temporaryLogPath=import_tempy.default.file({name:logFileName}),logStream=(0,import_fs_extra2.createWriteStream)(temporaryLogPath,{encoding:"utf8"});return new Promise((resolve,reject)=>{logStream.once("open",()=>{resolve({logStream,moveLogFile:async()=>(0,import_fs_extra2.move)(temporaryLogPath,finalLogPath,{overwrite:!0}),clearLogFile:async()=>(0,import_fs_extra2.writeFile)(temporaryLogPath,""),removeLogFile:async()=>(0,import_fs_extra2.remove)(temporaryLogPath),readLogFile:async()=>(0,import_fs_extra2.readFile)(temporaryLogPath,"utf8")})}),logStream.once("error",reject)})},isCorePackage=pkg=>Object.keys(versions_default).includes(pkg);var import_node_logger3=require("@storybook/node-logger"),predicateFor=addon=>entry=>{let name=entry.name||entry;return name&&name.includes(addon)},isCorrectOrder=(addons,before,after)=>{let essentialsIndex=addons.findIndex(predicateFor("@storybook/addon-essentials")),beforeIndex=addons.findIndex(predicateFor(before.name)),afterIndex=addons.findIndex(predicateFor(after.name));return beforeIndex===-1&&before.inEssentials&&(beforeIndex=essentialsIndex),afterIndex===-1&&after.inEssentials&&(afterIndex=essentialsIndex),beforeIndex!==-1&&afterIndex!==-1&&beforeIndex<=afterIndex},checkAddonOrder=async({before,after,configFile,getConfig})=>{try{let config=await getConfig(configFile);if(!config?.addons){import_node_logger3.logger.warn("Unable to find 'addons' config in main Storybook config");return}if(!isCorrectOrder(config.addons,before,after)){let orEssentials=" (or '@storybook/addon-essentials')",beforeText=`'${before.name}'${before.inEssentials?orEssentials:""}`,afterText=`'${after.name}'${after.inEssentials?orEssentials:""}`;import_node_logger3.logger.warn(`Expected ${beforeText} to be listed before ${afterText} in main Storybook config.`)}}catch{import_node_logger3.logger.warn(`Unable to load config file: ${configFile}`)}};var import_lazy_universal_dotenv=require("lazy-universal-dotenv");var import_path8=__toESM(require("path")),import_find_up=__toESM(require("find-up")),getProjectRoot=()=>{let result;if(process.env.STORYBOOK_PROJECT_ROOT)return process.env.STORYBOOK_PROJECT_ROOT;try{let found=import_find_up.default.sync(".git",{type:"directory"});found&&(result=import_path8.default.join(found,".."))}catch{}try{let found=import_find_up.default.sync(".svn",{type:"directory"});found&&(result=result||import_path8.default.join(found,".."))}catch{}try{let found=import_find_up.default.sync(".hg",{type:"directory"});found&&(result=result||import_path8.default.join(found,".."))}catch{}try{let found=import_find_up.default.sync(".yarn",{type:"directory"});found&&(result=result||import_path8.default.join(found,".."))}catch{}try{result=result||__dirname.split("node_modules")[0]}catch{}return result||process.cwd()},nodePathsToArray=nodePath=>nodePath.split(process.platform==="win32"?";":":").filter(Boolean).map(p=>import_path8.default.resolve("./",p)),relativePattern=/^\.{1,2}([/\\]|$)/;function normalizeStoryPath(filename){return relativePattern.test(filename)?filename:`.${import_path8.default.sep}${filename}`}function loadEnvs(options={}){let defaultNodeEnv=options.production?"production":"development",env={NODE_ENV:process.env.NODE_ENV||defaultNodeEnv,NODE_PATH:process.env.NODE_PATH||"",STORYBOOK:process.env.STORYBOOK||"true",PUBLIC_URL:options.production?".":""};Object.keys(process.env).filter(name=>/^STORYBOOK_/.test(name)).forEach(name=>{env[name]=process.env[name]});let base=Object.entries(env).reduce((acc,[k,v])=>Object.assign(acc,{[k]:JSON.stringify(v)}),{}),{stringified,raw}=(0,import_lazy_universal_dotenv.getEnvironment)({nodeEnv:env.NODE_ENV}),fullRaw={...env,...raw};return fullRaw.NODE_PATH=nodePathsToArray(fullRaw.NODE_PATH||""),{stringified:{...base,...stringified},raw:fullRaw}}var stringifyEnvs=raw=>Object.entries(raw).reduce((acc,[key,value])=>(acc[key]=JSON.stringify(value),acc),{}),stringifyProcessEnvs=raw=>Object.entries(raw).reduce((acc,[key,value])=>(acc[`process.env.${key}`]=JSON.stringify(value),acc),{});var NODE_MODULES_RE=/node_modules/,commonGlobOptions=glob2=>NODE_MODULES_RE.test(glob2)?{}:{ignore:["**/node_modules/**"]};async function getBuilderOptions(options){let framework=await options.presets.apply("framework",{},options);if(typeof framework!="string"&&framework?.options?.builder)return framework.options.builder;let{builder}=await options.presets.apply("core",{},options);return typeof builder!="string"&&builder?.options?builder.options:{}}var import_ts_dedent3=require("ts-dedent");async function getFrameworkName(options){let framework=await options.presets.apply("framework","",options);if(!framework)throw new Error(import_ts_dedent3.dedent`
15
+ `)}catch(error){if(storybookOptions?.isCritical)throw new import_server_errors.CriticalPresetLoadError({error,presetName});let warning=level>0?` Failed to load preset: ${JSON.stringify(input)} on level ${level}`:` Failed to load preset: ${JSON.stringify(input)}`;return import_node_logger2.logger.warn(warning),import_node_logger2.logger.error(error),[]}}async function loadPresets(presets,level,storybookOptions){return!presets||!Array.isArray(presets)||!presets.length?[]:(await Promise.all(presets.map(async preset=>loadPreset(preset,level,storybookOptions)))).reduce((acc,loaded)=>acc.concat(loaded),[])}function applyPresets(presets,extension,config,args,storybookOptions){let presetResult=new Promise(res=>res(config));return presets.length?presets.reduce((accumulationPromise,{preset,options})=>{let change=preset[extension];if(!change)return accumulationPromise;if(typeof change=="function"){let extensionFn=change,context={preset,combinedOptions:{...storybookOptions,...args,...options,presetsList:presets,presets:{apply:async(ext,c,a={})=>applyPresets(presets,ext,c,a,storybookOptions)}}};return accumulationPromise.then(newConfig=>extensionFn.call(context.preset,newConfig,context.combinedOptions))}return accumulationPromise.then(newConfig=>Array.isArray(newConfig)&&Array.isArray(change)?[...newConfig,...change]:isObject(newConfig)&&isObject(change)?{...newConfig,...change}:change)},presetResult):presetResult}async function getPresets(presets,storybookOptions){let loadedPresets=await loadPresets(presets,0,storybookOptions);return{apply:async(extension,config,args={})=>applyPresets(loadedPresets,extension,config,args,storybookOptions)}}async function loadAllPresets(options){let{corePresets=[],overridePresets=[],...restOptions}=options,presetsConfig=[...corePresets,...loadCustomPresets(options),...overridePresets],filteredPresetConfig=filterPresetsConfig(presetsConfig);return filteredPresetConfig.length<presetsConfig.length&&import_node_logger2.logger.warn("Storybook now supports TypeScript natively. You can safely remove `@storybook/preset-typescript`."),getPresets(filteredPresetConfig,restOptions)}var import_file_system_cache=__toESM(require("file-system-cache"));function createFileSystemCache(options){return(0,import_file_system_cache.default)(options)}var import_path5=__toESM(require("path")),import_find_cache_dir=__toESM(require("find-cache-dir"));function resolvePathInStorybookCache(fileOrDirectoryName,sub="default"){let cacheDirectory=(0,import_find_cache_dir.default)({name:"storybook"});return cacheDirectory||=import_path5.default.join(process.cwd(),".cache","storybook"),import_path5.default.join(cacheDirectory,sub,fileOrDirectoryName)}var cache=createFileSystemCache({basePath:resolvePathInStorybookCache("dev-server"),ns:"storybook"});var import_fs_extra2=require("fs-extra"),import_path7=require("path"),import_tempy=__toESM(require("tempy"));var import_path6=__toESM(require("path")),import_fs_extra=__toESM(require("fs-extra"));function getStorybookConfiguration(storybookScript,shortName,longName){if(!storybookScript)return null;let parts=storybookScript.split(/[\s='"]+/),index=parts.indexOf(longName);return index===-1&&(index=parts.indexOf(shortName)),index===-1?null:parts[index+1]}var rendererPackages={"@storybook/react":"react","@storybook/vue3":"vue3","@storybook/angular":"angular","@storybook/html":"html","@storybook/web-components":"web-components","@storybook/polymer":"polymer","@storybook/ember":"ember","@storybook/svelte":"svelte","@storybook/preact":"preact","@storybook/server":"server","storybook-framework-qwik":"qwik","storybook-solidjs":"solid","@storybook/vue":"vue"},frameworkPackages={"@storybook/angular":"angular","@storybook/ember":"ember","@storybook/html-vite":"html-vite","@storybook/html-webpack5":"html-webpack5","@storybook/nextjs":"nextjs","@storybook/preact-vite":"preact-vite","@storybook/preact-webpack5":"preact-webpack5","@storybook/react-vite":"react-vite","@storybook/react-webpack5":"react-webpack5","@storybook/server-webpack5":"server-webpack5","@storybook/svelte-vite":"svelte-vite","@storybook/svelte-webpack5":"svelte-webpack5","@storybook/sveltekit":"sveltekit","@storybook/vue3-vite":"vue3-vite","@storybook/vue3-webpack5":"vue3-webpack5","@storybook/web-components-vite":"web-components-vite","@storybook/web-components-webpack5":"web-components-webpack5","storybook-framework-qwik":"qwik","storybook-solidjs-vite":"solid"},builderPackages=["@storybook/builder-webpack5","@storybook/builder-vite"],logger2=console,findDependency=({dependencies,devDependencies,peerDependencies},predicate)=>[Object.entries(dependencies||{}).find(predicate),Object.entries(devDependencies||{}).find(predicate),Object.entries(peerDependencies||{}).find(predicate)],getRendererInfo=packageJson=>{let[dep,devDep,peerDep]=findDependency(packageJson,([key])=>rendererPackages[key]),[pkg,version]=dep||devDep||peerDep||[];return dep&&devDep&&dep[0]===devDep[0]&&logger2.warn(`Found "${dep[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),dep&&peerDep&&dep[0]===peerDep[0]&&logger2.warn(`Found "${dep[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{version,frameworkPackage:pkg}},validConfigExtensions=["ts","js","tsx","jsx","mjs","cjs"],findConfigFile=(prefix,configDir)=>{let filePrefix=import_path6.default.join(configDir,prefix),extension=validConfigExtensions.find(ext=>import_fs_extra.default.existsSync(`${filePrefix}.${ext}`));return extension?`${filePrefix}.${extension}`:null},getConfigInfo=(packageJson,configDir)=>{let storybookConfigDir=configDir??".storybook",storybookScript=packageJson.scripts?.storybook;if(storybookScript&&!configDir){let configParam=getStorybookConfiguration(storybookScript,"-c","--config-dir");configParam&&(storybookConfigDir=configParam)}return{configDir:storybookConfigDir,mainConfig:findConfigFile("main",storybookConfigDir),previewConfig:findConfigFile("preview",storybookConfigDir),managerConfig:findConfigFile("manager",storybookConfigDir)}},getStorybookInfo=(packageJson,configDir)=>{let rendererInfo=getRendererInfo(packageJson),configInfo=getConfigInfo(packageJson,configDir);return{...rendererInfo,...configInfo}};var versions_default={"@storybook/addon-a11y":"8.0.0-beta.3","@storybook/addon-actions":"8.0.0-beta.3","@storybook/addon-backgrounds":"8.0.0-beta.3","@storybook/addon-controls":"8.0.0-beta.3","@storybook/addon-docs":"8.0.0-beta.3","@storybook/addon-essentials":"8.0.0-beta.3","@storybook/addon-highlight":"8.0.0-beta.3","@storybook/addon-interactions":"8.0.0-beta.3","@storybook/addon-jest":"8.0.0-beta.3","@storybook/addon-links":"8.0.0-beta.3","@storybook/addon-mdx-gfm":"8.0.0-beta.3","@storybook/addon-measure":"8.0.0-beta.3","@storybook/addon-outline":"8.0.0-beta.3","@storybook/addon-storysource":"8.0.0-beta.3","@storybook/addon-themes":"8.0.0-beta.3","@storybook/addon-toolbars":"8.0.0-beta.3","@storybook/addon-viewport":"8.0.0-beta.3","@storybook/angular":"8.0.0-beta.3","@storybook/blocks":"8.0.0-beta.3","@storybook/builder-manager":"8.0.0-beta.3","@storybook/builder-vite":"8.0.0-beta.3","@storybook/builder-webpack5":"8.0.0-beta.3","@storybook/channels":"8.0.0-beta.3","@storybook/cli":"8.0.0-beta.3","@storybook/client-logger":"8.0.0-beta.3","@storybook/codemod":"8.0.0-beta.3","@storybook/components":"8.0.0-beta.3","@storybook/core-common":"8.0.0-beta.3","@storybook/core-events":"8.0.0-beta.3","@storybook/core-server":"8.0.0-beta.3","@storybook/core-webpack":"8.0.0-beta.3","@storybook/csf-plugin":"8.0.0-beta.3","@storybook/csf-tools":"8.0.0-beta.3","@storybook/docs-tools":"8.0.0-beta.3","@storybook/ember":"8.0.0-beta.3","@storybook/html":"8.0.0-beta.3","@storybook/html-vite":"8.0.0-beta.3","@storybook/html-webpack5":"8.0.0-beta.3","@storybook/instrumenter":"8.0.0-beta.3","@storybook/manager":"8.0.0-beta.3","@storybook/manager-api":"8.0.0-beta.3","@storybook/nextjs":"8.0.0-beta.3","@storybook/node-logger":"8.0.0-beta.3","@storybook/preact":"8.0.0-beta.3","@storybook/preact-vite":"8.0.0-beta.3","@storybook/preact-webpack5":"8.0.0-beta.3","@storybook/preset-create-react-app":"8.0.0-beta.3","@storybook/preset-html-webpack":"8.0.0-beta.3","@storybook/preset-preact-webpack":"8.0.0-beta.3","@storybook/preset-react-webpack":"8.0.0-beta.3","@storybook/preset-server-webpack":"8.0.0-beta.3","@storybook/preset-svelte-webpack":"8.0.0-beta.3","@storybook/preset-vue3-webpack":"8.0.0-beta.3","@storybook/preview":"8.0.0-beta.3","@storybook/preview-api":"8.0.0-beta.3","@storybook/react":"8.0.0-beta.3","@storybook/react-dom-shim":"8.0.0-beta.3","@storybook/react-vite":"8.0.0-beta.3","@storybook/react-webpack5":"8.0.0-beta.3","@storybook/router":"8.0.0-beta.3","@storybook/server":"8.0.0-beta.3","@storybook/server-webpack5":"8.0.0-beta.3","@storybook/source-loader":"8.0.0-beta.3","@storybook/svelte":"8.0.0-beta.3","@storybook/svelte-vite":"8.0.0-beta.3","@storybook/svelte-webpack5":"8.0.0-beta.3","@storybook/sveltekit":"8.0.0-beta.3","@storybook/telemetry":"8.0.0-beta.3","@storybook/test":"8.0.0-beta.3","@storybook/theming":"8.0.0-beta.3","@storybook/types":"8.0.0-beta.3","@storybook/vue3":"8.0.0-beta.3","@storybook/vue3-vite":"8.0.0-beta.3","@storybook/vue3-webpack5":"8.0.0-beta.3","@storybook/web-components":"8.0.0-beta.3","@storybook/web-components-vite":"8.0.0-beta.3","@storybook/web-components-webpack5":"8.0.0-beta.3",sb:"8.0.0-beta.3",storybook:"8.0.0-beta.3"};function parseList(str){return str.split(",").map(item=>item.trim()).filter(item=>item.length>0)}async function getCoercedStorybookVersion(packageManager){return(await Promise.all(Object.keys(rendererPackages).map(async pkg=>({name:pkg,version:await packageManager.getPackageVersion(pkg)})))).filter(({version})=>!!version)[0]?.version}function getEnvConfig(program,configEnv){Object.keys(configEnv).forEach(fieldName=>{let envVarName=configEnv[fieldName],envVarValue=process.env[envVarName];envVarValue&&(program[fieldName]=envVarValue)})}var createLogStream=async(logFileName="storybook.log")=>{let finalLogPath=(0,import_path7.join)(process.cwd(),logFileName),temporaryLogPath=import_tempy.default.file({name:logFileName}),logStream=(0,import_fs_extra2.createWriteStream)(temporaryLogPath,{encoding:"utf8"});return new Promise((resolve,reject)=>{logStream.once("open",()=>{resolve({logStream,moveLogFile:async()=>(0,import_fs_extra2.move)(temporaryLogPath,finalLogPath,{overwrite:!0}),clearLogFile:async()=>(0,import_fs_extra2.writeFile)(temporaryLogPath,""),removeLogFile:async()=>(0,import_fs_extra2.remove)(temporaryLogPath),readLogFile:async()=>(0,import_fs_extra2.readFile)(temporaryLogPath,"utf8")})}),logStream.once("error",reject)})},isCorePackage=pkg=>Object.keys(versions_default).includes(pkg);var import_node_logger3=require("@storybook/node-logger"),predicateFor=addon=>entry=>{let name=entry.name||entry;return name&&name.includes(addon)},isCorrectOrder=(addons,before,after)=>{let essentialsIndex=addons.findIndex(predicateFor("@storybook/addon-essentials")),beforeIndex=addons.findIndex(predicateFor(before.name)),afterIndex=addons.findIndex(predicateFor(after.name));return beforeIndex===-1&&before.inEssentials&&(beforeIndex=essentialsIndex),afterIndex===-1&&after.inEssentials&&(afterIndex=essentialsIndex),beforeIndex!==-1&&afterIndex!==-1&&beforeIndex<=afterIndex},checkAddonOrder=async({before,after,configFile,getConfig})=>{try{let config=await getConfig(configFile);if(!config?.addons){import_node_logger3.logger.warn("Unable to find 'addons' config in main Storybook config");return}if(!isCorrectOrder(config.addons,before,after)){let orEssentials=" (or '@storybook/addon-essentials')",beforeText=`'${before.name}'${before.inEssentials?orEssentials:""}`,afterText=`'${after.name}'${after.inEssentials?orEssentials:""}`;import_node_logger3.logger.warn(`Expected ${beforeText} to be listed before ${afterText} in main Storybook config.`)}}catch{import_node_logger3.logger.warn(`Unable to load config file: ${configFile}`)}};var import_lazy_universal_dotenv=require("lazy-universal-dotenv");var import_path8=__toESM(require("path")),import_find_up=__toESM(require("find-up")),getProjectRoot=()=>{let result;if(process.env.STORYBOOK_PROJECT_ROOT)return process.env.STORYBOOK_PROJECT_ROOT;try{let found=import_find_up.default.sync(".git",{type:"directory"});found&&(result=import_path8.default.join(found,".."))}catch{}try{let found=import_find_up.default.sync(".svn",{type:"directory"});found&&(result=result||import_path8.default.join(found,".."))}catch{}try{let found=import_find_up.default.sync(".hg",{type:"directory"});found&&(result=result||import_path8.default.join(found,".."))}catch{}try{let found=import_find_up.default.sync(".yarn",{type:"directory"});found&&(result=result||import_path8.default.join(found,".."))}catch{}try{result=result||__dirname.split("node_modules")[0]}catch{}return result||process.cwd()},nodePathsToArray=nodePath=>nodePath.split(process.platform==="win32"?";":":").filter(Boolean).map(p=>import_path8.default.resolve("./",p)),relativePattern=/^\.{1,2}([/\\]|$)/;function normalizeStoryPath(filename){return relativePattern.test(filename)?filename:`.${import_path8.default.sep}${filename}`}function loadEnvs(options={}){let defaultNodeEnv=options.production?"production":"development",env={NODE_ENV:process.env.NODE_ENV||defaultNodeEnv,NODE_PATH:process.env.NODE_PATH||"",STORYBOOK:process.env.STORYBOOK||"true",PUBLIC_URL:options.production?".":""};Object.keys(process.env).filter(name=>/^STORYBOOK_/.test(name)).forEach(name=>{env[name]=process.env[name]});let base=Object.entries(env).reduce((acc,[k,v])=>Object.assign(acc,{[k]:JSON.stringify(v)}),{}),{stringified,raw}=(0,import_lazy_universal_dotenv.getEnvironment)({nodeEnv:env.NODE_ENV}),fullRaw={...env,...raw};return fullRaw.NODE_PATH=nodePathsToArray(fullRaw.NODE_PATH||""),{stringified:{...base,...stringified},raw:fullRaw}}var stringifyEnvs=raw=>Object.entries(raw).reduce((acc,[key,value])=>(acc[key]=JSON.stringify(value),acc),{}),stringifyProcessEnvs=raw=>Object.entries(raw).reduce((acc,[key,value])=>(acc[`process.env.${key}`]=JSON.stringify(value),acc),{});var NODE_MODULES_RE=/node_modules/,commonGlobOptions=glob2=>NODE_MODULES_RE.test(glob2)?{}:{ignore:["**/node_modules/**"]};async function getBuilderOptions(options){let framework=await options.presets.apply("framework",{},options);if(typeof framework!="string"&&framework?.options?.builder)return framework.options.builder;let{builder}=await options.presets.apply("core",{},options);return typeof builder!="string"&&builder?.options?builder.options:{}}var import_ts_dedent3=require("ts-dedent");async function getFrameworkName(options){let framework=await options.presets.apply("framework","",options);if(!framework)throw new Error(import_ts_dedent3.dedent`
16
16
  You must specify a framework in '.storybook/main.js' config.
17
17
 
18
18
  https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-field-mandatory
@@ -27,7 +27,7 @@ ${item}`);return}if(!resolved){import_node_logger2.logger.warn(`Could not resolv
27
27
  `)});function paddedLog(message){let newMessage=message.split(`
28
28
  `).map(line=>` ${line}`).join(`
29
29
  `);logger6.log(newMessage)}function getChars(char,amount){let line="";for(let lc=0;lc<amount;lc+=1)line+=char;return line}function codeLog(codeLines,leftPadAmount){let maxLength=0,finalResult=codeLines.map(line=>(maxLength=line.length>maxLength?line.length:maxLength,line)).map(line=>{let rightPadAmount=maxLength-line.length,newLine=line+getChars(" ",rightPadAmount);return newLine=getChars(" ",leftPadAmount||2)+import_chalk.default.inverse(` ${newLine} `),newLine}).join(`
30
- `);logger6.log(finalResult)}var import_chalk2=__toESM(require("chalk"));function logConfig(caption,config){console.log(import_chalk2.default.cyan(caption)),console.dir(config,{depth:null})}var fs2=__toESM(require("fs")),import_path13=__toESM(require("path")),pico2=__toESM(require("picomatch"));var import_server_errors2=require("@storybook/core-events/server-errors");var DEFAULT_TITLE_PREFIX="",DEFAULT_FILES_PATTERN="**/*.@(mdx|stories.@(js|jsx|mjs|ts|tsx))",isDirectory=(configDir,entry)=>{try{return fs2.lstatSync(import_path13.default.resolve(configDir,entry)).isDirectory()}catch{return!1}},getDirectoryFromWorkingDir=({configDir,workingDir,directory})=>{let directoryFromConfig=import_path13.default.resolve(configDir,directory),directoryFromWorking=import_path13.default.relative(workingDir,directoryFromConfig);return normalizeStoryPath(directoryFromWorking)},normalizeStoriesEntry=(entry,{configDir,workingDir,defaultFilesPattern=DEFAULT_FILES_PATTERN})=>{let specifierWithoutMatcher;if(typeof entry=="string"){let globResult=pico2.scan(entry);if(globResult.isGlob){let directory2=globResult.prefix+globResult.base,files2=globResult.glob;specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:directory2,files:files2}}else isDirectory(configDir,entry)?specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:entry,files:defaultFilesPattern}:specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:import_path13.default.dirname(entry),files:import_path13.default.basename(entry)}}else specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,files:defaultFilesPattern,...entry};let files=slash(specifierWithoutMatcher.files),{directory:directoryRelativeToConfig}=specifierWithoutMatcher,directory=slash(getDirectoryFromWorkingDir({configDir,workingDir,directory:directoryRelativeToConfig})).replace(/\/$/,""),importPathMatcher=globToRegexp(`${directory}/${files}`);return{...specifierWithoutMatcher,directory,importPathMatcher}},normalizeStories=(entries,options)=>{if(!entries||Array.isArray(entries)&&entries.length===0)throw new import_server_errors2.InvalidStoriesEntryError;return entries.map(entry=>normalizeStoriesEntry(entry,options))};var import_fs_extra4=__toESM(require("fs-extra"));async function readTemplate(filename){return import_fs_extra4.default.readFile(filename,{encoding:"utf8"})}var import_ts_dedent11=__toESM(require("ts-dedent")),import_csf_tools=require("@storybook/csf-tools");var import_node_path=__toESM(require("path")),import_cross_spawn=require("cross-spawn"),import_find_up7=require("find-up");var import_sort=__toESM(require("semver/functions/sort")),import_os=require("os"),import_ts_dedent7=__toESM(require("ts-dedent")),import_find_up3=require("find-up"),import_fs3=require("fs"),import_path15=__toESM(require("path")),import_node_logger6=require("@storybook/node-logger");var import_chalk3=__toESM(require("chalk")),import_semver=require("semver"),import_execa=require("execa"),import_path14=__toESM(require("path")),import_fs2=__toESM(require("fs")),import_ts_dedent6=__toESM(require("ts-dedent")),import_fs_extra5=require("fs-extra"),import_tiny_invariant=__toESM(require("tiny-invariant"));var logger7=console;function getPackageDetails(pkg){let idx=pkg.lastIndexOf("@");if(idx<=0)return[pkg,void 0];let packageName=pkg.slice(0,idx),packageVersion=pkg.slice(idx+1);return[packageName,packageVersion]}var JsPackageManager=class{async getPackageVersion(packageName,basePath=this.cwd){let packageJSON=await this.getPackageJSON(packageName,basePath);return packageJSON?packageJSON.version??null:null}async setRegistryURL(url){url?await this.executeCommand({command:"npm",args:["config","set","registry",url]}):await this.executeCommand({command:"npm",args:["config","delete","registry"]})}async getRegistryURL(){let url=(await this.executeCommand({command:"npm",args:["config","get","registry"]})).trim();return url==="undefined"?void 0:url}constructor(options){this.cwd=options?.cwd||process.cwd()}isStorybookInMonorepo(){let cwd=process.cwd();for(;;){try{let turboJsonPath=`${cwd}/turbo.json`,rushJsonPath=`${cwd}/rush.json`;if(import_fs2.default.existsSync(turboJsonPath)||import_fs2.default.existsSync(rushJsonPath))return!0;let packageJsonPath=require.resolve(`${cwd}/package.json`),packageJsonFile=(0,import_fs_extra5.readFileSync)(packageJsonPath,"utf8");if(JSON.parse(packageJsonFile).workspaces)return!0}catch{}let parentDir=import_path14.default.dirname(cwd);if(parentDir===cwd)break;cwd=parentDir}return!1}async installDependencies(){let done=commandLog("Preparing to install dependencies");done(),logger7.log(),logger7.log(),done=commandLog("Installing dependencies"),logger7.log();try{await this.runInstall(),done()}catch(e){throw done("An error occurred while installing dependencies."),new HandledError(e)}}packageJsonPath(){if(!this.cwd)throw new Error("Missing cwd");return import_path14.default.resolve(this.cwd,"package.json")}async readPackageJson(){let packageJsonPath=this.packageJsonPath();if(!import_fs2.default.existsSync(packageJsonPath))throw new Error(`Could not read package.json file at ${packageJsonPath}`);let jsonContent=await(0,import_fs_extra5.readFile)(packageJsonPath,"utf8");return JSON.parse(jsonContent)}async writePackageJson(packageJson){let packageJsonToWrite={...packageJson};packageJsonToWrite.dependencies&&Object.keys(packageJsonToWrite.dependencies).length===0&&delete packageJsonToWrite.dependencies,packageJsonToWrite.devDependencies&&Object.keys(packageJsonToWrite.devDependencies).length===0&&delete packageJsonToWrite.devDependencies,packageJsonToWrite.peerDependencies&&Object.keys(packageJsonToWrite.peerDependencies).length===0&&delete packageJsonToWrite.peerDependencies;let content=`${JSON.stringify(packageJsonToWrite,null,2)}
30
+ `);logger6.log(finalResult)}var import_chalk2=__toESM(require("chalk"));function logConfig(caption,config){console.log(import_chalk2.default.cyan(caption)),console.dir(config,{depth:null})}var fs2=__toESM(require("fs")),import_path13=__toESM(require("path")),pico2=__toESM(require("picomatch"));var import_server_errors2=require("@storybook/core-events/server-errors");var DEFAULT_TITLE_PREFIX="",DEFAULT_FILES_PATTERN="**/*.@(mdx|stories.@(js|jsx|mjs|ts|tsx))",isDirectory=(configDir,entry)=>{try{return fs2.lstatSync(import_path13.default.resolve(configDir,entry)).isDirectory()}catch{return!1}},getDirectoryFromWorkingDir=({configDir,workingDir,directory})=>{let directoryFromConfig=import_path13.default.resolve(configDir,directory),directoryFromWorking=import_path13.default.relative(workingDir,directoryFromConfig);return normalizeStoryPath(directoryFromWorking)},normalizeStoriesEntry=(entry,{configDir,workingDir,defaultFilesPattern=DEFAULT_FILES_PATTERN})=>{let specifierWithoutMatcher;if(typeof entry=="string"){let globResult=pico2.scan(entry);if(globResult.isGlob){let directory2=globResult.prefix+globResult.base,files2=globResult.glob;specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:directory2,files:files2}}else isDirectory(configDir,entry)?specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:entry,files:defaultFilesPattern}:specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:import_path13.default.dirname(entry),files:import_path13.default.basename(entry)}}else specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,files:defaultFilesPattern,...entry};let files=slash(specifierWithoutMatcher.files),{directory:directoryRelativeToConfig}=specifierWithoutMatcher,directory=slash(getDirectoryFromWorkingDir({configDir,workingDir,directory:directoryRelativeToConfig})).replace(/\/$/,""),importPathMatcher=globToRegexp(`${directory}/${files}`);return{...specifierWithoutMatcher,directory,importPathMatcher}},normalizeStories=(entries,options)=>{if(!entries||Array.isArray(entries)&&entries.length===0)throw new import_server_errors2.InvalidStoriesEntryError;return entries.map(entry=>normalizeStoriesEntry(entry,options))};var import_fs_extra4=__toESM(require("fs-extra"));async function readTemplate(filename){return import_fs_extra4.default.readFile(filename,{encoding:"utf8"})}var import_ts_dedent11=__toESM(require("ts-dedent")),import_csf_tools=require("@storybook/csf-tools");var import_node_path=__toESM(require("path")),import_cross_spawn=require("cross-spawn"),import_find_up7=require("find-up");var import_sort=__toESM(require("semver/functions/sort")),import_os=require("os"),import_ts_dedent7=__toESM(require("ts-dedent")),import_find_up3=require("find-up"),import_fs3=require("fs"),import_path15=__toESM(require("path")),import_node_logger6=require("@storybook/node-logger");var import_chalk3=__toESM(require("chalk")),import_semver=require("semver"),import_execa=require("execa"),import_path14=__toESM(require("path")),import_fs2=__toESM(require("fs")),import_ts_dedent6=__toESM(require("ts-dedent")),import_fs_extra5=require("fs-extra"),import_tiny_invariant=__toESM(require("tiny-invariant"));var logger7=console;function getPackageDetails(pkg){let idx=pkg.lastIndexOf("@");if(idx<=0)return[pkg,void 0];let packageName=pkg.slice(0,idx),packageVersion=pkg.slice(idx+1);return[packageName,packageVersion]}var JsPackageManager=class{async getPackageVersion(packageName,basePath=this.cwd){let packageJSON=await this.getPackageJSON(packageName,basePath);return packageJSON?packageJSON.version??null:null}async setRegistryURL(url){url?await this.executeCommand({command:"npm",args:["config","set","registry",url]}):await this.executeCommand({command:"npm",args:["config","delete","registry"]})}async getRegistryURL(){let url=(await this.executeCommand({command:"npm",args:["config","get","registry"]})).trim();return url==="undefined"?void 0:url}constructor(options){this.cwd=options?.cwd||process.cwd()}isStorybookInMonorepo(){let cwd=process.cwd();for(;;){try{let turboJsonPath=`${cwd}/turbo.json`,rushJsonPath=`${cwd}/rush.json`;if(import_fs2.default.existsSync(turboJsonPath)||import_fs2.default.existsSync(rushJsonPath))return!0;let packageJsonPath=require.resolve(`${cwd}/package.json`),packageJsonFile=(0,import_fs_extra5.readFileSync)(packageJsonPath,"utf8");if(JSON.parse(packageJsonFile).workspaces)return!0}catch{}let parentDir=import_path14.default.dirname(cwd);if(parentDir===cwd)break;cwd=parentDir}return!1}async installDependencies(){logger7.log("Installing dependencies..."),logger7.log();try{await this.runInstall()}catch(e){throw logger7.error("An error occurred while installing dependencies."),new HandledError(e)}}packageJsonPath(){if(!this.cwd)throw new Error("Missing cwd");return import_path14.default.resolve(this.cwd,"package.json")}async readPackageJson(){let packageJsonPath=this.packageJsonPath();if(!import_fs2.default.existsSync(packageJsonPath))throw new Error(`Could not read package.json file at ${packageJsonPath}`);let jsonContent=await(0,import_fs_extra5.readFile)(packageJsonPath,"utf8");return JSON.parse(jsonContent)}async writePackageJson(packageJson){let packageJsonToWrite={...packageJson};packageJsonToWrite.dependencies&&Object.keys(packageJsonToWrite.dependencies).length===0&&delete packageJsonToWrite.dependencies,packageJsonToWrite.devDependencies&&Object.keys(packageJsonToWrite.devDependencies).length===0&&delete packageJsonToWrite.devDependencies,packageJsonToWrite.peerDependencies&&Object.keys(packageJsonToWrite.peerDependencies).length===0&&delete packageJsonToWrite.peerDependencies;let content=`${JSON.stringify(packageJsonToWrite,null,2)}
31
31
  `;await(0,import_fs_extra5.writeFile)(this.packageJsonPath(),content,"utf8")}async retrievePackageJson(){let packageJson;try{packageJson=await this.readPackageJson()}catch(err){let errMessage=String(err);if(errMessage.includes("Could not read package.json"))await this.initPackageJson(),packageJson=await this.readPackageJson();else throw new Error(import_ts_dedent6.default`
32
32
  There was an error while reading the package.json file at ${this.packageJsonPath()}: ${errMessage}
33
33
  Please fix the error and try again.
package/dist/index.mjs CHANGED
@@ -41,7 +41,7 @@ var __require=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(
41
41
  `)}function loadCustomPresets({configDir}){validateConfigurationFiles(configDir);let presets=serverRequire(path6.resolve(configDir,"presets"));if(serverRequire(path6.resolve(configDir,"main"))){let resolved=serverResolve(path6.resolve(configDir,"main"));if(resolved)return [resolved]}return presets||[]}var safeResolveFrom=(path18,file)=>{try{return resolveFrom(path18,file)}catch{return}},safeResolve=file=>{try{return __require.resolve(file)}catch{return}};function normalizePath(id){return path6.posix.normalize(slash(id))}function stripAbsNodeModulesPath(absPath){let splits=absPath.split(`node_modules${path6.sep}`);return normalizePath(splits[splits.length-1])}var isObject=val=>val!=null&&typeof val=="object"&&Array.isArray(val)===!1,isFunction=val=>typeof val=="function";function filterPresetsConfig(presetsConfig){return presetsConfig.filter(preset=>{let presetName=typeof preset=="string"?preset:preset.name;return !/@storybook[\\\\/]preset-typescript/.test(presetName)})}function resolvePathToMjs(filePath){let{dir,name}=parse(filePath),mjsPath=join(dir,`${name}.mjs`);return safeResolve(mjsPath)?mjsPath:filePath}function resolvePresetFunction(input,presetOptions,storybookOptions){return isFunction(input)?[...input({...storybookOptions,...presetOptions})]:Array.isArray(input)?[...input]:[]}var resolveAddonName=(configDir,name,options)=>{let resolve=name.startsWith("/")?safeResolve:safeResolveFrom.bind(null,configDir),resolved=resolve(name);if(resolved){let{dir:fdir,name:fname}=parse(resolved);if(name.match(/\/(manager|register(-panel)?)(\.(js|mjs|ts|tsx|jsx))?$/))return {type:"virtual",name,managerEntries:[resolvePathToMjs(join(fdir,fname))]};if(name.match(/\/(preset)(\.(js|mjs|ts|tsx|jsx))?$/))return {type:"presets",name:resolved}}let checkExists=exportName=>{if(resolve(`${name}${exportName}`))return `${name}${exportName}`},absolutizeExport=(exportName,preferMJS)=>{let found=resolve(`${name}${exportName}`);if(found)return preferMJS?resolvePathToMjs(found):found},managerFile=absolutizeExport("/manager",!0),registerFile=absolutizeExport("/register",!0)||absolutizeExport("/register-panel",!0),previewFile=checkExists("/preview"),previewFileAbsolute=absolutizeExport("/preview",!0),presetFile=absolutizeExport("/preset",!1);if(!(managerFile||previewFile)&&presetFile)return {type:"presets",name:presetFile};if(managerFile||registerFile||previewFile||presetFile){let managerEntries=[];return managerFile&&managerEntries.push(managerFile),!managerFile&&registerFile&&!presetFile&&managerEntries.push(registerFile),{type:"virtual",name,...managerEntries.length?{managerEntries}:{},...previewFile?{previewAnnotations:[previewFileAbsolute?{bare:previewFile.includes("node_modules")?stripAbsNodeModulesPath(previewFile):previewFile,absolute:previewFileAbsolute}:previewFile]}:{},...presetFile?{presets:[{name:presetFile,options}]}:{}}}if(resolved)return {type:"presets",name:resolved}},map=({configDir})=>item=>{let options=isObject(item)&&item.options||void 0,name=isObject(item)?item.name:item,resolved;try{resolved=resolveAddonName(configDir,name,options);}catch{logger.error(`Addon value should end in /manager or /preview or /register OR it should be a valid preset https://storybook.js.org/docs/react/addons/writing-presets/
42
42
  ${item}`);return}if(!resolved){logger.warn(`Could not resolve addon "${name}", skipping. Is it installed?`);return}return {...options?{options}:{},...resolved}};async function getContent(input){if(input.type==="virtual"){let{type,name:name2,...rest}=input;return rest}let name=input.name?input.name:input;return interopRequireDefault(name)}async function loadPreset(input,level,storybookOptions){let presetName=input.name?input.name:input;try{let presetOptions=input.options?input.options:{},contents=await getContent(input);if(typeof contents=="function"&&(contents=contents(storybookOptions,presetOptions)),Array.isArray(contents))return await loadPresets(contents,level+1,storybookOptions);if(isObject(contents)){let{addons:addonsInput=[],presets:presetsInput=[],...rest}=contents,filter=i=>!0;storybookOptions.isCritical!==!0&&(storybookOptions.build?.test?.disabledAddons?.length||0)>0&&(filter=i=>{let name=i.name?i.name:i;return !storybookOptions.build?.test?.disabledAddons?.find(n=>name.includes(n))});let subPresets=resolvePresetFunction(presetsInput,presetOptions,storybookOptions).filter(filter),subAddons=resolvePresetFunction(addonsInput,presetOptions,storybookOptions).filter(filter);return [...await loadPresets([...subPresets],level+1,storybookOptions),...await loadPresets([...subAddons.map(map(storybookOptions))].filter(Boolean),level+1,storybookOptions),{name:presetName,preset:rest,options:presetOptions}]}throw new Error(dedent`
43
43
  ${input} is not a valid preset
44
- `)}catch(error){if(storybookOptions?.isCritical)throw new CriticalPresetLoadError({error,presetName});let warning=level>0?` Failed to load preset: ${JSON.stringify(input)} on level ${level}`:` Failed to load preset: ${JSON.stringify(input)}`;return logger.warn(warning),logger.error(error),[]}}async function loadPresets(presets,level,storybookOptions){return !presets||!Array.isArray(presets)||!presets.length?[]:(await Promise.all(presets.map(async preset=>loadPreset(preset,level,storybookOptions)))).reduce((acc,loaded)=>acc.concat(loaded),[])}function applyPresets(presets,extension,config,args,storybookOptions){let presetResult=new Promise(res=>res(config));return presets.length?presets.reduce((accumulationPromise,{preset,options})=>{let change=preset[extension];if(!change)return accumulationPromise;if(typeof change=="function"){let extensionFn=change,context={preset,combinedOptions:{...storybookOptions,...args,...options,presetsList:presets,presets:{apply:async(ext,c,a={})=>applyPresets(presets,ext,c,a,storybookOptions)}}};return accumulationPromise.then(newConfig=>extensionFn.call(context.preset,newConfig,context.combinedOptions))}return accumulationPromise.then(newConfig=>Array.isArray(newConfig)&&Array.isArray(change)?[...newConfig,...change]:isObject(newConfig)&&isObject(change)?{...newConfig,...change}:change)},presetResult):presetResult}async function getPresets(presets,storybookOptions){let loadedPresets=await loadPresets(presets,0,storybookOptions);return {apply:async(extension,config,args={})=>applyPresets(loadedPresets,extension,config,args,storybookOptions)}}async function loadAllPresets(options){let{corePresets=[],overridePresets=[],...restOptions}=options,presetsConfig=[...corePresets,...loadCustomPresets(options),...overridePresets],filteredPresetConfig=filterPresetsConfig(presetsConfig);return filteredPresetConfig.length<presetsConfig.length&&logger.warn("Storybook now supports TypeScript natively. You can safely remove `@storybook/preset-typescript`."),getPresets(filteredPresetConfig,restOptions)}function createFileSystemCache(options){return Cache(options)}function resolvePathInStorybookCache(fileOrDirectoryName,sub="default"){let cacheDirectory=findCacheDirectory({name:"storybook"});return cacheDirectory||=path6.join(process.cwd(),".cache","storybook"),path6.join(cacheDirectory,sub,fileOrDirectoryName)}var cache=createFileSystemCache({basePath:resolvePathInStorybookCache("dev-server"),ns:"storybook"});function getStorybookConfiguration(storybookScript,shortName,longName){if(!storybookScript)return null;let parts=storybookScript.split(/[\s='"]+/),index=parts.indexOf(longName);return index===-1&&(index=parts.indexOf(shortName)),index===-1?null:parts[index+1]}var rendererPackages={"@storybook/react":"react","@storybook/vue3":"vue3","@storybook/angular":"angular","@storybook/html":"html","@storybook/web-components":"web-components","@storybook/polymer":"polymer","@storybook/ember":"ember","@storybook/svelte":"svelte","@storybook/preact":"preact","@storybook/server":"server","storybook-framework-qwik":"qwik","storybook-solidjs":"solid"},frameworkPackages={"@storybook/angular":"angular","@storybook/ember":"ember","@storybook/html-vite":"html-vite","@storybook/html-webpack5":"html-webpack5","@storybook/nextjs":"nextjs","@storybook/preact-vite":"preact-vite","@storybook/preact-webpack5":"preact-webpack5","@storybook/react-vite":"react-vite","@storybook/react-webpack5":"react-webpack5","@storybook/server-webpack5":"server-webpack5","@storybook/svelte-vite":"svelte-vite","@storybook/svelte-webpack5":"svelte-webpack5","@storybook/sveltekit":"sveltekit","@storybook/vue3-vite":"vue3-vite","@storybook/vue3-webpack5":"vue3-webpack5","@storybook/web-components-vite":"web-components-vite","@storybook/web-components-webpack5":"web-components-webpack5","storybook-framework-qwik":"qwik","storybook-solidjs-vite":"solid"},builderPackages=["@storybook/builder-webpack5","@storybook/builder-vite"],logger2=console,findDependency=({dependencies,devDependencies,peerDependencies},predicate)=>[Object.entries(dependencies||{}).find(predicate),Object.entries(devDependencies||{}).find(predicate),Object.entries(peerDependencies||{}).find(predicate)],getRendererInfo=packageJson=>{let[dep,devDep,peerDep]=findDependency(packageJson,([key])=>rendererPackages[key]),[pkg,version]=dep||devDep||peerDep||[];return dep&&devDep&&dep[0]===devDep[0]&&logger2.warn(`Found "${dep[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),dep&&peerDep&&dep[0]===peerDep[0]&&logger2.warn(`Found "${dep[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{version,frameworkPackage:pkg}},validConfigExtensions=["ts","js","tsx","jsx","mjs","cjs"],findConfigFile=(prefix,configDir)=>{let filePrefix=path6.join(configDir,prefix),extension=validConfigExtensions.find(ext=>fse.existsSync(`${filePrefix}.${ext}`));return extension?`${filePrefix}.${extension}`:null},getConfigInfo=(packageJson,configDir)=>{let storybookConfigDir=configDir??".storybook",storybookScript=packageJson.scripts?.storybook;if(storybookScript&&!configDir){let configParam=getStorybookConfiguration(storybookScript,"-c","--config-dir");configParam&&(storybookConfigDir=configParam);}return {configDir:storybookConfigDir,mainConfig:findConfigFile("main",storybookConfigDir),previewConfig:findConfigFile("preview",storybookConfigDir),managerConfig:findConfigFile("manager",storybookConfigDir)}},getStorybookInfo=(packageJson,configDir)=>{let rendererInfo=getRendererInfo(packageJson),configInfo=getConfigInfo(packageJson,configDir);return {...rendererInfo,...configInfo}};var versions_default={"@storybook/addon-a11y":"8.0.0-beta.1","@storybook/addon-actions":"8.0.0-beta.1","@storybook/addon-backgrounds":"8.0.0-beta.1","@storybook/addon-controls":"8.0.0-beta.1","@storybook/addon-docs":"8.0.0-beta.1","@storybook/addon-essentials":"8.0.0-beta.1","@storybook/addon-highlight":"8.0.0-beta.1","@storybook/addon-interactions":"8.0.0-beta.1","@storybook/addon-jest":"8.0.0-beta.1","@storybook/addon-links":"8.0.0-beta.1","@storybook/addon-mdx-gfm":"8.0.0-beta.1","@storybook/addon-measure":"8.0.0-beta.1","@storybook/addon-outline":"8.0.0-beta.1","@storybook/addon-storysource":"8.0.0-beta.1","@storybook/addon-themes":"8.0.0-beta.1","@storybook/addon-toolbars":"8.0.0-beta.1","@storybook/addon-viewport":"8.0.0-beta.1","@storybook/angular":"8.0.0-beta.1","@storybook/blocks":"8.0.0-beta.1","@storybook/builder-manager":"8.0.0-beta.1","@storybook/builder-vite":"8.0.0-beta.1","@storybook/builder-webpack5":"8.0.0-beta.1","@storybook/channels":"8.0.0-beta.1","@storybook/cli":"8.0.0-beta.1","@storybook/client-logger":"8.0.0-beta.1","@storybook/codemod":"8.0.0-beta.1","@storybook/components":"8.0.0-beta.1","@storybook/core-common":"8.0.0-beta.1","@storybook/core-events":"8.0.0-beta.1","@storybook/core-server":"8.0.0-beta.1","@storybook/core-webpack":"8.0.0-beta.1","@storybook/csf-plugin":"8.0.0-beta.1","@storybook/csf-tools":"8.0.0-beta.1","@storybook/docs-tools":"8.0.0-beta.1","@storybook/ember":"8.0.0-beta.1","@storybook/html":"8.0.0-beta.1","@storybook/html-vite":"8.0.0-beta.1","@storybook/html-webpack5":"8.0.0-beta.1","@storybook/instrumenter":"8.0.0-beta.1","@storybook/manager":"8.0.0-beta.1","@storybook/manager-api":"8.0.0-beta.1","@storybook/nextjs":"8.0.0-beta.1","@storybook/node-logger":"8.0.0-beta.1","@storybook/preact":"8.0.0-beta.1","@storybook/preact-vite":"8.0.0-beta.1","@storybook/preact-webpack5":"8.0.0-beta.1","@storybook/preset-create-react-app":"8.0.0-beta.1","@storybook/preset-html-webpack":"8.0.0-beta.1","@storybook/preset-preact-webpack":"8.0.0-beta.1","@storybook/preset-react-webpack":"8.0.0-beta.1","@storybook/preset-server-webpack":"8.0.0-beta.1","@storybook/preset-svelte-webpack":"8.0.0-beta.1","@storybook/preset-vue3-webpack":"8.0.0-beta.1","@storybook/preview":"8.0.0-beta.1","@storybook/preview-api":"8.0.0-beta.1","@storybook/react":"8.0.0-beta.1","@storybook/react-dom-shim":"8.0.0-beta.1","@storybook/react-vite":"8.0.0-beta.1","@storybook/react-webpack5":"8.0.0-beta.1","@storybook/router":"8.0.0-beta.1","@storybook/server":"8.0.0-beta.1","@storybook/server-webpack5":"8.0.0-beta.1","@storybook/source-loader":"8.0.0-beta.1","@storybook/svelte":"8.0.0-beta.1","@storybook/svelte-vite":"8.0.0-beta.1","@storybook/svelte-webpack5":"8.0.0-beta.1","@storybook/sveltekit":"8.0.0-beta.1","@storybook/telemetry":"8.0.0-beta.1","@storybook/test":"8.0.0-beta.1","@storybook/theming":"8.0.0-beta.1","@storybook/types":"8.0.0-beta.1","@storybook/vue3":"8.0.0-beta.1","@storybook/vue3-vite":"8.0.0-beta.1","@storybook/vue3-webpack5":"8.0.0-beta.1","@storybook/web-components":"8.0.0-beta.1","@storybook/web-components-vite":"8.0.0-beta.1","@storybook/web-components-webpack5":"8.0.0-beta.1",sb:"8.0.0-beta.1",storybook:"8.0.0-beta.1"};function parseList(str){return str.split(",").map(item=>item.trim()).filter(item=>item.length>0)}async function getCoercedStorybookVersion(packageManager){return (await Promise.all(Object.keys(rendererPackages).map(async pkg=>({name:pkg,version:await packageManager.getPackageVersion(pkg)})))).filter(({version})=>!!version)[0]?.version}function getEnvConfig(program,configEnv){Object.keys(configEnv).forEach(fieldName=>{let envVarName=configEnv[fieldName],envVarValue=process.env[envVarName];envVarValue&&(program[fieldName]=envVarValue);});}var createLogStream=async(logFileName="storybook.log")=>{let finalLogPath=join(process.cwd(),logFileName),temporaryLogPath=tempy.file({name:logFileName}),logStream=createWriteStream(temporaryLogPath,{encoding:"utf8"});return new Promise((resolve,reject)=>{logStream.once("open",()=>{resolve({logStream,moveLogFile:async()=>move(temporaryLogPath,finalLogPath,{overwrite:!0}),clearLogFile:async()=>writeFile(temporaryLogPath,""),removeLogFile:async()=>remove(temporaryLogPath),readLogFile:async()=>readFile(temporaryLogPath,"utf8")});}),logStream.once("error",reject);})},isCorePackage=pkg=>Object.keys(versions_default).includes(pkg);var predicateFor=addon=>entry=>{let name=entry.name||entry;return name&&name.includes(addon)},isCorrectOrder=(addons,before,after)=>{let essentialsIndex=addons.findIndex(predicateFor("@storybook/addon-essentials")),beforeIndex=addons.findIndex(predicateFor(before.name)),afterIndex=addons.findIndex(predicateFor(after.name));return beforeIndex===-1&&before.inEssentials&&(beforeIndex=essentialsIndex),afterIndex===-1&&after.inEssentials&&(afterIndex=essentialsIndex),beforeIndex!==-1&&afterIndex!==-1&&beforeIndex<=afterIndex},checkAddonOrder=async({before,after,configFile,getConfig})=>{try{let config=await getConfig(configFile);if(!config?.addons){logger.warn("Unable to find 'addons' config in main Storybook config");return}if(!isCorrectOrder(config.addons,before,after)){let orEssentials=" (or '@storybook/addon-essentials')",beforeText=`'${before.name}'${before.inEssentials?orEssentials:""}`,afterText=`'${after.name}'${after.inEssentials?orEssentials:""}`;logger.warn(`Expected ${beforeText} to be listed before ${afterText} in main Storybook config.`);}}catch{logger.warn(`Unable to load config file: ${configFile}`);}};var getProjectRoot=()=>{let result;if(process.env.STORYBOOK_PROJECT_ROOT)return process.env.STORYBOOK_PROJECT_ROOT;try{let found=findUp.sync(".git",{type:"directory"});found&&(result=path6.join(found,".."));}catch{}try{let found=findUp.sync(".svn",{type:"directory"});found&&(result=result||path6.join(found,".."));}catch{}try{let found=findUp.sync(".hg",{type:"directory"});found&&(result=result||path6.join(found,".."));}catch{}try{let found=findUp.sync(".yarn",{type:"directory"});found&&(result=result||path6.join(found,".."));}catch{}try{result=result||__dirname.split("node_modules")[0];}catch{}return result||process.cwd()},nodePathsToArray=nodePath=>nodePath.split(process.platform==="win32"?";":":").filter(Boolean).map(p=>path6.resolve("./",p)),relativePattern=/^\.{1,2}([/\\]|$)/;function normalizeStoryPath(filename){return relativePattern.test(filename)?filename:`.${path6.sep}${filename}`}function loadEnvs(options={}){let defaultNodeEnv=options.production?"production":"development",env={NODE_ENV:process.env.NODE_ENV||defaultNodeEnv,NODE_PATH:process.env.NODE_PATH||"",STORYBOOK:process.env.STORYBOOK||"true",PUBLIC_URL:options.production?".":""};Object.keys(process.env).filter(name=>/^STORYBOOK_/.test(name)).forEach(name=>{env[name]=process.env[name];});let base=Object.entries(env).reduce((acc,[k,v])=>Object.assign(acc,{[k]:JSON.stringify(v)}),{}),{stringified,raw}=getEnvironment({nodeEnv:env.NODE_ENV}),fullRaw={...env,...raw};return fullRaw.NODE_PATH=nodePathsToArray(fullRaw.NODE_PATH||""),{stringified:{...base,...stringified},raw:fullRaw}}var stringifyEnvs=raw=>Object.entries(raw).reduce((acc,[key,value])=>(acc[key]=JSON.stringify(value),acc),{}),stringifyProcessEnvs=raw=>Object.entries(raw).reduce((acc,[key,value])=>(acc[`process.env.${key}`]=JSON.stringify(value),acc),{});var NODE_MODULES_RE=/node_modules/,commonGlobOptions=glob2=>NODE_MODULES_RE.test(glob2)?{}:{ignore:["**/node_modules/**"]};async function getBuilderOptions(options){let framework=await options.presets.apply("framework",{},options);if(typeof framework!="string"&&framework?.options?.builder)return framework.options.builder;let{builder}=await options.presets.apply("core",{},options);return typeof builder!="string"&&builder?.options?builder.options:{}}async function getFrameworkName(options){let framework=await options.presets.apply("framework","",options);if(!framework)throw new Error(dedent`
44
+ `)}catch(error){if(storybookOptions?.isCritical)throw new CriticalPresetLoadError({error,presetName});let warning=level>0?` Failed to load preset: ${JSON.stringify(input)} on level ${level}`:` Failed to load preset: ${JSON.stringify(input)}`;return logger.warn(warning),logger.error(error),[]}}async function loadPresets(presets,level,storybookOptions){return !presets||!Array.isArray(presets)||!presets.length?[]:(await Promise.all(presets.map(async preset=>loadPreset(preset,level,storybookOptions)))).reduce((acc,loaded)=>acc.concat(loaded),[])}function applyPresets(presets,extension,config,args,storybookOptions){let presetResult=new Promise(res=>res(config));return presets.length?presets.reduce((accumulationPromise,{preset,options})=>{let change=preset[extension];if(!change)return accumulationPromise;if(typeof change=="function"){let extensionFn=change,context={preset,combinedOptions:{...storybookOptions,...args,...options,presetsList:presets,presets:{apply:async(ext,c,a={})=>applyPresets(presets,ext,c,a,storybookOptions)}}};return accumulationPromise.then(newConfig=>extensionFn.call(context.preset,newConfig,context.combinedOptions))}return accumulationPromise.then(newConfig=>Array.isArray(newConfig)&&Array.isArray(change)?[...newConfig,...change]:isObject(newConfig)&&isObject(change)?{...newConfig,...change}:change)},presetResult):presetResult}async function getPresets(presets,storybookOptions){let loadedPresets=await loadPresets(presets,0,storybookOptions);return {apply:async(extension,config,args={})=>applyPresets(loadedPresets,extension,config,args,storybookOptions)}}async function loadAllPresets(options){let{corePresets=[],overridePresets=[],...restOptions}=options,presetsConfig=[...corePresets,...loadCustomPresets(options),...overridePresets],filteredPresetConfig=filterPresetsConfig(presetsConfig);return filteredPresetConfig.length<presetsConfig.length&&logger.warn("Storybook now supports TypeScript natively. You can safely remove `@storybook/preset-typescript`."),getPresets(filteredPresetConfig,restOptions)}function createFileSystemCache(options){return Cache(options)}function resolvePathInStorybookCache(fileOrDirectoryName,sub="default"){let cacheDirectory=findCacheDirectory({name:"storybook"});return cacheDirectory||=path6.join(process.cwd(),".cache","storybook"),path6.join(cacheDirectory,sub,fileOrDirectoryName)}var cache=createFileSystemCache({basePath:resolvePathInStorybookCache("dev-server"),ns:"storybook"});function getStorybookConfiguration(storybookScript,shortName,longName){if(!storybookScript)return null;let parts=storybookScript.split(/[\s='"]+/),index=parts.indexOf(longName);return index===-1&&(index=parts.indexOf(shortName)),index===-1?null:parts[index+1]}var rendererPackages={"@storybook/react":"react","@storybook/vue3":"vue3","@storybook/angular":"angular","@storybook/html":"html","@storybook/web-components":"web-components","@storybook/polymer":"polymer","@storybook/ember":"ember","@storybook/svelte":"svelte","@storybook/preact":"preact","@storybook/server":"server","storybook-framework-qwik":"qwik","storybook-solidjs":"solid","@storybook/vue":"vue"},frameworkPackages={"@storybook/angular":"angular","@storybook/ember":"ember","@storybook/html-vite":"html-vite","@storybook/html-webpack5":"html-webpack5","@storybook/nextjs":"nextjs","@storybook/preact-vite":"preact-vite","@storybook/preact-webpack5":"preact-webpack5","@storybook/react-vite":"react-vite","@storybook/react-webpack5":"react-webpack5","@storybook/server-webpack5":"server-webpack5","@storybook/svelte-vite":"svelte-vite","@storybook/svelte-webpack5":"svelte-webpack5","@storybook/sveltekit":"sveltekit","@storybook/vue3-vite":"vue3-vite","@storybook/vue3-webpack5":"vue3-webpack5","@storybook/web-components-vite":"web-components-vite","@storybook/web-components-webpack5":"web-components-webpack5","storybook-framework-qwik":"qwik","storybook-solidjs-vite":"solid"},builderPackages=["@storybook/builder-webpack5","@storybook/builder-vite"],logger2=console,findDependency=({dependencies,devDependencies,peerDependencies},predicate)=>[Object.entries(dependencies||{}).find(predicate),Object.entries(devDependencies||{}).find(predicate),Object.entries(peerDependencies||{}).find(predicate)],getRendererInfo=packageJson=>{let[dep,devDep,peerDep]=findDependency(packageJson,([key])=>rendererPackages[key]),[pkg,version]=dep||devDep||peerDep||[];return dep&&devDep&&dep[0]===devDep[0]&&logger2.warn(`Found "${dep[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),dep&&peerDep&&dep[0]===peerDep[0]&&logger2.warn(`Found "${dep[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{version,frameworkPackage:pkg}},validConfigExtensions=["ts","js","tsx","jsx","mjs","cjs"],findConfigFile=(prefix,configDir)=>{let filePrefix=path6.join(configDir,prefix),extension=validConfigExtensions.find(ext=>fse.existsSync(`${filePrefix}.${ext}`));return extension?`${filePrefix}.${extension}`:null},getConfigInfo=(packageJson,configDir)=>{let storybookConfigDir=configDir??".storybook",storybookScript=packageJson.scripts?.storybook;if(storybookScript&&!configDir){let configParam=getStorybookConfiguration(storybookScript,"-c","--config-dir");configParam&&(storybookConfigDir=configParam);}return {configDir:storybookConfigDir,mainConfig:findConfigFile("main",storybookConfigDir),previewConfig:findConfigFile("preview",storybookConfigDir),managerConfig:findConfigFile("manager",storybookConfigDir)}},getStorybookInfo=(packageJson,configDir)=>{let rendererInfo=getRendererInfo(packageJson),configInfo=getConfigInfo(packageJson,configDir);return {...rendererInfo,...configInfo}};var versions_default={"@storybook/addon-a11y":"8.0.0-beta.3","@storybook/addon-actions":"8.0.0-beta.3","@storybook/addon-backgrounds":"8.0.0-beta.3","@storybook/addon-controls":"8.0.0-beta.3","@storybook/addon-docs":"8.0.0-beta.3","@storybook/addon-essentials":"8.0.0-beta.3","@storybook/addon-highlight":"8.0.0-beta.3","@storybook/addon-interactions":"8.0.0-beta.3","@storybook/addon-jest":"8.0.0-beta.3","@storybook/addon-links":"8.0.0-beta.3","@storybook/addon-mdx-gfm":"8.0.0-beta.3","@storybook/addon-measure":"8.0.0-beta.3","@storybook/addon-outline":"8.0.0-beta.3","@storybook/addon-storysource":"8.0.0-beta.3","@storybook/addon-themes":"8.0.0-beta.3","@storybook/addon-toolbars":"8.0.0-beta.3","@storybook/addon-viewport":"8.0.0-beta.3","@storybook/angular":"8.0.0-beta.3","@storybook/blocks":"8.0.0-beta.3","@storybook/builder-manager":"8.0.0-beta.3","@storybook/builder-vite":"8.0.0-beta.3","@storybook/builder-webpack5":"8.0.0-beta.3","@storybook/channels":"8.0.0-beta.3","@storybook/cli":"8.0.0-beta.3","@storybook/client-logger":"8.0.0-beta.3","@storybook/codemod":"8.0.0-beta.3","@storybook/components":"8.0.0-beta.3","@storybook/core-common":"8.0.0-beta.3","@storybook/core-events":"8.0.0-beta.3","@storybook/core-server":"8.0.0-beta.3","@storybook/core-webpack":"8.0.0-beta.3","@storybook/csf-plugin":"8.0.0-beta.3","@storybook/csf-tools":"8.0.0-beta.3","@storybook/docs-tools":"8.0.0-beta.3","@storybook/ember":"8.0.0-beta.3","@storybook/html":"8.0.0-beta.3","@storybook/html-vite":"8.0.0-beta.3","@storybook/html-webpack5":"8.0.0-beta.3","@storybook/instrumenter":"8.0.0-beta.3","@storybook/manager":"8.0.0-beta.3","@storybook/manager-api":"8.0.0-beta.3","@storybook/nextjs":"8.0.0-beta.3","@storybook/node-logger":"8.0.0-beta.3","@storybook/preact":"8.0.0-beta.3","@storybook/preact-vite":"8.0.0-beta.3","@storybook/preact-webpack5":"8.0.0-beta.3","@storybook/preset-create-react-app":"8.0.0-beta.3","@storybook/preset-html-webpack":"8.0.0-beta.3","@storybook/preset-preact-webpack":"8.0.0-beta.3","@storybook/preset-react-webpack":"8.0.0-beta.3","@storybook/preset-server-webpack":"8.0.0-beta.3","@storybook/preset-svelte-webpack":"8.0.0-beta.3","@storybook/preset-vue3-webpack":"8.0.0-beta.3","@storybook/preview":"8.0.0-beta.3","@storybook/preview-api":"8.0.0-beta.3","@storybook/react":"8.0.0-beta.3","@storybook/react-dom-shim":"8.0.0-beta.3","@storybook/react-vite":"8.0.0-beta.3","@storybook/react-webpack5":"8.0.0-beta.3","@storybook/router":"8.0.0-beta.3","@storybook/server":"8.0.0-beta.3","@storybook/server-webpack5":"8.0.0-beta.3","@storybook/source-loader":"8.0.0-beta.3","@storybook/svelte":"8.0.0-beta.3","@storybook/svelte-vite":"8.0.0-beta.3","@storybook/svelte-webpack5":"8.0.0-beta.3","@storybook/sveltekit":"8.0.0-beta.3","@storybook/telemetry":"8.0.0-beta.3","@storybook/test":"8.0.0-beta.3","@storybook/theming":"8.0.0-beta.3","@storybook/types":"8.0.0-beta.3","@storybook/vue3":"8.0.0-beta.3","@storybook/vue3-vite":"8.0.0-beta.3","@storybook/vue3-webpack5":"8.0.0-beta.3","@storybook/web-components":"8.0.0-beta.3","@storybook/web-components-vite":"8.0.0-beta.3","@storybook/web-components-webpack5":"8.0.0-beta.3",sb:"8.0.0-beta.3",storybook:"8.0.0-beta.3"};function parseList(str){return str.split(",").map(item=>item.trim()).filter(item=>item.length>0)}async function getCoercedStorybookVersion(packageManager){return (await Promise.all(Object.keys(rendererPackages).map(async pkg=>({name:pkg,version:await packageManager.getPackageVersion(pkg)})))).filter(({version})=>!!version)[0]?.version}function getEnvConfig(program,configEnv){Object.keys(configEnv).forEach(fieldName=>{let envVarName=configEnv[fieldName],envVarValue=process.env[envVarName];envVarValue&&(program[fieldName]=envVarValue);});}var createLogStream=async(logFileName="storybook.log")=>{let finalLogPath=join(process.cwd(),logFileName),temporaryLogPath=tempy.file({name:logFileName}),logStream=createWriteStream(temporaryLogPath,{encoding:"utf8"});return new Promise((resolve,reject)=>{logStream.once("open",()=>{resolve({logStream,moveLogFile:async()=>move(temporaryLogPath,finalLogPath,{overwrite:!0}),clearLogFile:async()=>writeFile(temporaryLogPath,""),removeLogFile:async()=>remove(temporaryLogPath),readLogFile:async()=>readFile(temporaryLogPath,"utf8")});}),logStream.once("error",reject);})},isCorePackage=pkg=>Object.keys(versions_default).includes(pkg);var predicateFor=addon=>entry=>{let name=entry.name||entry;return name&&name.includes(addon)},isCorrectOrder=(addons,before,after)=>{let essentialsIndex=addons.findIndex(predicateFor("@storybook/addon-essentials")),beforeIndex=addons.findIndex(predicateFor(before.name)),afterIndex=addons.findIndex(predicateFor(after.name));return beforeIndex===-1&&before.inEssentials&&(beforeIndex=essentialsIndex),afterIndex===-1&&after.inEssentials&&(afterIndex=essentialsIndex),beforeIndex!==-1&&afterIndex!==-1&&beforeIndex<=afterIndex},checkAddonOrder=async({before,after,configFile,getConfig})=>{try{let config=await getConfig(configFile);if(!config?.addons){logger.warn("Unable to find 'addons' config in main Storybook config");return}if(!isCorrectOrder(config.addons,before,after)){let orEssentials=" (or '@storybook/addon-essentials')",beforeText=`'${before.name}'${before.inEssentials?orEssentials:""}`,afterText=`'${after.name}'${after.inEssentials?orEssentials:""}`;logger.warn(`Expected ${beforeText} to be listed before ${afterText} in main Storybook config.`);}}catch{logger.warn(`Unable to load config file: ${configFile}`);}};var getProjectRoot=()=>{let result;if(process.env.STORYBOOK_PROJECT_ROOT)return process.env.STORYBOOK_PROJECT_ROOT;try{let found=findUp.sync(".git",{type:"directory"});found&&(result=path6.join(found,".."));}catch{}try{let found=findUp.sync(".svn",{type:"directory"});found&&(result=result||path6.join(found,".."));}catch{}try{let found=findUp.sync(".hg",{type:"directory"});found&&(result=result||path6.join(found,".."));}catch{}try{let found=findUp.sync(".yarn",{type:"directory"});found&&(result=result||path6.join(found,".."));}catch{}try{result=result||__dirname.split("node_modules")[0];}catch{}return result||process.cwd()},nodePathsToArray=nodePath=>nodePath.split(process.platform==="win32"?";":":").filter(Boolean).map(p=>path6.resolve("./",p)),relativePattern=/^\.{1,2}([/\\]|$)/;function normalizeStoryPath(filename){return relativePattern.test(filename)?filename:`.${path6.sep}${filename}`}function loadEnvs(options={}){let defaultNodeEnv=options.production?"production":"development",env={NODE_ENV:process.env.NODE_ENV||defaultNodeEnv,NODE_PATH:process.env.NODE_PATH||"",STORYBOOK:process.env.STORYBOOK||"true",PUBLIC_URL:options.production?".":""};Object.keys(process.env).filter(name=>/^STORYBOOK_/.test(name)).forEach(name=>{env[name]=process.env[name];});let base=Object.entries(env).reduce((acc,[k,v])=>Object.assign(acc,{[k]:JSON.stringify(v)}),{}),{stringified,raw}=getEnvironment({nodeEnv:env.NODE_ENV}),fullRaw={...env,...raw};return fullRaw.NODE_PATH=nodePathsToArray(fullRaw.NODE_PATH||""),{stringified:{...base,...stringified},raw:fullRaw}}var stringifyEnvs=raw=>Object.entries(raw).reduce((acc,[key,value])=>(acc[key]=JSON.stringify(value),acc),{}),stringifyProcessEnvs=raw=>Object.entries(raw).reduce((acc,[key,value])=>(acc[`process.env.${key}`]=JSON.stringify(value),acc),{});var NODE_MODULES_RE=/node_modules/,commonGlobOptions=glob2=>NODE_MODULES_RE.test(glob2)?{}:{ignore:["**/node_modules/**"]};async function getBuilderOptions(options){let framework=await options.presets.apply("framework",{},options);if(typeof framework!="string"&&framework?.options?.builder)return framework.options.builder;let{builder}=await options.presets.apply("core",{},options);return typeof builder!="string"&&builder?.options?builder.options:{}}async function getFrameworkName(options){let framework=await options.presets.apply("framework","",options);if(!framework)throw new Error(dedent`
45
45
  You must specify a framework in '.storybook/main.js' config.
46
46
 
47
47
  https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-field-mandatory
@@ -56,7 +56,7 @@ ${item}`);return}if(!resolved){logger.warn(`Could not resolve addon "${name}", s
56
56
  `);});function paddedLog(message){let newMessage=message.split(`
57
57
  `).map(line=>` ${line}`).join(`
58
58
  `);logger6.log(newMessage);}function getChars(char,amount){let line="";for(let lc=0;lc<amount;lc+=1)line+=char;return line}function codeLog(codeLines,leftPadAmount){let maxLength=0,finalResult=codeLines.map(line=>(maxLength=line.length>maxLength?line.length:maxLength,line)).map(line=>{let rightPadAmount=maxLength-line.length,newLine=line+getChars(" ",rightPadAmount);return newLine=getChars(" ",leftPadAmount||2)+chalk.inverse(` ${newLine} `),newLine}).join(`
59
- `);logger6.log(finalResult);}function logConfig(caption,config){console.log(chalk.cyan(caption)),console.dir(config,{depth:null});}var DEFAULT_TITLE_PREFIX="",DEFAULT_FILES_PATTERN="**/*.@(mdx|stories.@(js|jsx|mjs|ts|tsx))",isDirectory=(configDir,entry)=>{try{return fs5.lstatSync(path6.resolve(configDir,entry)).isDirectory()}catch{return !1}},getDirectoryFromWorkingDir=({configDir,workingDir,directory})=>{let directoryFromConfig=path6.resolve(configDir,directory),directoryFromWorking=path6.relative(workingDir,directoryFromConfig);return normalizeStoryPath(directoryFromWorking)},normalizeStoriesEntry=(entry,{configDir,workingDir,defaultFilesPattern=DEFAULT_FILES_PATTERN})=>{let specifierWithoutMatcher;if(typeof entry=="string"){let globResult=pico.scan(entry);if(globResult.isGlob){let directory2=globResult.prefix+globResult.base,files2=globResult.glob;specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:directory2,files:files2};}else isDirectory(configDir,entry)?specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:entry,files:defaultFilesPattern}:specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:path6.dirname(entry),files:path6.basename(entry)};}else specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,files:defaultFilesPattern,...entry};let files=slash(specifierWithoutMatcher.files),{directory:directoryRelativeToConfig}=specifierWithoutMatcher,directory=slash(getDirectoryFromWorkingDir({configDir,workingDir,directory:directoryRelativeToConfig})).replace(/\/$/,""),importPathMatcher=globToRegexp(`${directory}/${files}`);return {...specifierWithoutMatcher,directory,importPathMatcher}},normalizeStories=(entries,options)=>{if(!entries||Array.isArray(entries)&&entries.length===0)throw new InvalidStoriesEntryError;return entries.map(entry=>normalizeStoriesEntry(entry,options))};async function readTemplate(filename){return fse.readFile(filename,{encoding:"utf8"})}var logger7=console;function getPackageDetails(pkg){let idx=pkg.lastIndexOf("@");if(idx<=0)return [pkg,void 0];let packageName=pkg.slice(0,idx),packageVersion=pkg.slice(idx+1);return [packageName,packageVersion]}var JsPackageManager=class{async getPackageVersion(packageName,basePath=this.cwd){let packageJSON=await this.getPackageJSON(packageName,basePath);return packageJSON?packageJSON.version??null:null}async setRegistryURL(url){url?await this.executeCommand({command:"npm",args:["config","set","registry",url]}):await this.executeCommand({command:"npm",args:["config","delete","registry"]});}async getRegistryURL(){let url=(await this.executeCommand({command:"npm",args:["config","get","registry"]})).trim();return url==="undefined"?void 0:url}constructor(options){this.cwd=options?.cwd||process.cwd();}isStorybookInMonorepo(){let cwd=process.cwd();for(;;){try{let turboJsonPath=`${cwd}/turbo.json`,rushJsonPath=`${cwd}/rush.json`;if(fs5__default.existsSync(turboJsonPath)||fs5__default.existsSync(rushJsonPath))return !0;let packageJsonPath=__require.resolve(`${cwd}/package.json`),packageJsonFile=readFileSync(packageJsonPath,"utf8");if(JSON.parse(packageJsonFile).workspaces)return !0}catch{}let parentDir=path6.dirname(cwd);if(parentDir===cwd)break;cwd=parentDir;}return !1}async installDependencies(){let done=commandLog("Preparing to install dependencies");done(),logger7.log(),logger7.log(),done=commandLog("Installing dependencies"),logger7.log();try{await this.runInstall(),done();}catch(e){throw done("An error occurred while installing dependencies."),new HandledError(e)}}packageJsonPath(){if(!this.cwd)throw new Error("Missing cwd");return path6.resolve(this.cwd,"package.json")}async readPackageJson(){let packageJsonPath=this.packageJsonPath();if(!fs5__default.existsSync(packageJsonPath))throw new Error(`Could not read package.json file at ${packageJsonPath}`);let jsonContent=await readFile(packageJsonPath,"utf8");return JSON.parse(jsonContent)}async writePackageJson(packageJson){let packageJsonToWrite={...packageJson};packageJsonToWrite.dependencies&&Object.keys(packageJsonToWrite.dependencies).length===0&&delete packageJsonToWrite.dependencies,packageJsonToWrite.devDependencies&&Object.keys(packageJsonToWrite.devDependencies).length===0&&delete packageJsonToWrite.devDependencies,packageJsonToWrite.peerDependencies&&Object.keys(packageJsonToWrite.peerDependencies).length===0&&delete packageJsonToWrite.peerDependencies;let content=`${JSON.stringify(packageJsonToWrite,null,2)}
59
+ `);logger6.log(finalResult);}function logConfig(caption,config){console.log(chalk.cyan(caption)),console.dir(config,{depth:null});}var DEFAULT_TITLE_PREFIX="",DEFAULT_FILES_PATTERN="**/*.@(mdx|stories.@(js|jsx|mjs|ts|tsx))",isDirectory=(configDir,entry)=>{try{return fs5.lstatSync(path6.resolve(configDir,entry)).isDirectory()}catch{return !1}},getDirectoryFromWorkingDir=({configDir,workingDir,directory})=>{let directoryFromConfig=path6.resolve(configDir,directory),directoryFromWorking=path6.relative(workingDir,directoryFromConfig);return normalizeStoryPath(directoryFromWorking)},normalizeStoriesEntry=(entry,{configDir,workingDir,defaultFilesPattern=DEFAULT_FILES_PATTERN})=>{let specifierWithoutMatcher;if(typeof entry=="string"){let globResult=pico.scan(entry);if(globResult.isGlob){let directory2=globResult.prefix+globResult.base,files2=globResult.glob;specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:directory2,files:files2};}else isDirectory(configDir,entry)?specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:entry,files:defaultFilesPattern}:specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:path6.dirname(entry),files:path6.basename(entry)};}else specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,files:defaultFilesPattern,...entry};let files=slash(specifierWithoutMatcher.files),{directory:directoryRelativeToConfig}=specifierWithoutMatcher,directory=slash(getDirectoryFromWorkingDir({configDir,workingDir,directory:directoryRelativeToConfig})).replace(/\/$/,""),importPathMatcher=globToRegexp(`${directory}/${files}`);return {...specifierWithoutMatcher,directory,importPathMatcher}},normalizeStories=(entries,options)=>{if(!entries||Array.isArray(entries)&&entries.length===0)throw new InvalidStoriesEntryError;return entries.map(entry=>normalizeStoriesEntry(entry,options))};async function readTemplate(filename){return fse.readFile(filename,{encoding:"utf8"})}var logger7=console;function getPackageDetails(pkg){let idx=pkg.lastIndexOf("@");if(idx<=0)return [pkg,void 0];let packageName=pkg.slice(0,idx),packageVersion=pkg.slice(idx+1);return [packageName,packageVersion]}var JsPackageManager=class{async getPackageVersion(packageName,basePath=this.cwd){let packageJSON=await this.getPackageJSON(packageName,basePath);return packageJSON?packageJSON.version??null:null}async setRegistryURL(url){url?await this.executeCommand({command:"npm",args:["config","set","registry",url]}):await this.executeCommand({command:"npm",args:["config","delete","registry"]});}async getRegistryURL(){let url=(await this.executeCommand({command:"npm",args:["config","get","registry"]})).trim();return url==="undefined"?void 0:url}constructor(options){this.cwd=options?.cwd||process.cwd();}isStorybookInMonorepo(){let cwd=process.cwd();for(;;){try{let turboJsonPath=`${cwd}/turbo.json`,rushJsonPath=`${cwd}/rush.json`;if(fs5__default.existsSync(turboJsonPath)||fs5__default.existsSync(rushJsonPath))return !0;let packageJsonPath=__require.resolve(`${cwd}/package.json`),packageJsonFile=readFileSync(packageJsonPath,"utf8");if(JSON.parse(packageJsonFile).workspaces)return !0}catch{}let parentDir=path6.dirname(cwd);if(parentDir===cwd)break;cwd=parentDir;}return !1}async installDependencies(){logger7.log("Installing dependencies..."),logger7.log();try{await this.runInstall();}catch(e){throw logger7.error("An error occurred while installing dependencies."),new HandledError(e)}}packageJsonPath(){if(!this.cwd)throw new Error("Missing cwd");return path6.resolve(this.cwd,"package.json")}async readPackageJson(){let packageJsonPath=this.packageJsonPath();if(!fs5__default.existsSync(packageJsonPath))throw new Error(`Could not read package.json file at ${packageJsonPath}`);let jsonContent=await readFile(packageJsonPath,"utf8");return JSON.parse(jsonContent)}async writePackageJson(packageJson){let packageJsonToWrite={...packageJson};packageJsonToWrite.dependencies&&Object.keys(packageJsonToWrite.dependencies).length===0&&delete packageJsonToWrite.dependencies,packageJsonToWrite.devDependencies&&Object.keys(packageJsonToWrite.devDependencies).length===0&&delete packageJsonToWrite.devDependencies,packageJsonToWrite.peerDependencies&&Object.keys(packageJsonToWrite.peerDependencies).length===0&&delete packageJsonToWrite.peerDependencies;let content=`${JSON.stringify(packageJsonToWrite,null,2)}
60
60
  `;await writeFile(this.packageJsonPath(),content,"utf8");}async retrievePackageJson(){let packageJson;try{packageJson=await this.readPackageJson();}catch(err){let errMessage=String(err);if(errMessage.includes("Could not read package.json"))await this.initPackageJson(),packageJson=await this.readPackageJson();else throw new Error(dedent6`
61
61
  There was an error while reading the package.json file at ${this.packageJsonPath()}: ${errMessage}
62
62
  Please fix the error and try again.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/core-common",
3
- "version": "8.0.0-beta.1",
3
+ "version": "8.0.0-beta.3",
4
4
  "description": "Storybook framework-agnostic API",
5
5
  "keywords": [
6
6
  "storybook"
@@ -44,14 +44,10 @@
44
44
  "prep": "node --loader ../../../scripts/node_modules/esbuild-register/loader.js -r ../../../scripts/node_modules/esbuild-register/register.js ../../../scripts/prepare/bundle.ts"
45
45
  },
46
46
  "dependencies": {
47
- "@storybook/core-events": "8.0.0-beta.1",
48
- "@storybook/csf-tools": "8.0.0-beta.1",
49
- "@storybook/node-logger": "8.0.0-beta.1",
50
- "@storybook/types": "8.0.0-beta.1",
51
- "@types/find-cache-dir": "^3.2.1",
52
- "@types/node": "^18.0.0",
53
- "@types/node-fetch": "^2.6.4",
54
- "@types/pretty-hrtime": "^1.0.0",
47
+ "@storybook/core-events": "8.0.0-beta.3",
48
+ "@storybook/csf-tools": "8.0.0-beta.3",
49
+ "@storybook/node-logger": "8.0.0-beta.3",
50
+ "@storybook/types": "8.0.0-beta.3",
55
51
  "@yarnpkg/fslib": "2.10.3",
56
52
  "@yarnpkg/libzip": "2.3.0",
57
53
  "chalk": "^4.1.0",
@@ -78,9 +74,13 @@
78
74
  "util": "^0.12.4"
79
75
  },
80
76
  "devDependencies": {
77
+ "@types/find-cache-dir": "^3.2.1",
81
78
  "@types/fs-extra": "^11.0.1",
82
79
  "@types/mock-fs": "^4.13.1",
80
+ "@types/node": "^18.0.0",
81
+ "@types/node-fetch": "^2.6.4",
83
82
  "@types/picomatch": "^2.3.0",
83
+ "@types/pretty-hrtime": "^1.0.0",
84
84
  "mock-fs": "^5.2.0",
85
85
  "slash": "^5.0.0",
86
86
  "type-fest": "~2.19",