@storybook/core-common 7.0.0-alpha.26 → 7.0.0-alpha.27

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
@@ -283,15 +283,17 @@ declare namespace PackageJson$1 {
283
283
  string
284
284
  >;
285
285
 
286
+ type ExportConditions = {[condition in ExportCondition]: Exports};
287
+
286
288
  /**
287
289
  Entry points of a module, optionally with conditions and subpath exports.
288
290
  */
289
291
  export type Exports =
290
292
  | null
291
293
  | string
292
- | string[]
293
- | {[key in ExportCondition]: Exports}
294
- | {[key: string]: Exports}; // eslint-disable-line @typescript-eslint/consistent-indexed-object-style
294
+ | Array<string | ExportConditions>
295
+ | ExportConditions
296
+ | {[path: string]: Exports}; // eslint-disable-line @typescript-eslint/consistent-indexed-object-style
295
297
 
296
298
  /**
297
299
  Import map entries of a module, optionally with conditions.
@@ -1082,6 +1084,13 @@ interface StorybookConfig {
1082
1084
  * Docs related features in index generation
1083
1085
  */
1084
1086
  docs?: DocsOptions;
1087
+ /**
1088
+ * Programmatically modify the preview head/body HTML.
1089
+ * The previewHead and previewBody functions accept a string,
1090
+ * which is the existing head/body, and return a modified string.
1091
+ */
1092
+ previewHead?: (head: string, options: Options$1) => string;
1093
+ previewBody?: (body: string, options: Options$1) => string;
1085
1094
  }
1086
1095
  declare type PresetProperty<K, TStorybookConfig = StorybookConfig> = TStorybookConfig[K extends keyof TStorybookConfig ? K : never] | PresetPropertyFn<K, TStorybookConfig>;
1087
1096
  declare type PresetPropertyFn<K, TStorybookConfig = StorybookConfig, TOptions = {}> = (config: TStorybookConfig[K extends keyof TStorybookConfig ? K : never], options: Options$1 & TOptions) => TStorybookConfig[K extends keyof TStorybookConfig ? K : never] | Promise<TStorybookConfig[K extends keyof TStorybookConfig ? K : never]>;
@@ -1254,4 +1263,6 @@ declare function readTemplate(filename: string): Promise<string>;
1254
1263
 
1255
1264
  declare const findDistEsm: (cwd: string, relativePath: string) => string;
1256
1265
 
