@storybook/core-common 7.0.0-beta.4 → 7.0.0-beta.41
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 +10 -4
- package/dist/index.js +19 -13
- package/dist/index.mjs +15 -9
- package/package.json +13 -19
- package/templates/base-preview-head.html +0 -20
package/dist/index.d.ts
CHANGED
|
@@ -49,6 +49,12 @@ declare const stringifyProcessEnvs: (raw: Record<string, string>) => Record<stri
|
|
|
49
49
|
|
|
50
50
|
declare const findDistEsm: (cwd: string, relativePath: string) => string;
|
|
51
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Builder options can be specified in `core.builder.options` or `framework.options.builder`.
|
|
54
|
+
* Preference is given here to `framework.options.builder` if both are specified.
|
|
55
|
+
*/
|
|
56
|
+
declare function getBuilderOptions<T extends Record<string, any>>(options: Options$2): Promise<T | Record<string, never>>;
|
|
57
|
+
|
|
52
58
|
/**
|
|
53
59
|
* Framework can be a string or an object. This utility always returns the string name.
|
|
54
60
|
*/
|
|
@@ -95,9 +101,9 @@ declare function loadCustomPresets({ configDir }: {
|
|
|
95
101
|
configDir: string;
|
|
96
102
|
}): PresetConfig[];
|
|
97
103
|
|
|
98
|
-
declare function loadMainConfig({ configDir }: {
|
|
104
|
+
declare function loadMainConfig({ configDir, }: {
|
|
99
105
|
configDir: string;
|
|
100
|
-
}): StorybookConfig
|
|
106
|
+
}): Promise<StorybookConfig>;
|
|
101
107
|
|
|
102
108
|
declare function loadManagerOrAddonsFile({ configDir }: {
|
|
103
109
|
configDir: string;
|
|
@@ -145,7 +151,7 @@ declare function getPreviewHeadTemplate(configDirPath: string, interpolations?:
|
|
|
145
151
|
|
|
146
152
|
declare function validateFrameworkName(frameworkName: string): void;
|
|
147
153
|
|
|
148
|
-
declare function validateConfigurationFiles(configDir: string): void
|
|
154
|
+
declare function validateConfigurationFiles(configDir: string): Promise<void>;
|
|
149
155
|
|
|
150
156
|
/**
|
|
151
157
|
* Mimicking the satisfies operator until we can upgrade to TS4.9
|
|
@@ -156,4 +162,4 @@ type Options = Parameters<typeof Cache__default>['0'];
|
|
|
156
162
|
type FileSystemCache = ReturnType<typeof Cache__default>;
|
|
157
163
|
declare function createFileSystemCache(options: Options): FileSystemCache;
|
|
158
164
|
|
|
159
|
-
export { boost, cache, checkAddonOrder, createFileSystemCache, filterPresetsConfig, findDistEsm, getAutoRefs, getDirectoryFromWorkingDir, getFrameworkName, getInterpretedFile, getInterpretedFileWithExt, getPresets, getPreviewBodyTemplate, getPreviewHeadTemplate, getProjectRoot, getRefs, getRendererName, getStorybookConfiguration, getStorybookInfo, globToRegexp, handlebars, interopRequireDefault, interpolate, isPreservingSymlinks, loadAllPresets, loadCustomPresets, loadEnvs, loadMainConfig, loadManagerOrAddonsFile, loadPreset, loadPreviewOrConfigFile, logConfig, nodePathsToArray, normalizeStories, normalizeStoriesEntry, normalizeStoryPath, readTemplate, resolveAddonName, resolvePathInStorybookCache, satisfies, serverRequire, serverResolve, stringifyEnvs, stringifyProcessEnvs, validateConfigurationFiles, validateFrameworkName };
|
|
165
|
+
export { boost, cache, checkAddonOrder, createFileSystemCache, filterPresetsConfig, findDistEsm, getAutoRefs, getBuilderOptions, getDirectoryFromWorkingDir, getFrameworkName, getInterpretedFile, getInterpretedFileWithExt, getPresets, getPreviewBodyTemplate, getPreviewHeadTemplate, getProjectRoot, getRefs, getRendererName, getStorybookConfiguration, getStorybookInfo, globToRegexp, handlebars, interopRequireDefault, interpolate, isPreservingSymlinks, loadAllPresets, loadCustomPresets, loadEnvs, loadMainConfig, loadManagerOrAddonsFile, loadPreset, loadPreviewOrConfigFile, logConfig, nodePathsToArray, normalizeStories, normalizeStoriesEntry, normalizeStoryPath, readTemplate, resolveAddonName, resolvePathInStorybookCache, satisfies, serverRequire, serverResolve, stringifyEnvs, stringifyProcessEnvs, validateConfigurationFiles, validateFrameworkName };
|
package/dist/index.js
CHANGED
|
@@ -1,25 +1,31 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var src_exports={};__export(src_exports,{boost:()=>boost,cache:()=>cache,checkAddonOrder:()=>checkAddonOrder,createFileSystemCache:()=>createFileSystemCache,filterPresetsConfig:()=>filterPresetsConfig,findDistEsm:()=>findDistEsm,getAutoRefs:()=>getAutoRefs,getBuilderOptions:()=>getBuilderOptions,getDirectoryFromWorkingDir:()=>getDirectoryFromWorkingDir,getFrameworkName:()=>getFrameworkName,getInterpretedFile:()=>getInterpretedFile,getInterpretedFileWithExt:()=>getInterpretedFileWithExt,getPresets:()=>getPresets,getPreviewBodyTemplate:()=>getPreviewBodyTemplate,getPreviewHeadTemplate:()=>getPreviewHeadTemplate,getProjectRoot:()=>getProjectRoot,getRefs:()=>getRefs,getRendererName:()=>getRendererName,getStorybookConfiguration:()=>getStorybookConfiguration,getStorybookInfo:()=>getStorybookInfo,globToRegexp:()=>globToRegexp,handlebars:()=>handlebars,interopRequireDefault:()=>interopRequireDefault,interpolate:()=>interpolate,isPreservingSymlinks:()=>isPreservingSymlinks,loadAllPresets:()=>loadAllPresets,loadCustomPresets:()=>loadCustomPresets,loadEnvs:()=>loadEnvs,loadMainConfig:()=>loadMainConfig,loadManagerOrAddonsFile:()=>loadManagerOrAddonsFile,loadPreset:()=>loadPreset,loadPreviewOrConfigFile:()=>loadPreviewOrConfigFile,logConfig:()=>logConfig,nodePathsToArray:()=>nodePathsToArray,normalizeStories:()=>normalizeStories,normalizeStoriesEntry:()=>normalizeStoriesEntry,normalizeStoryPath:()=>normalizeStoryPath,readTemplate:()=>readTemplate,resolveAddonName:()=>resolveAddonName,resolvePathInStorybookCache:()=>resolvePathInStorybookCache,satisfies:()=>satisfies,serverRequire:()=>serverRequire,serverResolve:()=>serverResolve,stringifyEnvs:()=>stringifyEnvs,stringifyProcessEnvs:()=>stringifyProcessEnvs,validateConfigurationFiles:()=>validateConfigurationFiles,validateFrameworkName:()=>validateFrameworkName});module.exports=__toCommonJS(src_exports);var import_ts_dedent2=require("ts-dedent"),import_node_logger2=require("@storybook/node-logger"),import_path3=require("path");var import_path2=__toESM(require("path"));var import_fs=__toESM(require("fs")),boost=new Set([".js",".jsx",".ts",".tsx",".cjs",".mjs"]);function sortExtensions(){return[...Array.from(boost)]}var possibleExtensions=sortExtensions();function getInterpretedFile(pathToFile){return possibleExtensions.map(ext=>pathToFile.endsWith(ext)?pathToFile:`${pathToFile}${ext}`).find(candidate=>import_fs.default.existsSync(candidate))}function getInterpretedFileWithExt(pathToFile){return possibleExtensions.map(ext=>({path:pathToFile.endsWith(ext)?pathToFile:`${pathToFile}${ext}`,ext})).find(candidate=>import_fs.default.existsSync(candidate.path))}var registered=!1;function interopRequireDefault(filePath){let hasEsbuildBeenRegistered=!!require("module")._extensions[".ts"];if(registered===!1&&!hasEsbuildBeenRegistered){let{register}=require("esbuild-register/dist/node");registered=!0,register({target:`node${process.version.slice(1)}`,format:"cjs",hookIgnoreNodeModules:!1,tsconfigRaw:`{
|
|
2
2
|
"compilerOptions": {
|
|
3
3
|
"strict": false,
|
|
4
4
|
"skipLibCheck": true,
|
|
5
5
|
},
|
|
6
|
-
}`})}let
|
|
7
|
-
|
|
8
|
-
Storybook
|
|
9
|
-
`)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
}`})}let result=require(filePath);return typeof result=="object"&&result!==null&&typeof result.default<"u"?result.default:result}function getCandidate(paths){for(let i=0;i<paths.length;i+=1){let candidate=getInterpretedFileWithExt(paths[i]);if(candidate)return candidate}}function serverRequire(filePath){let candidatePath=serverResolve(filePath);return candidatePath?interopRequireDefault(candidatePath):null}function serverResolve(filePath){let paths=Array.isArray(filePath)?filePath:[filePath],existingCandidate=getCandidate(paths);return existingCandidate?existingCandidate.path:null}var import_ts_dedent=require("ts-dedent"),import_glob_promise=require("glob-promise"),import_path=__toESM(require("path")),import_csf_tools=require("@storybook/csf-tools"),import_node_logger=require("@storybook/node-logger");async function validateConfigurationFiles(configDir){let extensionsPattern=`{${Array.from(boost).join(",")}}`,mainConfigMatches=await(0,import_glob_promise.promise)(import_path.default.resolve(configDir,`main${extensionsPattern}`)),[mainConfigPath]=mainConfigMatches;if(mainConfigMatches.length>1&&import_node_logger.once.warn(import_ts_dedent.dedent`
|
|
7
|
+
Multiple main files found in your configDir (${import_path.default.resolve(configDir)}).
|
|
8
|
+
Storybook will use the first one found and ignore the others. Please remove the extra files.
|
|
9
|
+
`),mainConfigPath)(await(0,import_csf_tools.readConfig)(mainConfigPath)).hasDefaultExport||import_node_logger.once.warn(import_ts_dedent.dedent`
|
|
10
|
+
Your main.js is not using a default export, which is the recommended format. Please update it.
|
|
11
|
+
For more info: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#esm-format-in-mainjs
|
|
12
|
+
`);else throw new Error(import_ts_dedent.dedent`
|
|
13
|
+
No configuration files have been found in your configDir (${import_path.default.resolve(configDir)}).
|
|
14
|
+
Storybook needs "main.js" file, please add it.
|
|
15
|
+
`)}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=(path12,file)=>{try{return(0,import_resolve_from.default)(path12,file)}catch{return}},safeResolve=file=>{try{return require.resolve(file)}catch{return}};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 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_path3.parse)(resolved);if(name.match(/\/(manager|register(-panel)?)(\.(js|mjs|ts|tsx|jsx))?$/))return{type:"virtual",name,managerEntries:[(0,import_path3.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=>resolve(`${name}${exportName}`),managerFile=absolutizeExport("/manager"),registerFile=absolutizeExport("/register")||absolutizeExport("/register-panel"),previewFile=checkExists("/preview"),previewFileAbsolute=absolutizeExport("/preview"),presetFile=absolutizeExport("/preset");if(!(managerFile||previewFile)&&presetFile)return{type:"presets",name:presetFile};if(managerFile||registerFile||previewFile||presetFile){let managerEntries=[];if(managerFile){let{dir:fdir,name:fname}=(0,import_path3.parse)(managerFile);managerEntries.push((0,import_path3.join)(fdir,fname))}if(!managerFile&®isterFile&&!presetFile){let{dir:fdir,name:fname}=(0,import_path3.parse)(registerFile);managerEntries.push((0,import_path3.join)(fdir,fname))}return{type:"virtual",name,...managerEntries.length?{managerEntries}:{},...previewFile?{previewAnnotations:[previewFileAbsolute?{bare: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/
|
|
16
|
+
${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){try{let name=input.name?input.name:input,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,subPresets=resolvePresetFunction(presetsInput,presetOptions,storybookOptions),subAddons=resolvePresetFunction(addonsInput,presetOptions,storybookOptions);return[...await loadPresets([...subPresets],level+1,storybookOptions),...await loadPresets([...subAddons.map(map(storybookOptions))].filter(Boolean),level+1,storybookOptions),{name,preset:rest,options:presetOptions}]}throw new Error(import_ts_dedent2.dedent`
|
|
17
|
+
${input} is not a valid preset
|
|
18
|
+
`)}catch(e){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(e),[]}}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_path4=__toESM(require("path")),import_pkg_dir=__toESM(require("pkg-dir"));function resolvePathInStorybookCache(fileOrDirectoryName){let cwd=process.cwd(),projectDir=import_pkg_dir.default.sync(cwd),cacheDirectory;return projectDir?cacheDirectory=import_path4.default.resolve(projectDir,"node_modules/.cache/storybook"):cacheDirectory=import_path4.default.resolve(cwd,".cache/storybook"),import_path4.default.join(cacheDirectory,fileOrDirectoryName)}var cache=createFileSystemCache({basePath:resolvePathInStorybookCache("dev-server"),ns:"storybook"});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!=null&&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_path5=__toESM(require("path")),import_find_up=__toESM(require("find-up")),getProjectRoot=()=>{let result;try{let found=import_find_up.default.sync(".git",{type:"directory"});found&&(result=result||import_path5.default.join(found,".."))}catch{}try{let found=import_find_up.default.sync(".svn",{type:"directory"});found&&(result=result||import_path5.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_path5.default.resolve("./",p)),relativePattern=/^\.{1,2}([/\\]|$)/;function normalizeStoryPath(filename){return relativePattern.test(filename)?filename:`.${import_path5.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 import_path6=__toESM(require("path")),import_find_up2=require("find-up"),findDistEsm=(cwd,relativePath)=>{let nearestPackageJson=(0,import_find_up2.sync)("package.json",{cwd});if(!nearestPackageJson)throw new Error(`Could not find package.json in: ${cwd}`);let packageDir=import_path6.default.dirname(nearestPackageJson);return import_path6.default.join(packageDir,"dist","esm",relativePath)};async function getBuilderOptions(options){var _a;let framework=await options.presets.apply("framework",{},options);if(typeof framework!="string"&&((_a=framework==null?void 0:framework.options)!=null&&_a.builder))return framework.options.builder;let{builder}=await options.presets.apply("core",{},options);return typeof builder!="string"&&(builder!=null&&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`
|
|
13
19
|
You must specify a framework in '.storybook/main.js' config.
|
|
14
20
|
|
|
15
21
|
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-field-mandatory
|
|
16
|
-
`);return typeof
|
|
17
|
-
You have both a "addons.js" and a "manager.js", remove the "addons.js" file from your configDir (${
|
|
18
|
-
You have both a "config.js" and a "preview.js", remove the "config.js" file from your configDir (${
|
|
19
|
-
Invalid value of ${
|
|
22
|
+
`);return typeof framework=="object"?framework.name:framework}async function getRendererName(options){let{renderer}=await options.presets.apply("core",{},options);return renderer||getFrameworkName(options)}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 import_path7=__toESM(require("path")),import_fs_extra=__toESM(require("fs-extra"));var rendererPackages={"@storybook/react":"react","@storybook/vue":"vue","@storybook/vue3":"vue3","@storybook/angular":"angular","@storybook/html":"html","@storybook/web-components":"web-components","@storybook/polymer":"polymer","@storybook/ember":"ember","@storybook/marko":"marko","@storybook/mithril":"mithril","@storybook/riot":"riot","@storybook/svelte":"svelte","@storybook/preact":"preact","storybook-framework-qwik":"qwik","@storybook/rax":"rax","@storybook/server":"server"},logger3=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||[],renderer=pkg?rendererPackages[pkg]:void 0;return dep&&devDep&&dep[0]===devDep[0]&&logger3.warn(`Found "${dep[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),dep&&peerDep&&dep[0]===peerDep[0]&&logger3.warn(`Found "${dep[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{version,framework:renderer,frameworkPackage:pkg,renderer,rendererPackage:pkg}},validConfigExtensions=["ts","js","tsx","jsx","mjs","cjs"],findConfigFile=(prefix,configDir)=>{let filePrefix=import_path7.default.join(configDir,prefix),extension=validConfigExtensions.find(ext=>import_fs_extra.default.existsSync(`${filePrefix}.${ext}`));return extension?`${filePrefix}.${extension}`:null},getConfigInfo=packageJson=>{var _a;let configDir=".storybook",storybookScript=(_a=packageJson.scripts)==null?void 0:_a.storybook;if(storybookScript){let configParam=getStorybookConfiguration(storybookScript,"-c","--config-dir");configParam&&(configDir=configParam)}return{configDir,mainConfig:findConfigFile("main",configDir),previewConfig:findConfigFile("preview",configDir),managerConfig:findConfigFile("manager",configDir)}},getStorybookInfo=packageJson=>{let rendererInfo=getRendererInfo(packageJson),configInfo=getConfigInfo(packageJson);return{...rendererInfo,...configInfo}};var import_fs_extra2=require("fs-extra"),import_path8=require("path"),import_find_up3=__toESM(require("find-up")),import_resolve_from2=__toESM(require("resolve-from")),import_node_logger4=require("@storybook/node-logger"),getAutoRefs=async options=>{let location=await(0,import_find_up3.default)("package.json",{cwd:options.configDir});if(!location)return{};let directory=(0,import_path8.dirname)(location),{dependencies=[],devDependencies=[]}=await(0,import_fs_extra2.readJSON)(location)||{},deps=Object.keys({...dependencies,...devDependencies});return(await Promise.all(deps.map(async d=>{try{let l=(0,import_resolve_from2.default)(directory,(0,import_path8.join)(d,"package.json")),{storybook,name,version}=await(0,import_fs_extra2.readJSON)(l)||{};if(storybook!=null&&storybook.url)return{id:name,...storybook,version}}catch(error){if(error.code==="ERR_PACKAGE_PATH_NOT_EXPORTED")return;import_node_logger4.logger.warn(`unable to find package.json for ${d}`);return}}))).filter(Boolean).reduce((acc,cur)=>({...acc,[cur.id]:{id:cur.id.toLowerCase(),url:stripTrailingSlash(cur.url),title:cur.title,version:cur.version}}),{})},checkRef=url=>fetch(`${url}/iframe.html`).then(async({ok,status})=>{if(ok){if(status!==200)return!1;let data=await fetch(`${url}/iframe.html`,{headers:{Accept:"application/json"}});if(data.ok&&(await data.json().catch(e=>({}))).loginUrl)return!1}return ok},()=>!1),stripTrailingSlash=url=>url.replace(/\/$/,""),toTitle=input=>{let result=input.replace(/[A-Z]/g,f=>` ${f}`).replace(/[-_][A-Z]/gi,f=>` ${f.toUpperCase()}`).replace(/-/g," ").replace(/_/g," ");return`${result.substring(0,1).toUpperCase()}${result.substring(1)}`.trim()};async function getRefs(options){let refs=await options.presets.apply("refs",await getAutoRefs(options));return Object.entries(refs).forEach(([key,value])=>{if(value.disable){delete refs[key];return}refs[key.toLowerCase()]={...value,id:key.toLowerCase(),title:value.title||toTitle(value.id||key),url:stripTrailingSlash(value.url)}}),await Promise.all(Object.entries(refs).map(async([k,value])=>{let ok=await checkRef(value.url);refs[k]={...value,type:ok?"server-checked":"unknown"}})),refs}var pico=__toESM(require("picomatch"));function globToRegexp(glob2){let regex=pico.makeRe(glob2,{fastpaths:!1,noglobstar:!1,bash:!1});if(!regex.source.startsWith("^"))throw new Error(`Invalid glob: >> ${glob2} >> ${regex}`);return glob2.startsWith("./")?new RegExp(["^\\.",glob2.startsWith("./**")?"":"[\\\\/]",regex.source.substring(1)].join("")):regex}var import_handlebars=__toESM(require("handlebars"));function handlebars(source,data){return import_handlebars.default.compile(source)(data)}var interpolate=(template,bindings)=>Object.entries(bindings).reduce((acc,[k,v])=>{let escapedString=v.replace(/\\/g,"/").replace(/\$/g,"$$$");return acc.replace(new RegExp(`{{${k}}}`,"g"),escapedString)},template);var import_path9=__toESM(require("path"));async function loadMainConfig({configDir}){return await validateConfigurationFiles(configDir),serverRequire(import_path9.default.resolve(configDir,"main"))}var import_path10=__toESM(require("path")),import_node_logger5=require("@storybook/node-logger"),import_ts_dedent4=require("ts-dedent");function loadManagerOrAddonsFile({configDir}){let storybookCustomAddonsPath=getInterpretedFile(import_path10.default.resolve(configDir,"addons")),storybookCustomManagerPath=getInterpretedFile(import_path10.default.resolve(configDir,"manager"));if((storybookCustomAddonsPath||storybookCustomManagerPath)&&import_node_logger5.logger.info("=> Loading custom manager config"),storybookCustomAddonsPath&&storybookCustomManagerPath)throw new Error(import_ts_dedent4.dedent`
|
|
23
|
+
You have both a "addons.js" and a "manager.js", remove the "addons.js" file from your configDir (${import_path10.default.resolve(configDir,"addons")})`);return storybookCustomManagerPath||storybookCustomAddonsPath}var import_path11=__toESM(require("path")),import_ts_dedent5=require("ts-dedent");function loadPreviewOrConfigFile({configDir}){let storybookConfigPath=getInterpretedFile(import_path11.default.resolve(configDir,"config")),storybookPreviewPath=getInterpretedFile(import_path11.default.resolve(configDir,"preview"));if(storybookConfigPath&&storybookPreviewPath)throw new Error(import_ts_dedent5.dedent`
|
|
24
|
+
You have both a "config.js" and a "preview.js", remove the "config.js" file from your configDir (${import_path11.default.resolve(configDir,"config")})`);return storybookPreviewPath||storybookConfigPath}var import_chalk=__toESM(require("chalk"));function logConfig(caption,config){console.log(import_chalk.default.cyan(caption)),console.dir(config,{depth:null})}var import_fs2=__toESM(require("fs")),import_path12=__toESM(require("path")),pico2=__toESM(require("picomatch")),import_slash=__toESM(require("slash"));var DEFAULT_TITLE_PREFIX="",DEFAULT_FILES="**/*.@(mdx|stories.@(tsx|ts|jsx|js))",isDirectory=(configDir,entry)=>{try{return import_fs2.default.lstatSync(import_path12.default.resolve(configDir,entry)).isDirectory()}catch{return!1}},getDirectoryFromWorkingDir=({configDir,workingDir,directory})=>{let directoryFromConfig=import_path12.default.resolve(configDir,directory),directoryFromWorking=import_path12.default.relative(workingDir,directoryFromConfig);return normalizeStoryPath(directoryFromWorking)},normalizeStoriesEntry=(entry,{configDir,workingDir})=>{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:DEFAULT_FILES}:specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:import_path12.default.dirname(entry),files:import_path12.default.basename(entry)}}else specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,files:DEFAULT_FILES,...entry};let files=(0,import_slash.default)(specifierWithoutMatcher.files),{directory:directoryRelativeToConfig}=specifierWithoutMatcher,directory=(0,import_slash.default)(getDirectoryFromWorkingDir({configDir,workingDir,directory:directoryRelativeToConfig})).replace(/\/$/,""),importPathMatcher=globToRegexp(`${directory}/${files}`);return{...specifierWithoutMatcher,directory,importPathMatcher}},normalizeStories=(entries,options)=>entries.map(entry=>normalizeStoriesEntry(entry,options));var import_fs_extra3=__toESM(require("fs-extra"));async function readTemplate(filename){return import_fs_extra3.default.readFile(filename,{encoding:"utf8"})}function isPreservingSymlinks(){let{NODE_OPTIONS,NODE_PRESERVE_SYMLINKS}=process.env;return!!NODE_PRESERVE_SYMLINKS||(NODE_OPTIONS==null?void 0:NODE_OPTIONS.includes("--preserve-symlinks"))}var import_path13=__toESM(require("path")),import_pkg_dir2=require("pkg-dir"),import_fs3=__toESM(require("fs")),interpolate2=(string,data={})=>Object.entries(data).reduce((acc,[k,v])=>acc.replace(new RegExp(`%${k}%`,"g"),v),string);function getPreviewBodyTemplate(configDirPath,interpolations){let base=import_fs3.default.readFileSync(`${(0,import_pkg_dir2.sync)(__dirname)}/templates/base-preview-body.html`,"utf8"),bodyHtmlPath=import_path13.default.resolve(configDirPath,"preview-body.html"),result=base;return import_fs3.default.existsSync(bodyHtmlPath)&&(result=import_fs3.default.readFileSync(bodyHtmlPath,"utf8")+result),interpolate2(result,interpolations)}function getPreviewHeadTemplate(configDirPath,interpolations){let base=import_fs3.default.readFileSync(`${(0,import_pkg_dir2.sync)(__dirname)}/templates/base-preview-head.html`,"utf8"),headHtmlPath=import_path13.default.resolve(configDirPath,"preview-head.html"),result=base;return import_fs3.default.existsSync(headHtmlPath)&&(result+=import_fs3.default.readFileSync(headHtmlPath,"utf8")),interpolate2(result,interpolations)}var import_ts_dedent6=require("ts-dedent"),rendererNames=["@storybook/html","@storybook/preact","@storybook/react","@storybook/server","@storybook/svelte","@storybook/vue","@storybook/vue3","@storybook/web-components"];function validateFrameworkName(frameworkName){if(rendererNames.includes(frameworkName))throw new Error(import_ts_dedent6.dedent`
|
|
25
|
+
Invalid value of ${frameworkName} in the 'framework' field of Storybook config.
|
|
20
26
|
|
|
21
27
|
Please run 'npx sb@next automigrate'
|
|
22
28
|
|
|
23
29
|
See the v7 Migration guide for more information:
|
|
24
30
|
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-field-mandatory
|
|
25
|
-
`)}function
|
|
31
|
+
`)}function satisfies(){return x=>x}0&&(module.exports={boost,cache,checkAddonOrder,createFileSystemCache,filterPresetsConfig,findDistEsm,getAutoRefs,getBuilderOptions,getDirectoryFromWorkingDir,getFrameworkName,getInterpretedFile,getInterpretedFileWithExt,getPresets,getPreviewBodyTemplate,getPreviewHeadTemplate,getProjectRoot,getRefs,getRendererName,getStorybookConfiguration,getStorybookInfo,globToRegexp,handlebars,interopRequireDefault,interpolate,isPreservingSymlinks,loadAllPresets,loadCustomPresets,loadEnvs,loadMainConfig,loadManagerOrAddonsFile,loadPreset,loadPreviewOrConfigFile,logConfig,nodePathsToArray,normalizeStories,normalizeStoriesEntry,normalizeStoryPath,readTemplate,resolveAddonName,resolvePathInStorybookCache,satisfies,serverRequire,serverResolve,stringifyEnvs,stringifyProcessEnvs,validateConfigurationFiles,validateFrameworkName});
|
package/dist/index.mjs
CHANGED
|
@@ -1,25 +1,31 @@
|
|
|
1
|
-
var __require=(x=>typeof require
|
|
1
|
+
var __require=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(a,b)=>(typeof require<"u"?require:a)[b]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+x+'" is not supported')});import{dedent as dedent2}from"ts-dedent";import{logger}from"@storybook/node-logger";import{join,parse}from"path";import path2 from"path";import fs from"fs";var boost=new Set([".js",".jsx",".ts",".tsx",".cjs",".mjs"]);function sortExtensions(){return[...Array.from(boost)]}var possibleExtensions=sortExtensions();function getInterpretedFile(pathToFile){return possibleExtensions.map(ext=>pathToFile.endsWith(ext)?pathToFile:`${pathToFile}${ext}`).find(candidate=>fs.existsSync(candidate))}function getInterpretedFileWithExt(pathToFile){return possibleExtensions.map(ext=>({path:pathToFile.endsWith(ext)?pathToFile:`${pathToFile}${ext}`,ext})).find(candidate=>fs.existsSync(candidate.path))}var registered=!1;function interopRequireDefault(filePath){let hasEsbuildBeenRegistered=!!__require("module")._extensions[".ts"];if(registered===!1&&!hasEsbuildBeenRegistered){let{register}=__require("esbuild-register/dist/node");registered=!0,register({target:`node${process.version.slice(1)}`,format:"cjs",hookIgnoreNodeModules:!1,tsconfigRaw:`{
|
|
2
2
|
"compilerOptions": {
|
|
3
3
|
"strict": false,
|
|
4
4
|
"skipLibCheck": true,
|
|
5
5
|
},
|
|
6
|
-
}`})}let result=__require(filePath);return typeof result=="object"&&result!==null&&typeof result.default<"u"?result.default:result}function getCandidate(paths){for(let i=0;i<paths.length;i+=1){let candidate=getInterpretedFileWithExt(paths[i]);if(candidate)return candidate}}function serverRequire(filePath){let candidatePath=serverResolve(filePath);return candidatePath?interopRequireDefault(candidatePath):null}function serverResolve(filePath){let paths=Array.isArray(filePath)?filePath:[filePath],existingCandidate=getCandidate(paths);return existingCandidate?existingCandidate.path:null}import{dedent}from"ts-dedent";import glob
|
|
6
|
+
}`})}let result=__require(filePath);return typeof result=="object"&&result!==null&&typeof result.default<"u"?result.default:result}function getCandidate(paths){for(let i=0;i<paths.length;i+=1){let candidate=getInterpretedFileWithExt(paths[i]);if(candidate)return candidate}}function serverRequire(filePath){let candidatePath=serverResolve(filePath);return candidatePath?interopRequireDefault(candidatePath):null}function serverResolve(filePath){let paths=Array.isArray(filePath)?filePath:[filePath],existingCandidate=getCandidate(paths);return existingCandidate?existingCandidate.path:null}import{dedent}from"ts-dedent";import{promise as glob}from"glob-promise";import path from"path";import{readConfig}from"@storybook/csf-tools";import{once}from"@storybook/node-logger";async function validateConfigurationFiles(configDir){let extensionsPattern=`{${Array.from(boost).join(",")}}`,mainConfigMatches=await glob(path.resolve(configDir,`main${extensionsPattern}`)),[mainConfigPath]=mainConfigMatches;if(mainConfigMatches.length>1&&once.warn(dedent`
|
|
7
|
+
Multiple main files found in your configDir (${path.resolve(configDir)}).
|
|
8
|
+
Storybook will use the first one found and ignore the others. Please remove the extra files.
|
|
9
|
+
`),mainConfigPath)(await readConfig(mainConfigPath)).hasDefaultExport||once.warn(dedent`
|
|
10
|
+
Your main.js is not using a default export, which is the recommended format. Please update it.
|
|
11
|
+
For more info: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#esm-format-in-mainjs
|
|
12
|
+
`);else throw new Error(dedent`
|
|
7
13
|
No configuration files have been found in your configDir (${path.resolve(configDir)}).
|
|
8
|
-
Storybook needs
|
|
9
|
-
`)}function loadCustomPresets({configDir}){validateConfigurationFiles(configDir);let presets=serverRequire(path2.resolve(configDir,"presets"));if(serverRequire(path2.resolve(configDir,"main"))){let resolved=serverResolve(path2.resolve(configDir,"main"));if(resolved)return[resolved]}return presets||[]}import resolveFrom from"resolve-from";var safeResolveFrom=(path12,file)=>{try{return resolveFrom(path12,file)}catch{return}},safeResolve=file=>{try{return __require.resolve(file)}catch{return}};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 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:[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=>resolve(`${name}${exportName}`),managerFile=absolutizeExport("/manager"),registerFile=absolutizeExport("/register")||absolutizeExport("/register-panel"),previewFile=checkExists("/preview"),previewFileAbsolute=absolutizeExport("/preview"),presetFile=absolutizeExport("/preset");if(!(managerFile||previewFile)&&presetFile)return{type:"presets",name:presetFile};if(managerFile||registerFile||previewFile||presetFile){let managerEntries=[];if(managerFile){let{dir:fdir,name:fname}=parse(managerFile);managerEntries.push(join(fdir,fname))}if(!managerFile&®isterFile&&!presetFile){let{dir:fdir,name:fname}=parse(registerFile);managerEntries.push(join(fdir,fname))}return{type:"virtual",name,...managerEntries.length?{managerEntries}:{},...previewFile?{previewAnnotations:[previewFileAbsolute?{bare: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;try{
|
|
10
|
-
${item}`)}};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){try{let name=input.name?input.name:input,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,subPresets=resolvePresetFunction(presetsInput,presetOptions,storybookOptions),subAddons=resolvePresetFunction(addonsInput,presetOptions,storybookOptions);return[...await loadPresets([...subPresets],level+1,storybookOptions),...await loadPresets([...subAddons.map(map(storybookOptions))].filter(Boolean),level+1,storybookOptions),{name,preset:rest,options:presetOptions}]}throw new Error(dedent2`
|
|
14
|
+
Storybook needs "main.js" file, please add it.
|
|
15
|
+
`)}function loadCustomPresets({configDir}){validateConfigurationFiles(configDir);let presets=serverRequire(path2.resolve(configDir,"presets"));if(serverRequire(path2.resolve(configDir,"main"))){let resolved=serverResolve(path2.resolve(configDir,"main"));if(resolved)return[resolved]}return presets||[]}import resolveFrom from"resolve-from";var safeResolveFrom=(path12,file)=>{try{return resolveFrom(path12,file)}catch{return}},safeResolve=file=>{try{return __require.resolve(file)}catch{return}};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 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:[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=>resolve(`${name}${exportName}`),managerFile=absolutizeExport("/manager"),registerFile=absolutizeExport("/register")||absolutizeExport("/register-panel"),previewFile=checkExists("/preview"),previewFileAbsolute=absolutizeExport("/preview"),presetFile=absolutizeExport("/preset");if(!(managerFile||previewFile)&&presetFile)return{type:"presets",name:presetFile};if(managerFile||registerFile||previewFile||presetFile){let managerEntries=[];if(managerFile){let{dir:fdir,name:fname}=parse(managerFile);managerEntries.push(join(fdir,fname))}if(!managerFile&®isterFile&&!presetFile){let{dir:fdir,name:fname}=parse(registerFile);managerEntries.push(join(fdir,fname))}return{type:"virtual",name,...managerEntries.length?{managerEntries}:{},...previewFile?{previewAnnotations:[previewFileAbsolute?{bare: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/
|
|
16
|
+
${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){try{let name=input.name?input.name:input,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,subPresets=resolvePresetFunction(presetsInput,presetOptions,storybookOptions),subAddons=resolvePresetFunction(addonsInput,presetOptions,storybookOptions);return[...await loadPresets([...subPresets],level+1,storybookOptions),...await loadPresets([...subAddons.map(map(storybookOptions))].filter(Boolean),level+1,storybookOptions),{name,preset:rest,options:presetOptions}]}throw new Error(dedent2`
|
|
11
17
|
${input} is not a valid preset
|
|
12
|
-
`)}catch(e){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(e),[]}}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)}import Cache from"file-system-cache";function createFileSystemCache(options){return Cache(options)}import path3 from"path";import pkgDir from"pkg-dir";function resolvePathInStorybookCache(fileOrDirectoryName){let cwd=process.cwd(),projectDir=pkgDir.sync(cwd),cacheDirectory;return projectDir?cacheDirectory=path3.resolve(projectDir,"node_modules/.cache/storybook"):cacheDirectory=path3.resolve(cwd,".cache/storybook"),path3.join(cacheDirectory,fileOrDirectoryName)}var cache=createFileSystemCache({basePath:resolvePathInStorybookCache("dev-server"),ns:"storybook"});import{logger as logger2}from"@storybook/node-logger";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){logger2.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:""}`;logger2.warn(`Expected ${beforeText} to be listed before ${afterText} in main Storybook config.`)}}catch{logger2.warn(`Unable to load config file: ${configFile}`)}};import{getEnvironment}from"lazy-universal-dotenv";import path4 from"path";import findUp from"find-up";var getProjectRoot=()=>{let result;try{let found=findUp.sync(".git",{type:"directory"});found&&(result=result||path4.join(found,".."))}catch{}try{let found=findUp.sync(".svn",{type:"directory"});found&&(result=result||path4.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=>path4.resolve("./",p)),relativePattern=/^\.{1,2}([/\\]|$)/;function normalizeStoryPath(filename){return relativePattern.test(filename)?filename:`.${path4.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),{});import path5 from"path";import{sync as findUpSync}from"find-up";var findDistEsm=(cwd,relativePath)=>{let nearestPackageJson=findUpSync("package.json",{cwd});if(!nearestPackageJson)throw new Error(`Could not find package.json in: ${cwd}`);let packageDir=path5.dirname(nearestPackageJson);return path5.join(packageDir,"dist","esm",relativePath)};import{dedent as dedent3}from"ts-dedent";async function getFrameworkName(options){let framework=await options.presets.apply("framework","",options);if(!framework)throw new Error(dedent3`
|
|
18
|
+
`)}catch(e){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(e),[]}}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)}import Cache from"file-system-cache";function createFileSystemCache(options){return Cache(options)}import path3 from"path";import pkgDir from"pkg-dir";function resolvePathInStorybookCache(fileOrDirectoryName){let cwd=process.cwd(),projectDir=pkgDir.sync(cwd),cacheDirectory;return projectDir?cacheDirectory=path3.resolve(projectDir,"node_modules/.cache/storybook"):cacheDirectory=path3.resolve(cwd,".cache/storybook"),path3.join(cacheDirectory,fileOrDirectoryName)}var cache=createFileSystemCache({basePath:resolvePathInStorybookCache("dev-server"),ns:"storybook"});import{logger as logger2}from"@storybook/node-logger";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){logger2.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:""}`;logger2.warn(`Expected ${beforeText} to be listed before ${afterText} in main Storybook config.`)}}catch{logger2.warn(`Unable to load config file: ${configFile}`)}};import{getEnvironment}from"lazy-universal-dotenv";import path4 from"path";import findUp from"find-up";var getProjectRoot=()=>{let result;try{let found=findUp.sync(".git",{type:"directory"});found&&(result=result||path4.join(found,".."))}catch{}try{let found=findUp.sync(".svn",{type:"directory"});found&&(result=result||path4.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=>path4.resolve("./",p)),relativePattern=/^\.{1,2}([/\\]|$)/;function normalizeStoryPath(filename){return relativePattern.test(filename)?filename:`.${path4.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),{});import path5 from"path";import{sync as findUpSync}from"find-up";var findDistEsm=(cwd,relativePath)=>{let nearestPackageJson=findUpSync("package.json",{cwd});if(!nearestPackageJson)throw new Error(`Could not find package.json in: ${cwd}`);let packageDir=path5.dirname(nearestPackageJson);return path5.join(packageDir,"dist","esm",relativePath)};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:{}}import{dedent as dedent3}from"ts-dedent";async function getFrameworkName(options){let framework=await options.presets.apply("framework","",options);if(!framework)throw new Error(dedent3`
|
|
13
19
|
You must specify a framework in '.storybook/main.js' config.
|
|
14
20
|
|
|
15
21
|
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-field-mandatory
|
|
16
|
-
`);return typeof framework=="object"?framework.name:framework}async function getRendererName(options){let{renderer}=await options.presets.apply("core",{},options);return renderer||getFrameworkName(options)}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]}import path6 from"path";import fse from"fs-extra";var rendererPackages={"@storybook/react":"react","@storybook/vue":"vue","@storybook/vue3":"vue3","@storybook/angular":"angular","@storybook/html":"html","@storybook/web-components":"web-components","@storybook/polymer":"polymer","@storybook/ember":"ember","@storybook/marko":"marko","@storybook/mithril":"mithril","@storybook/riot":"riot","@storybook/svelte":"svelte","@storybook/preact":"preact","@storybook/rax":"rax","@storybook/server":"server"},logger3=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||[],renderer=pkg?rendererPackages[pkg]:void 0;return dep&&devDep&&dep[0]===devDep[0]&&logger3.warn(`Found "${dep[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),dep&&peerDep&&dep[0]===peerDep[0]&&logger3.warn(`Found "${dep[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{version,framework:renderer,frameworkPackage:pkg,renderer,rendererPackage: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=>{let configDir=".storybook",storybookScript=packageJson.scripts?.storybook;if(storybookScript){let configParam=getStorybookConfiguration(storybookScript,"-c","--config-dir");configParam&&(configDir=configParam)}return{configDir,mainConfig:findConfigFile("main",configDir),previewConfig:findConfigFile("preview",configDir),managerConfig:findConfigFile("manager",configDir)}},getStorybookInfo=packageJson=>{let rendererInfo=getRendererInfo(packageJson),configInfo=getConfigInfo(packageJson);return{...rendererInfo,...configInfo}};import{readJSON}from"fs-extra";import{dirname,join as join2}from"path";import findUp2 from"find-up";import resolveFrom2 from"resolve-from";import{logger as logger4}from"@storybook/node-logger";var getAutoRefs=async options=>{let location=await findUp2("package.json",{cwd:options.configDir});if(!location)return{};let directory=dirname(location),{dependencies=[],devDependencies=[]}=await readJSON(location)||{},deps=Object.keys({...dependencies,...devDependencies});return(await Promise.all(deps.map(async d=>{try{let l=resolveFrom2(directory,join2(d,"package.json")),{storybook,name,version}=await readJSON(l)||{};if(storybook?.url)return{id:name,...storybook,version}}catch(error){if(error.code==="ERR_PACKAGE_PATH_NOT_EXPORTED")return;logger4.warn(`unable to find package.json for ${d}`);return}}))).filter(Boolean).reduce((acc,cur)=>({...acc,[cur.id]:{id:cur.id.toLowerCase(),url:stripTrailingSlash(cur.url),title:cur.title,version:cur.version}}),{})},checkRef=url=>fetch(`${url}/iframe.html`).then(async({ok,status})=>{if(ok){if(status!==200)return!1;let data=await fetch(`${url}/iframe.html`,{headers:{Accept:"application/json"}});if(data.ok&&(await data.json().catch(e=>({}))).loginUrl)return!1}return ok},()=>!1),stripTrailingSlash=url=>url.replace(/\/$/,""),toTitle=input=>{let result=input.replace(/[A-Z]/g,f=>` ${f}`).replace(/[-_][A-Z]/gi,f=>` ${f.toUpperCase()}`).replace(/-/g," ").replace(/_/g," ");return`${result.substring(0,1).toUpperCase()}${result.substring(1)}`.trim()};async function getRefs(options){let refs=await options.presets.apply("refs",await getAutoRefs(options));return Object.entries(refs).forEach(([key,value])=>{if(value.disable){delete refs[key];return}refs[key.toLowerCase()]={...value,id:key.toLowerCase(),title:value.title||toTitle(value.id||key),url:stripTrailingSlash(value.url)}}),await Promise.all(Object.entries(refs).map(async([k,value])=>{let ok=await checkRef(value.url);refs[k]={...value,type:ok?"server-checked":"unknown"}})),refs}import
|
|
22
|
+
`);return typeof framework=="object"?framework.name:framework}async function getRendererName(options){let{renderer}=await options.presets.apply("core",{},options);return renderer||getFrameworkName(options)}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]}import path6 from"path";import fse from"fs-extra";var rendererPackages={"@storybook/react":"react","@storybook/vue":"vue","@storybook/vue3":"vue3","@storybook/angular":"angular","@storybook/html":"html","@storybook/web-components":"web-components","@storybook/polymer":"polymer","@storybook/ember":"ember","@storybook/marko":"marko","@storybook/mithril":"mithril","@storybook/riot":"riot","@storybook/svelte":"svelte","@storybook/preact":"preact","storybook-framework-qwik":"qwik","@storybook/rax":"rax","@storybook/server":"server"},logger3=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||[],renderer=pkg?rendererPackages[pkg]:void 0;return dep&&devDep&&dep[0]===devDep[0]&&logger3.warn(`Found "${dep[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),dep&&peerDep&&dep[0]===peerDep[0]&&logger3.warn(`Found "${dep[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{version,framework:renderer,frameworkPackage:pkg,renderer,rendererPackage: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=>{let configDir=".storybook",storybookScript=packageJson.scripts?.storybook;if(storybookScript){let configParam=getStorybookConfiguration(storybookScript,"-c","--config-dir");configParam&&(configDir=configParam)}return{configDir,mainConfig:findConfigFile("main",configDir),previewConfig:findConfigFile("preview",configDir),managerConfig:findConfigFile("manager",configDir)}},getStorybookInfo=packageJson=>{let rendererInfo=getRendererInfo(packageJson),configInfo=getConfigInfo(packageJson);return{...rendererInfo,...configInfo}};import{readJSON}from"fs-extra";import{dirname,join as join2}from"path";import findUp2 from"find-up";import resolveFrom2 from"resolve-from";import{logger as logger4}from"@storybook/node-logger";var getAutoRefs=async options=>{let location=await findUp2("package.json",{cwd:options.configDir});if(!location)return{};let directory=dirname(location),{dependencies=[],devDependencies=[]}=await readJSON(location)||{},deps=Object.keys({...dependencies,...devDependencies});return(await Promise.all(deps.map(async d=>{try{let l=resolveFrom2(directory,join2(d,"package.json")),{storybook,name,version}=await readJSON(l)||{};if(storybook?.url)return{id:name,...storybook,version}}catch(error){if(error.code==="ERR_PACKAGE_PATH_NOT_EXPORTED")return;logger4.warn(`unable to find package.json for ${d}`);return}}))).filter(Boolean).reduce((acc,cur)=>({...acc,[cur.id]:{id:cur.id.toLowerCase(),url:stripTrailingSlash(cur.url),title:cur.title,version:cur.version}}),{})},checkRef=url=>fetch(`${url}/iframe.html`).then(async({ok,status})=>{if(ok){if(status!==200)return!1;let data=await fetch(`${url}/iframe.html`,{headers:{Accept:"application/json"}});if(data.ok&&(await data.json().catch(e=>({}))).loginUrl)return!1}return ok},()=>!1),stripTrailingSlash=url=>url.replace(/\/$/,""),toTitle=input=>{let result=input.replace(/[A-Z]/g,f=>` ${f}`).replace(/[-_][A-Z]/gi,f=>` ${f.toUpperCase()}`).replace(/-/g," ").replace(/_/g," ");return`${result.substring(0,1).toUpperCase()}${result.substring(1)}`.trim()};async function getRefs(options){let refs=await options.presets.apply("refs",await getAutoRefs(options));return Object.entries(refs).forEach(([key,value])=>{if(value.disable){delete refs[key];return}refs[key.toLowerCase()]={...value,id:key.toLowerCase(),title:value.title||toTitle(value.id||key),url:stripTrailingSlash(value.url)}}),await Promise.all(Object.entries(refs).map(async([k,value])=>{let ok=await checkRef(value.url);refs[k]={...value,type:ok?"server-checked":"unknown"}})),refs}import*as pico from"picomatch";function globToRegexp(glob2){let regex=pico.makeRe(glob2,{fastpaths:!1,noglobstar:!1,bash:!1});if(!regex.source.startsWith("^"))throw new Error(`Invalid glob: >> ${glob2} >> ${regex}`);return glob2.startsWith("./")?new RegExp(["^\\.",glob2.startsWith("./**")?"":"[\\\\/]",regex.source.substring(1)].join("")):regex}import Handlebars from"handlebars";function handlebars(source,data){return Handlebars.compile(source)(data)}var interpolate=(template,bindings)=>Object.entries(bindings).reduce((acc,[k,v])=>{let escapedString=v.replace(/\\/g,"/").replace(/\$/g,"$$$");return acc.replace(new RegExp(`{{${k}}}`,"g"),escapedString)},template);import path7 from"path";async function loadMainConfig({configDir}){return await validateConfigurationFiles(configDir),serverRequire(path7.resolve(configDir,"main"))}import path8 from"path";import{logger as logger5}from"@storybook/node-logger";import{dedent as dedent4}from"ts-dedent";function loadManagerOrAddonsFile({configDir}){let storybookCustomAddonsPath=getInterpretedFile(path8.resolve(configDir,"addons")),storybookCustomManagerPath=getInterpretedFile(path8.resolve(configDir,"manager"));if((storybookCustomAddonsPath||storybookCustomManagerPath)&&logger5.info("=> Loading custom manager config"),storybookCustomAddonsPath&&storybookCustomManagerPath)throw new Error(dedent4`
|
|
17
23
|
You have both a "addons.js" and a "manager.js", remove the "addons.js" file from your configDir (${path8.resolve(configDir,"addons")})`);return storybookCustomManagerPath||storybookCustomAddonsPath}import path9 from"path";import{dedent as dedent5}from"ts-dedent";function loadPreviewOrConfigFile({configDir}){let storybookConfigPath=getInterpretedFile(path9.resolve(configDir,"config")),storybookPreviewPath=getInterpretedFile(path9.resolve(configDir,"preview"));if(storybookConfigPath&&storybookPreviewPath)throw new Error(dedent5`
|
|
18
|
-
You have both a "config.js" and a "preview.js", remove the "config.js" file from your configDir (${path9.resolve(configDir,"config")})`);return storybookPreviewPath||storybookConfigPath}import chalk from"chalk";function logConfig(caption,config){console.log(chalk.cyan(caption)),console.dir(config,{depth:null})}import fs2 from"fs";import path10 from"path";import
|
|
24
|
+
You have both a "config.js" and a "preview.js", remove the "config.js" file from your configDir (${path9.resolve(configDir,"config")})`);return storybookPreviewPath||storybookConfigPath}import chalk from"chalk";function logConfig(caption,config){console.log(chalk.cyan(caption)),console.dir(config,{depth:null})}import fs2 from"fs";import path10 from"path";import*as pico2 from"picomatch";import slash from"slash";var DEFAULT_TITLE_PREFIX="",DEFAULT_FILES="**/*.@(mdx|stories.@(tsx|ts|jsx|js))",isDirectory=(configDir,entry)=>{try{return fs2.lstatSync(path10.resolve(configDir,entry)).isDirectory()}catch{return!1}},getDirectoryFromWorkingDir=({configDir,workingDir,directory})=>{let directoryFromConfig=path10.resolve(configDir,directory),directoryFromWorking=path10.relative(workingDir,directoryFromConfig);return normalizeStoryPath(directoryFromWorking)},normalizeStoriesEntry=(entry,{configDir,workingDir})=>{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:DEFAULT_FILES}:specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:path10.dirname(entry),files:path10.basename(entry)}}else specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,files:DEFAULT_FILES,...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)=>entries.map(entry=>normalizeStoriesEntry(entry,options));import fse2 from"fs-extra";async function readTemplate(filename){return fse2.readFile(filename,{encoding:"utf8"})}function isPreservingSymlinks(){let{NODE_OPTIONS,NODE_PRESERVE_SYMLINKS}=process.env;return!!NODE_PRESERVE_SYMLINKS||NODE_OPTIONS?.includes("--preserve-symlinks")}import path11 from"path";import{sync}from"pkg-dir";import fs3 from"fs";var interpolate2=(string,data={})=>Object.entries(data).reduce((acc,[k,v])=>acc.replace(new RegExp(`%${k}%`,"g"),v),string);function getPreviewBodyTemplate(configDirPath,interpolations){let base=fs3.readFileSync(`${sync(__dirname)}/templates/base-preview-body.html`,"utf8"),bodyHtmlPath=path11.resolve(configDirPath,"preview-body.html"),result=base;return fs3.existsSync(bodyHtmlPath)&&(result=fs3.readFileSync(bodyHtmlPath,"utf8")+result),interpolate2(result,interpolations)}function getPreviewHeadTemplate(configDirPath,interpolations){let base=fs3.readFileSync(`${sync(__dirname)}/templates/base-preview-head.html`,"utf8"),headHtmlPath=path11.resolve(configDirPath,"preview-head.html"),result=base;return fs3.existsSync(headHtmlPath)&&(result+=fs3.readFileSync(headHtmlPath,"utf8")),interpolate2(result,interpolations)}import{dedent as dedent6}from"ts-dedent";var rendererNames=["@storybook/html","@storybook/preact","@storybook/react","@storybook/server","@storybook/svelte","@storybook/vue","@storybook/vue3","@storybook/web-components"];function validateFrameworkName(frameworkName){if(rendererNames.includes(frameworkName))throw new Error(dedent6`
|
|
19
25
|
Invalid value of ${frameworkName} in the 'framework' field of Storybook config.
|
|
20
26
|
|
|
21
27
|
Please run 'npx sb@next automigrate'
|
|
22
28
|
|
|
23
29
|
See the v7 Migration guide for more information:
|
|
24
30
|
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-field-mandatory
|
|
25
|
-
`)}function satisfies(){return x=>x}export{boost,cache,checkAddonOrder,createFileSystemCache,filterPresetsConfig,findDistEsm,getAutoRefs,getDirectoryFromWorkingDir,getFrameworkName,getInterpretedFile,getInterpretedFileWithExt,getPresets,getPreviewBodyTemplate,getPreviewHeadTemplate,getProjectRoot,getRefs,getRendererName,getStorybookConfiguration,getStorybookInfo,globToRegexp,handlebars,interopRequireDefault,interpolate,isPreservingSymlinks,loadAllPresets,loadCustomPresets,loadEnvs,loadMainConfig,loadManagerOrAddonsFile,loadPreset,loadPreviewOrConfigFile,logConfig,nodePathsToArray,normalizeStories,normalizeStoriesEntry,normalizeStoryPath,readTemplate,resolveAddonName,resolvePathInStorybookCache,satisfies,serverRequire,serverResolve,stringifyEnvs,stringifyProcessEnvs,validateConfigurationFiles,validateFrameworkName};
|
|
31
|
+
`)}function satisfies(){return x=>x}export{boost,cache,checkAddonOrder,createFileSystemCache,filterPresetsConfig,findDistEsm,getAutoRefs,getBuilderOptions,getDirectoryFromWorkingDir,getFrameworkName,getInterpretedFile,getInterpretedFileWithExt,getPresets,getPreviewBodyTemplate,getPreviewHeadTemplate,getProjectRoot,getRefs,getRendererName,getStorybookConfiguration,getStorybookInfo,globToRegexp,handlebars,interopRequireDefault,interpolate,isPreservingSymlinks,loadAllPresets,loadCustomPresets,loadEnvs,loadMainConfig,loadManagerOrAddonsFile,loadPreset,loadPreviewOrConfigFile,logConfig,nodePathsToArray,normalizeStories,normalizeStoriesEntry,normalizeStoryPath,readTemplate,resolveAddonName,resolvePathInStorybookCache,satisfies,serverRequire,serverResolve,stringifyEnvs,stringifyProcessEnvs,validateConfigurationFiles,validateFrameworkName};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storybook/core-common",
|
|
3
|
-
"version": "7.0.0-beta.
|
|
3
|
+
"version": "7.0.0-beta.41",
|
|
4
4
|
"description": "Storybook framework-agnostic API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"storybook"
|
|
@@ -21,23 +21,20 @@
|
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"exports": {
|
|
23
23
|
".": {
|
|
24
|
+
"node": "./dist/index.js",
|
|
24
25
|
"require": "./dist/index.js",
|
|
25
26
|
"import": "./dist/index.mjs",
|
|
26
27
|
"types": "./dist/index.d.ts"
|
|
27
28
|
},
|
|
28
|
-
"./package.json":
|
|
29
|
-
"require": "./package.json",
|
|
30
|
-
"import": "./package.json",
|
|
31
|
-
"types": "./package.json"
|
|
32
|
-
}
|
|
29
|
+
"./package.json": "./package.json"
|
|
33
30
|
},
|
|
34
31
|
"main": "dist/index.js",
|
|
35
32
|
"module": "dist/index.mjs",
|
|
36
33
|
"types": "dist/index.d.ts",
|
|
37
34
|
"files": [
|
|
38
35
|
"dist/**/*",
|
|
39
|
-
"types/**/*",
|
|
40
36
|
"templates/**/*",
|
|
37
|
+
"README.md",
|
|
41
38
|
"*.js",
|
|
42
39
|
"*.d.ts"
|
|
43
40
|
],
|
|
@@ -47,22 +44,24 @@
|
|
|
47
44
|
},
|
|
48
45
|
"dependencies": {
|
|
49
46
|
"@babel/core": "^7.20.2",
|
|
50
|
-
"@storybook/
|
|
51
|
-
"@storybook/
|
|
47
|
+
"@storybook/csf-tools": "7.0.0-beta.41",
|
|
48
|
+
"@storybook/node-logger": "7.0.0-beta.41",
|
|
49
|
+
"@storybook/types": "7.0.0-beta.41",
|
|
52
50
|
"@types/babel__core": "^7.1.20",
|
|
53
51
|
"@types/express": "^4.7.0",
|
|
54
52
|
"@types/node": "^16.0.0",
|
|
55
53
|
"@types/pretty-hrtime": "^1.0.0",
|
|
56
54
|
"chalk": "^4.1.0",
|
|
57
|
-
"esbuild": "^0.
|
|
55
|
+
"esbuild": "^0.16.4",
|
|
58
56
|
"esbuild-register": "^3.3.3",
|
|
59
57
|
"express": "^4.17.3",
|
|
60
58
|
"file-system-cache": "^2.0.0",
|
|
61
59
|
"find-up": "^5.0.0",
|
|
62
|
-
"fs-extra": "^
|
|
63
|
-
"glob": "^7.
|
|
60
|
+
"fs-extra": "^11.1.0",
|
|
61
|
+
"glob": "^7.2.0",
|
|
62
|
+
"glob-promise": "^4.2.0",
|
|
64
63
|
"handlebars": "^4.7.7",
|
|
65
|
-
"lazy-universal-dotenv": "^
|
|
64
|
+
"lazy-universal-dotenv": "^4.0.0",
|
|
66
65
|
"picomatch": "^2.3.0",
|
|
67
66
|
"pkg-dir": "^5.0.0",
|
|
68
67
|
"pretty-hrtime": "^1.0.3",
|
|
@@ -77,11 +76,6 @@
|
|
|
77
76
|
"type-fest": "^2.19.0",
|
|
78
77
|
"typescript": "~4.9.3"
|
|
79
78
|
},
|
|
80
|
-
"peerDependenciesMeta": {
|
|
81
|
-
"typescript": {
|
|
82
|
-
"optional": true
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
79
|
"publishConfig": {
|
|
86
80
|
"access": "public"
|
|
87
81
|
},
|
|
@@ -91,5 +85,5 @@
|
|
|
91
85
|
],
|
|
92
86
|
"platform": "node"
|
|
93
87
|
},
|
|
94
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "b73df3011fe6ccda407ebb6ed15b80e0d01d4230"
|
|
95
89
|
}
|
|
@@ -326,24 +326,4 @@
|
|
|
326
326
|
// eslint-disable-next-line no-console
|
|
327
327
|
console.warn('unable to connect to top frame for connecting dev tools');
|
|
328
328
|
}
|
|
329
|
-
|
|
330
|
-
window.onerror = function onerror(message, source, line, column, err) {
|
|
331
|
-
if (window.CONFIG_TYPE !== 'DEVELOPMENT') return;
|
|
332
|
-
// eslint-disable-next-line no-var, vars-on-top
|
|
333
|
-
var xhr = new window.XMLHttpRequest();
|
|
334
|
-
xhr.open('POST', '/runtime-error');
|
|
335
|
-
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
|
|
336
|
-
xhr.send(
|
|
337
|
-
JSON.stringify({
|
|
338
|
-
/* eslint-disable object-shorthand */
|
|
339
|
-
message: message,
|
|
340
|
-
source: source,
|
|
341
|
-
line: line,
|
|
342
|
-
column: column,
|
|
343
|
-
error: err && { message: err.message, name: err.name, stack: err.stack },
|
|
344
|
-
origin: 'preview',
|
|
345
|
-
/* eslint-enable object-shorthand */
|
|
346
|
-
})
|
|
347
|
-
);
|
|
348
|
-
};
|
|
349
329
|
</script>
|