@storybook/core-server 8.1.0-alpha.5 → 8.1.0-alpha.6
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.js +2 -2
- package/dist/index.mjs +2 -3
- package/package.json +14 -14
package/dist/index.js
CHANGED
|
@@ -13,10 +13,10 @@ Content-Type: ${v.type||"application/octet-stream"}\r
|
|
|
13
13
|
--`+boundary;let ui8a=new Uint8Array(boundary.length);for(let i2=0;i2<boundary.length;i2++)ui8a[i2]=boundary.charCodeAt(i2),this.boundaryChars[ui8a[i2]]=!0;this.boundary=ui8a,this.lookbehind=new Uint8Array(this.boundary.length+8),this.state=S.START_BOUNDARY}write(data){let i2=0,length_=data.length,previousIndex=this.index,{lookbehind,boundary,boundaryChars,index,state,flags}=this,boundaryLength=this.boundary.length,boundaryEnd=boundaryLength-1,bufferLength=data.length,c,cl,mark=name=>{this[name+"Mark"]=i2},clear=name=>{delete this[name+"Mark"]},callback=(callbackSymbol,start,end,ui8a)=>{(start===void 0||start!==end)&&this[callbackSymbol](ui8a&&ui8a.subarray(start,end))},dataCallback=(name,clear2)=>{let markSymbol=name+"Mark";markSymbol in this&&(clear2?(callback(name,this[markSymbol],i2,data),delete this[markSymbol]):(callback(name,this[markSymbol],data.length,data),this[markSymbol]=0))};for(i2=0;i2<length_;i2++)switch(c=data[i2],state){case S.START_BOUNDARY:if(index===boundary.length-2){if(c===HYPHEN)flags|=F.LAST_BOUNDARY;else if(c!==CR)return;index++;break}else if(index-1===boundary.length-2){if(flags&F.LAST_BOUNDARY&&c===HYPHEN)state=S.END,flags=0;else if(!(flags&F.LAST_BOUNDARY)&&c===LF)index=0,callback("onPartBegin"),state=S.HEADER_FIELD_START;else return;break}c!==boundary[index+2]&&(index=-2),c===boundary[index+2]&&index++;break;case S.HEADER_FIELD_START:state=S.HEADER_FIELD,mark("onHeaderField"),index=0;case S.HEADER_FIELD:if(c===CR){clear("onHeaderField"),state=S.HEADERS_ALMOST_DONE;break}if(index++,c===HYPHEN)break;if(c===COLON){if(index===1)return;dataCallback("onHeaderField",!0),state=S.HEADER_VALUE_START;break}if(cl=lower(c),cl<A||cl>Z)return;break;case S.HEADER_VALUE_START:if(c===SPACE)break;mark("onHeaderValue"),state=S.HEADER_VALUE;case S.HEADER_VALUE:c===CR&&(dataCallback("onHeaderValue",!0),callback("onHeaderEnd"),state=S.HEADER_VALUE_ALMOST_DONE);break;case S.HEADER_VALUE_ALMOST_DONE:if(c!==LF)return;state=S.HEADER_FIELD_START;break;case S.HEADERS_ALMOST_DONE:if(c!==LF)return;callback("onHeadersEnd"),state=S.PART_DATA_START;break;case S.PART_DATA_START:state=S.PART_DATA,mark("onPartData");case S.PART_DATA:if(previousIndex=index,index===0){for(i2+=boundaryEnd;i2<bufferLength&&!(data[i2]in boundaryChars);)i2+=boundaryLength;i2-=boundaryEnd,c=data[i2]}if(index<boundary.length)boundary[index]===c?(index===0&&dataCallback("onPartData",!0),index++):index=0;else if(index===boundary.length)index++,c===CR?flags|=F.PART_BOUNDARY:c===HYPHEN?flags|=F.LAST_BOUNDARY:index=0;else if(index-1===boundary.length)if(flags&F.PART_BOUNDARY){if(index=0,c===LF){flags&=~F.PART_BOUNDARY,callback("onPartEnd"),callback("onPartBegin"),state=S.HEADER_FIELD_START;break}}else flags&F.LAST_BOUNDARY&&c===HYPHEN?(callback("onPartEnd"),state=S.END,flags=0):index=0;if(index>0)lookbehind[index-1]=c;else if(previousIndex>0){let _lookbehind=new Uint8Array(lookbehind.buffer,lookbehind.byteOffset,lookbehind.byteLength);callback("onPartData",0,previousIndex,_lookbehind),previousIndex=0,mark("onPartData"),i2--}break;case S.END:break;default:throw new Error(`Unexpected state entered: ${state}`)}dataCallback("onHeaderField"),dataCallback("onHeaderValue"),dataCallback("onPartData"),this.index=index,this.state=state,this.flags=flags}end(){if(this.state===S.HEADER_FIELD_START&&this.index===0||this.state===S.PART_DATA&&this.index===this.boundary.length)this.onPartEnd();else if(this.state!==S.END)throw new Error("MultipartParser.end(): stream ended unexpectedly")}}}});var src_exports={};__export(src_exports,{build:()=>standalone_default,buildDevStandalone:()=>buildDevStandalone,buildStaticStandalone:()=>buildStaticStandalone,getErrorLevel:()=>getErrorLevel,getPreviewBodyTemplate:()=>import_core_common13.getPreviewBodyTemplate,getPreviewHeadTemplate:()=>import_core_common13.getPreviewHeadTemplate,sendTelemetryError:()=>sendTelemetryError,withTelemetry:()=>withTelemetry});module.exports=__toCommonJS(src_exports);var import_core_common13=require("@storybook/core-common");var import_chalk5=__toESM(require("chalk")),import_fs_extra7=require("fs-extra"),import_path7=require("path"),import_global=require("@storybook/global"),import_node_logger5=require("@storybook/node-logger"),import_telemetry2=require("@storybook/telemetry"),import_core_common5=require("@storybook/core-common");var import_json_ext=require("@discoveryjs/json-ext"),import_node_logger=require("@storybook/node-logger"),import_chalk=__toESM(require("chalk")),import_fs_extra=__toESM(require("fs-extra")),import_path=__toESM(require("path"));async function outputStats(directory,previewStats,managerStats){if(previewStats){let filePath=await writeStats(directory,"preview",previewStats);import_node_logger.logger.info(`=> preview stats written to ${import_chalk.default.cyan(filePath)}`)}if(managerStats){let filePath=await writeStats(directory,"manager",managerStats);import_node_logger.logger.info(`=> manager stats written to ${import_chalk.default.cyan(filePath)}`)}}var writeStats=async(directory,name,stats)=>{let filePath=import_path.default.join(directory,`${name}-stats.json`),{chunks,...data}=stats.toJson();return await new Promise((resolve3,reject)=>{(0,import_json_ext.stringifyStream)(data,null,2).on("error",reject).pipe(import_fs_extra.default.createWriteStream(filePath)).on("error",reject).on("finish",resolve3)}),filePath};var import_chalk3=__toESM(require("chalk")),import_fs_extra3=__toESM(require("fs-extra")),import_path3=require("path"),import_node_logger3=require("@storybook/node-logger"),import_core_common2=require("@storybook/core-common");var import_node_logger2=require("@storybook/node-logger"),import_core_common=require("@storybook/core-common"),import_chalk2=__toESM(require("chalk")),import_express=__toESM(require("express")),import_fs_extra2=require("fs-extra"),import_path2=__toESM(require("path")),import_ts_dedent=require("ts-dedent");async function useStatics(router2,options){let staticDirs=await options.presets.apply("staticDirs")??[],faviconPath=await options.presets.apply("favicon"),statics=[...staticDirs.map(dir=>typeof dir=="string"?dir:`${dir.from}:${dir.to}`)];statics&&statics.length>0&&await Promise.all(statics.map(async dir=>{try{let normalizedDir=staticDirs&&!(0,import_path2.isAbsolute)(dir)?(0,import_core_common.getDirectoryFromWorkingDir)({configDir:options.configDir,workingDir:process.cwd(),directory:dir}):dir,{staticDir,staticPath,targetEndpoint}=await parseStaticDir(normalizedDir);targetEndpoint.startsWith("/sb-")||import_node_logger2.logger.info(import_chalk2.default`=> Serving static files from {cyan ${staticDir}} at {cyan ${targetEndpoint}}`),router2.use(targetEndpoint,import_express.default.static(staticPath,{index:!1}))}catch(e2){e2 instanceof Error&&import_node_logger2.logger.warn(e2.message)}})),router2.get(`/${(0,import_path2.basename)(faviconPath)}`,(req,res)=>res.sendFile(faviconPath))}var parseStaticDir=async arg=>{let lastColonIndex=arg.lastIndexOf(":"),isWindowsRawDirOnly=import_path2.default.win32.isAbsolute(arg)&&lastColonIndex===1,splitIndex=lastColonIndex!==-1&&!isWindowsRawDirOnly?lastColonIndex:arg.length,target=(arg.substring(splitIndex+1)||"/").split(import_path2.default.sep).join(import_path2.default.posix.sep),rawDir=arg.substring(0,splitIndex),staticDir=import_path2.default.isAbsolute(rawDir)?rawDir:`./${rawDir}`,staticPath=import_path2.default.resolve(staticDir),targetDir=target.replace(/^\/?/,"./"),targetEndpoint=targetDir.substring(1);if(!await(0,import_fs_extra2.pathExists)(staticPath))throw new Error((0,import_ts_dedent.dedent)(import_chalk2.default`
|
|
14
14
|
Failed to load static files, no such directory: {cyan ${staticPath}}
|
|
15
15
|
Make sure this directory exists.
|
|
16
|
-
`));return{staticDir,staticPath,targetDir,targetEndpoint}};async function copyAllStaticFilesRelativeToMain(staticDirs,outputDir,configDir){let workingDir=process.cwd();return staticDirs?.reduce(async(acc,dir)=>{await acc;let staticDirAndTarget=typeof dir=="string"?dir:`${dir.from}:${dir.to}`,{staticPath:from,targetEndpoint:to}=await parseStaticDir((0,import_core_common2.getDirectoryFromWorkingDir)({configDir,workingDir,directory:staticDirAndTarget})),targetPath=(0,import_path3.join)(outputDir,to),skipPaths=["index.html","iframe.html"].map(f3=>(0,import_path3.join)(targetPath,f3));from.includes("node_modules")||import_node_logger3.logger.info(import_chalk3.default`=> Copying static files: {cyan ${print(from)}} at {cyan ${print(targetPath)}}`),await import_fs_extra3.default.copy(from,targetPath,{dereference:!0,preserveTimestamps:!0,filter:(_,dest)=>!skipPaths.includes(dest)})},Promise.resolve())}function print(p){return(0,import_path3.relative)(process.cwd(),p)}var import_server_errors=require("@storybook/core-events/server-errors"),import_node_url=require("url");async function getManagerBuilder(){return import("@storybook/builder-manager")}async function getPreviewBuilder(builderName,configDir){let builderPackage=require.resolve(["webpack5"].includes(builderName)?`@storybook/builder-${builderName}`:builderName,{paths:[configDir]});return await import((0,import_node_url.pathToFileURL)(builderPackage).href)}async function getBuilders({presets,configDir}){let{builder}=await presets.apply("core",{});if(!builder)throw new import_server_errors.MissingBuilderError;let builderName=typeof builder=="string"?builder:builder.name;return Promise.all([getPreviewBuilder(builderName,configDir),getManagerBuilder()])}var import_fs_extra4=require("fs-extra"),import_debounce=__toESM(require("lodash/debounce.js")),import_core_events=require("@storybook/core-events");var import_watchpack=__toESM(require("watchpack"));function slash(path6){return path6.startsWith("\\\\?\\")?path6:path6.replace(/\\/g,"/")}var import_fs=__toESM(require("fs")),import_path4=__toESM(require("path")),
|
|
16
|
+
`));return{staticDir,staticPath,targetDir,targetEndpoint}};async function copyAllStaticFilesRelativeToMain(staticDirs,outputDir,configDir){let workingDir=process.cwd();return staticDirs?.reduce(async(acc,dir)=>{await acc;let staticDirAndTarget=typeof dir=="string"?dir:`${dir.from}:${dir.to}`,{staticPath:from,targetEndpoint:to}=await parseStaticDir((0,import_core_common2.getDirectoryFromWorkingDir)({configDir,workingDir,directory:staticDirAndTarget})),targetPath=(0,import_path3.join)(outputDir,to),skipPaths=["index.html","iframe.html"].map(f3=>(0,import_path3.join)(targetPath,f3));from.includes("node_modules")||import_node_logger3.logger.info(import_chalk3.default`=> Copying static files: {cyan ${print(from)}} at {cyan ${print(targetPath)}}`),await import_fs_extra3.default.copy(from,targetPath,{dereference:!0,preserveTimestamps:!0,filter:(_,dest)=>!skipPaths.includes(dest)})},Promise.resolve())}function print(p){return(0,import_path3.relative)(process.cwd(),p)}var import_server_errors=require("@storybook/core-events/server-errors"),import_node_url=require("url");async function getManagerBuilder(){return import("@storybook/builder-manager")}async function getPreviewBuilder(builderName,configDir){let builderPackage=require.resolve(["webpack5"].includes(builderName)?`@storybook/builder-${builderName}`:builderName,{paths:[configDir]});return await import((0,import_node_url.pathToFileURL)(builderPackage).href)}async function getBuilders({presets,configDir}){let{builder}=await presets.apply("core",{});if(!builder)throw new import_server_errors.MissingBuilderError;let builderName=typeof builder=="string"?builder:builder.name;return Promise.all([getPreviewBuilder(builderName,configDir),getManagerBuilder()])}var import_fs_extra4=require("fs-extra"),import_debounce=__toESM(require("lodash/debounce.js")),import_core_events=require("@storybook/core-events");var import_watchpack=__toESM(require("watchpack"));function slash(path6){return path6.startsWith("\\\\?\\")?path6:path6.replace(/\\/g,"/")}var import_fs=__toESM(require("fs")),import_path4=__toESM(require("path")),import_uniq=__toESM(require("lodash/uniq.js")),import_core_common3=require("@storybook/core-common"),isDirectory=directory=>{try{return import_fs.default.lstatSync(directory).isDirectory()}catch{return!1}};function toImportPath(relativePath){return relativePath.startsWith(".")?relativePath:`./${relativePath}`}function watchStorySpecifiers(specifiers,options,onInvalidate){let wp=new import_watchpack.default({followSymlinks:!1,ignored:["**/.git","**/node_modules"]});wp.watch({directories:(0,import_uniq.default)(specifiers.map(ns=>ns.directory))});async function onChangeOrRemove(watchpackPath,removed){let importPath=slash(watchpackPath.startsWith(".")?watchpackPath:`./${watchpackPath}`),matchingSpecifier=specifiers.find(ns=>ns.importPathMatcher.exec(importPath));if(matchingSpecifier){onInvalidate(matchingSpecifier,importPath,removed);return}let absolutePath=import_path4.default.join(options.workingDir,importPath);!removed&&isDirectory(absolutePath)&&await Promise.all(specifiers.filter(specifier=>importPath.startsWith(specifier.directory)).map(async specifier=>{let dirGlob=import_path4.default.join(options.workingDir,importPath,"**",import_path4.default.basename(specifier.files)),{globby}=await import("globby");(await globby(slash(dirGlob),(0,import_core_common3.commonGlobOptions)(dirGlob))).forEach(filePath=>{let fileImportPath=toImportPath(import_path4.default.relative(options.workingDir,filePath).replace(/\\/g,"/"));specifier.importPathMatcher.exec(fileImportPath)&&onInvalidate(specifier,fileImportPath,removed)})}))}return wp.on("change",async(filePath,mtime,explanation)=>{await onChangeOrRemove(filePath,!mtime)}),wp.on("remove",async(filePath,explanation)=>{await onChangeOrRemove(filePath,!0)}),()=>wp.close()}var DEBOUNCE=100;async function extractStoriesJson(outputFile,initializedStoryIndexGenerator,transform){let storyIndex=await(await initializedStoryIndexGenerator).getIndex();await(0,import_fs_extra4.writeJSON)(outputFile,transform?transform(storyIndex):storyIndex)}function useStoriesJson({router:router2,initializedStoryIndexGenerator,workingDir=process.cwd(),serverChannel,normalizedStories}){let maybeInvalidate=(0,import_debounce.default)(()=>serverChannel.emit(import_core_events.STORY_INDEX_INVALIDATED),DEBOUNCE,{leading:!0});watchStorySpecifiers(normalizedStories,{workingDir},async(specifier,path6,removed)=>{(await initializedStoryIndexGenerator).invalidate(specifier,path6,removed),maybeInvalidate()}),router2.use("/index.json",async(req,res)=>{try{let index=await(await initializedStoryIndexGenerator).getIndex();res.header("Content-Type","application/json"),res.send(JSON.stringify(index))}catch(err){res.status(500),res.send(err instanceof Error?err.toString():String(err))}})}var import_fs_extra5=require("fs-extra"),import_telemetry=require("@storybook/telemetry");async function extractStorybookMetadata(outputFile,configDir){let storybookMetadata=await(0,import_telemetry.getStorybookMetadata)(configDir);await(0,import_fs_extra5.writeJSON)(outputFile,storybookMetadata)}function useStorybookMetadata(router2,configDir){router2.use("/project.json",async(req,res)=>{let storybookMetadata=await(0,import_telemetry.getStorybookMetadata)(configDir);res.header("Content-Type","application/json"),res.send(JSON.stringify(storybookMetadata))})}var import_path6=__toESM(require("path")),import_chalk4=__toESM(require("chalk")),import_fs_extra6=__toESM(require("fs-extra"));var import_tiny_invariant=__toESM(require("tiny-invariant")),import_preview_api=require("@storybook/preview-api"),import_core_common4=require("@storybook/core-common"),import_node_logger4=require("@storybook/node-logger"),import_csf_tools=require("@storybook/csf-tools"),import_csf=require("@storybook/csf"),import_docs_mdx=require("@storybook/docs-mdx"),import_ts_dedent2=__toESM(require("ts-dedent"));var import_path5=require("path");function autoName(mdxImportPath,csfImportPath,defaultName){let mdxBasename=(0,import_path5.basename)(mdxImportPath),csfBasename=(0,import_path5.basename)(csfImportPath),[mdxFilename]=mdxBasename.split("."),[csfFilename]=csfBasename.split(".");return mdxFilename===csfFilename?defaultName:mdxFilename}var IndexingError=class extends Error{constructor(message,importPaths,stack){super(),this.message=message,this.importPaths=importPaths,stack&&(this.stack=stack)}pathsString(){return this.importPaths.length===1?`${slash(this.importPaths[0])}`:`${this.importPaths.map(slash).join(",")}`}toString(){return`${this.pathsString()}: ${this.message}`}},MultipleIndexingError=class extends Error{constructor(indexingErrors){super();this.indexingErrors=indexingErrors;if(this.indexingErrors.length===0)throw new Error("Unexpected empty error list");if(this.indexingErrors.length===1){let[err]=this.indexingErrors;this.message=`Unable to index ${err.pathsString()}`}else this.message=`Unable to index files:
|
|
17
17
|
${this.indexingErrors.map(err=>`- ${err}`).join(`
|
|
18
18
|
`)}`}toString(){return this.indexingErrors.length===1?`${this.message}:
|
|
19
|
-
${this.indexingErrors[0].stack}`:this.message}};var AUTODOCS_TAG="autodocs",STORIES_MDX_TAG="stories-mdx",PLAY_FN_TAG="play-fn";function isMdxEntry({tags}){return!tags?.includes(AUTODOCS_TAG)&&!tags?.includes(STORIES_MDX_TAG)}var makeAbsolute=(otherImport,normalizedPath,workingDir)=>otherImport.startsWith(".")?slash(import_path6.default.resolve(workingDir,(0,import_core_common4.normalizeStoryPath)(import_path6.default.join(import_path6.default.dirname(normalizedPath),otherImport)))):otherImport,StoryIndexGenerator=class{constructor(specifiers,options){this.specifiers=specifiers;this.options=options;this.specifierToCache=new Map}async initialize(){(await Promise.all(this.specifiers.map(async specifier=>{let pathToSubIndex={},fullGlob=slash(import_path6.default.join(this.options.workingDir,specifier.directory,specifier.files)),
|
|
19
|
+
${this.indexingErrors[0].stack}`:this.message}};var AUTODOCS_TAG="autodocs",STORIES_MDX_TAG="stories-mdx",PLAY_FN_TAG="play-fn";function isMdxEntry({tags}){return!tags?.includes(AUTODOCS_TAG)&&!tags?.includes(STORIES_MDX_TAG)}var makeAbsolute=(otherImport,normalizedPath,workingDir)=>otherImport.startsWith(".")?slash(import_path6.default.resolve(workingDir,(0,import_core_common4.normalizeStoryPath)(import_path6.default.join(import_path6.default.dirname(normalizedPath),otherImport)))):otherImport,StoryIndexGenerator=class{constructor(specifiers,options){this.specifiers=specifiers;this.options=options;this.specifierToCache=new Map}async initialize(){(await Promise.all(this.specifiers.map(async specifier=>{let pathToSubIndex={},fullGlob=slash(import_path6.default.join(this.options.workingDir,specifier.directory,specifier.files)),{globby}=await import("globby"),files=await globby(fullGlob,(0,import_core_common4.commonGlobOptions)(fullGlob));return files.length===0&&import_node_logger4.once.warn(`No story files found for the specified pattern: ${import_chalk4.default.blue(import_path6.default.join(specifier.directory,specifier.files))}`),files.sort().forEach(absolutePath=>{let ext=import_path6.default.extname(absolutePath);if(ext===".storyshot"){let relativePath=import_path6.default.relative(this.options.workingDir,absolutePath);import_node_logger4.logger.info(`Skipping ${ext} file ${relativePath}`);return}pathToSubIndex[absolutePath]=!1}),[specifier,pathToSubIndex]}))).forEach(([specifier,cache3])=>this.specifierToCache.set(specifier,cache3)),await this.ensureExtracted()}async updateExtracted(updater,overwrite=!1){await Promise.all(this.specifiers.map(async specifier=>{let entry=this.specifierToCache.get(specifier);return(0,import_tiny_invariant.default)(entry,`specifier does not have a matching cache entry in specifierToCache: ${JSON.stringify(specifier)}`),Promise.all(Object.keys(entry).map(async absolutePath=>{if(!(entry[absolutePath]&&!overwrite))try{entry[absolutePath]=await updater(specifier,absolutePath,entry[absolutePath])}catch(err){let relativePath=`.${import_path6.default.sep}${import_path6.default.relative(this.options.workingDir,absolutePath)}`;entry[absolutePath]={type:"error",err:new IndexingError(err instanceof Error?err.message:String(err),[relativePath],err instanceof Error?err.stack:void 0)}}}))}))}isDocsMdx(absolutePath){return/(?<!\.stories)\.mdx$/i.test(absolutePath)}async ensureExtracted(){return await this.updateExtracted(async(specifier,absolutePath)=>this.isDocsMdx(absolutePath)?!1:this.extractStories(specifier,absolutePath)),await this.updateExtracted(async(specifier,absolutePath)=>this.extractDocs(specifier,absolutePath)),this.specifiers.flatMap(specifier=>{let cache3=this.specifierToCache.get(specifier);return(0,import_tiny_invariant.default)(cache3,`specifier does not have a matching cache entry in specifierToCache: ${JSON.stringify(specifier)}`),Object.values(cache3).flatMap(entry=>entry?entry.type==="docs"?[entry]:entry.type==="error"?[entry]:entry.entries.map(item=>{if(item.type==="docs")return item;let{metaId,...existing}=item;return existing}):[])})}findDependencies(absoluteImports){return[...this.specifierToCache.values()].flatMap(cache3=>Object.entries(cache3).filter(([fileName,cacheEntry])=>!cacheEntry||cacheEntry.type!=="stories"?!1:!!absoluteImports.find(storyImport=>fileName.match(new RegExp(`^${storyImport}(\\.[^.]+)?$`)))).map(([_,cacheEntry])=>cacheEntry))}async extractStories(specifier,absolutePath){let relativePath=import_path6.default.relative(this.options.workingDir,absolutePath),importPath=slash((0,import_core_common4.normalizeStoryPath)(relativePath)),defaultMakeTitle=userTitle=>{let title=(0,import_preview_api.userOrAutoTitleFromSpecifier)(importPath,specifier,userTitle);return(0,import_tiny_invariant.default)(title,"makeTitle created an undefined title. This happens when the fileName doesn't match any specifier from main.js"),title},indexer=this.options.indexers.find(ind=>ind.test.exec(absolutePath));(0,import_tiny_invariant.default)(indexer,`No matching indexer found for ${absolutePath}`);let indexInputs=await indexer.createIndex(absolutePath,{makeTitle:defaultMakeTitle}),entries=indexInputs.map(input=>{let name=input.name??(0,import_csf.storyNameFromExport)(input.exportName),title=input.title??defaultMakeTitle(),id=input.__id??(0,import_csf.toId)(input.metaId??title,(0,import_csf.storyNameFromExport)(input.exportName)),tags=(input.tags||[]).concat("story");return{type:"story",id,metaId:input.metaId,name,title,importPath,tags}}),{autodocs}=this.options.docs,hasAutodocsTag=entries.some(entry=>entry.tags.includes(AUTODOCS_TAG)),isStoriesMdx=entries.some(entry=>entry.tags.includes(STORIES_MDX_TAG));if((autodocs===!0||autodocs==="tag"&&hasAutodocsTag||isStoriesMdx)&&this.options.build?.test?.disableAutoDocs!==!0){let name=this.options.docs.defaultName??"Docs",{metaId}=indexInputs[0],{title}=entries[0],metaTags=indexInputs[0].metaTags||[],id=(0,import_csf.toId)(metaId??title,name);entries.unshift({id,title,name,importPath,type:"docs",tags:[...metaTags,"docs",...!hasAutodocsTag&&!isStoriesMdx?[AUTODOCS_TAG]:[]],storiesImports:[]})}return{entries:entries.filter(entry=>!(entry.type==="story"&&entry.tags.includes("stories-mdx-docsOnly"))),dependents:[],type:"stories"}}async extractDocs(specifier,absolutePath){let relativePath=import_path6.default.relative(this.options.workingDir,absolutePath);try{let normalizedPath=(0,import_core_common4.normalizeStoryPath)(relativePath),importPath=slash(normalizedPath),content=await import_fs_extra6.default.readFile(absolutePath,"utf8"),result=(0,import_docs_mdx.analyze)(content);if(result.isTemplate)return!1;let absoluteImports=result.imports.map(p=>makeAbsolute(p,normalizedPath,this.options.workingDir)),dependencies=this.findDependencies(absoluteImports),sortedDependencies=dependencies,csfEntry;if(result.of){let absoluteOf=makeAbsolute(result.of,normalizedPath,this.options.workingDir);dependencies.forEach(dep=>{if(dep.entries.length>0){let first=dep.entries.find(e2=>e2.type!=="docs");import_path6.default.normalize(import_path6.default.resolve(this.options.workingDir,first.importPath)).startsWith(import_path6.default.normalize(absoluteOf))&&(csfEntry=first)}sortedDependencies=[dep,...dependencies.filter(d=>d!==dep)]}),(0,import_tiny_invariant.default)(csfEntry,import_ts_dedent2.default`Could not find or load CSF file at path "${result.of}" referenced by \`of={}\` in docs file "${relativePath}".
|
|
20
20
|
|
|
21
21
|
- Does that file exist?
|
|
22
22
|
- If so, is it a CSF file (\`.stories.*\`)?
|
package/dist/index.mjs
CHANGED
|
@@ -16,7 +16,6 @@ import debounce from 'lodash/debounce.js';
|
|
|
16
16
|
import { STORY_INDEX_INVALIDATED } from '@storybook/core-events';
|
|
17
17
|
import Watchpack from 'watchpack';
|
|
18
18
|
import fs3 from 'fs';
|
|
19
|
-
import glob from 'globby';
|
|
20
19
|
import uniq from 'lodash/uniq.js';
|
|
21
20
|
import invariant from 'tiny-invariant';
|
|
22
21
|
import { userOrAutoTitleFromSpecifier, sortStoriesV7 } from '@storybook/preview-api';
|
|
@@ -51,10 +50,10 @@ var require_eastasianwidth=__commonJS({"../../node_modules/eastasianwidth/eastas
|
|
|
51
50
|
`,pad=opts.pad||" ",widthDiffFn=align!=="right"?halfDiff:fullDiff,returnString=!1;Array.isArray(text)||(returnString=!0,text=String(text).split(split));let width,maxWidth=0;return text=text.map(function(str){return str=String(str),width=stringWidth4(str),maxWidth=Math.max(width,maxWidth),{str,width}}).map(function(obj){return new Array(widthDiffFn(maxWidth,obj.width)+1).join(pad)+obj.str}),returnString?text.join(split):text}ansiAlign2.left=function(text){return ansiAlign2(text,{align:"left"})};ansiAlign2.center=function(text){return ansiAlign2(text,{align:"center"})};ansiAlign2.right=function(text){return ansiAlign2(text,{align:"right"})};module.exports=ansiAlign2;function halfDiff(maxWidth,curWidth){return Math.floor((maxWidth-curWidth)/2)}function fullDiff(maxWidth,curWidth){return maxWidth-curWidth}}});async function outputStats(directory,previewStats,managerStats){if(previewStats){let filePath=await writeStats(directory,"preview",previewStats);logger.info(`=> preview stats written to ${chalk8.cyan(filePath)}`);}if(managerStats){let filePath=await writeStats(directory,"manager",managerStats);logger.info(`=> manager stats written to ${chalk8.cyan(filePath)}`);}}var writeStats=async(directory,name,stats)=>{let filePath=path4.join(directory,`${name}-stats.json`),{chunks,...data}=stats.toJson();return await new Promise((resolve3,reject)=>{stringifyStream(data,null,2).on("error",reject).pipe(fs4.createWriteStream(filePath)).on("error",reject).on("finish",resolve3);}),filePath};async function useStatics(router2,options){let staticDirs=await options.presets.apply("staticDirs")??[],faviconPath=await options.presets.apply("favicon"),statics=[...staticDirs.map(dir=>typeof dir=="string"?dir:`${dir.from}:${dir.to}`)];statics&&statics.length>0&&await Promise.all(statics.map(async dir=>{try{let normalizedDir=staticDirs&&!isAbsolute(dir)?getDirectoryFromWorkingDir({configDir:options.configDir,workingDir:process.cwd(),directory:dir}):dir,{staticDir,staticPath,targetEndpoint}=await parseStaticDir(normalizedDir);targetEndpoint.startsWith("/sb-")||logger.info(chalk8`=> Serving static files from {cyan ${staticDir}} at {cyan ${targetEndpoint}}`),router2.use(targetEndpoint,express.static(staticPath,{index:!1}));}catch(e){e instanceof Error&&logger.warn(e.message);}})),router2.get(`/${basename(faviconPath)}`,(req,res)=>res.sendFile(faviconPath));}var parseStaticDir=async arg=>{let lastColonIndex=arg.lastIndexOf(":"),isWindowsRawDirOnly=path4.win32.isAbsolute(arg)&&lastColonIndex===1,splitIndex=lastColonIndex!==-1&&!isWindowsRawDirOnly?lastColonIndex:arg.length,target=(arg.substring(splitIndex+1)||"/").split(path4.sep).join(path4.posix.sep),rawDir=arg.substring(0,splitIndex),staticDir=path4.isAbsolute(rawDir)?rawDir:`./${rawDir}`,staticPath=path4.resolve(staticDir),targetDir=target.replace(/^\/?/,"./"),targetEndpoint=targetDir.substring(1);if(!await pathExists(staticPath))throw new Error(dedent(chalk8`
|
|
52
51
|
Failed to load static files, no such directory: {cyan ${staticPath}}
|
|
53
52
|
Make sure this directory exists.
|
|
54
|
-
`));return {staticDir,staticPath,targetDir,targetEndpoint}};async function copyAllStaticFilesRelativeToMain(staticDirs,outputDir,configDir){let workingDir=process.cwd();return staticDirs?.reduce(async(acc,dir)=>{await acc;let staticDirAndTarget=typeof dir=="string"?dir:`${dir.from}:${dir.to}`,{staticPath:from,targetEndpoint:to}=await parseStaticDir(getDirectoryFromWorkingDir({configDir,workingDir,directory:staticDirAndTarget})),targetPath=join(outputDir,to),skipPaths=["index.html","iframe.html"].map(f=>join(targetPath,f));from.includes("node_modules")||logger.info(chalk8`=> Copying static files: {cyan ${print(from)}} at {cyan ${print(targetPath)}}`),await fs4.copy(from,targetPath,{dereference:!0,preserveTimestamps:!0,filter:(_,dest)=>!skipPaths.includes(dest)});},Promise.resolve())}function print(p){return relative(process.cwd(),p)}async function getManagerBuilder(){return import('@storybook/builder-manager')}async function getPreviewBuilder(builderName,configDir){let builderPackage=__require.resolve(["webpack5"].includes(builderName)?`@storybook/builder-${builderName}`:builderName,{paths:[configDir]});return await import(pathToFileURL(builderPackage).href)}async function getBuilders({presets,configDir}){let{builder}=await presets.apply("core",{});if(!builder)throw new MissingBuilderError;let builderName=typeof builder=="string"?builder:builder.name;return Promise.all([getPreviewBuilder(builderName,configDir),getManagerBuilder()])}function slash(path6){return path6.startsWith("\\\\?\\")?path6:path6.replace(/\\/g,"/")}var isDirectory=directory=>{try{return fs3.lstatSync(directory).isDirectory()}catch{return !1}};function toImportPath(relativePath){return relativePath.startsWith(".")?relativePath:`./${relativePath}`}function watchStorySpecifiers(specifiers,options,onInvalidate){let wp=new Watchpack({followSymlinks:!1,ignored:["**/.git","**/node_modules"]});wp.watch({directories:uniq(specifiers.map(ns=>ns.directory))});async function onChangeOrRemove(watchpackPath,removed){let importPath=slash(watchpackPath.startsWith(".")?watchpackPath:`./${watchpackPath}`),matchingSpecifier=specifiers.find(ns=>ns.importPathMatcher.exec(importPath));if(matchingSpecifier){onInvalidate(matchingSpecifier,importPath,removed);return}let absolutePath=path4.join(options.workingDir,importPath);!removed&&isDirectory(absolutePath)&&await Promise.all(specifiers.filter(specifier=>importPath.startsWith(specifier.directory)).map(async specifier=>{let dirGlob=path4.join(options.workingDir,importPath,"**",path4.basename(specifier.files));(await
|
|
53
|
+
`));return {staticDir,staticPath,targetDir,targetEndpoint}};async function copyAllStaticFilesRelativeToMain(staticDirs,outputDir,configDir){let workingDir=process.cwd();return staticDirs?.reduce(async(acc,dir)=>{await acc;let staticDirAndTarget=typeof dir=="string"?dir:`${dir.from}:${dir.to}`,{staticPath:from,targetEndpoint:to}=await parseStaticDir(getDirectoryFromWorkingDir({configDir,workingDir,directory:staticDirAndTarget})),targetPath=join(outputDir,to),skipPaths=["index.html","iframe.html"].map(f=>join(targetPath,f));from.includes("node_modules")||logger.info(chalk8`=> Copying static files: {cyan ${print(from)}} at {cyan ${print(targetPath)}}`),await fs4.copy(from,targetPath,{dereference:!0,preserveTimestamps:!0,filter:(_,dest)=>!skipPaths.includes(dest)});},Promise.resolve())}function print(p){return relative(process.cwd(),p)}async function getManagerBuilder(){return import('@storybook/builder-manager')}async function getPreviewBuilder(builderName,configDir){let builderPackage=__require.resolve(["webpack5"].includes(builderName)?`@storybook/builder-${builderName}`:builderName,{paths:[configDir]});return await import(pathToFileURL(builderPackage).href)}async function getBuilders({presets,configDir}){let{builder}=await presets.apply("core",{});if(!builder)throw new MissingBuilderError;let builderName=typeof builder=="string"?builder:builder.name;return Promise.all([getPreviewBuilder(builderName,configDir),getManagerBuilder()])}function slash(path6){return path6.startsWith("\\\\?\\")?path6:path6.replace(/\\/g,"/")}var isDirectory=directory=>{try{return fs3.lstatSync(directory).isDirectory()}catch{return !1}};function toImportPath(relativePath){return relativePath.startsWith(".")?relativePath:`./${relativePath}`}function watchStorySpecifiers(specifiers,options,onInvalidate){let wp=new Watchpack({followSymlinks:!1,ignored:["**/.git","**/node_modules"]});wp.watch({directories:uniq(specifiers.map(ns=>ns.directory))});async function onChangeOrRemove(watchpackPath,removed){let importPath=slash(watchpackPath.startsWith(".")?watchpackPath:`./${watchpackPath}`),matchingSpecifier=specifiers.find(ns=>ns.importPathMatcher.exec(importPath));if(matchingSpecifier){onInvalidate(matchingSpecifier,importPath,removed);return}let absolutePath=path4.join(options.workingDir,importPath);!removed&&isDirectory(absolutePath)&&await Promise.all(specifiers.filter(specifier=>importPath.startsWith(specifier.directory)).map(async specifier=>{let dirGlob=path4.join(options.workingDir,importPath,"**",path4.basename(specifier.files)),{globby}=await import('globby');(await globby(slash(dirGlob),commonGlobOptions(dirGlob))).forEach(filePath=>{let fileImportPath=toImportPath(path4.relative(options.workingDir,filePath).replace(/\\/g,"/"));specifier.importPathMatcher.exec(fileImportPath)&&onInvalidate(specifier,fileImportPath,removed);});}));}return wp.on("change",async(filePath,mtime,explanation)=>{await onChangeOrRemove(filePath,!mtime);}),wp.on("remove",async(filePath,explanation)=>{await onChangeOrRemove(filePath,!0);}),()=>wp.close()}var DEBOUNCE=100;async function extractStoriesJson(outputFile,initializedStoryIndexGenerator,transform){let storyIndex=await(await initializedStoryIndexGenerator).getIndex();await writeJSON(outputFile,transform?transform(storyIndex):storyIndex);}function useStoriesJson({router:router2,initializedStoryIndexGenerator,workingDir=process.cwd(),serverChannel,normalizedStories}){let maybeInvalidate=debounce(()=>serverChannel.emit(STORY_INDEX_INVALIDATED),DEBOUNCE,{leading:!0});watchStorySpecifiers(normalizedStories,{workingDir},async(specifier,path6,removed)=>{(await initializedStoryIndexGenerator).invalidate(specifier,path6,removed),maybeInvalidate();}),router2.use("/index.json",async(req,res)=>{try{let index=await(await initializedStoryIndexGenerator).getIndex();res.header("Content-Type","application/json"),res.send(JSON.stringify(index));}catch(err){res.status(500),res.send(err instanceof Error?err.toString():String(err));}});}async function extractStorybookMetadata(outputFile,configDir){let storybookMetadata=await getStorybookMetadata(configDir);await writeJSON(outputFile,storybookMetadata);}function useStorybookMetadata(router2,configDir){router2.use("/project.json",async(req,res)=>{let storybookMetadata=await getStorybookMetadata(configDir);res.header("Content-Type","application/json"),res.send(JSON.stringify(storybookMetadata));});}function autoName(mdxImportPath,csfImportPath,defaultName){let mdxBasename=basename(mdxImportPath),csfBasename=basename(csfImportPath),[mdxFilename]=mdxBasename.split("."),[csfFilename]=csfBasename.split(".");return mdxFilename===csfFilename?defaultName:mdxFilename}var IndexingError=class extends Error{constructor(message,importPaths,stack){super(),this.message=message,this.importPaths=importPaths,stack&&(this.stack=stack);}pathsString(){return this.importPaths.length===1?`${slash(this.importPaths[0])}`:`${this.importPaths.map(slash).join(",")}`}toString(){return `${this.pathsString()}: ${this.message}`}},MultipleIndexingError=class extends Error{constructor(indexingErrors){super();this.indexingErrors=indexingErrors;if(this.indexingErrors.length===0)throw new Error("Unexpected empty error list");if(this.indexingErrors.length===1){let[err]=this.indexingErrors;this.message=`Unable to index ${err.pathsString()}`;}else this.message=`Unable to index files:
|
|
55
54
|
${this.indexingErrors.map(err=>`- ${err}`).join(`
|
|
56
55
|
`)}`;}toString(){return this.indexingErrors.length===1?`${this.message}:
|
|
57
|
-
${this.indexingErrors[0].stack}`:this.message}};var AUTODOCS_TAG="autodocs",STORIES_MDX_TAG="stories-mdx",PLAY_FN_TAG="play-fn";function isMdxEntry({tags}){return !tags?.includes(AUTODOCS_TAG)&&!tags?.includes(STORIES_MDX_TAG)}var makeAbsolute=(otherImport,normalizedPath,workingDir)=>otherImport.startsWith(".")?slash(path4.resolve(workingDir,normalizeStoryPath(path4.join(path4.dirname(normalizedPath),otherImport)))):otherImport,StoryIndexGenerator=class{constructor(specifiers,options){this.specifiers=specifiers;this.options=options;this.specifierToCache=new Map;}async initialize(){(await Promise.all(this.specifiers.map(async specifier=>{let pathToSubIndex={},fullGlob=slash(path4.join(this.options.workingDir,specifier.directory,specifier.files)),files=await
|
|
56
|
+
${this.indexingErrors[0].stack}`:this.message}};var AUTODOCS_TAG="autodocs",STORIES_MDX_TAG="stories-mdx",PLAY_FN_TAG="play-fn";function isMdxEntry({tags}){return !tags?.includes(AUTODOCS_TAG)&&!tags?.includes(STORIES_MDX_TAG)}var makeAbsolute=(otherImport,normalizedPath,workingDir)=>otherImport.startsWith(".")?slash(path4.resolve(workingDir,normalizeStoryPath(path4.join(path4.dirname(normalizedPath),otherImport)))):otherImport,StoryIndexGenerator=class{constructor(specifiers,options){this.specifiers=specifiers;this.options=options;this.specifierToCache=new Map;}async initialize(){(await Promise.all(this.specifiers.map(async specifier=>{let pathToSubIndex={},fullGlob=slash(path4.join(this.options.workingDir,specifier.directory,specifier.files)),{globby}=await import('globby'),files=await globby(fullGlob,commonGlobOptions(fullGlob));return files.length===0&&once.warn(`No story files found for the specified pattern: ${chalk8.blue(path4.join(specifier.directory,specifier.files))}`),files.sort().forEach(absolutePath=>{let ext=path4.extname(absolutePath);if(ext===".storyshot"){let relativePath=path4.relative(this.options.workingDir,absolutePath);logger.info(`Skipping ${ext} file ${relativePath}`);return}pathToSubIndex[absolutePath]=!1;}),[specifier,pathToSubIndex]}))).forEach(([specifier,cache3])=>this.specifierToCache.set(specifier,cache3)),await this.ensureExtracted();}async updateExtracted(updater,overwrite=!1){await Promise.all(this.specifiers.map(async specifier=>{let entry=this.specifierToCache.get(specifier);return invariant(entry,`specifier does not have a matching cache entry in specifierToCache: ${JSON.stringify(specifier)}`),Promise.all(Object.keys(entry).map(async absolutePath=>{if(!(entry[absolutePath]&&!overwrite))try{entry[absolutePath]=await updater(specifier,absolutePath,entry[absolutePath]);}catch(err){let relativePath=`.${path4.sep}${path4.relative(this.options.workingDir,absolutePath)}`;entry[absolutePath]={type:"error",err:new IndexingError(err instanceof Error?err.message:String(err),[relativePath],err instanceof Error?err.stack:void 0)};}}))}));}isDocsMdx(absolutePath){return new RegExp("(?<!\\.stories)\\.mdx$","i").test(absolutePath)}async ensureExtracted(){return await this.updateExtracted(async(specifier,absolutePath)=>this.isDocsMdx(absolutePath)?!1:this.extractStories(specifier,absolutePath)),await this.updateExtracted(async(specifier,absolutePath)=>this.extractDocs(specifier,absolutePath)),this.specifiers.flatMap(specifier=>{let cache3=this.specifierToCache.get(specifier);return invariant(cache3,`specifier does not have a matching cache entry in specifierToCache: ${JSON.stringify(specifier)}`),Object.values(cache3).flatMap(entry=>entry?entry.type==="docs"?[entry]:entry.type==="error"?[entry]:entry.entries.map(item=>{if(item.type==="docs")return item;let{metaId,...existing}=item;return existing}):[])})}findDependencies(absoluteImports){return [...this.specifierToCache.values()].flatMap(cache3=>Object.entries(cache3).filter(([fileName,cacheEntry])=>!cacheEntry||cacheEntry.type!=="stories"?!1:!!absoluteImports.find(storyImport=>fileName.match(new RegExp(`^${storyImport}(\\.[^.]+)?$`)))).map(([_,cacheEntry])=>cacheEntry))}async extractStories(specifier,absolutePath){let relativePath=path4.relative(this.options.workingDir,absolutePath),importPath=slash(normalizeStoryPath(relativePath)),defaultMakeTitle=userTitle=>{let title=userOrAutoTitleFromSpecifier(importPath,specifier,userTitle);return invariant(title,"makeTitle created an undefined title. This happens when the fileName doesn't match any specifier from main.js"),title},indexer=this.options.indexers.find(ind=>ind.test.exec(absolutePath));invariant(indexer,`No matching indexer found for ${absolutePath}`);let indexInputs=await indexer.createIndex(absolutePath,{makeTitle:defaultMakeTitle}),entries=indexInputs.map(input=>{let name=input.name??storyNameFromExport(input.exportName),title=input.title??defaultMakeTitle(),id=input.__id??toId(input.metaId??title,storyNameFromExport(input.exportName)),tags=(input.tags||[]).concat("story");return {type:"story",id,metaId:input.metaId,name,title,importPath,tags}}),{autodocs}=this.options.docs,hasAutodocsTag=entries.some(entry=>entry.tags.includes(AUTODOCS_TAG)),isStoriesMdx=entries.some(entry=>entry.tags.includes(STORIES_MDX_TAG));if((autodocs===!0||autodocs==="tag"&&hasAutodocsTag||isStoriesMdx)&&this.options.build?.test?.disableAutoDocs!==!0){let name=this.options.docs.defaultName??"Docs",{metaId}=indexInputs[0],{title}=entries[0],metaTags=indexInputs[0].metaTags||[],id=toId(metaId??title,name);entries.unshift({id,title,name,importPath,type:"docs",tags:[...metaTags,"docs",...!hasAutodocsTag&&!isStoriesMdx?[AUTODOCS_TAG]:[]],storiesImports:[]});}return {entries:entries.filter(entry=>!(entry.type==="story"&&entry.tags.includes("stories-mdx-docsOnly"))),dependents:[],type:"stories"}}async extractDocs(specifier,absolutePath){let relativePath=path4.relative(this.options.workingDir,absolutePath);try{let normalizedPath=normalizeStoryPath(relativePath),importPath=slash(normalizedPath),content=await fs4.readFile(absolutePath,"utf8"),result=analyze(content);if(result.isTemplate)return !1;let absoluteImports=result.imports.map(p=>makeAbsolute(p,normalizedPath,this.options.workingDir)),dependencies=this.findDependencies(absoluteImports),sortedDependencies=dependencies,csfEntry;if(result.of){let absoluteOf=makeAbsolute(result.of,normalizedPath,this.options.workingDir);dependencies.forEach(dep=>{if(dep.entries.length>0){let first=dep.entries.find(e=>e.type!=="docs");path4.normalize(path4.resolve(this.options.workingDir,first.importPath)).startsWith(path4.normalize(absoluteOf))&&(csfEntry=first);}sortedDependencies=[dep,...dependencies.filter(d=>d!==dep)];}),invariant(csfEntry,dedent2`Could not find or load CSF file at path "${result.of}" referenced by \`of={}\` in docs file "${relativePath}".
|
|
58
57
|
|
|
59
58
|
- Does that file exist?
|
|
60
59
|
- If so, is it a CSF file (\`.stories.*\`)?
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storybook/core-server",
|
|
3
|
-
"version": "8.1.0-alpha.
|
|
3
|
+
"version": "8.1.0-alpha.6",
|
|
4
4
|
"description": "Storybook framework-agnostic API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"storybook"
|
|
@@ -58,20 +58,20 @@
|
|
|
58
58
|
"@aw-web-design/x-default-browser": "1.4.126",
|
|
59
59
|
"@babel/core": "^7.23.9",
|
|
60
60
|
"@discoveryjs/json-ext": "^0.5.3",
|
|
61
|
-
"@storybook/builder-manager": "8.1.0-alpha.
|
|
62
|
-
"@storybook/channels": "8.1.0-alpha.
|
|
63
|
-
"@storybook/core-common": "8.1.0-alpha.
|
|
64
|
-
"@storybook/core-events": "8.1.0-alpha.
|
|
61
|
+
"@storybook/builder-manager": "8.1.0-alpha.6",
|
|
62
|
+
"@storybook/channels": "8.1.0-alpha.6",
|
|
63
|
+
"@storybook/core-common": "8.1.0-alpha.6",
|
|
64
|
+
"@storybook/core-events": "8.1.0-alpha.6",
|
|
65
65
|
"@storybook/csf": "^0.1.2",
|
|
66
|
-
"@storybook/csf-tools": "8.1.0-alpha.
|
|
66
|
+
"@storybook/csf-tools": "8.1.0-alpha.6",
|
|
67
67
|
"@storybook/docs-mdx": "3.0.0",
|
|
68
68
|
"@storybook/global": "^5.0.0",
|
|
69
|
-
"@storybook/manager": "8.1.0-alpha.
|
|
70
|
-
"@storybook/manager-api": "8.1.0-alpha.
|
|
71
|
-
"@storybook/node-logger": "8.1.0-alpha.
|
|
72
|
-
"@storybook/preview-api": "8.1.0-alpha.
|
|
73
|
-
"@storybook/telemetry": "8.1.0-alpha.
|
|
74
|
-
"@storybook/types": "8.1.0-alpha.
|
|
69
|
+
"@storybook/manager": "8.1.0-alpha.6",
|
|
70
|
+
"@storybook/manager-api": "8.1.0-alpha.6",
|
|
71
|
+
"@storybook/node-logger": "8.1.0-alpha.6",
|
|
72
|
+
"@storybook/preview-api": "8.1.0-alpha.6",
|
|
73
|
+
"@storybook/telemetry": "8.1.0-alpha.6",
|
|
74
|
+
"@storybook/types": "8.1.0-alpha.6",
|
|
75
75
|
"@types/detect-port": "^1.3.0",
|
|
76
76
|
"@types/node": "^18.0.0",
|
|
77
77
|
"@types/pretty-hrtime": "^1.0.0",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"detect-port": "^1.3.0",
|
|
84
84
|
"express": "^4.17.3",
|
|
85
85
|
"fs-extra": "^11.1.0",
|
|
86
|
-
"globby": "^
|
|
86
|
+
"globby": "^14.0.1",
|
|
87
87
|
"ip": "^2.0.1",
|
|
88
88
|
"lodash": "^4.17.21",
|
|
89
89
|
"open": "^8.4.0",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"ws": "^8.2.3"
|
|
101
101
|
},
|
|
102
102
|
"devDependencies": {
|
|
103
|
-
"@storybook/addon-docs": "8.1.0-alpha.
|
|
103
|
+
"@storybook/addon-docs": "8.1.0-alpha.6",
|
|
104
104
|
"@types/compression": "^1.7.0",
|
|
105
105
|
"@types/ip": "^1.1.0",
|
|
106
106
|
"@types/node-fetch": "^2.5.7",
|