1257
- export { AddonEntry, AddonInfo, Builder, BuilderName, BuilderOptions, BuilderResult, CLIOptions, CoreConfig, DocsOptions, Entry, IndexedStory, IndexerOptions, LoadOptions, LoadedPreset, NormalizedStoriesSpecifier, Options$1 as Options, OptionsEntry, PackageJson, Preset, PresetConfig, PresetProperty, PresetPropertyFn, Presets, Ref, ReleaseNotesData, Stats, StoriesEntry, StoryIndex, StoryIndexer, StorybookConfig, StorybookConfigOptions, TypescriptOptions, VersionCheck, boost, cache, checkAddonOrder, createFileSystemCache, filterPresetsConfig, findDistEsm, getAutoRefs, getDirectoryFromWorkingDir, getInterpretedFile, getInterpretedFileWithExt, getPresets, getPreviewBodyTemplate, getPreviewHeadTemplate, getPreviewMainTemplate, getProjectRoot, getRefs, getStorybookConfiguration, getStorybookInfo, globToRegexp, handlebars, interopRequireDefault, interpolate, loadAllPresets, loadCustomPresets, loadEnvs, loadMainConfig, loadManagerOrAddonsFile, loadPreset, loadPreviewOrConfigFile, logConfig, nodePathsToArray, normalizeStories, normalizeStoriesEntry, normalizeStoryPath, readTemplate, resolveAddonName, resolvePathInStorybookCache, serverRequire, serverResolve, stringifyEnvs, stringifyProcessEnvs, useProgressReporting, validateConfigurationFiles };
1266
+ declare function isPreservingSymlinks(): boolean | undefined;
1267
+
1268
+ export { AddonEntry, AddonInfo, Builder, BuilderName, BuilderOptions, BuilderResult, CLIOptions, CoreConfig, DocsOptions, Entry, IndexedStory, IndexerOptions, LoadOptions, LoadedPreset, NormalizedStoriesSpecifier, Options$1 as Options, OptionsEntry, PackageJson, Preset, PresetConfig, PresetProperty, PresetPropertyFn, Presets, Ref, ReleaseNotesData, Stats, StoriesEntry, StoryIndex, StoryIndexer, StorybookConfig, StorybookConfigOptions, TypescriptOptions, VersionCheck, boost, cache, checkAddonOrder, createFileSystemCache, filterPresetsConfig, findDistEsm, getAutoRefs, getDirectoryFromWorkingDir, getInterpretedFile, getInterpretedFileWithExt, getPresets, getPreviewBodyTemplate, getPreviewHeadTemplate, getPreviewMainTemplate, getProjectRoot, getRefs, getStorybookConfiguration, getStorybookInfo, globToRegexp, handlebars, interopRequireDefault, interpolate, isPreservingSymlinks, loadAllPresets, loadCustomPresets, loadEnvs, loadMainConfig, loadManagerOrAddonsFile, loadPreset, loadPreviewOrConfigFile, logConfig, nodePathsToArray, normalizeStories, normalizeStoriesEntry, normalizeStoryPath, readTemplate, resolveAddonName, resolvePathInStorybookCache, serverRequire, serverResolve, stringifyEnvs, stringifyProcessEnvs, useProgressReporting, validateConfigurationFiles };
package/dist/index.js CHANGED
@@ -1,28 +1,28 @@
1
- "use strict";var Ve=Object.create;var R=Object.defineProperty;var Ke=Object.getOwnPropertyDescriptor;var Xe=Object.getOwnPropertyNames;var Ze=Object.getPrototypeOf,Qe=Object.prototype.hasOwnProperty;var er=(e,r)=>{for(var t in r)R(e,t,{get:r[t],enumerable:!0})},oe=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Xe(r))!Qe.call(e,n)&&n!==t&&R(e,n,{get:()=>r[n],enumerable:!(o=Ke(r,n))||o.enumerable});return e};var p=(e,r,t)=>(t=e!=null?Ve(Ze(e)):{},oe(r||!e||!e.__esModule?R(t,"default",{value:e,enumerable:!0}):t,e)),rr=e=>oe(R({},"__esModule",{value:!0}),e);var Ur={};er(Ur,{boost:()=>$,cache:()=>Sr,checkAddonOrder:()=>pr,createFileSystemCache:()=>D,filterPresetsConfig:()=>le,findDistEsm:()=>Br,getAutoRefs:()=>Ee,getDirectoryFromWorkingDir:()=>ze,getInterpretedFile:()=>u,getInterpretedFileWithExt:()=>U,getPresets:()=>he,getPreviewBodyTemplate:()=>Ar,getPreviewHeadTemplate:()=>Ir,getPreviewMainTemplate:()=>Fr,getProjectRoot:()=>dr,getRefs:()=>Cr,getStorybookConfiguration:()=>V,getStorybookInfo:()=>wr,globToRegexp:()=>ee,handlebars:()=>yr,interopRequireDefault:()=>E,interpolate:()=>Nr,loadAllPresets:()=>cr,loadCustomPresets:()=>H,loadEnvs:()=>lr,loadMainConfig:()=>hr,loadManagerOrAddonsFile:()=>Rr,loadPreset:()=>ue,loadPreviewOrConfigFile:()=>$r,logConfig:()=>Er,nodePathsToArray:()=>Y,normalizeStories:()=>_r,normalizeStoriesEntry:()=>We,normalizeStoryPath:()=>G,readTemplate:()=>Mr,resolveAddonName:()=>ge,resolvePathInStorybookCache:()=>Z,serverRequire:()=>h,serverResolve:()=>j,stringifyEnvs:()=>gr,stringifyProcessEnvs:()=>ur,useProgressReporting:()=>jr,validateConfigurationFiles:()=>w});module.exports=rr(Ur);var me=require("ts-dedent"),x=require("@storybook/node-logger");var S=p(require("path"));var B=p(require("fs")),$=new Set([".js",".jsx",".ts",".tsx",".cjs",".mjs"]);function tr(){return[...Array.from($)]}var ne=tr();function u(e){return ne.map(r=>e.endsWith(r)?e:`${e}${r}`).find(r=>B.default.existsSync(r))}function U(e){return ne.map(r=>({path:e.endsWith(r)?e:`${e}${r}`,ext:r})).find(r=>B.default.existsSync(r.path))}var se=!1;function E(e){if(se===!1){let{register:o}=require("esbuild-register/dist/node");se=!0,o({target:`node${process.version.slice(1)}`,format:"cjs",hookIgnoreNodeModules:!1,tsconfigRaw:`{
1
+ "use strict";var Ke=Object.create;var E=Object.defineProperty;var Xe=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var Qe=Object.getPrototypeOf,er=Object.prototype.hasOwnProperty;var rr=(e,r)=>{for(var t in r)E(e,t,{get:r[t],enumerable:!0})},oe=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Ze(r))!er.call(e,n)&&n!==t&&E(e,n,{get:()=>r[n],enumerable:!(o=Xe(r,n))||o.enumerable});return e};var f=(e,r,t)=>(t=e!=null?Ke(Qe(e)):{},oe(r||!e||!e.__esModule?E(t,"default",{value:e,enumerable:!0}):t,e)),tr=e=>oe(E({},"__esModule",{value:!0}),e);var qr={};rr(qr,{boost:()=>R,cache:()=>Ar,checkAddonOrder:()=>dr,createFileSystemCache:()=>D,filterPresetsConfig:()=>ge,findDistEsm:()=>Jr,getAutoRefs:()=>Se,getDirectoryFromWorkingDir:()=>We,getInterpretedFile:()=>u,getInterpretedFileWithExt:()=>J,getPresets:()=>be,getPreviewBodyTemplate:()=>Ir,getPreviewHeadTemplate:()=>Fr,getPreviewMainTemplate:()=>Nr,getProjectRoot:()=>mr,getRefs:()=>Er,getStorybookConfiguration:()=>V,getStorybookInfo:()=>kr,globToRegexp:()=>ee,handlebars:()=>hr,interopRequireDefault:()=>$,interpolate:()=>Tr,isPreservingSymlinks:()=>Ur,loadAllPresets:()=>fr,loadCustomPresets:()=>q,loadEnvs:()=>gr,loadMainConfig:()=>br,loadManagerOrAddonsFile:()=>Rr,loadPreset:()=>ye,loadPreviewOrConfigFile:()=>$r,logConfig:()=>Sr,nodePathsToArray:()=>Y,normalizeStories:()=>Mr,normalizeStoriesEntry:()=>Ye,normalizeStoryPath:()=>G,readTemplate:()=>Br,resolveAddonName:()=>ue,resolvePathInStorybookCache:()=>Z,serverRequire:()=>h,serverResolve:()=>S,stringifyEnvs:()=>ur,stringifyProcessEnvs:()=>yr,useProgressReporting:()=>jr,validateConfigurationFiles:()=>w});module.exports=tr(qr);var me=require("ts-dedent"),x=require("@storybook/node-logger"),le=require("path");var j=f(require("path"));var B=f(require("fs")),R=new Set([".js",".jsx",".ts",".tsx",".cjs",".mjs"]);function or(){return[...Array.from(R)]}var ne=or();function u(e){return ne.map(r=>e.endsWith(r)?e:`${e}${r}`).find(r=>B.default.existsSync(r))}function J(e){return ne.map(r=>({path:e.endsWith(r)?e:`${e}${r}`,ext:r})).find(r=>B.default.existsSync(r.path))}var se=!1;function $(e){if(se===!1){let{register:o}=require("esbuild-register/dist/node");se=!0,o({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 r=require(e);return typeof r=="object"&&r!==null&&typeof r.default<"u"?r.default:r}function or(e){for(let r=0;r<e.length;r+=1){let t=U(e[r]);if(t)return t}}function h(e){let r=j(e);return r?E(r):null}function j(e){let r=Array.isArray(e)?e:[e],t=or(r);return t?t.path:null}var P=require("ts-dedent"),ie=p(require("util-deprecate")),ae=p(require("glob")),b=p(require("path"));var nr=(0,ie.default)(()=>{},P.dedent`
6
+ }`})}let r=require(e);return typeof r=="object"&&r!==null&&typeof r.default<"u"?r.default:r}function nr(e){for(let r=0;r<e.length;r+=1){let t=J(e[r]);if(t)return t}}function h(e){let r=S(e);return r?$(r):null}function S(e){let r=Array.isArray(e)?e:[e],t=nr(r);return t?t.path:null}var P=require("ts-dedent"),ie=f(require("util-deprecate")),ae=f(require("glob")),b=f(require("path"));var sr=(0,ie.default)(()=>{},P.dedent`
7
7
  Configuration files such as "config", "presets" and "addons" are deprecated and will be removed in Storybook 7.0.
8
8
  Read more about it in the migration guide: https://github.com/storybookjs/storybook/blob/master/MIGRATION.md#to-mainjs-configuration
9
- `),q=(e,r,t)=>{let o=b.default.resolve(t,e),n=b.default.resolve(t,r);throw new Error(P.dedent`
9
+ `),U=(e,r,t)=>{let o=b.default.resolve(t,e),n=b.default.resolve(t,r);throw new Error(P.dedent`
10
10
  You have mixing configuration files:
11
11
  ${o}
12
12
  ${n}
13
13
  "${e}" and "${r}" cannot coexist.
14
14
  Please check the documentation for migration steps: https://github.com/storybookjs/storybook/blob/master/MIGRATION.md#to-mainjs-configuration
15
- `)};function w(e){let r=`{${Array.from($).join(",")}}`,t=i=>!!ae.default.sync(b.default.resolve(e,`${i}${r}`)).length,o=t("main"),n=t("config");if(!o&&!n)throw new Error(P.dedent`
15
+ `)};function w(e){let r=`{${Array.from(R).join(",")}}`,t=i=>!!ae.default.sync(b.default.resolve(e,`${i}${r}`)).length,o=t("main"),n=t("config");if(!o&&!n)throw new Error(P.dedent`
16
16
  No configuration files have been found in your configDir (${b.default.resolve(e)}).
17
17
  Storybook needs either a "main" or "config" file.
18
18
  `);if(o&&n)throw new Error(P.dedent`
19
- You have both a "main" and a "config". Please remove the "config" file from your configDir (${b.default.resolve(e,"config")})`);let s=t("presets");o&&s&&q("main","presets",e),t("preview")&&n&&q("preview","config",e);let c=t("addons");t("manager")&&c&&q("manager","addons",e),(s||n||c)&&nr()}function H({configDir:e}){w(e);let r=h(S.default.resolve(e,"presets"));if(h(S.default.resolve(e,"main"))){let o=j(S.default.resolve(e,"main"));if(o)return[o]}return r||[]}var ce=p(require("resolve-from")),fe=(e,r)=>{try{return(0,ce.default)(e,r)}catch{return}},pe=e=>{try{return require.resolve(e)}catch{return}};var k=e=>e!=null&&typeof e=="object"&&Array.isArray(e)===!1,sr=e=>typeof e=="function";function le(e){return e.filter(r=>{let t=typeof r=="string"?r:r.name;return!/@storybook[\\\\/]preset-typescript/.test(t)})}function de(e,r,t){return sr(e)?[...e({...t,...r})]:Array.isArray(e)?[...e]:[]}var ge=(e,r,t)=>{let o=r.startsWith("/")?pe:fe.bind(null,e),n=o(r);if(n){if(r.match(/\/(manager|register(-panel)?)(\.(js|ts|tsx|jsx))?$/))return{type:"virtual",name:r,managerEntries:[n]};if(r.match(/\/(preset)(\.(js|ts|tsx|jsx))?$/))return{type:"presets",name:n}}let s=r,f=o(`${s}/manager`),c=o(`${s}/register`)||o(`${s}/register-panel`),d=o(`${s}/preview`),i=o(`${s}/preset`);if(!(f||d)&&i)return{type:"presets",name:i};if(f||c||d||i){let a=[];return f&&a.push(f),!f&&c&&!i&&a.push(c),{type:"virtual",name:s,...a.length?{managerEntries:a}:{},...d?{previewAnnotations:[d]}:{},...i?{presets:[{name:i,options:t}]}:{}}}if(n)return{type:"presets",name:n}},ir=({configDir:e})=>r=>{let t=k(r)&&r.options||void 0,o=k(r)?r.name:r;try{let n=ge(e,o,t);return{...t?{options:t}:{},...n}}catch{x.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/
20
- ${r}`)}};async function ar(e){if(e.type==="virtual"){let{type:t,name:o,...n}=e;return n}let r=e.name?e.name:e;return E(r)}async function ue(e,r,t){try{let o=e.name?e.name:e,n=e.options?e.options:{},s=await ar(e);if(typeof s=="function"&&(s=s(t,n)),Array.isArray(s))return A(s,r+1,t);if(k(s)){let{addons:f,presets:c,...d}=s,i=de(c,n,t),a=de(f,n,t);return[...await A([...i],r+1,t),...await A([...a.map(ir(t))].filter(Boolean),r+1,t),{name:o,preset:d,options:n}]}throw new Error(me.dedent`
19
+ You have both a "main" and a "config". Please remove the "config" file from your configDir (${b.default.resolve(e,"config")})`);let s=t("presets");o&&s&&U("main","presets",e),t("preview")&&n&&U("preview","config",e);let a=t("addons");t("manager")&&a&&U("manager","addons",e),(s||n||a)&&sr()}function q({configDir:e}){w(e);let r=h(j.default.resolve(e,"presets"));if(h(j.default.resolve(e,"main"))){let o=S(j.default.resolve(e,"main"));if(o)return[o]}return r||[]}var ce=f(require("resolve-from")),fe=(e,r)=>{try{return(0,ce.default)(e,r)}catch{return}},pe=e=>{try{return require.resolve(e)}catch{return}};var k=e=>e!=null&&typeof e=="object"&&Array.isArray(e)===!1,ir=e=>typeof e=="function";function ge(e){return e.filter(r=>{let t=typeof r=="string"?r:r.name;return!/@storybook[\\\\/]preset-typescript/.test(t)})}function de(e,r,t){return ir(e)?[...e({...t,...r})]:Array.isArray(e)?[...e]:[]}var ue=(e,r,t)=>{let o=r.startsWith("/")?pe:fe.bind(null,e),n=o(r);if(n){if(r.match(/\/(manager|register(-panel)?)(\.(js|ts|tsx|jsx))?$/))return{type:"virtual",name:r,managerEntries:[n]};if(r.match(/\/(preset)(\.(js|ts|tsx|jsx))?$/))return{type:"presets",name:n}}let s=n&&o(`${r}/package.json`),p=s&&(0,le.dirname)(s),a=g=>{if(o(`${r}${g}`))return`${p}${g}`},d=r,i=a("/manager"),c=a("/register")||a("/register-panel"),m=a("/preview"),l=o(`${d}/preset`);if(!(i||m)&&l)return{type:"presets",name:l};if(i||c||m||l){let g=[];return i&&g.push(i),!i&&c&&!l&&g.push(c),{type:"virtual",name:d,...g.length?{managerEntries:g}:{},...m?{previewAnnotations:[m]}:{},...l?{presets:[{name:l,options:t}]}:{}}}if(n)return{type:"presets",name:n}},ar=({configDir:e})=>r=>{let t=k(r)&&r.options||void 0,o=k(r)?r.name:r;try{let n=ue(e,o,t);return{...t?{options:t}:{},...n}}catch{x.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/
20
+ ${r}`)}};async function cr(e){if(e.type==="virtual"){let{type:t,name:o,...n}=e;return n}let r=e.name?e.name:e;return $(r)}async function ye(e,r,t){try{let o=e.name?e.name:e,n=e.options?e.options:{},s=await cr(e);if(typeof s=="function"&&(s=s(t,n)),Array.isArray(s))return A(s,r+1,t);if(k(s)){let{addons:p,presets:a,...d}=s,i=de(a,n,t),c=de(p,n,t);return[...await A([...i],r+1,t),...await A([...c.map(ar(t))].filter(Boolean),r+1,t),{name:o,preset:d,options:n}]}throw new Error(me.dedent`
21
21
  ${e} is not a valid preset
22
- `)}catch(o){let n=r>0?` Failed to load preset: ${JSON.stringify(e)} on level ${r}`:` Failed to load preset: ${JSON.stringify(e)}`;return x.logger.warn(n),x.logger.error(o),[]}}async function A(e,r,t){return!e||!Array.isArray(e)||!e.length?[]:(r||x.logger.info("=> Loading presets"),(await Promise.all(e.map(async o=>ue(o,r,t)))).reduce((o,n)=>o.concat(n),[]))}function ye(e,r,t,o,n){let s=new Promise(f=>f(t));return e.length?e.reduce((f,{preset:c,options:d})=>{let i=c[r];if(!i)return f;if(typeof i=="function"){let a=i,m={preset:c,combinedOptions:{...n,...o,...d,presetsList:e,presets:{apply:async(l,g,C={})=>ye(e,l,g,C,n)}}};return f.then(l=>a.call(m.preset,l,m.combinedOptions))}return f.then(a=>Array.isArray(a)&&Array.isArray(i)?[...a,...i]:k(a)&&k(i)?{...a,...i}:i)},s):s}async function he(e,r){let t=await A(e,0,r);return{apply:async(o,n,s={})=>ye(t,o,n,s,r)}}async function cr(e){let{corePresets:r=[],overridePresets:t=[],...o}=e,n=[...r,...H(e),...t],s=le(n);return s.length<n.length&&x.logger.warn("Storybook now supports TypeScript natively. You can safely remove `@storybook/preset-typescript`."),he(s,o)}var{logger:J}=require("@storybook/node-logger"),z=e=>r=>{let t=r.name||r;return t&&t.includes(e)},fr=(e,r,t)=>{let o=e.findIndex(z("@storybook/addon-essentials")),n=e.findIndex(z(r.name)),s=e.findIndex(z(t.name));return n===-1&&r.inEssentials&&(n=o),s===-1&&t.inEssentials&&(s=o),n!==-1&&s!==-1&&n<=s},pr=async({before:e,after:r,configFile:t,getConfig:o})=>{try{let n=await o(t);if(!(n!=null&&n.addons)){J.warn("Unable to find 'addons' config in main Storybook config");return}if(!fr(n.addons,e,r)){let s=" (or '@storybook/addon-essentials')",f=`'${e.name}'${e.inEssentials?s:""}`,c=`'${r.name}'${r.inEssentials?s:""}`;J.warn(`Expected ${f} to be listed before ${c} in main Storybook config.`)}}catch{J.warn(`Unable to load config file: ${t}`)}};var be=require("lazy-universal-dotenv");var O=p(require("path")),W=p(require("find-up")),dr=()=>{let e;try{let r=W.default.sync(".git",{type:"directory"});r&&(e=e||O.default.join(r,".."))}catch{}try{let r=W.default.sync(".svn",{type:"directory"});r&&(e=e||O.default.join(r,".."))}catch{}try{e=e||__dirname.split("node_modules")[0]}catch{}return e||process.cwd()},Y=e=>e.split(process.platform==="win32"?";":":").filter(Boolean).map(r=>O.default.resolve("./",r)),mr=/^\.{1,2}([/\\]|$)/;function G(e){return mr.test(e)?e:`.${O.default.sep}${e}`}function lr(e={}){let r=e.production?"production":"development",t={NODE_ENV:process.env.NODE_ENV||r,NODE_PATH:process.env.NODE_PATH||"",STORYBOOK:process.env.STORYBOOK||"true",PUBLIC_URL:e.production?".":""};Object.keys(process.env).filter(c=>/^STORYBOOK_/.test(c)).forEach(c=>{t[c]=process.env[c]});let o=Object.entries(t).reduce((c,[d,i])=>Object.assign(c,{[d]:JSON.stringify(i)}),{}),{stringified:n,raw:s}=(0,be.getEnvironment)({nodeEnv:t.NODE_ENV}),f={...t,...s};return f.NODE_PATH=Y(f.NODE_PATH||""),{stringified:{...o,...n},raw:f}}var gr=e=>Object.entries(e).reduce((r,[t,o])=>(r[t]=JSON.stringify(o),r),{}),ur=e=>Object.entries(e).reduce((t,[o,n])=>(t[`process.env.${o}`]=JSON.stringify(n),t),{"process.env.XSTORYBOOK_EXAMPLE_APP":'""'});var xe=p(require("handlebars"));function yr(e,r){return xe.default.compile(e)(r)}var ve=p(require("path"));function hr({configDir:e}){return w(e),h(ve.default.resolve(e,"main"))}function V(e,r,t){if(!e)return null;let o=e.split(/[\s='"]+/),n=o.indexOf(t);return n===-1&&(n=o.indexOf(r)),n===-1?null:o[n+1]}var ke=p(require("path")),Oe=p(require("fs-extra"));var Pe={"@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"},we=console,br=({dependencies:e,devDependencies:r,peerDependencies:t},o)=>[Object.entries(e||{}).find(o),Object.entries(r||{}).find(o),Object.entries(t||{}).find(o)],xr=e=>{let[r,t,o]=br(e,([c])=>Pe[c]),[n,s]=r||t||o||[],f=n?Pe[n]:void 0;return r&&t&&r[0]===t[0]&&we.warn(`Found "${r[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),r&&o&&r[0]===o[0]&&we.warn(`Found "${r[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{framework:f,version:s,frameworkPackage:n}},vr=["ts","js","tsx","jsx","mjs","cjs"],K=(e,r)=>{let t=ke.default.join(r,e),o=vr.find(n=>Oe.default.existsSync(`${t}.${n}`));return o?`${t}.${o}`:null},Pr=e=>{var o;let r=".storybook",t=(o=e.scripts)==null?void 0:o.storybook;if(t){let n=V(t,"-c","--config-dir");n&&(r=n)}return{configDir:r,mainConfig:K("main",r),previewConfig:K("preview",r),managerConfig:K("manager",r)}},wr=e=>{let r=xr(e),t=Pr(e);return{...r,...t}};var X=require("fs-extra"),I=require("path"),Ce=p(require("find-up")),Re=p(require("resolve-from")),$e=require("@storybook/node-logger"),Ee=async e=>{let r=await(0,Ce.default)("package.json",{cwd:e.configDir});if(!r)return{};let t=(0,I.dirname)(r),{dependencies:o=[],devDependencies:n=[]}=await(0,X.readJSON)(r)||{},s=Object.keys({...o,...n});return(await Promise.all(s.map(async c=>{try{let d=(0,Re.default)(t,(0,I.join)(c,"package.json")),{storybook:i,name:a,version:m}=await(0,X.readJSON)(d)||{};if(i!=null&&i.url)return{id:a,...i,version:m}}catch{$e.logger.warn(`unable to find package.json for ${c}`);return}}))).filter(Boolean).reduce((c,d)=>({...c,[d.id]:{id:d.id.toLowerCase(),url:je(d.url),title:d.title,version:d.version}}),{})},kr=e=>fetch(`${e}/iframe.html`).then(async({ok:r,status:t})=>{if(r){if(t!==200)return!1;let o=await fetch(`${e}/iframe.html`,{headers:{Accept:"application/json"}});if(o.ok&&(await o.json().catch(n=>({}))).loginUrl)return!1}return r},()=>!1),je=e=>e.replace(/\/$/,""),Or=e=>{let r=e.replace(/[A-Z]/g,t=>` ${t}`).replace(/[-_][A-Z]/gi,t=>` ${t.toUpperCase()}`).replace(/-/g," ").replace(/_/g," ");return`${r.substring(0,1).toUpperCase()}${r.substring(1)}`.trim()};async function Cr(e){let r=await e.presets.apply("refs",await Ee(e));return Object.entries(r).forEach(([t,o])=>{if(o.disable){delete r[t];return}r[t.toLowerCase()]={...o,id:t.toLowerCase(),title:o.title||Or(o.id||t),url:je(o.url)}}),await Promise.all(Object.entries(r).map(async([t,o])=>{let n=await kr(o.url);r[t]={...o,type:n?"server-checked":"unknown"}})),r}var F=p(require("path")),Se=require("@storybook/node-logger"),Ae=require("ts-dedent");function Rr({configDir:e}){let r=u(F.default.resolve(e,"addons")),t=u(F.default.resolve(e,"manager"));if((r||t)&&Se.logger.info("=> Loading custom manager config"),r&&t)throw new Error(Ae.dedent`
23
- You have both a "addons.js" and a "manager.js", remove the "addons.js" file from your configDir (${F.default.resolve(e,"addons")})`);return t||r}var N=p(require("path")),Ie=require("ts-dedent");function $r({configDir:e}){let r=u(N.default.resolve(e,"config")),t=u(N.default.resolve(e,"preview"));if(r&&t)throw new Error(Ie.dedent`
24
- You have both a "config.js" and a "preview.js", remove the "config.js" file from your configDir (${N.default.resolve(e,"config")})`);return t||r}var Fe=p(require("chalk"));function Er(e,r){console.log(Fe.default.cyan(e)),console.dir(r,{depth:null})}var Ne=p(require("pretty-hrtime")),Te=e=>(0,Ne.default)(process.hrtime(e)).replace(" ms"," milliseconds").replace(" s"," seconds").replace(" m"," minutes");var jr=async(e,r,t)=>{var d;let o=0,n,s=()=>{};e.get("/progress",(i,a)=>{let m=!1,l=()=>{m=!0,a.end()};a.on("close",l),!(m||a.writableEnded)&&(a.setHeader("Cache-Control","no-cache"),a.setHeader("Content-Type","text/event-stream"),a.setHeader("Connection","keep-alive"),a.flushHeaders(),s=g=>{m||a.writableEnded||(a.write(`data: ${JSON.stringify(g)}
22
+ `)}catch(o){let n=r>0?` Failed to load preset: ${JSON.stringify(e)} on level ${r}`:` Failed to load preset: ${JSON.stringify(e)}`;return x.logger.warn(n),x.logger.error(o),[]}}async function A(e,r,t){return!e||!Array.isArray(e)||!e.length?[]:(r||x.logger.info("=> Loading presets"),(await Promise.all(e.map(async o=>ye(o,r,t)))).reduce((o,n)=>o.concat(n),[]))}function he(e,r,t,o,n){let s=new Promise(p=>p(t));return e.length?e.reduce((p,{preset:a,options:d})=>{let i=a[r];if(!i)return p;if(typeof i=="function"){let c=i,m={preset:a,combinedOptions:{...n,...o,...d,presetsList:e,presets:{apply:async(l,g,C={})=>he(e,l,g,C,n)}}};return p.then(l=>c.call(m.preset,l,m.combinedOptions))}return p.then(c=>Array.isArray(c)&&Array.isArray(i)?[...c,...i]:k(c)&&k(i)?{...c,...i}:i)},s):s}async function be(e,r){let t=await A(e,0,r);return{apply:async(o,n,s={})=>he(t,o,n,s,r)}}async function fr(e){let{corePresets:r=[],overridePresets:t=[],...o}=e,n=[...r,...q(e),...t],s=ge(n);return s.length<n.length&&x.logger.warn("Storybook now supports TypeScript natively. You can safely remove `@storybook/preset-typescript`."),be(s,o)}var{logger:z}=require("@storybook/node-logger"),H=e=>r=>{let t=r.name||r;return t&&t.includes(e)},pr=(e,r,t)=>{let o=e.findIndex(H("@storybook/addon-essentials")),n=e.findIndex(H(r.name)),s=e.findIndex(H(t.name));return n===-1&&r.inEssentials&&(n=o),s===-1&&t.inEssentials&&(s=o),n!==-1&&s!==-1&&n<=s},dr=async({before:e,after:r,configFile:t,getConfig:o})=>{try{let n=await o(t);if(!(n!=null&&n.addons)){z.warn("Unable to find 'addons' config in main Storybook config");return}if(!pr(n.addons,e,r)){let s=" (or '@storybook/addon-essentials')",p=`'${e.name}'${e.inEssentials?s:""}`,a=`'${r.name}'${r.inEssentials?s:""}`;z.warn(`Expected ${p} to be listed before ${a} in main Storybook config.`)}}catch{z.warn(`Unable to load config file: ${t}`)}};var xe=require("lazy-universal-dotenv");var O=f(require("path")),W=f(require("find-up")),mr=()=>{let e;try{let r=W.default.sync(".git",{type:"directory"});r&&(e=e||O.default.join(r,".."))}catch{}try{let r=W.default.sync(".svn",{type:"directory"});r&&(e=e||O.default.join(r,".."))}catch{}try{e=e||__dirname.split("node_modules")[0]}catch{}return e||process.cwd()},Y=e=>e.split(process.platform==="win32"?";":":").filter(Boolean).map(r=>O.default.resolve("./",r)),lr=/^\.{1,2}([/\\]|$)/;function G(e){return lr.test(e)?e:`.${O.default.sep}${e}`}function gr(e={}){let r=e.production?"production":"development",t={NODE_ENV:process.env.NODE_ENV||r,NODE_PATH:process.env.NODE_PATH||"",STORYBOOK:process.env.STORYBOOK||"true",PUBLIC_URL:e.production?".":""};Object.keys(process.env).filter(a=>/^STORYBOOK_/.test(a)).forEach(a=>{t[a]=process.env[a]});let o=Object.entries(t).reduce((a,[d,i])=>Object.assign(a,{[d]:JSON.stringify(i)}),{}),{stringified:n,raw:s}=(0,xe.getEnvironment)({nodeEnv:t.NODE_ENV}),p={...t,...s};return p.NODE_PATH=Y(p.NODE_PATH||""),{stringified:{...o,...n},raw:p}}var ur=e=>Object.entries(e).reduce((r,[t,o])=>(r[t]=JSON.stringify(o),r),{}),yr=e=>Object.entries(e).reduce((t,[o,n])=>(t[`process.env.${o}`]=JSON.stringify(n),t),{"process.env.XSTORYBOOK_EXAMPLE_APP":'""'});var ve=f(require("handlebars"));function hr(e,r){return ve.default.compile(e)(r)}var Pe=f(require("path"));function br({configDir:e}){return w(e),h(Pe.default.resolve(e,"main"))}function V(e,r,t){if(!e)return null;let o=e.split(/[\s='"]+/),n=o.indexOf(t);return n===-1&&(n=o.indexOf(r)),n===-1?null:o[n+1]}var Oe=f(require("path")),Ce=f(require("fs-extra"));var we={"@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"},ke=console,xr=({dependencies:e,devDependencies:r,peerDependencies:t},o)=>[Object.entries(e||{}).find(o),Object.entries(r||{}).find(o),Object.entries(t||{}).find(o)],vr=e=>{let[r,t,o]=xr(e,([a])=>we[a]),[n,s]=r||t||o||[],p=n?we[n]:void 0;return r&&t&&r[0]===t[0]&&ke.warn(`Found "${r[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),r&&o&&r[0]===o[0]&&ke.warn(`Found "${r[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{framework:p,version:s,frameworkPackage:n}},Pr=["ts","js","tsx","jsx","mjs","cjs"],K=(e,r)=>{let t=Oe.default.join(r,e),o=Pr.find(n=>Ce.default.existsSync(`${t}.${n}`));return o?`${t}.${o}`:null},wr=e=>{var o;let r=".storybook",t=(o=e.scripts)==null?void 0:o.storybook;if(t){let n=V(t,"-c","--config-dir");n&&(r=n)}return{configDir:r,mainConfig:K("main",r),previewConfig:K("preview",r),managerConfig:K("manager",r)}},kr=e=>{let r=vr(e),t=wr(e);return{...r,...t}};var X=require("fs-extra"),I=require("path"),Ee=f(require("find-up")),Re=f(require("resolve-from")),$e=require("@storybook/node-logger"),Se=async e=>{let r=await(0,Ee.default)("package.json",{cwd:e.configDir});if(!r)return{};let t=(0,I.dirname)(r),{dependencies:o=[],devDependencies:n=[]}=await(0,X.readJSON)(r)||{},s=Object.keys({...o,...n});return(await Promise.all(s.map(async a=>{try{let d=(0,Re.default)(t,(0,I.join)(a,"package.json")),{storybook:i,name:c,version:m}=await(0,X.readJSON)(d)||{};if(i!=null&&i.url)return{id:c,...i,version:m}}catch{$e.logger.warn(`unable to find package.json for ${a}`);return}}))).filter(Boolean).reduce((a,d)=>({...a,[d.id]:{id:d.id.toLowerCase(),url:je(d.url),title:d.title,version:d.version}}),{})},Or=e=>fetch(`${e}/iframe.html`).then(async({ok:r,status:t})=>{if(r){if(t!==200)return!1;let o=await fetch(`${e}/iframe.html`,{headers:{Accept:"application/json"}});if(o.ok&&(await o.json().catch(n=>({}))).loginUrl)return!1}return r},()=>!1),je=e=>e.replace(/\/$/,""),Cr=e=>{let r=e.replace(/[A-Z]/g,t=>` ${t}`).replace(/[-_][A-Z]/gi,t=>` ${t.toUpperCase()}`).replace(/-/g," ").replace(/_/g," ");return`${r.substring(0,1).toUpperCase()}${r.substring(1)}`.trim()};async function Er(e){let r=await e.presets.apply("refs",await Se(e));return Object.entries(r).forEach(([t,o])=>{if(o.disable){delete r[t];return}r[t.toLowerCase()]={...o,id:t.toLowerCase(),title:o.title||Cr(o.id||t),url:je(o.url)}}),await Promise.all(Object.entries(r).map(async([t,o])=>{let n=await Or(o.url);r[t]={...o,type:n?"server-checked":"unknown"}})),r}var F=f(require("path")),Ae=require("@storybook/node-logger"),Ie=require("ts-dedent");function Rr({configDir:e}){let r=u(F.default.resolve(e,"addons")),t=u(F.default.resolve(e,"manager"));if((r||t)&&Ae.logger.info("=> Loading custom manager config"),r&&t)throw new Error(Ie.dedent`
23
+ You have both a "addons.js" and a "manager.js", remove the "addons.js" file from your configDir (${F.default.resolve(e,"addons")})`);return t||r}var N=f(require("path")),Fe=require("ts-dedent");function $r({configDir:e}){let r=u(N.default.resolve(e,"config")),t=u(N.default.resolve(e,"preview"));if(r&&t)throw new Error(Fe.dedent`
24
+ You have both a "config.js" and a "preview.js", remove the "config.js" file from your configDir (${N.default.resolve(e,"config")})`);return t||r}var Ne=f(require("chalk"));function Sr(e,r){console.log(Ne.default.cyan(e)),console.dir(r,{depth:null})}var Te=f(require("pretty-hrtime")),De=e=>(0,Te.default)(process.hrtime(e)).replace(" ms"," milliseconds").replace(" s"," seconds").replace(" m"," minutes");var jr=async(e,r,t)=>{var d;let o=0,n,s=()=>{};e.get("/progress",(i,c)=>{let m=!1,l=()=>{m=!0,c.end()};c.on("close",l),!(m||c.writableEnded)&&(c.setHeader("Cache-Control","no-cache"),c.setHeader("Content-Type","text/event-stream"),c.setHeader("Connection","keep-alive"),c.flushHeaders(),s=g=>{m||c.writableEnded||(c.write(`data: ${JSON.stringify(g)}
25
25
 
26
- `),a.flush(),g.value===1&&l())})});let f=(i,a,m)=>{o=Math.max(i,o);let l={value:o,message:a.charAt(0).toUpperCase()+a.slice(1)};if(a==="building"){let g=m&&m.match(/(\d+)\/(\d+)/)||[],C=parseInt(g[1],10),M=parseInt(g[2],10);!Number.isNaN(C)&&!Number.isNaN(M)&&(l.modules={complete:C,total:M},n=M)}o===1&&(t.cache&&t.cache.set("modulesCount",n),l.message||(l.message=`Completed in ${Te(r)}.`)),s(l)},c=await((d=t.cache)==null?void 0:d.get("modulesCount").catch(()=>{}))||1e3;return{handler:f,modulesCount:c}};var T=p(require("path")),De=p(require("pkg-dir"));function Z(e){let r=process.cwd(),t=De.default.sync(r),o;return t?o=T.default.resolve(t,"node_modules/.cache/storybook"):o=T.default.resolve(r,".cache/storybook"),T.default.join(o,e)}var Le=p(require("file-system-cache"));function D(e){return(0,Le.default)(e)}var Sr=D({basePath:Z("dev-server"),ns:"storybook"});var Q=p(require("path")),L=require("pkg-dir"),y=p(require("fs")),_e=(e,r={})=>Object.entries(r).reduce((t,[o,n])=>t.replace(new RegExp(`%${o}%`,"g"),n),e);function Ar(e,r){let t=y.default.readFileSync(`${(0,L.sync)(__dirname)}/templates/base-preview-body.html`,"utf8"),o=Q.default.resolve(e,"preview-body.html"),n=t;return y.default.existsSync(o)&&(n=y.default.readFileSync(o,"utf8")+n),_e(n,r)}function Ir(e,r){let t=y.default.readFileSync(`${(0,L.sync)(__dirname)}/templates/base-preview-head.html`,"utf8"),o=Q.default.resolve(e,"preview-head.html"),n=t;return y.default.existsSync(o)&&(n+=y.default.readFileSync(o,"utf8")),_e(n,r)}function Fr(){return`${(0,L.sync)(__dirname)}/templates/preview.ejs`}var Nr=(e,r)=>Object.entries(r).reduce((t,[o,n])=>{let s=n.replace(/\\/g,"/").replace(/\$/g,"$$$");return t.replace(new RegExp(`{{${o}}}`,"g"),s)},e);var Me=require("picomatch");function ee(e){let r=(0,Me.makeRe)(e,{fastpaths:!1,noglobstar:!1,bash:!1});if(!r.source.startsWith("^"))throw new Error(`Invalid glob: >> ${e} >> ${r}`);return e.startsWith("./")?new RegExp(["^\\.",e.startsWith("./**")?"":"[\\\\/]",r.source.substring(1)].join("")):r}var Ue=p(require("fs")),v=p(require("path")),qe=p(require("util-deprecate")),He=require("ts-dedent"),Je=require("picomatch"),re=p(require("slash"));var _="",Be="**/*.@(mdx|stories.mdx|stories.tsx|stories.ts|stories.jsx|stories.js)",Tr=(0,qe.default)(e=>e.input.replace(e[1],`@${e[1]}`),He.dedent`
26
+ `),c.flush(),g.value===1&&l())})});let p=(i,c,m)=>{o=Math.max(i,o);let l={value:o,message:c.charAt(0).toUpperCase()+c.slice(1)};if(c==="building"){let g=m&&m.match(/(\d+)\/(\d+)/)||[],C=parseInt(g[1],10),M=parseInt(g[2],10);!Number.isNaN(C)&&!Number.isNaN(M)&&(l.modules={complete:C,total:M},n=M)}o===1&&(t.cache&&t.cache.set("modulesCount",n),l.message||(l.message=`Completed in ${De(r)}.`)),s(l)},a=await((d=t.cache)==null?void 0:d.get("modulesCount").catch(()=>{}))||1e3;return{handler:p,modulesCount:a}};var T=f(require("path")),Le=f(require("pkg-dir"));function Z(e){let r=process.cwd(),t=Le.default.sync(r),o;return t?o=T.default.resolve(t,"node_modules/.cache/storybook"):o=T.default.resolve(r,".cache/storybook"),T.default.join(o,e)}var _e=f(require("file-system-cache"));function D(e){return(0,_e.default)(e)}var Ar=D({basePath:Z("dev-server"),ns:"storybook"});var Q=f(require("path")),L=require("pkg-dir"),y=f(require("fs")),Me=(e,r={})=>Object.entries(r).reduce((t,[o,n])=>t.replace(new RegExp(`%${o}%`,"g"),n),e);function Ir(e,r){let t=y.default.readFileSync(`${(0,L.sync)(__dirname)}/templates/base-preview-body.html`,"utf8"),o=Q.default.resolve(e,"preview-body.html"),n=t;return y.default.existsSync(o)&&(n=y.default.readFileSync(o,"utf8")+n),Me(n,r)}function Fr(e,r){let t=y.default.readFileSync(`${(0,L.sync)(__dirname)}/templates/base-preview-head.html`,"utf8"),o=Q.default.resolve(e,"preview-head.html"),n=t;return y.default.existsSync(o)&&(n+=y.default.readFileSync(o,"utf8")),Me(n,r)}function Nr(){return`${(0,L.sync)(__dirname)}/templates/preview.ejs`}var Tr=(e,r)=>Object.entries(r).reduce((t,[o,n])=>{let s=n.replace(/\\/g,"/").replace(/\$/g,"$$$");return t.replace(new RegExp(`{{${o}}}`,"g"),s)},e);var Be=require("picomatch");function ee(e){let r=(0,Be.makeRe)(e,{fastpaths:!1,noglobstar:!1,bash:!1});if(!r.source.startsWith("^"))throw new Error(`Invalid glob: >> ${e} >> ${r}`);return e.startsWith("./")?new RegExp(["^\\.",e.startsWith("./**")?"":"[\\\\/]",r.source.substring(1)].join("")):r}var Ue=f(require("fs")),v=f(require("path")),qe=f(require("util-deprecate")),ze=require("ts-dedent"),He=require("picomatch"),re=f(require("slash"));var _="",Je="**/*.@(mdx|stories.mdx|stories.tsx|stories.ts|stories.jsx|stories.js)",Dr=(0,qe.default)(e=>e.input.replace(e[1],`@${e[1]}`),ze.dedent`
27
27
  You have specified an invalid glob, we've attempted to fix it, please ensure that the glob you specify is valid. See: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#correct-globs-in-mainjs
28
- `),Dr=e=>{let r=e.match(/\.(\([^)]+\))/);return r?Tr(r):e},Lr=(e,r)=>{try{return Ue.default.lstatSync(v.default.resolve(e,r)).isDirectory()}catch{return!1}},ze=({configDir:e,workingDir:r,directory:t})=>{let o=v.default.resolve(e,t),n=v.default.relative(r,o);return G(n)},We=(e,{configDir:r,workingDir:t})=>{let o;if(typeof e=="string"){let d=Dr(e),i=(0,Je.scan)(d);if(i.isGlob){let a=i.prefix+i.base,m=i.glob;o={titlePrefix:_,directory:a,files:m}}else Lr(r,e)?o={titlePrefix:_,directory:e,files:Be}:o={titlePrefix:_,directory:v.default.dirname(e),files:v.default.basename(e)}}else o={titlePrefix:_,files:Be,...e};let n=(0,re.default)(o.files),{directory:s}=o,f=(0,re.default)(ze({configDir:r,workingDir:t,directory:s})).replace(/\/$/,""),c=ee(`${f}/${n}`);return{...o,directory:f,importPathMatcher:c}},_r=(e,r)=>e.map(t=>We(t,r));var Ye=p(require("fs-extra"));async function Mr(e){return Ye.default.readFile(e,{encoding:"utf8"})}var te=p(require("path")),Ge=require("find-up"),Br=(e,r)=>{let t=(0,Ge.sync)("package.json",{cwd:e});if(!t)throw new Error(`Could not find package.json in: ${e}`);let o=te.default.dirname(t);return te.default.join(o,"dist","esm",r)};0&&(module.exports={boost,cache,checkAddonOrder,createFileSystemCache,filterPresetsConfig,findDistEsm,getAutoRefs,getDirectoryFromWorkingDir,getInterpretedFile,getInterpretedFileWithExt,getPresets,getPreviewBodyTemplate,getPreviewHeadTemplate,getPreviewMainTemplate,getProjectRoot,getRefs,getStorybookConfiguration,getStorybookInfo,globToRegexp,handlebars,interopRequireDefault,interpolate,loadAllPresets,loadCustomPresets,loadEnvs,loadMainConfig,loadManagerOrAddonsFile,loadPreset,loadPreviewOrConfigFile,logConfig,nodePathsToArray,normalizeStories,normalizeStoriesEntry,normalizeStoryPath,readTemplate,resolveAddonName,resolvePathInStorybookCache,serverRequire,serverResolve,stringifyEnvs,stringifyProcessEnvs,useProgressReporting,validateConfigurationFiles});
28
+ `),Lr=e=>{let r=e.match(/\.(\([^)]+\))/);return r?Dr(r):e},_r=(e,r)=>{try{return Ue.default.lstatSync(v.default.resolve(e,r)).isDirectory()}catch{return!1}},We=({configDir:e,workingDir:r,directory:t})=>{let o=v.default.resolve(e,t),n=v.default.relative(r,o);return G(n)},Ye=(e,{configDir:r,workingDir:t})=>{let o;if(typeof e=="string"){let d=Lr(e),i=(0,He.scan)(d);if(i.isGlob){let c=i.prefix+i.base,m=i.glob;o={titlePrefix:_,directory:c,files:m}}else _r(r,e)?o={titlePrefix:_,directory:e,files:Je}:o={titlePrefix:_,directory:v.default.dirname(e),files:v.default.basename(e)}}else o={titlePrefix:_,files:Je,...e};let n=(0,re.default)(o.files),{directory:s}=o,p=(0,re.default)(We({configDir:r,workingDir:t,directory:s})).replace(/\/$/,""),a=ee(`${p}/${n}`);return{...o,directory:p,importPathMatcher:a}},Mr=(e,r)=>e.map(t=>Ye(t,r));var Ge=f(require("fs-extra"));async function Br(e){return Ge.default.readFile(e,{encoding:"utf8"})}var te=f(require("path")),Ve=require("find-up"),Jr=(e,r)=>{let t=(0,Ve.sync)("package.json",{cwd:e});if(!t)throw new Error(`Could not find package.json in: ${e}`);let o=te.default.dirname(t);return te.default.join(o,"dist","esm",r)};function Ur(){let{NODE_OPTIONS:e,NODE_PRESERVE_SYMLINKS:r}=process.env;return!!r||(e==null?void 0:e.includes("--preserve-symlinks"))}0&&(module.exports={boost,cache,checkAddonOrder,createFileSystemCache,filterPresetsConfig,findDistEsm,getAutoRefs,getDirectoryFromWorkingDir,getInterpretedFile,getInterpretedFileWithExt,getPresets,getPreviewBodyTemplate,getPreviewHeadTemplate,getPreviewMainTemplate,getProjectRoot,getRefs,getStorybookConfiguration,getStorybookInfo,globToRegexp,handlebars,interopRequireDefault,interpolate,isPreservingSymlinks,loadAllPresets,loadCustomPresets,loadEnvs,loadMainConfig,loadManagerOrAddonsFile,loadPreset,loadPreviewOrConfigFile,logConfig,nodePathsToArray,normalizeStories,normalizeStoriesEntry,normalizeStoryPath,readTemplate,resolveAddonName,resolvePathInStorybookCache,serverRequire,serverResolve,stringifyEnvs,stringifyProcessEnvs,useProgressReporting,validateConfigurationFiles});
package/dist/index.mjs CHANGED
@@ -1,28 +1,28 @@
1
- var g=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(r,t)=>(typeof require!="undefined"?require:r)[t]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var a={};import{dedent as ve}from"ts-dedent";import{logger as v}from"@storybook/node-logger";import A from"path";import U from"fs";var T=new Set([".js",".jsx",".ts",".tsx",".cjs",".mjs"]);function ge(){return[...Array.from(T)]}var K=ge();function u(e){return K.map(r=>e.endsWith(r)?e:`${e}${r}`).find(r=>U.existsSync(r))}function q(e){return K.map(r=>({path:e.endsWith(r)?e:`${e}${r}`,ext:r})).find(r=>U.existsSync(r.path))}var V=!1;function $(e){if(V===!1){let{register:o}=g("esbuild-register/dist/node");V=!0,o({target:`node${process.version.slice(1)}`,format:"cjs",hookIgnoreNodeModules:!1,tsconfigRaw:`{
1
+ var u=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(r,t)=>(typeof require!="undefined"?require:r)[t]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var a={};import{dedent as ve}from"ts-dedent";import{logger as P}from"@storybook/node-logger";import{dirname as Pe}from"path";import A from"path";import K from"fs";var T=new Set([".js",".jsx",".ts",".tsx",".cjs",".mjs"]);function me(){return[...Array.from(T)]}var U=me();function y(e){return U.map(r=>e.endsWith(r)?e:`${e}${r}`).find(r=>K.existsSync(r))}function V(e){return U.map(r=>({path:e.endsWith(r)?e:`${e}${r}`,ext:r})).find(r=>K.existsSync(r.path))}var q=!1;function $(e){if(q===!1){let{register:o}=u("esbuild-register/dist/node");q=!0,o({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 r=g(e);return typeof r=="object"&&r!==null&&typeof r.default<"u"?r.default:r}function ue(e){for(let r=0;r<e.length;r+=1){let t=q(e[r]);if(t)return t}}function x(e){let r=j(e);return r?$(r):null}function j(e){let r=Array.isArray(e)?e:[e],t=ue(r);return t?t.path:null}import{dedent as w}from"ts-dedent";import ye from"util-deprecate";import be from"glob";import h from"path";var xe=ye(()=>{},w`
6
+ }`})}let r=u(e);return typeof r=="object"&&r!==null&&typeof r.default<"u"?r.default:r}function ue(e){for(let r=0;r<e.length;r+=1){let t=V(e[r]);if(t)return t}}function h(e){let r=j(e);return r?$(r):null}function j(e){let r=Array.isArray(e)?e:[e],t=ue(r);return t?t.path:null}import{dedent as w}from"ts-dedent";import ye from"util-deprecate";import be from"glob";import v from"path";var xe=ye(()=>{},w`
7
7
  Configuration files such as "config", "presets" and "addons" are deprecated and will be removed in Storybook 7.0.
8
8
  Read more about it in the migration guide: https://github.com/storybookjs/storybook/blob/master/MIGRATION.md#to-mainjs-configuration
9
- `),I=(e,r,t)=>{let o=h.resolve(t,e),n=h.resolve(t,r);throw new Error(w`
9
+ `),I=(e,r,t)=>{let o=v.resolve(t,e),n=v.resolve(t,r);throw new Error(w`
10
10
  You have mixing configuration files:
11
11
  ${o}
12
12
  ${n}
13
13
  "${e}" and "${r}" cannot coexist.
14
14
  Please check the documentation for migration steps: https://github.com/storybookjs/storybook/blob/master/MIGRATION.md#to-mainjs-configuration
15
- `)};function C(e){let r=`{${Array.from(T).join(",")}}`,t=i=>!!be.sync(h.resolve(e,`${i}${r}`)).length,o=t("main"),n=t("config");if(!o&&!n)throw new Error(w`
16
- No configuration files have been found in your configDir (${h.resolve(e)}).
15
+ `)};function S(e){let r=`{${Array.from(T).join(",")}}`,t=s=>!!be.sync(v.resolve(e,`${s}${r}`)).length,o=t("main"),n=t("config");if(!o&&!n)throw new Error(w`
16
+ No configuration files have been found in your configDir (${v.resolve(e)}).
17
17
  Storybook needs either a "main" or "config" file.
18
18
  `);if(o&&n)throw new Error(w`
19
- You have both a "main" and a "config". Please remove the "config" file from your configDir (${h.resolve(e,"config")})`);let s=t("presets");o&&s&&I("main","presets",e),t("preview")&&n&&I("preview","config",e);let c=t("addons");t("manager")&&c&&I("manager","addons",e),(s||n||c)&&xe()}function W({configDir:e}){C(e);let r=x(A.resolve(e,"presets"));if(x(A.resolve(e,"main"))){let o=j(A.resolve(e,"main"));if(o)return[o]}return r||[]}import he from"resolve-from";var H=(e,r)=>{try{return he(e,r)}catch{return}},z=e=>{try{return g.resolve(e)}catch{return}};var P=e=>e!=null&&typeof e=="object"&&Array.isArray(e)===!1,Pe=e=>typeof e=="function";function ke(e){return e.filter(r=>{let t=typeof r=="string"?r:r.name;return!/@storybook[\\\\/]preset-typescript/.test(t)})}function Y(e,r,t){return Pe(e)?[...e({...t,...r})]:Array.isArray(e)?[...e]:[]}var Oe=(e,r,t)=>{let o=r.startsWith("/")?z:H.bind(null,e),n=o(r);if(n){if(r.match(/\/(manager|register(-panel)?)(\.(js|ts|tsx|jsx))?$/))return{type:"virtual",name:r,managerEntries:[n]};if(r.match(/\/(preset)(\.(js|ts|tsx|jsx))?$/))return{type:"presets",name:n}}let s=r,p=o(`${s}/manager`),c=o(`${s}/register`)||o(`${s}/register-panel`),f=o(`${s}/preview`),i=o(`${s}/preset`);if(!(p||f)&&i)return{type:"presets",name:i};if(p||c||f||i){let l=[];return p&&l.push(p),!p&&c&&!i&&l.push(c),{type:"virtual",name:s,...l.length?{managerEntries:l}:{},...f?{previewAnnotations:[f]}:{},...i?{presets:[{name:i,options:t}]}:{}}}if(n)return{type:"presets",name:n}},we=({configDir:e})=>r=>{let t=P(r)&&r.options||void 0,o=P(r)?r.name:r;try{let n=Oe(e,o,t);return{...t?{options:t}:{},...n}}catch{v.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/
20
- ${r}`)}};async function Ce(e){if(e.type==="virtual"){let{type:t,name:o,...n}=e;return n}let r=e.name?e.name:e;return $(r)}async function Se(e,r,t){try{let o=e.name?e.name:e,n=e.options?e.options:{},s=await Ce(e);if(typeof s=="function"&&(s=s(t,n)),Array.isArray(s))return S(s,r+1,t);if(P(s)){let{addons:p,presets:c,...f}=s,i=Y(c,n,t),l=Y(p,n,t);return[...await S([...i],r+1,t),...await S([...l.map(we(t))].filter(Boolean),r+1,t),{name:o,preset:f,options:n}]}throw new Error(ve`
19
+ You have both a "main" and a "config". Please remove the "config" file from your configDir (${v.resolve(e,"config")})`);let i=t("presets");o&&i&&I("main","presets",e),t("preview")&&n&&I("preview","config",e);let c=t("addons");t("manager")&&c&&I("manager","addons",e),(i||n||c)&&xe()}function H({configDir:e}){S(e);let r=h(A.resolve(e,"presets"));if(h(A.resolve(e,"main"))){let o=j(A.resolve(e,"main"));if(o)return[o]}return r||[]}import he from"resolve-from";var W=(e,r)=>{try{return he(e,r)}catch{return}},z=e=>{try{return u.resolve(e)}catch{return}};var k=e=>e!=null&&typeof e=="object"&&Array.isArray(e)===!1,ke=e=>typeof e=="function";function Oe(e){return e.filter(r=>{let t=typeof r=="string"?r:r.name;return!/@storybook[\\\\/]preset-typescript/.test(t)})}function Y(e,r,t){return ke(e)?[...e({...t,...r})]:Array.isArray(e)?[...e]:[]}var we=(e,r,t)=>{let o=r.startsWith("/")?z:W.bind(null,e),n=o(r);if(n){if(r.match(/\/(manager|register(-panel)?)(\.(js|ts|tsx|jsx))?$/))return{type:"virtual",name:r,managerEntries:[n]};if(r.match(/\/(preset)(\.(js|ts|tsx|jsx))?$/))return{type:"presets",name:n}}let i=n&&o(`${r}/package.json`),p=i&&Pe(i),c=m=>{if(o(`${r}${m}`))return`${p}${m}`},l=r,s=c("/manager"),f=c("/register")||c("/register-panel"),d=c("/preview"),g=o(`${l}/preset`);if(!(s||d)&&g)return{type:"presets",name:g};if(s||f||d||g){let m=[];return s&&m.push(s),!s&&f&&!g&&m.push(f),{type:"virtual",name:l,...m.length?{managerEntries:m}:{},...d?{previewAnnotations:[d]}:{},...g?{presets:[{name:g,options:t}]}:{}}}if(n)return{type:"presets",name:n}},Se=({configDir:e})=>r=>{let t=k(r)&&r.options||void 0,o=k(r)?r.name:r;try{let n=we(e,o,t);return{...t?{options:t}:{},...n}}catch{P.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/
20
+ ${r}`)}};async function Ce(e){if(e.type==="virtual"){let{type:t,name:o,...n}=e;return n}let r=e.name?e.name:e;return $(r)}async function Re(e,r,t){try{let o=e.name?e.name:e,n=e.options?e.options:{},i=await Ce(e);if(typeof i=="function"&&(i=i(t,n)),Array.isArray(i))return C(i,r+1,t);if(k(i)){let{addons:p,presets:c,...l}=i,s=Y(c,n,t),f=Y(p,n,t);return[...await C([...s],r+1,t),...await C([...f.map(Se(t))].filter(Boolean),r+1,t),{name:o,preset:l,options:n}]}throw new Error(ve`
21
21
  ${e} is not a valid preset
22
- `)}catch(o){let n=r>0?` Failed to load preset: ${JSON.stringify(e)} on level ${r}`:` Failed to load preset: ${JSON.stringify(e)}`;return v.warn(n),v.error(o),[]}}async function S(e,r,t){return!e||!Array.isArray(e)||!e.length?[]:(r||v.info("=> Loading presets"),(await Promise.all(e.map(async o=>Se(o,r,t)))).reduce((o,n)=>o.concat(n),[]))}function G(e,r,t,o,n){let s=new Promise(p=>p(t));return e.length?e.reduce((p,{preset:c,options:f})=>{let i=c[r];if(!i)return p;if(typeof i=="function"){let l=i,d={preset:c,combinedOptions:{...n,...o,...f,presetsList:e,presets:{apply:async(m,O,b={})=>G(e,m,O,b,n)}}};return p.then(m=>l.call(d.preset,m,d.combinedOptions))}return p.then(l=>Array.isArray(l)&&Array.isArray(i)?[...l,...i]:P(l)&&P(i)?{...l,...i}:i)},s):s}async function Re(e,r){let t=await S(e,0,r);return{apply:async(o,n,s={})=>G(t,o,n,s,r)}}async function Dr(e){let{corePresets:r=[],overridePresets:t=[],...o}=e,n=[...r,...W(e),...t],s=ke(n);return s.length<n.length&&v.warn("Storybook now supports TypeScript natively. You can safely remove `@storybook/preset-typescript`."),Re(s,o)}var{logger:F}=g("@storybook/node-logger"),D=e=>r=>{let t=r.name||r;return t&&t.includes(e)},Ee=(e,r,t)=>{let o=e.findIndex(D("@storybook/addon-essentials")),n=e.findIndex(D(r.name)),s=e.findIndex(D(t.name));return n===-1&&r.inEssentials&&(n=o),s===-1&&t.inEssentials&&(s=o),n!==-1&&s!==-1&&n<=s},Lr=async({before:e,after:r,configFile:t,getConfig:o})=>{try{let n=await o(t);if(!n?.addons){F.warn("Unable to find 'addons' config in main Storybook config");return}if(!Ee(n.addons,e,r)){let s=" (or '@storybook/addon-essentials')",p=`'${e.name}'${e.inEssentials?s:""}`,c=`'${r.name}'${r.inEssentials?s:""}`;F.warn(`Expected ${p} to be listed before ${c} in main Storybook config.`)}}catch{F.warn(`Unable to load config file: ${t}`)}};import{getEnvironment as $e}from"lazy-universal-dotenv";import R from"path";import X from"find-up";var Jr=()=>{let e;try{let r=X.sync(".git",{type:"directory"});r&&(e=e||R.join(r,".."))}catch{}try{let r=X.sync(".svn",{type:"directory"});r&&(e=e||R.join(r,".."))}catch{}try{e=e||__dirname.split("node_modules")[0]}catch{}return e||process.cwd()},Z=e=>e.split(process.platform==="win32"?";":":").filter(Boolean).map(r=>R.resolve("./",r)),Te=/^\.{1,2}([/\\]|$)/;function Q(e){return Te.test(e)?e:`.${R.sep}${e}`}function Vr(e={}){let r=e.production?"production":"development",t={NODE_ENV:"production",NODE_PATH:a.NODE_PATH||"",STORYBOOK:a.STORYBOOK||"true",PUBLIC_URL:e.production?".":""};Object.keys(a).filter(c=>/^STORYBOOK_/.test(c)).forEach(c=>{t[c]=a[c]});let o=Object.entries(t).reduce((c,[f,i])=>Object.assign(c,{[f]:JSON.stringify(i)}),{}),{stringified:n,raw:s}=$e({nodeEnv:t.NODE_ENV}),p={...t,...s};return p.NODE_PATH=Z(p.NODE_PATH||""),{stringified:{...o,...n},raw:p}}var Wr=e=>Object.entries(e).reduce((r,[t,o])=>(r[t]=JSON.stringify(o),r),{}),Hr=e=>Object.entries(e).reduce((t,[o,n])=>(t[`process.env.${o}`]=JSON.stringify(n),t),{"process.env.XSTORYBOOK_EXAMPLE_APP":'""'});import je from"handlebars";function Gr(e,r){return je.compile(e)(r)}import Ie from"path";function rt({configDir:e}){return C(e),x(Ie.resolve(e,"main"))}function ee(e,r,t){if(!e)return null;let o=e.split(/[\s='"]+/),n=o.indexOf(t);return n===-1&&(n=o.indexOf(r)),n===-1?null:o[n+1]}import Ae from"path";import Fe from"fs-extra";var re={"@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"},te=console,De=({dependencies:e,devDependencies:r,peerDependencies:t},o)=>[Object.entries(e||{}).find(o),Object.entries(r||{}).find(o),Object.entries(t||{}).find(o)],Ne=e=>{let[r,t,o]=De(e,([c])=>re[c]),[n,s]=r||t||o||[],p=n?re[n]:void 0;return r&&t&&r[0]===t[0]&&te.warn(`Found "${r[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),r&&o&&r[0]===o[0]&&te.warn(`Found "${r[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{framework:p,version:s,frameworkPackage:n}},Le=["ts","js","tsx","jsx","mjs","cjs"],N=(e,r)=>{let t=Ae.join(r,e),o=Le.find(n=>Fe.existsSync(`${t}.${n}`));return o?`${t}.${o}`:null},Be=e=>{let r=".storybook",t=e.scripts?.storybook;if(t){let o=ee(t,"-c","--config-dir");o&&(r=o)}return{configDir:r,mainConfig:N("main",r),previewConfig:N("preview",r),managerConfig:N("manager",r)}},at=e=>{let r=Ne(e),t=Be(e);return{...r,...t}};import{readJSON as oe}from"fs-extra";import{dirname as _e,join as Me}from"path";import Je from"find-up";import Ue from"resolve-from";import{logger as Ke}from"@storybook/node-logger";var qe=async e=>{let r=await Je("package.json",{cwd:e.configDir});if(!r)return{};let t=_e(r),{dependencies:o=[],devDependencies:n=[]}=await oe(r)||{},s=Object.keys({...o,...n});return(await Promise.all(s.map(async c=>{try{let f=Ue(t,Me(c,"package.json")),{storybook:i,name:l,version:d}=await oe(f)||{};if(i?.url)return{id:l,...i,version:d}}catch{Ke.warn(`unable to find package.json for ${c}`);return}}))).filter(Boolean).reduce((c,f)=>({...c,[f.id]:{id:f.id.toLowerCase(),url:ne(f.url),title:f.title,version:f.version}}),{})},Ve=e=>fetch(`${e}/iframe.html`).then(async({ok:r,status:t})=>{if(r){if(t!==200)return!1;let o=await fetch(`${e}/iframe.html`,{headers:{Accept:"application/json"}});if(o.ok&&(await o.json().catch(n=>({}))).loginUrl)return!1}return r},()=>!1),ne=e=>e.replace(/\/$/,""),We=e=>{let r=e.replace(/[A-Z]/g,t=>` ${t}`).replace(/[-_][A-Z]/gi,t=>` ${t.toUpperCase()}`).replace(/-/g," ").replace(/_/g," ");return`${r.substring(0,1).toUpperCase()}${r.substring(1)}`.trim()};async function gt(e){let r=await e.presets.apply("refs",await qe(e));return Object.entries(r).forEach(([t,o])=>{if(o.disable){delete r[t];return}r[t.toLowerCase()]={...o,id:t.toLowerCase(),title:o.title||We(o.id||t),url:ne(o.url)}}),await Promise.all(Object.entries(r).map(async([t,o])=>{let n=await Ve(o.url);r[t]={...o,type:n?"server-checked":"unknown"}})),r}import L from"path";import{logger as He}from"@storybook/node-logger";import{dedent as ze}from"ts-dedent";function vt({configDir:e}){let r=u(L.resolve(e,"addons")),t=u(L.resolve(e,"manager"));if((r||t)&&He.info("=> Loading custom manager config"),r&&t)throw new Error(ze`
23
- You have both a "addons.js" and a "manager.js", remove the "addons.js" file from your configDir (${L.resolve(e,"addons")})`);return t||r}import B from"path";import{dedent as Ye}from"ts-dedent";function Ct({configDir:e}){let r=u(B.resolve(e,"config")),t=u(B.resolve(e,"preview"));if(r&&t)throw new Error(Ye`
24
- You have both a "config.js" and a "preview.js", remove the "config.js" file from your configDir (${B.resolve(e,"config")})`);return t||r}import Ge from"chalk";function Et(e,r){console.log(Ge.cyan(e)),console.dir(r,{depth:null})}import Xe from"pretty-hrtime";var se=e=>Xe(process.hrtime(e)).replace(" ms"," milliseconds").replace(" s"," seconds").replace(" m"," minutes");var At=async(e,r,t)=>{let o=0,n,s=()=>{};e.get("/progress",(f,i)=>{let l=!1,d=()=>{l=!0,i.end()};i.on("close",d),!(l||i.writableEnded)&&(i.setHeader("Cache-Control","no-cache"),i.setHeader("Content-Type","text/event-stream"),i.setHeader("Connection","keep-alive"),i.flushHeaders(),s=m=>{l||i.writableEnded||(i.write(`data: ${JSON.stringify(m)}
22
+ `)}catch(o){let n=r>0?` Failed to load preset: ${JSON.stringify(e)} on level ${r}`:` Failed to load preset: ${JSON.stringify(e)}`;return P.warn(n),P.error(o),[]}}async function C(e,r,t){return!e||!Array.isArray(e)||!e.length?[]:(r||P.info("=> Loading presets"),(await Promise.all(e.map(async o=>Re(o,r,t)))).reduce((o,n)=>o.concat(n),[]))}function G(e,r,t,o,n){let i=new Promise(p=>p(t));return e.length?e.reduce((p,{preset:c,options:l})=>{let s=c[r];if(!s)return p;if(typeof s=="function"){let f=s,d={preset:c,combinedOptions:{...n,...o,...l,presetsList:e,presets:{apply:async(g,m,x={})=>G(e,g,m,x,n)}}};return p.then(g=>f.call(d.preset,g,d.combinedOptions))}return p.then(f=>Array.isArray(f)&&Array.isArray(s)?[...f,...s]:k(f)&&k(s)?{...f,...s}:s)},i):i}async function Ee(e,r){let t=await C(e,0,r);return{apply:async(o,n,i={})=>G(t,o,n,i,r)}}async function Lr(e){let{corePresets:r=[],overridePresets:t=[],...o}=e,n=[...r,...H(e),...t],i=Oe(n);return i.length<n.length&&P.warn("Storybook now supports TypeScript natively. You can safely remove `@storybook/preset-typescript`."),Ee(i,o)}var{logger:D}=u("@storybook/node-logger"),F=e=>r=>{let t=r.name||r;return t&&t.includes(e)},Te=(e,r,t)=>{let o=e.findIndex(F("@storybook/addon-essentials")),n=e.findIndex(F(r.name)),i=e.findIndex(F(t.name));return n===-1&&r.inEssentials&&(n=o),i===-1&&t.inEssentials&&(i=o),n!==-1&&i!==-1&&n<=i},Br=async({before:e,after:r,configFile:t,getConfig:o})=>{try{let n=await o(t);if(!n?.addons){D.warn("Unable to find 'addons' config in main Storybook config");return}if(!Te(n.addons,e,r)){let i=" (or '@storybook/addon-essentials')",p=`'${e.name}'${e.inEssentials?i:""}`,c=`'${r.name}'${r.inEssentials?i:""}`;D.warn(`Expected ${p} to be listed before ${c} in main Storybook config.`)}}catch{D.warn(`Unable to load config file: ${t}`)}};import{getEnvironment as je}from"lazy-universal-dotenv";import R from"path";import X from"find-up";var Ur=()=>{let e;try{let r=X.sync(".git",{type:"directory"});r&&(e=e||R.join(r,".."))}catch{}try{let r=X.sync(".svn",{type:"directory"});r&&(e=e||R.join(r,".."))}catch{}try{e=e||__dirname.split("node_modules")[0]}catch{}return e||process.cwd()},Z=e=>e.split(process.platform==="win32"?";":":").filter(Boolean).map(r=>R.resolve("./",r)),$e=/^\.{1,2}([/\\]|$)/;function Q(e){return $e.test(e)?e:`.${R.sep}${e}`}function Wr(e={}){let r=e.production?"production":"development",t={NODE_ENV:"production",NODE_PATH:a.NODE_PATH||"",STORYBOOK:a.STORYBOOK||"true",PUBLIC_URL:e.production?".":""};Object.keys(a).filter(c=>/^STORYBOOK_/.test(c)).forEach(c=>{t[c]=a[c]});let o=Object.entries(t).reduce((c,[l,s])=>Object.assign(c,{[l]:JSON.stringify(s)}),{}),{stringified:n,raw:i}=je({nodeEnv:t.NODE_ENV}),p={...t,...i};return p.NODE_PATH=Z(p.NODE_PATH||""),{stringified:{...o,...n},raw:p}}var zr=e=>Object.entries(e).reduce((r,[t,o])=>(r[t]=JSON.stringify(o),r),{}),Yr=e=>Object.entries(e).reduce((t,[o,n])=>(t[`process.env.${o}`]=JSON.stringify(n),t),{"process.env.XSTORYBOOK_EXAMPLE_APP":'""'});import Ie from"handlebars";function Zr(e,r){return Ie.compile(e)(r)}import Ae from"path";function ot({configDir:e}){return S(e),h(Ae.resolve(e,"main"))}function ee(e,r,t){if(!e)return null;let o=e.split(/[\s='"]+/),n=o.indexOf(t);return n===-1&&(n=o.indexOf(r)),n===-1?null:o[n+1]}import De from"path";import Fe from"fs-extra";var re={"@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"},te=console,Ne=({dependencies:e,devDependencies:r,peerDependencies:t},o)=>[Object.entries(e||{}).find(o),Object.entries(r||{}).find(o),Object.entries(t||{}).find(o)],Le=e=>{let[r,t,o]=Ne(e,([c])=>re[c]),[n,i]=r||t||o||[],p=n?re[n]:void 0;return r&&t&&r[0]===t[0]&&te.warn(`Found "${r[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),r&&o&&r[0]===o[0]&&te.warn(`Found "${r[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{framework:p,version:i,frameworkPackage:n}},_e=["ts","js","tsx","jsx","mjs","cjs"],N=(e,r)=>{let t=De.join(r,e),o=_e.find(n=>Fe.existsSync(`${t}.${n}`));return o?`${t}.${o}`:null},Be=e=>{let r=".storybook",t=e.scripts?.storybook;if(t){let o=ee(t,"-c","--config-dir");o&&(r=o)}return{configDir:r,mainConfig:N("main",r),previewConfig:N("preview",r),managerConfig:N("manager",r)}},pt=e=>{let r=Le(e),t=Be(e);return{...r,...t}};import{readJSON as oe}from"fs-extra";import{dirname as Me,join as Je}from"path";import Ke from"find-up";import Ue from"resolve-from";import{logger as Ve}from"@storybook/node-logger";var qe=async e=>{let r=await Ke("package.json",{cwd:e.configDir});if(!r)return{};let t=Me(r),{dependencies:o=[],devDependencies:n=[]}=await oe(r)||{},i=Object.keys({...o,...n});return(await Promise.all(i.map(async c=>{try{let l=Ue(t,Je(c,"package.json")),{storybook:s,name:f,version:d}=await oe(l)||{};if(s?.url)return{id:f,...s,version:d}}catch{Ve.warn(`unable to find package.json for ${c}`);return}}))).filter(Boolean).reduce((c,l)=>({...c,[l.id]:{id:l.id.toLowerCase(),url:ne(l.url),title:l.title,version:l.version}}),{})},He=e=>fetch(`${e}/iframe.html`).then(async({ok:r,status:t})=>{if(r){if(t!==200)return!1;let o=await fetch(`${e}/iframe.html`,{headers:{Accept:"application/json"}});if(o.ok&&(await o.json().catch(n=>({}))).loginUrl)return!1}return r},()=>!1),ne=e=>e.replace(/\/$/,""),We=e=>{let r=e.replace(/[A-Z]/g,t=>` ${t}`).replace(/[-_][A-Z]/gi,t=>` ${t.toUpperCase()}`).replace(/-/g," ").replace(/_/g," ");return`${r.substring(0,1).toUpperCase()}${r.substring(1)}`.trim()};async function yt(e){let r=await e.presets.apply("refs",await qe(e));return Object.entries(r).forEach(([t,o])=>{if(o.disable){delete r[t];return}r[t.toLowerCase()]={...o,id:t.toLowerCase(),title:o.title||We(o.id||t),url:ne(o.url)}}),await Promise.all(Object.entries(r).map(async([t,o])=>{let n=await He(o.url);r[t]={...o,type:n?"server-checked":"unknown"}})),r}import L from"path";import{logger as ze}from"@storybook/node-logger";import{dedent as Ye}from"ts-dedent";function kt({configDir:e}){let r=y(L.resolve(e,"addons")),t=y(L.resolve(e,"manager"));if((r||t)&&ze.info("=> Loading custom manager config"),r&&t)throw new Error(Ye`
23
+ You have both a "addons.js" and a "manager.js", remove the "addons.js" file from your configDir (${L.resolve(e,"addons")})`);return t||r}import _ from"path";import{dedent as Ge}from"ts-dedent";function Rt({configDir:e}){let r=y(_.resolve(e,"config")),t=y(_.resolve(e,"preview"));if(r&&t)throw new Error(Ge`
24
+ You have both a "config.js" and a "preview.js", remove the "config.js" file from your configDir (${_.resolve(e,"config")})`);return t||r}import Xe from"chalk";function $t(e,r){console.log(Xe.cyan(e)),console.dir(r,{depth:null})}import Ze from"pretty-hrtime";var se=e=>Ze(process.hrtime(e)).replace(" ms"," milliseconds").replace(" s"," seconds").replace(" m"," minutes");var Ft=async(e,r,t)=>{let o=0,n,i=()=>{};e.get("/progress",(l,s)=>{let f=!1,d=()=>{f=!0,s.end()};s.on("close",d),!(f||s.writableEnded)&&(s.setHeader("Cache-Control","no-cache"),s.setHeader("Content-Type","text/event-stream"),s.setHeader("Connection","keep-alive"),s.flushHeaders(),i=g=>{f||s.writableEnded||(s.write(`data: ${JSON.stringify(g)}
25
25
 
26
- `),i.flush(),m.value===1&&d())})});let p=(f,i,l)=>{o=Math.max(f,o);let d={value:o,message:i.charAt(0).toUpperCase()+i.slice(1)};if(i==="building"){let m=l&&l.match(/(\d+)\/(\d+)/)||[],O=parseInt(m[1],10),b=parseInt(m[2],10);!Number.isNaN(O)&&!Number.isNaN(b)&&(d.modules={complete:O,total:b},n=b)}o===1&&(t.cache&&t.cache.set("modulesCount",n),d.message||(d.message=`Completed in ${se(r)}.`)),s(d)},c=await t.cache?.get("modulesCount").catch(()=>{})||1e3;return{handler:p,modulesCount:c}};import _ from"path";import Ze from"pkg-dir";function ie(e){let r=process.cwd(),t=Ze.sync(r),o;return t?o=_.resolve(t,"node_modules/.cache/storybook"):o=_.resolve(r,".cache/storybook"),_.join(o,e)}import Qe from"file-system-cache";function M(e){return Qe(e)}var Ut=M({basePath:ie("dev-server"),ns:"storybook"});import ae from"path";import{sync as J}from"pkg-dir";import y from"fs";var ce=(e,r={})=>Object.entries(r).reduce((t,[o,n])=>t.replace(new RegExp(`%${o}%`,"g"),n),e);function Ht(e,r){let t=y.readFileSync(`${J(__dirname)}/templates/base-preview-body.html`,"utf8"),o=ae.resolve(e,"preview-body.html"),n=t;return y.existsSync(o)&&(n=y.readFileSync(o,"utf8")+n),ce(n,r)}function zt(e,r){let t=y.readFileSync(`${J(__dirname)}/templates/base-preview-head.html`,"utf8"),o=ae.resolve(e,"preview-head.html"),n=t;return y.existsSync(o)&&(n+=y.readFileSync(o,"utf8")),ce(n,r)}function Yt(){return`${J(__dirname)}/templates/preview.ejs`}var Xt=(e,r)=>Object.entries(r).reduce((t,[o,n])=>{let s=n.replace(/\\/g,"/").replace(/\$/g,"$$$");return t.replace(new RegExp(`{{${o}}}`,"g"),s)},e);import{makeRe as er}from"picomatch";function pe(e){let r=er(e,{fastpaths:!1,noglobstar:!1,bash:!1});if(!r.source.startsWith("^"))throw new Error(`Invalid glob: >> ${e} >> ${r}`);return e.startsWith("./")?new RegExp(["^\\.",e.startsWith("./**")?"":"[\\\\/]",r.source.substring(1)].join("")):r}import rr from"fs";import k from"path";import tr from"util-deprecate";import{dedent as or}from"ts-dedent";import{scan as nr}from"picomatch";import fe from"slash";var E="",le="**/*.@(mdx|stories.mdx|stories.tsx|stories.ts|stories.jsx|stories.js)",sr=tr(e=>e.input.replace(e[1],`@${e[1]}`),or`
26
+ `),s.flush(),g.value===1&&d())})});let p=(l,s,f)=>{o=Math.max(l,o);let d={value:o,message:s.charAt(0).toUpperCase()+s.slice(1)};if(s==="building"){let g=f&&f.match(/(\d+)\/(\d+)/)||[],m=parseInt(g[1],10),x=parseInt(g[2],10);!Number.isNaN(m)&&!Number.isNaN(x)&&(d.modules={complete:m,total:x},n=x)}o===1&&(t.cache&&t.cache.set("modulesCount",n),d.message||(d.message=`Completed in ${se(r)}.`)),i(d)},c=await t.cache?.get("modulesCount").catch(()=>{})||1e3;return{handler:p,modulesCount:c}};import B from"path";import Qe from"pkg-dir";function ie(e){let r=process.cwd(),t=Qe.sync(r),o;return t?o=B.resolve(t,"node_modules/.cache/storybook"):o=B.resolve(r,".cache/storybook"),B.join(o,e)}import er from"file-system-cache";function M(e){return er(e)}var Vt=M({basePath:ie("dev-server"),ns:"storybook"});import ae from"path";import{sync as J}from"pkg-dir";import b from"fs";var ce=(e,r={})=>Object.entries(r).reduce((t,[o,n])=>t.replace(new RegExp(`%${o}%`,"g"),n),e);function Yt(e,r){let t=b.readFileSync(`${J(__dirname)}/templates/base-preview-body.html`,"utf8"),o=ae.resolve(e,"preview-body.html"),n=t;return b.existsSync(o)&&(n=b.readFileSync(o,"utf8")+n),ce(n,r)}function Gt(e,r){let t=b.readFileSync(`${J(__dirname)}/templates/base-preview-head.html`,"utf8"),o=ae.resolve(e,"preview-head.html"),n=t;return b.existsSync(o)&&(n+=b.readFileSync(o,"utf8")),ce(n,r)}function Xt(){return`${J(__dirname)}/templates/preview.ejs`}var Qt=(e,r)=>Object.entries(r).reduce((t,[o,n])=>{let i=n.replace(/\\/g,"/").replace(/\$/g,"$$$");return t.replace(new RegExp(`{{${o}}}`,"g"),i)},e);import{makeRe as rr}from"picomatch";function pe(e){let r=rr(e,{fastpaths:!1,noglobstar:!1,bash:!1});if(!r.source.startsWith("^"))throw new Error(`Invalid glob: >> ${e} >> ${r}`);return e.startsWith("./")?new RegExp(["^\\.",e.startsWith("./**")?"":"[\\\\/]",r.source.substring(1)].join("")):r}import tr from"fs";import O from"path";import or from"util-deprecate";import{dedent as nr}from"ts-dedent";import{scan as sr}from"picomatch";import fe from"slash";var E="",le="**/*.@(mdx|stories.mdx|stories.tsx|stories.ts|stories.jsx|stories.js)",ir=or(e=>e.input.replace(e[1],`@${e[1]}`),nr`
27
27
  You have specified an invalid glob, we've attempted to fix it, please ensure that the glob you specify is valid. See: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#correct-globs-in-mainjs
28
- `),ir=e=>{let r=e.match(/\.(\([^)]+\))/);return r?sr(r):e},ar=(e,r)=>{try{return rr.lstatSync(k.resolve(e,r)).isDirectory()}catch{return!1}},cr=({configDir:e,workingDir:r,directory:t})=>{let o=k.resolve(e,t),n=k.relative(r,o);return Q(n)},pr=(e,{configDir:r,workingDir:t})=>{let o;if(typeof e=="string"){let f=ir(e),i=nr(f);if(i.isGlob){let l=i.prefix+i.base,d=i.glob;o={titlePrefix:E,directory:l,files:d}}else ar(r,e)?o={titlePrefix:E,directory:e,files:le}:o={titlePrefix:E,directory:k.dirname(e),files:k.basename(e)}}else o={titlePrefix:E,files:le,...e};let n=fe(o.files),{directory:s}=o,p=fe(cr({configDir:r,workingDir:t,directory:s})).replace(/\/$/,""),c=pe(`${p}/${n}`);return{...o,directory:p,importPathMatcher:c}},po=(e,r)=>e.map(t=>pr(t,r));import fr from"fs-extra";async function mo(e){return fr.readFile(e,{encoding:"utf8"})}import de from"path";import{sync as lr}from"find-up";var bo=(e,r)=>{let t=lr("package.json",{cwd:e});if(!t)throw new Error(`Could not find package.json in: ${e}`);let o=de.dirname(t);return de.join(o,"dist","esm",r)};export{T as boost,Ut as cache,Lr as checkAddonOrder,M as createFileSystemCache,ke as filterPresetsConfig,bo as findDistEsm,qe as getAutoRefs,cr as getDirectoryFromWorkingDir,u as getInterpretedFile,q as getInterpretedFileWithExt,Re as getPresets,Ht as getPreviewBodyTemplate,zt as getPreviewHeadTemplate,Yt as getPreviewMainTemplate,Jr as getProjectRoot,gt as getRefs,ee as getStorybookConfiguration,at as getStorybookInfo,pe as globToRegexp,Gr as handlebars,$ as interopRequireDefault,Xt as interpolate,Dr as loadAllPresets,W as loadCustomPresets,Vr as loadEnvs,rt as loadMainConfig,vt as loadManagerOrAddonsFile,Se as loadPreset,Ct as loadPreviewOrConfigFile,Et as logConfig,Z as nodePathsToArray,po as normalizeStories,pr as normalizeStoriesEntry,Q as normalizeStoryPath,mo as readTemplate,Oe as resolveAddonName,ie as resolvePathInStorybookCache,x as serverRequire,j as serverResolve,Wr as stringifyEnvs,Hr as stringifyProcessEnvs,At as useProgressReporting,C as validateConfigurationFiles};
28
+ `),ar=e=>{let r=e.match(/\.(\([^)]+\))/);return r?ir(r):e},cr=(e,r)=>{try{return tr.lstatSync(O.resolve(e,r)).isDirectory()}catch{return!1}},pr=({configDir:e,workingDir:r,directory:t})=>{let o=O.resolve(e,t),n=O.relative(r,o);return Q(n)},fr=(e,{configDir:r,workingDir:t})=>{let o;if(typeof e=="string"){let l=ar(e),s=sr(l);if(s.isGlob){let f=s.prefix+s.base,d=s.glob;o={titlePrefix:E,directory:f,files:d}}else cr(r,e)?o={titlePrefix:E,directory:e,files:le}:o={titlePrefix:E,directory:O.dirname(e),files:O.basename(e)}}else o={titlePrefix:E,files:le,...e};let n=fe(o.files),{directory:i}=o,p=fe(pr({configDir:r,workingDir:t,directory:i})).replace(/\/$/,""),c=pe(`${p}/${n}`);return{...o,directory:p,importPathMatcher:c}},lo=(e,r)=>e.map(t=>fr(t,r));import lr from"fs-extra";async function uo(e){return lr.readFile(e,{encoding:"utf8"})}import de from"path";import{sync as dr}from"find-up";var ho=(e,r)=>{let t=dr("package.json",{cwd:e});if(!t)throw new Error(`Could not find package.json in: ${e}`);let o=de.dirname(t);return de.join(o,"dist","esm",r)};function Po(){let{NODE_OPTIONS:e,NODE_PRESERVE_SYMLINKS:r}=a;return!!r||e?.includes("--preserve-symlinks")}export{T as boost,Vt as cache,Br as checkAddonOrder,M as createFileSystemCache,Oe as filterPresetsConfig,ho as findDistEsm,qe as getAutoRefs,pr as getDirectoryFromWorkingDir,y as getInterpretedFile,V as getInterpretedFileWithExt,Ee as getPresets,Yt as getPreviewBodyTemplate,Gt as getPreviewHeadTemplate,Xt as getPreviewMainTemplate,Ur as getProjectRoot,yt as getRefs,ee as getStorybookConfiguration,pt as getStorybookInfo,pe as globToRegexp,Zr as handlebars,$ as interopRequireDefault,Qt as interpolate,Po as isPreservingSymlinks,Lr as loadAllPresets,H as loadCustomPresets,Wr as loadEnvs,ot as loadMainConfig,kt as loadManagerOrAddonsFile,Re as loadPreset,Rt as loadPreviewOrConfigFile,$t as logConfig,Z as nodePathsToArray,lo as normalizeStories,fr as normalizeStoriesEntry,Q as normalizeStoryPath,uo as readTemplate,we as resolveAddonName,ie as resolvePathInStorybookCache,h as serverRequire,j as serverResolve,zr as stringifyEnvs,Yr as stringifyProcessEnvs,Ft as useProgressReporting,S as validateConfigurationFiles};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/core-common",
3
- "version": "7.0.0-alpha.26",
3
+ "version": "7.0.0-alpha.27",
4
4
  "description": "Storybook framework-agnostic API",
5
5
  "keywords": [
6
6
  "storybook"
@@ -69,7 +69,7 @@
69
69
  "@babel/preset-typescript": "^7.12.7",
70
70
  "@babel/register": "^7.12.1",
71
71
  "@storybook/csf": "0.0.2--canary.0899bb7.0",
72
- "@storybook/node-logger": "7.0.0-alpha.26",
72
+ "@storybook/node-logger": "7.0.0-alpha.27",
73
73
  "@storybook/semver": "^7.3.2",
74
74
  "@types/babel__core": "^7.0.0",
75
75
  "@types/express": "^4.7.0",
@@ -124,5 +124,5 @@
124
124
  ],
125
125
  "platform": "node"
126
126
  },
127
- "gitHead": "e5c9cfe1d0482132e59734d9cfce57477045914f"
127
+ "gitHead": "3e33f0709dd97151b7dfd86fd9858d13fd1c5738"
128
128
  }