@storybook/builder-vite 8.5.1 → 8.5.3
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
@@ -69,7 +69,7 @@ globstar while`,file,fr,pattern,pr,swallowee),this.matchOne(file.slice(fr),patte
|
|
69
69
|
if (window.CONFIG_TYPE === 'DEVELOPMENT'){
|
70
70
|
window.__STORYBOOK_SERVER_CHANNEL__ = channel;
|
71
71
|
}
|
72
|
-
`.trim()}var import_common5=require("storybook/internal/common");async function transformIframeHtml(html,options){let{configType,features,presets}=options,build3=await presets.apply("build"),frameworkOptions=await presets.apply("frameworkOptions"),headHtmlSnippet=await presets.apply("previewHead"),bodyHtmlSnippet=await presets.apply("previewBody"),logLevel=await presets.apply("logLevel",void 0),docsOptions=await presets.apply("docs"),tagsOptions=await presets.apply("tags"),coreOptions=await presets.apply("core"),stories=(0,import_common5.normalizeStories)(await options.presets.apply("stories",[],options),{configDir:options.configDir,workingDir:process.cwd()}).map(specifier=>({...specifier,importPathMatcher:specifier.importPathMatcher.source})),otherGlobals={...build3?.test?.disableBlocks?{__STORYBOOK_BLOCKS_EMPTY_MODULE__:{}}:{}};return html.replace("[CONFIG_TYPE HERE]",configType||"").replace("[LOGLEVEL HERE]",logLevel||"").replace("'[FRAMEWORK_OPTIONS HERE]'",JSON.stringify(frameworkOptions)).replace("('OTHER_GLOBLALS HERE');",Object.entries(otherGlobals).map(([k,v])=>`window["${k}"] = ${JSON.stringify(v)};`).join("")).replace("'[CHANNEL_OPTIONS HERE]'",JSON.stringify(coreOptions&&coreOptions.channelOptions?coreOptions.channelOptions:{})).replace("'[FEATURES HERE]'",JSON.stringify(features||{})).replace("'[STORIES HERE]'",JSON.stringify(stories||{})).replace("'[DOCS_OPTIONS HERE]'",JSON.stringify(docsOptions||{})).replace("'[TAGS_OPTIONS HERE]'",JSON.stringify(tagsOptions||{})).replace("<!-- [HEAD HTML SNIPPET HERE] -->",headHtmlSnippet||"").replace("<!-- [BODY HTML SNIPPET HERE] -->",bodyHtmlSnippet||"")}function codeGeneratorPlugin(options){let iframePath=require.resolve("@storybook/builder-vite/input/iframe.html"),iframeId,projectRoot;return{name:"storybook:code-generator-plugin",enforce:"pre",configureServer(server2){server2.watcher.on("change",()=>{let appModule=server2.moduleGraph.getModuleById(getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_APP_FILE));appModule&&server2.moduleGraph.invalidateModule(appModule);let storiesModule=server2.moduleGraph.getModuleById(getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE));storiesModule&&server2.moduleGraph.invalidateModule(storiesModule)}),server2.watcher.on("add",path3=>{(/\.stories\.([tj])sx?$/.test(path3)||/\.mdx$/.test(path3))&&server2.watcher.emit("change",SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE)})},config(config,{command}){command==="build"&&(config.build||(config.build={}),config.build.rollupOptions={...config.build.rollupOptions,input:iframePath})},configResolved(config){projectRoot=config.root,iframeId=`${config.root}/iframe.html`},resolveId(source){if(source===SB_VIRTUAL_FILES.VIRTUAL_APP_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_APP_FILE);if(source===iframePath)return iframeId;if(source===SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE);if(source===SB_VIRTUAL_FILES.VIRTUAL_PREVIEW_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_PREVIEW_FILE);if(source===SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE)},async load(id,config){if(id===getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE))return generateImportFnScriptCode(options);if(id===getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE))return generateAddonSetupCode();if(id===getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_APP_FILE))return generateModernIframeScriptCode(options,projectRoot);if(id===iframeId)return(0,import_node_fs.readFileSync)(require.resolve("@storybook/builder-vite/input/iframe.html"),"utf-8")},async transformIndexHtml(html,ctx){if(ctx.path==="/iframe.html")return transformIframeHtml(html,options)}}}var import_csf_plugin=require("@storybook/csf-plugin");async function csfPlugin(config){let{presets}=config,docsOptions=(await presets.apply("addons",[])).find(a=>[a,a.name].includes("@storybook/addon-docs"))?.options??{};return(0,import_csf_plugin.vite)(docsOptions?.csfPluginOptions)}var import_node_fs2=require("fs"),import_promises2=require("fs/promises"),import_node_path4=require("path");var import_find_cache_dir=__toESM(require_find_cache_dir());var escapeKeys=key=>key.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),defaultImportRegExp="import ([^*{}]+) from",replacementMap=new Map([["import ","const "],["import{","const {"],["* as ",""],[" as ",": "],[" from "," = "],["}from","} ="]]);async function externalGlobalsPlugin(externals){await init;let{mergeAlias}=await import("vite");return{name:"storybook:external-globals-plugin",enforce:"post",async config(config,{command}){if(command!=="serve")return;let newAlias=mergeAlias([],config.resolve?.alias),cachePath=(0,import_find_cache_dir.default)({name:"sb-vite-plugin-externals",create:!0});return await Promise.all(Object.keys(externals).map(async externalKey=>{let externalCachePath=(0,import_node_path4.join)(cachePath,`${externalKey}.js`);if(newAlias.push({find:new RegExp(`^${externalKey}$`),replacement:externalCachePath}),!(0,import_node_fs2.existsSync)(externalCachePath)){let directory=(0,import_node_path4.dirname)(externalCachePath);await(0,import_promises2.mkdir)(directory,{recursive:!0})}await(0,import_promises2.writeFile)(externalCachePath,`module.exports = ${externals[externalKey]};`)})),{resolve:{alias:newAlias}}},async transform(code,id){let globalsList=Object.keys(externals);if(globalsList.every(glob2=>!code.includes(glob2)))return;let[imports]=parse(code),src=new MagicString(code);return imports.forEach(({n:path3,ss:startPosition,se:endPosition})=>{let packageName=path3;if(packageName&&globalsList.includes(packageName)){let importStatement=src.slice(startPosition,endPosition),transformedImport=rewriteImport(importStatement,externals,packageName);src.update(startPosition,endPosition,transformedImport)}}),{code:src.toString(),map:null}}}}function getDefaultImportReplacement(match2){let matched=match2.match(defaultImportRegExp);return matched&&`const {default: ${matched[1]}} =`}function getSearchRegExp(packageName){let staticKeys=[...replacementMap.keys()].map(escapeKeys),packageNameLiteral=`.${packageName}.`,dynamicImportExpression=`await import\\(.${packageName}.\\)`,lookup=[defaultImportRegExp,...staticKeys,packageNameLiteral,dynamicImportExpression];return new RegExp(`(${lookup.join("|")})`,"g")}function rewriteImport(importStatement,globs,packageName){let search=getSearchRegExp(packageName);return importStatement.replace(search,match2=>replacementMap.get(match2)??getDefaultImportReplacement(match2)??globs[packageName])}var import_node_path5=require("path");function stripQueryParams(filePath){return filePath.split("?")[0]}function isUserCode(moduleName){return moduleName?Object.values(SB_VIRTUAL_FILES).includes(getOriginalVirtualModuleId(moduleName))?!0:!moduleName.startsWith("vite/")&&!moduleName.startsWith("\0")&&moduleName!=="react/jsx-runtime"&&!moduleName.match(/node_modules\//):!1}function pluginWebpackStats({workingDir}){function normalize3(filename){if(filename.startsWith("/virtual:"))return filename;if(Object.values(SB_VIRTUAL_FILES).includes(getOriginalVirtualModuleId(filename)))return getOriginalVirtualModuleId(filename);{let relativePath=(0,import_node_path5.relative)(workingDir,stripQueryParams(filename));return`./${slash(relativePath)}`}}function createReasons(importers){return(importers||[]).map(i=>({moduleName:normalize3(i)}))}function createStatsMapModule(filename,importers){return{id:filename,name:filename,reasons:createReasons(importers)}}let statsMap=new Map;return{name:"storybook:rollup-plugin-webpack-stats",enforce:"post",moduleParsed:function(mod){isUserCode(mod.id)&&mod.importedIds.concat(mod.dynamicallyImportedIds).filter(name=>isUserCode(name)).forEach(depIdUnsafe=>{let depId=normalize3(depIdUnsafe);if(!statsMap.has(depId)){statsMap.set(depId,createStatsMapModule(depId,[mod.id]));return}let m=statsMap.get(depId);m&&(m.reasons=(m.reasons??[]).concat(createReasons([mod.id])).filter(r=>r.moduleName!==depId),statsMap.set(depId,m))})},storybookGetStats(){let stats={modules:Array.from(statsMap.values())};return{...stats,toJson:()=>stats}}}}var configEnvServe={mode:"development",command:"serve",ssrBuild:!1},configEnvBuild={mode:"production",command:"build",ssrBuild:!1};async function commonConfig(options,_type){let configEnv=_type==="development"?configEnvServe:configEnvBuild,{loadConfigFromFile,mergeConfig,defaultClientConditions=[]}=await import("vite"),{viteConfigPath}=await(0,import_common6.getBuilderOptions)(options),projectRoot=(0,import_node_path6.resolve)(options.configDir,".."),{config:{build:buildProperty=void 0,...userConfig}={}}=await loadConfigFromFile(configEnv,viteConfigPath,projectRoot)??{},sbConfig={configFile:!1,cacheDir:(0,import_common6.resolvePathInStorybookCache)("sb-vite",options.cacheKey),root:projectRoot,base:"./",plugins:await pluginConfig(options),resolve:{conditions:["storybook","stories","test",...defaultClientConditions],preserveSymlinks:(0,import_common6.isPreservingSymlinks)(),alias:{assert:require.resolve("browser-assert")}},envPrefix:userConfig.envPrefix?["STORYBOOK_"]:["VITE_","STORYBOOK_"],build:{target:buildProperty?.target}};return mergeConfig(userConfig,sbConfig)}async function pluginConfig(options){let frameworkName=await(0,import_common6.getFrameworkName)(options),build3=await options.presets.apply("build"),externals=import_globals.globalsNameReferenceMap;return build3?.test?.disableBlocks&&(externals["@storybook/blocks"]="__STORYBOOK_BLOCKS_EMPTY_MODULE__"),[codeGeneratorPlugin(options),await csfPlugin(options),await injectExportOrderPlugin(),await stripStoryHMRBoundary(),{name:"storybook:allow-storybook-dir",enforce:"post",config(config){config?.server?.fs?.allow&&config.server.fs.allow.push(".storybook")}},await externalGlobalsPlugin(externals),pluginWebpackStats({workingDir:process.cwd()})]}function findPlugin(config,name){return config.plugins?.find(p=>p&&"name"in p&&p.name===name)}async function build(options){let{build:viteBuild,mergeConfig}=await import("vite"),{presets}=options,config=await commonConfig(options,"build");config.build=mergeConfig(config,{build:{outDir:options.outputDir,emptyOutDir:!1,rollupOptions:{external:[/\.\/sb-common-assets\/.*\.woff2/]},...options.test?{reportCompressedSize:!1,sourcemap:!options.build?.test?.disableSourcemaps,target:"esnext",treeshake:!options.build?.test?.disableTreeShaking}:{}}}).build;let finalConfig=await presets.apply("viteFinal",config,options);options.features?.developmentModeForBuild&&finalConfig.plugins?.push({name:"storybook:define-env",config:()=>({define:{"process.env.NODE_ENV":JSON.stringify("development")}})});let turbosnapPluginName="rollup-plugin-turbosnap";return finalConfig.plugins&&await hasVitePlugins(finalConfig.plugins,[turbosnapPluginName])&&(import_node_logger.logger.warn(import_ts_dedent2.dedent`Found '${turbosnapPluginName}' which is now included by default in Storybook 8.
|
72
|
+
`.trim()}var import_common5=require("storybook/internal/common");async function transformIframeHtml(html,options){let{configType,features,presets}=options,build3=await presets.apply("build"),frameworkOptions=await presets.apply("frameworkOptions"),headHtmlSnippet=await presets.apply("previewHead"),bodyHtmlSnippet=await presets.apply("previewBody"),logLevel=await presets.apply("logLevel",void 0),docsOptions=await presets.apply("docs"),tagsOptions=await presets.apply("tags"),coreOptions=await presets.apply("core"),stories=(0,import_common5.normalizeStories)(await options.presets.apply("stories",[],options),{configDir:options.configDir,workingDir:process.cwd()}).map(specifier=>({...specifier,importPathMatcher:specifier.importPathMatcher.source})),otherGlobals={...build3?.test?.disableBlocks?{__STORYBOOK_BLOCKS_EMPTY_MODULE__:{}}:{}};return html.replace("[CONFIG_TYPE HERE]",configType||"").replace("[LOGLEVEL HERE]",logLevel||"").replace("'[FRAMEWORK_OPTIONS HERE]'",JSON.stringify(frameworkOptions)).replace("('OTHER_GLOBLALS HERE');",Object.entries(otherGlobals).map(([k,v])=>`window["${k}"] = ${JSON.stringify(v)};`).join("")).replace("'[CHANNEL_OPTIONS HERE]'",JSON.stringify(coreOptions&&coreOptions.channelOptions?coreOptions.channelOptions:{})).replace("'[FEATURES HERE]'",JSON.stringify(features||{})).replace("'[STORIES HERE]'",JSON.stringify(stories||{})).replace("'[DOCS_OPTIONS HERE]'",JSON.stringify(docsOptions||{})).replace("'[TAGS_OPTIONS HERE]'",JSON.stringify(tagsOptions||{})).replace("<!-- [HEAD HTML SNIPPET HERE] -->",headHtmlSnippet||"").replace("<!-- [BODY HTML SNIPPET HERE] -->",bodyHtmlSnippet||"")}function codeGeneratorPlugin(options){let iframePath=require.resolve("@storybook/builder-vite/input/iframe.html"),iframeId,projectRoot;return{name:"storybook:code-generator-plugin",enforce:"pre",configureServer(server2){server2.watcher.on("change",()=>{let appModule=server2.moduleGraph.getModuleById(getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_APP_FILE));appModule&&server2.moduleGraph.invalidateModule(appModule);let storiesModule=server2.moduleGraph.getModuleById(getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE));storiesModule&&server2.moduleGraph.invalidateModule(storiesModule)}),server2.watcher.on("add",path3=>{(/\.stories\.([tj])sx?$/.test(path3)||/\.mdx$/.test(path3))&&server2.watcher.emit("change",getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE))})},config(config,{command}){command==="build"&&(config.build||(config.build={}),config.build.rollupOptions={...config.build.rollupOptions,input:iframePath})},configResolved(config){projectRoot=config.root,iframeId=`${config.root}/iframe.html`},resolveId(source){if(source===SB_VIRTUAL_FILES.VIRTUAL_APP_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_APP_FILE);if(source===iframePath)return iframeId;if(source===SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE);if(source===SB_VIRTUAL_FILES.VIRTUAL_PREVIEW_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_PREVIEW_FILE);if(source===SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE)},async load(id,config){if(id===getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE))return generateImportFnScriptCode(options);if(id===getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE))return generateAddonSetupCode();if(id===getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_APP_FILE))return generateModernIframeScriptCode(options,projectRoot);if(id===iframeId)return(0,import_node_fs.readFileSync)(require.resolve("@storybook/builder-vite/input/iframe.html"),"utf-8")},async transformIndexHtml(html,ctx){if(ctx.path==="/iframe.html")return transformIframeHtml(html,options)}}}var import_csf_plugin=require("@storybook/csf-plugin");async function csfPlugin(config){let{presets}=config,docsOptions=(await presets.apply("addons",[])).find(a=>[a,a.name].includes("@storybook/addon-docs"))?.options??{};return(0,import_csf_plugin.vite)(docsOptions?.csfPluginOptions)}var import_node_fs2=require("fs"),import_promises2=require("fs/promises"),import_node_path4=require("path");var import_find_cache_dir=__toESM(require_find_cache_dir());var escapeKeys=key=>key.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),defaultImportRegExp="import ([^*{}]+) from",replacementMap=new Map([["import ","const "],["import{","const {"],["* as ",""],[" as ",": "],[" from "," = "],["}from","} ="]]);async function externalGlobalsPlugin(externals){await init;let{mergeAlias}=await import("vite");return{name:"storybook:external-globals-plugin",enforce:"post",async config(config,{command}){if(command!=="serve")return;let newAlias=mergeAlias([],config.resolve?.alias),cachePath=(0,import_find_cache_dir.default)({name:"sb-vite-plugin-externals",create:!0});return await Promise.all(Object.keys(externals).map(async externalKey=>{let externalCachePath=(0,import_node_path4.join)(cachePath,`${externalKey}.js`);if(newAlias.push({find:new RegExp(`^${externalKey}$`),replacement:externalCachePath}),!(0,import_node_fs2.existsSync)(externalCachePath)){let directory=(0,import_node_path4.dirname)(externalCachePath);await(0,import_promises2.mkdir)(directory,{recursive:!0})}await(0,import_promises2.writeFile)(externalCachePath,`module.exports = ${externals[externalKey]};`)})),{resolve:{alias:newAlias}}},async transform(code,id){let globalsList=Object.keys(externals);if(globalsList.every(glob2=>!code.includes(glob2)))return;let[imports]=parse(code),src=new MagicString(code);return imports.forEach(({n:path3,ss:startPosition,se:endPosition})=>{let packageName=path3;if(packageName&&globalsList.includes(packageName)){let importStatement=src.slice(startPosition,endPosition),transformedImport=rewriteImport(importStatement,externals,packageName);src.update(startPosition,endPosition,transformedImport)}}),{code:src.toString(),map:null}}}}function getDefaultImportReplacement(match2){let matched=match2.match(defaultImportRegExp);return matched&&`const {default: ${matched[1]}} =`}function getSearchRegExp(packageName){let staticKeys=[...replacementMap.keys()].map(escapeKeys),packageNameLiteral=`.${packageName}.`,dynamicImportExpression=`await import\\(.${packageName}.\\)`,lookup=[defaultImportRegExp,...staticKeys,packageNameLiteral,dynamicImportExpression];return new RegExp(`(${lookup.join("|")})`,"g")}function rewriteImport(importStatement,globs,packageName){let search=getSearchRegExp(packageName);return importStatement.replace(search,match2=>replacementMap.get(match2)??getDefaultImportReplacement(match2)??globs[packageName])}var import_node_path5=require("path");function stripQueryParams(filePath){return filePath.split("?")[0]}function isUserCode(moduleName){return moduleName?Object.values(SB_VIRTUAL_FILES).includes(getOriginalVirtualModuleId(moduleName))?!0:!moduleName.startsWith("vite/")&&!moduleName.startsWith("\0")&&moduleName!=="react/jsx-runtime"&&!moduleName.match(/node_modules\//):!1}function pluginWebpackStats({workingDir}){function normalize3(filename){if(filename.startsWith("/virtual:"))return filename;if(Object.values(SB_VIRTUAL_FILES).includes(getOriginalVirtualModuleId(filename)))return getOriginalVirtualModuleId(filename);{let relativePath=(0,import_node_path5.relative)(workingDir,stripQueryParams(filename));return`./${slash(relativePath)}`}}function createReasons(importers){return(importers||[]).map(i=>({moduleName:normalize3(i)}))}function createStatsMapModule(filename,importers){return{id:filename,name:filename,reasons:createReasons(importers)}}let statsMap=new Map;return{name:"storybook:rollup-plugin-webpack-stats",enforce:"post",moduleParsed:function(mod){isUserCode(mod.id)&&mod.importedIds.concat(mod.dynamicallyImportedIds).filter(name=>isUserCode(name)).forEach(depIdUnsafe=>{let depId=normalize3(depIdUnsafe);if(!statsMap.has(depId)){statsMap.set(depId,createStatsMapModule(depId,[mod.id]));return}let m=statsMap.get(depId);m&&(m.reasons=(m.reasons??[]).concat(createReasons([mod.id])).filter(r=>r.moduleName!==depId),statsMap.set(depId,m))})},storybookGetStats(){let stats={modules:Array.from(statsMap.values())};return{...stats,toJson:()=>stats}}}}var configEnvServe={mode:"development",command:"serve",ssrBuild:!1},configEnvBuild={mode:"production",command:"build",ssrBuild:!1};async function commonConfig(options,_type){let configEnv=_type==="development"?configEnvServe:configEnvBuild,{loadConfigFromFile,mergeConfig,defaultClientConditions=[]}=await import("vite"),{viteConfigPath}=await(0,import_common6.getBuilderOptions)(options),projectRoot=(0,import_node_path6.resolve)(options.configDir,".."),{config:{build:buildProperty=void 0,...userConfig}={}}=await loadConfigFromFile(configEnv,viteConfigPath,projectRoot)??{},sbConfig={configFile:!1,cacheDir:(0,import_common6.resolvePathInStorybookCache)("sb-vite",options.cacheKey),root:projectRoot,base:"./",plugins:await pluginConfig(options),resolve:{conditions:["storybook","stories","test",...defaultClientConditions],preserveSymlinks:(0,import_common6.isPreservingSymlinks)(),alias:{assert:require.resolve("browser-assert")}},envPrefix:userConfig.envPrefix?["STORYBOOK_"]:["VITE_","STORYBOOK_"],build:{target:buildProperty?.target}};return mergeConfig(userConfig,sbConfig)}async function pluginConfig(options){let frameworkName=await(0,import_common6.getFrameworkName)(options),build3=await options.presets.apply("build"),externals=import_globals.globalsNameReferenceMap;return build3?.test?.disableBlocks&&(externals["@storybook/blocks"]="__STORYBOOK_BLOCKS_EMPTY_MODULE__"),[codeGeneratorPlugin(options),await csfPlugin(options),await injectExportOrderPlugin(),await stripStoryHMRBoundary(),{name:"storybook:allow-storybook-dir",enforce:"post",config(config){config?.server?.fs?.allow&&config.server.fs.allow.push(".storybook")}},await externalGlobalsPlugin(externals),pluginWebpackStats({workingDir:process.cwd()})]}function findPlugin(config,name){return config.plugins?.find(p=>p&&"name"in p&&p.name===name)}async function build(options){let{build:viteBuild,mergeConfig}=await import("vite"),{presets}=options,config=await commonConfig(options,"build");config.build=mergeConfig(config,{build:{outDir:options.outputDir,emptyOutDir:!1,rollupOptions:{external:[/\.\/sb-common-assets\/.*\.woff2/]},...options.test?{reportCompressedSize:!1,sourcemap:!options.build?.test?.disableSourcemaps,target:"esnext",treeshake:!options.build?.test?.disableTreeShaking}:{}}}).build;let finalConfig=await presets.apply("viteFinal",config,options);options.features?.developmentModeForBuild&&finalConfig.plugins?.push({name:"storybook:define-env",config:()=>({define:{"process.env.NODE_ENV":JSON.stringify("development")}})});let turbosnapPluginName="rollup-plugin-turbosnap";return finalConfig.plugins&&await hasVitePlugins(finalConfig.plugins,[turbosnapPluginName])&&(import_node_logger.logger.warn(import_ts_dedent2.dedent`Found '${turbosnapPluginName}' which is now included by default in Storybook 8.
|
73
73
|
Removing from your plugins list. Ensure you pass \`--stats-json\` to generate stats.
|
74
74
|
|
75
75
|
For more information, see https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#turbosnap-vite-plugin-is-no-longer-needed`),finalConfig.plugins=await withoutVitePlugins(finalConfig.plugins,[turbosnapPluginName])),await viteBuild(await sanitizeEnvVars(options,finalConfig)),findPlugin(finalConfig,"storybook:rollup-plugin-webpack-stats")?.storybookGetStats()}var import_node_path7=require("path");var INCLUDE_CANDIDATES=["@base2/pretty-print-object","@emotion/core","@emotion/is-prop-valid","@emotion/styled","@storybook/addon-a11y/preview","@storybook/addon-backgrounds/preview","@storybook/addon-designs/blocks","@storybook/addon-docs/preview","@storybook/addon-essentials/actions/preview","@storybook/addon-essentials/actions/preview","@storybook/addon-essentials/backgrounds/preview","@storybook/addon-essentials/docs/preview","@storybook/addon-essentials/highlight/preview","@storybook/addon-essentials/measure/preview","@storybook/addon-essentials/outline/preview","@storybook/addon-essentials/viewport/preview","@storybook/addon-highlight/preview","@storybook/addon-links/preview","@storybook/addon-measure/preview","@storybook/addon-outline/preview","@storybook/addon-themes","@storybook/addon-themes/preview","@storybook/addon-viewport","@storybook/addon-viewport/preview","@storybook/blocks","@storybook/components","@storybook/experimental-addon-test/preview","@storybook/experimental-nextjs-vite/dist/preview.mjs","@storybook/html","@storybook/html/dist/entry-preview-docs.mjs","@storybook/html/dist/entry-preview.mjs","@storybook/preact","@storybook/preact/dist/entry-preview-docs.mjs","@storybook/preact/dist/entry-preview.mjs","@storybook/react > acorn-jsx","@storybook/react","@storybook/react/dist/entry-preview-docs.mjs","@storybook/react/dist/entry-preview-rsc.mjs","@storybook/react/dist/entry-preview.mjs","@storybook/svelte","@storybook/svelte/dist/entry-preview-docs.mjs","@storybook/svelte/dist/entry-preview.mjs","@storybook/theming","@storybook/vue3","@storybook/vue3/dist/entry-preview-docs.mjs","@storybook/vue3/dist/entry-preview.mjs","@storybook/web-components","@storybook/web-components/dist/entry-preview-docs.mjs","@storybook/web-components/dist/entry-preview.mjs","acorn-jsx","acorn-walk","acorn","airbnb-js-shims","ansi-to-html","axe-core","chromatic/isChromatic","color-convert","deep-object-diff","doctrine","emotion-theming","escodegen","estraverse","fast-deep-equal","html-tags","isobject","jsdoc-type-pratt-parser","loader-utils","lodash/camelCase.js","lodash/camelCase","lodash/cloneDeep.js","lodash/cloneDeep","lodash/countBy.js","lodash/countBy","lodash/debounce.js","lodash/debounce","lodash/isEqual.js","lodash/isEqual","lodash/isFunction.js","lodash/isFunction","lodash/isPlainObject.js","lodash/isPlainObject","lodash/isString.js","lodash/isString","lodash/kebabCase.js","lodash/kebabCase","lodash/mapKeys.js","lodash/mapKeys","lodash/mapValues.js","lodash/mapValues","lodash/merge.js","lodash/merge","lodash/mergeWith.js","lodash/mergeWith","lodash/pick.js","lodash/pick","lodash/pickBy.js","lodash/pickBy","lodash/startCase.js","lodash/startCase","lodash/throttle.js","lodash/throttle","lodash/uniq.js","lodash/uniq","lodash/upperFirst.js","lodash/upperFirst","memoizerific","mockdate","msw-storybook-addon","overlayscrollbars","polished","prettier/parser-babel","prettier/parser-flow","prettier/parser-typescript","prop-types","qs","react-dom","react-dom/client","react-fast-compare","react-is","react-textarea-autosize","react","react/jsx-runtime","refractor/core","refractor/lang/bash.js","refractor/lang/css.js","refractor/lang/graphql.js","refractor/lang/js-extras.js","refractor/lang/json.js","refractor/lang/jsx.js","refractor/lang/markdown.js","refractor/lang/markup.js","refractor/lang/tsx.js","refractor/lang/typescript.js","refractor/lang/yaml.js","regenerator-runtime/runtime.js","sb-original/default-loader","sb-original/image-context","slash","store2","storybook/internal/preview/runtime","synchronous-promise","telejson","ts-dedent","unfetch","util-deprecate","vue","warning"],asyncFilter=async(arr,predicate)=>Promise.all(arr.map(predicate)).then(results=>arr.filter((_v,index)=>results[index]));async function getOptimizeDeps(config,options){let extraOptimizeDeps=await options.presets.apply("optimizeViteDeps",[]),{root=process.cwd()}=config,{normalizePath,resolveConfig}=await import("vite"),stories=(await listStories(options)).map(storyPath=>normalizePath((0,import_node_path7.relative)(root,storyPath))),resolve4=(await resolveConfig(config,"serve","development")).createResolver({asSrc:!1}),include=await asyncFilter(Array.from(new Set([...INCLUDE_CANDIDATES,...extraOptimizeDeps])),async id=>!!await resolve4(id));return{...config.optimizeDeps,entries:stories,include:[...include,...config.optimizeDeps?.include||[]]}}async function createViteServer(options,devServer){let{presets}=options,commonCfg=await commonConfig(options,"development"),config={...commonCfg,server:{middlewareMode:!0,hmr:{port:options.port,server:devServer},fs:{strict:!0}},appType:"custom",optimizeDeps:await getOptimizeDeps(commonCfg,options)},finalConfig=await presets.apply("viteFinal",config,options),{createServer}=await import("vite");return createServer(await sanitizeEnvVars(options,finalConfig))}function iframeMiddleware(options,server2){return async(req,res,next)=>{if(!req.url||!req.url.match(/^\/iframe\.html($|\?)/)){next();return}if(new URL(req.url,"http://localhost:6006").searchParams.has("html-proxy")){next();return}let indexHtml=await(0,import_promises3.readFile)(require.resolve("@storybook/builder-vite/input/iframe.html"),{encoding:"utf8"}),generated=await transformIframeHtml(indexHtml,options),transformed=await server2.transformIndexHtml("/iframe.html",generated);res.setHeader("Content-Type","text/html"),res.statusCode=200,res.write(transformed),res.end()}}var server;async function bail(){return server?.close()}var start=async({startTime,options,router,server:devServer})=>(server=await createViteServer(options,devServer),router.use(iframeMiddleware(options,server)),router.use(server.middlewares),{bail,stats:{toJson:()=>{throw new import_server_errors.NoStatsForViteDevError}},totalTime:process.hrtime(startTime)}),build2=async({options})=>build(options);0&&(module.exports={bail,build,hasVitePlugins,start,withoutVitePlugins});
|
package/dist/index.mjs
CHANGED
@@ -85,7 +85,7 @@ globstar while`,file,fr,pattern,pr,swallowee),this.matchOne(file.slice(fr),patte
|
|
85
85
|
if (window.CONFIG_TYPE === 'DEVELOPMENT'){
|
86
86
|
window.__STORYBOOK_SERVER_CHANNEL__ = channel;
|
87
87
|
}
|
88
|
-
`.trim()}async function transformIframeHtml(html,options){let{configType,features,presets}=options,build3=await presets.apply("build"),frameworkOptions=await presets.apply("frameworkOptions"),headHtmlSnippet=await presets.apply("previewHead"),bodyHtmlSnippet=await presets.apply("previewBody"),logLevel=await presets.apply("logLevel",void 0),docsOptions=await presets.apply("docs"),tagsOptions=await presets.apply("tags"),coreOptions=await presets.apply("core"),stories=normalizeStories(await options.presets.apply("stories",[],options),{configDir:options.configDir,workingDir:process.cwd()}).map(specifier=>({...specifier,importPathMatcher:specifier.importPathMatcher.source})),otherGlobals={...build3?.test?.disableBlocks?{__STORYBOOK_BLOCKS_EMPTY_MODULE__:{}}:{}};return html.replace("[CONFIG_TYPE HERE]",configType||"").replace("[LOGLEVEL HERE]",logLevel||"").replace("'[FRAMEWORK_OPTIONS HERE]'",JSON.stringify(frameworkOptions)).replace("('OTHER_GLOBLALS HERE');",Object.entries(otherGlobals).map(([k,v])=>`window["${k}"] = ${JSON.stringify(v)};`).join("")).replace("'[CHANNEL_OPTIONS HERE]'",JSON.stringify(coreOptions&&coreOptions.channelOptions?coreOptions.channelOptions:{})).replace("'[FEATURES HERE]'",JSON.stringify(features||{})).replace("'[STORIES HERE]'",JSON.stringify(stories||{})).replace("'[DOCS_OPTIONS HERE]'",JSON.stringify(docsOptions||{})).replace("'[TAGS_OPTIONS HERE]'",JSON.stringify(tagsOptions||{})).replace("<!-- [HEAD HTML SNIPPET HERE] -->",headHtmlSnippet||"").replace("<!-- [BODY HTML SNIPPET HERE] -->",bodyHtmlSnippet||"")}function codeGeneratorPlugin(options){let iframePath=__require.resolve("@storybook/builder-vite/input/iframe.html"),iframeId,projectRoot;return {name:"storybook:code-generator-plugin",enforce:"pre",configureServer(server2){server2.watcher.on("change",()=>{let appModule=server2.moduleGraph.getModuleById(getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_APP_FILE));appModule&&server2.moduleGraph.invalidateModule(appModule);let storiesModule=server2.moduleGraph.getModuleById(getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE));storiesModule&&server2.moduleGraph.invalidateModule(storiesModule);}),server2.watcher.on("add",path3=>{(/\.stories\.([tj])sx?$/.test(path3)||/\.mdx$/.test(path3))&&server2.watcher.emit("change",SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE);});},config(config,{command}){command==="build"&&(config.build||(config.build={}),config.build.rollupOptions={...config.build.rollupOptions,input:iframePath});},configResolved(config){projectRoot=config.root,iframeId=`${config.root}/iframe.html`;},resolveId(source){if(source===SB_VIRTUAL_FILES.VIRTUAL_APP_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_APP_FILE);if(source===iframePath)return iframeId;if(source===SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE);if(source===SB_VIRTUAL_FILES.VIRTUAL_PREVIEW_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_PREVIEW_FILE);if(source===SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE)},async load(id,config){if(id===getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE))return generateImportFnScriptCode(options);if(id===getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE))return generateAddonSetupCode();if(id===getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_APP_FILE))return generateModernIframeScriptCode(options,projectRoot);if(id===iframeId)return readFileSync(__require.resolve("@storybook/builder-vite/input/iframe.html"),"utf-8")},async transformIndexHtml(html,ctx){if(ctx.path==="/iframe.html")return transformIframeHtml(html,options)}}}async function csfPlugin(config){let{presets}=config,docsOptions=(await presets.apply("addons",[])).find(a=>[a,a.name].includes("@storybook/addon-docs"))?.options??{};return vite(docsOptions?.csfPluginOptions)}var import_find_cache_dir=__toESM(require_find_cache_dir());var escapeKeys=key=>key.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),defaultImportRegExp="import ([^*{}]+) from",replacementMap=new Map([["import ","const "],["import{","const {"],["* as ",""],[" as ",": "],[" from "," = "],["}from","} ="]]);async function externalGlobalsPlugin(externals){await init;let{mergeAlias}=await import('vite');return {name:"storybook:external-globals-plugin",enforce:"post",async config(config,{command}){if(command!=="serve")return;let newAlias=mergeAlias([],config.resolve?.alias),cachePath=(0, import_find_cache_dir.default)({name:"sb-vite-plugin-externals",create:!0});return await Promise.all(Object.keys(externals).map(async externalKey=>{let externalCachePath=join(cachePath,`${externalKey}.js`);if(newAlias.push({find:new RegExp(`^${externalKey}$`),replacement:externalCachePath}),!existsSync(externalCachePath)){let directory=dirname(externalCachePath);await mkdir(directory,{recursive:!0});}await writeFile(externalCachePath,`module.exports = ${externals[externalKey]};`);})),{resolve:{alias:newAlias}}},async transform(code,id){let globalsList=Object.keys(externals);if(globalsList.every(glob2=>!code.includes(glob2)))return;let[imports]=parse(code),src=new MagicString(code);return imports.forEach(({n:path3,ss:startPosition,se:endPosition})=>{let packageName=path3;if(packageName&&globalsList.includes(packageName)){let importStatement=src.slice(startPosition,endPosition),transformedImport=rewriteImport(importStatement,externals,packageName);src.update(startPosition,endPosition,transformedImport);}}),{code:src.toString(),map:null}}}}function getDefaultImportReplacement(match2){let matched=match2.match(defaultImportRegExp);return matched&&`const {default: ${matched[1]}} =`}function getSearchRegExp(packageName){let staticKeys=[...replacementMap.keys()].map(escapeKeys),packageNameLiteral=`.${packageName}.`,dynamicImportExpression=`await import\\(.${packageName}.\\)`,lookup=[defaultImportRegExp,...staticKeys,packageNameLiteral,dynamicImportExpression];return new RegExp(`(${lookup.join("|")})`,"g")}function rewriteImport(importStatement,globs,packageName){let search=getSearchRegExp(packageName);return importStatement.replace(search,match2=>replacementMap.get(match2)??getDefaultImportReplacement(match2)??globs[packageName])}function stripQueryParams(filePath){return filePath.split("?")[0]}function isUserCode(moduleName){return moduleName?Object.values(SB_VIRTUAL_FILES).includes(getOriginalVirtualModuleId(moduleName))?!0:!moduleName.startsWith("vite/")&&!moduleName.startsWith("\0")&&moduleName!=="react/jsx-runtime"&&!moduleName.match(/node_modules\//):!1}function pluginWebpackStats({workingDir}){function normalize3(filename){if(filename.startsWith("/virtual:"))return filename;if(Object.values(SB_VIRTUAL_FILES).includes(getOriginalVirtualModuleId(filename)))return getOriginalVirtualModuleId(filename);{let relativePath=relative$1(workingDir,stripQueryParams(filename));return `./${slash(relativePath)}`}}function createReasons(importers){return (importers||[]).map(i=>({moduleName:normalize3(i)}))}function createStatsMapModule(filename,importers){return {id:filename,name:filename,reasons:createReasons(importers)}}let statsMap=new Map;return {name:"storybook:rollup-plugin-webpack-stats",enforce:"post",moduleParsed:function(mod){isUserCode(mod.id)&&mod.importedIds.concat(mod.dynamicallyImportedIds).filter(name=>isUserCode(name)).forEach(depIdUnsafe=>{let depId=normalize3(depIdUnsafe);if(!statsMap.has(depId)){statsMap.set(depId,createStatsMapModule(depId,[mod.id]));return}let m=statsMap.get(depId);m&&(m.reasons=(m.reasons??[]).concat(createReasons([mod.id])).filter(r=>r.moduleName!==depId),statsMap.set(depId,m));});},storybookGetStats(){let stats={modules:Array.from(statsMap.values())};return {...stats,toJson:()=>stats}}}}var configEnvServe={mode:"development",command:"serve",ssrBuild:!1},configEnvBuild={mode:"production",command:"build",ssrBuild:!1};async function commonConfig(options,_type){let configEnv=_type==="development"?configEnvServe:configEnvBuild,{loadConfigFromFile,mergeConfig,defaultClientConditions=[]}=await import('vite'),{viteConfigPath}=await getBuilderOptions(options),projectRoot=resolve$1(options.configDir,".."),{config:{build:buildProperty=void 0,...userConfig}={}}=await loadConfigFromFile(configEnv,viteConfigPath,projectRoot)??{},sbConfig={configFile:!1,cacheDir:resolvePathInStorybookCache("sb-vite",options.cacheKey),root:projectRoot,base:"./",plugins:await pluginConfig(options),resolve:{conditions:["storybook","stories","test",...defaultClientConditions],preserveSymlinks:isPreservingSymlinks(),alias:{assert:__require.resolve("browser-assert")}},envPrefix:userConfig.envPrefix?["STORYBOOK_"]:["VITE_","STORYBOOK_"],build:{target:buildProperty?.target}};return mergeConfig(userConfig,sbConfig)}async function pluginConfig(options){await getFrameworkName(options);let build3=await options.presets.apply("build"),externals=globalsNameReferenceMap;return build3?.test?.disableBlocks&&(externals["@storybook/blocks"]="__STORYBOOK_BLOCKS_EMPTY_MODULE__"),[codeGeneratorPlugin(options),await csfPlugin(options),await injectExportOrderPlugin(),await stripStoryHMRBoundary(),{name:"storybook:allow-storybook-dir",enforce:"post",config(config){config?.server?.fs?.allow&&config.server.fs.allow.push(".storybook");}},await externalGlobalsPlugin(externals),pluginWebpackStats({workingDir:process.cwd()})]}function findPlugin(config,name){return config.plugins?.find(p=>p&&"name"in p&&p.name===name)}async function build(options){let{build:viteBuild,mergeConfig}=await import('vite'),{presets}=options,config=await commonConfig(options,"build");config.build=mergeConfig(config,{build:{outDir:options.outputDir,emptyOutDir:!1,rollupOptions:{external:[/\.\/sb-common-assets\/.*\.woff2/]},...options.test?{reportCompressedSize:!1,sourcemap:!options.build?.test?.disableSourcemaps,target:"esnext",treeshake:!options.build?.test?.disableTreeShaking}:{}}}).build;let finalConfig=await presets.apply("viteFinal",config,options);options.features?.developmentModeForBuild&&finalConfig.plugins?.push({name:"storybook:define-env",config:()=>({define:{"process.env.NODE_ENV":JSON.stringify("development")}})});let turbosnapPluginName="rollup-plugin-turbosnap";return finalConfig.plugins&&await hasVitePlugins(finalConfig.plugins,[turbosnapPluginName])&&(logger.warn(dedent`Found '${turbosnapPluginName}' which is now included by default in Storybook 8.
|
88
|
+
`.trim()}async function transformIframeHtml(html,options){let{configType,features,presets}=options,build3=await presets.apply("build"),frameworkOptions=await presets.apply("frameworkOptions"),headHtmlSnippet=await presets.apply("previewHead"),bodyHtmlSnippet=await presets.apply("previewBody"),logLevel=await presets.apply("logLevel",void 0),docsOptions=await presets.apply("docs"),tagsOptions=await presets.apply("tags"),coreOptions=await presets.apply("core"),stories=normalizeStories(await options.presets.apply("stories",[],options),{configDir:options.configDir,workingDir:process.cwd()}).map(specifier=>({...specifier,importPathMatcher:specifier.importPathMatcher.source})),otherGlobals={...build3?.test?.disableBlocks?{__STORYBOOK_BLOCKS_EMPTY_MODULE__:{}}:{}};return html.replace("[CONFIG_TYPE HERE]",configType||"").replace("[LOGLEVEL HERE]",logLevel||"").replace("'[FRAMEWORK_OPTIONS HERE]'",JSON.stringify(frameworkOptions)).replace("('OTHER_GLOBLALS HERE');",Object.entries(otherGlobals).map(([k,v])=>`window["${k}"] = ${JSON.stringify(v)};`).join("")).replace("'[CHANNEL_OPTIONS HERE]'",JSON.stringify(coreOptions&&coreOptions.channelOptions?coreOptions.channelOptions:{})).replace("'[FEATURES HERE]'",JSON.stringify(features||{})).replace("'[STORIES HERE]'",JSON.stringify(stories||{})).replace("'[DOCS_OPTIONS HERE]'",JSON.stringify(docsOptions||{})).replace("'[TAGS_OPTIONS HERE]'",JSON.stringify(tagsOptions||{})).replace("<!-- [HEAD HTML SNIPPET HERE] -->",headHtmlSnippet||"").replace("<!-- [BODY HTML SNIPPET HERE] -->",bodyHtmlSnippet||"")}function codeGeneratorPlugin(options){let iframePath=__require.resolve("@storybook/builder-vite/input/iframe.html"),iframeId,projectRoot;return {name:"storybook:code-generator-plugin",enforce:"pre",configureServer(server2){server2.watcher.on("change",()=>{let appModule=server2.moduleGraph.getModuleById(getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_APP_FILE));appModule&&server2.moduleGraph.invalidateModule(appModule);let storiesModule=server2.moduleGraph.getModuleById(getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE));storiesModule&&server2.moduleGraph.invalidateModule(storiesModule);}),server2.watcher.on("add",path3=>{(/\.stories\.([tj])sx?$/.test(path3)||/\.mdx$/.test(path3))&&server2.watcher.emit("change",getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE));});},config(config,{command}){command==="build"&&(config.build||(config.build={}),config.build.rollupOptions={...config.build.rollupOptions,input:iframePath});},configResolved(config){projectRoot=config.root,iframeId=`${config.root}/iframe.html`;},resolveId(source){if(source===SB_VIRTUAL_FILES.VIRTUAL_APP_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_APP_FILE);if(source===iframePath)return iframeId;if(source===SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE);if(source===SB_VIRTUAL_FILES.VIRTUAL_PREVIEW_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_PREVIEW_FILE);if(source===SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE)return getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE)},async load(id,config){if(id===getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_STORIES_FILE))return generateImportFnScriptCode(options);if(id===getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_ADDON_SETUP_FILE))return generateAddonSetupCode();if(id===getResolvedVirtualModuleId(SB_VIRTUAL_FILES.VIRTUAL_APP_FILE))return generateModernIframeScriptCode(options,projectRoot);if(id===iframeId)return readFileSync(__require.resolve("@storybook/builder-vite/input/iframe.html"),"utf-8")},async transformIndexHtml(html,ctx){if(ctx.path==="/iframe.html")return transformIframeHtml(html,options)}}}async function csfPlugin(config){let{presets}=config,docsOptions=(await presets.apply("addons",[])).find(a=>[a,a.name].includes("@storybook/addon-docs"))?.options??{};return vite(docsOptions?.csfPluginOptions)}var import_find_cache_dir=__toESM(require_find_cache_dir());var escapeKeys=key=>key.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),defaultImportRegExp="import ([^*{}]+) from",replacementMap=new Map([["import ","const "],["import{","const {"],["* as ",""],[" as ",": "],[" from "," = "],["}from","} ="]]);async function externalGlobalsPlugin(externals){await init;let{mergeAlias}=await import('vite');return {name:"storybook:external-globals-plugin",enforce:"post",async config(config,{command}){if(command!=="serve")return;let newAlias=mergeAlias([],config.resolve?.alias),cachePath=(0, import_find_cache_dir.default)({name:"sb-vite-plugin-externals",create:!0});return await Promise.all(Object.keys(externals).map(async externalKey=>{let externalCachePath=join(cachePath,`${externalKey}.js`);if(newAlias.push({find:new RegExp(`^${externalKey}$`),replacement:externalCachePath}),!existsSync(externalCachePath)){let directory=dirname(externalCachePath);await mkdir(directory,{recursive:!0});}await writeFile(externalCachePath,`module.exports = ${externals[externalKey]};`);})),{resolve:{alias:newAlias}}},async transform(code,id){let globalsList=Object.keys(externals);if(globalsList.every(glob2=>!code.includes(glob2)))return;let[imports]=parse(code),src=new MagicString(code);return imports.forEach(({n:path3,ss:startPosition,se:endPosition})=>{let packageName=path3;if(packageName&&globalsList.includes(packageName)){let importStatement=src.slice(startPosition,endPosition),transformedImport=rewriteImport(importStatement,externals,packageName);src.update(startPosition,endPosition,transformedImport);}}),{code:src.toString(),map:null}}}}function getDefaultImportReplacement(match2){let matched=match2.match(defaultImportRegExp);return matched&&`const {default: ${matched[1]}} =`}function getSearchRegExp(packageName){let staticKeys=[...replacementMap.keys()].map(escapeKeys),packageNameLiteral=`.${packageName}.`,dynamicImportExpression=`await import\\(.${packageName}.\\)`,lookup=[defaultImportRegExp,...staticKeys,packageNameLiteral,dynamicImportExpression];return new RegExp(`(${lookup.join("|")})`,"g")}function rewriteImport(importStatement,globs,packageName){let search=getSearchRegExp(packageName);return importStatement.replace(search,match2=>replacementMap.get(match2)??getDefaultImportReplacement(match2)??globs[packageName])}function stripQueryParams(filePath){return filePath.split("?")[0]}function isUserCode(moduleName){return moduleName?Object.values(SB_VIRTUAL_FILES).includes(getOriginalVirtualModuleId(moduleName))?!0:!moduleName.startsWith("vite/")&&!moduleName.startsWith("\0")&&moduleName!=="react/jsx-runtime"&&!moduleName.match(/node_modules\//):!1}function pluginWebpackStats({workingDir}){function normalize3(filename){if(filename.startsWith("/virtual:"))return filename;if(Object.values(SB_VIRTUAL_FILES).includes(getOriginalVirtualModuleId(filename)))return getOriginalVirtualModuleId(filename);{let relativePath=relative$1(workingDir,stripQueryParams(filename));return `./${slash(relativePath)}`}}function createReasons(importers){return (importers||[]).map(i=>({moduleName:normalize3(i)}))}function createStatsMapModule(filename,importers){return {id:filename,name:filename,reasons:createReasons(importers)}}let statsMap=new Map;return {name:"storybook:rollup-plugin-webpack-stats",enforce:"post",moduleParsed:function(mod){isUserCode(mod.id)&&mod.importedIds.concat(mod.dynamicallyImportedIds).filter(name=>isUserCode(name)).forEach(depIdUnsafe=>{let depId=normalize3(depIdUnsafe);if(!statsMap.has(depId)){statsMap.set(depId,createStatsMapModule(depId,[mod.id]));return}let m=statsMap.get(depId);m&&(m.reasons=(m.reasons??[]).concat(createReasons([mod.id])).filter(r=>r.moduleName!==depId),statsMap.set(depId,m));});},storybookGetStats(){let stats={modules:Array.from(statsMap.values())};return {...stats,toJson:()=>stats}}}}var configEnvServe={mode:"development",command:"serve",ssrBuild:!1},configEnvBuild={mode:"production",command:"build",ssrBuild:!1};async function commonConfig(options,_type){let configEnv=_type==="development"?configEnvServe:configEnvBuild,{loadConfigFromFile,mergeConfig,defaultClientConditions=[]}=await import('vite'),{viteConfigPath}=await getBuilderOptions(options),projectRoot=resolve$1(options.configDir,".."),{config:{build:buildProperty=void 0,...userConfig}={}}=await loadConfigFromFile(configEnv,viteConfigPath,projectRoot)??{},sbConfig={configFile:!1,cacheDir:resolvePathInStorybookCache("sb-vite",options.cacheKey),root:projectRoot,base:"./",plugins:await pluginConfig(options),resolve:{conditions:["storybook","stories","test",...defaultClientConditions],preserveSymlinks:isPreservingSymlinks(),alias:{assert:__require.resolve("browser-assert")}},envPrefix:userConfig.envPrefix?["STORYBOOK_"]:["VITE_","STORYBOOK_"],build:{target:buildProperty?.target}};return mergeConfig(userConfig,sbConfig)}async function pluginConfig(options){await getFrameworkName(options);let build3=await options.presets.apply("build"),externals=globalsNameReferenceMap;return build3?.test?.disableBlocks&&(externals["@storybook/blocks"]="__STORYBOOK_BLOCKS_EMPTY_MODULE__"),[codeGeneratorPlugin(options),await csfPlugin(options),await injectExportOrderPlugin(),await stripStoryHMRBoundary(),{name:"storybook:allow-storybook-dir",enforce:"post",config(config){config?.server?.fs?.allow&&config.server.fs.allow.push(".storybook");}},await externalGlobalsPlugin(externals),pluginWebpackStats({workingDir:process.cwd()})]}function findPlugin(config,name){return config.plugins?.find(p=>p&&"name"in p&&p.name===name)}async function build(options){let{build:viteBuild,mergeConfig}=await import('vite'),{presets}=options,config=await commonConfig(options,"build");config.build=mergeConfig(config,{build:{outDir:options.outputDir,emptyOutDir:!1,rollupOptions:{external:[/\.\/sb-common-assets\/.*\.woff2/]},...options.test?{reportCompressedSize:!1,sourcemap:!options.build?.test?.disableSourcemaps,target:"esnext",treeshake:!options.build?.test?.disableTreeShaking}:{}}}).build;let finalConfig=await presets.apply("viteFinal",config,options);options.features?.developmentModeForBuild&&finalConfig.plugins?.push({name:"storybook:define-env",config:()=>({define:{"process.env.NODE_ENV":JSON.stringify("development")}})});let turbosnapPluginName="rollup-plugin-turbosnap";return finalConfig.plugins&&await hasVitePlugins(finalConfig.plugins,[turbosnapPluginName])&&(logger.warn(dedent`Found '${turbosnapPluginName}' which is now included by default in Storybook 8.
|
89
89
|
Removing from your plugins list. Ensure you pass \`--stats-json\` to generate stats.
|
90
90
|
|
91
91
|
For more information, see https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#turbosnap-vite-plugin-is-no-longer-needed`),finalConfig.plugins=await withoutVitePlugins(finalConfig.plugins,[turbosnapPluginName])),await viteBuild(await sanitizeEnvVars(options,finalConfig)),findPlugin(finalConfig,"storybook:rollup-plugin-webpack-stats")?.storybookGetStats()}var INCLUDE_CANDIDATES=["@base2/pretty-print-object","@emotion/core","@emotion/is-prop-valid","@emotion/styled","@storybook/addon-a11y/preview","@storybook/addon-backgrounds/preview","@storybook/addon-designs/blocks","@storybook/addon-docs/preview","@storybook/addon-essentials/actions/preview","@storybook/addon-essentials/actions/preview","@storybook/addon-essentials/backgrounds/preview","@storybook/addon-essentials/docs/preview","@storybook/addon-essentials/highlight/preview","@storybook/addon-essentials/measure/preview","@storybook/addon-essentials/outline/preview","@storybook/addon-essentials/viewport/preview","@storybook/addon-highlight/preview","@storybook/addon-links/preview","@storybook/addon-measure/preview","@storybook/addon-outline/preview","@storybook/addon-themes","@storybook/addon-themes/preview","@storybook/addon-viewport","@storybook/addon-viewport/preview","@storybook/blocks","@storybook/components","@storybook/experimental-addon-test/preview","@storybook/experimental-nextjs-vite/dist/preview.mjs","@storybook/html","@storybook/html/dist/entry-preview-docs.mjs","@storybook/html/dist/entry-preview.mjs","@storybook/preact","@storybook/preact/dist/entry-preview-docs.mjs","@storybook/preact/dist/entry-preview.mjs","@storybook/react > acorn-jsx","@storybook/react","@storybook/react/dist/entry-preview-docs.mjs","@storybook/react/dist/entry-preview-rsc.mjs","@storybook/react/dist/entry-preview.mjs","@storybook/svelte","@storybook/svelte/dist/entry-preview-docs.mjs","@storybook/svelte/dist/entry-preview.mjs","@storybook/theming","@storybook/vue3","@storybook/vue3/dist/entry-preview-docs.mjs","@storybook/vue3/dist/entry-preview.mjs","@storybook/web-components","@storybook/web-components/dist/entry-preview-docs.mjs","@storybook/web-components/dist/entry-preview.mjs","acorn-jsx","acorn-walk","acorn","airbnb-js-shims","ansi-to-html","axe-core","chromatic/isChromatic","color-convert","deep-object-diff","doctrine","emotion-theming","escodegen","estraverse","fast-deep-equal","html-tags","isobject","jsdoc-type-pratt-parser","loader-utils","lodash/camelCase.js","lodash/camelCase","lodash/cloneDeep.js","lodash/cloneDeep","lodash/countBy.js","lodash/countBy","lodash/debounce.js","lodash/debounce","lodash/isEqual.js","lodash/isEqual","lodash/isFunction.js","lodash/isFunction","lodash/isPlainObject.js","lodash/isPlainObject","lodash/isString.js","lodash/isString","lodash/kebabCase.js","lodash/kebabCase","lodash/mapKeys.js","lodash/mapKeys","lodash/mapValues.js","lodash/mapValues","lodash/merge.js","lodash/merge","lodash/mergeWith.js","lodash/mergeWith","lodash/pick.js","lodash/pick","lodash/pickBy.js","lodash/pickBy","lodash/startCase.js","lodash/startCase","lodash/throttle.js","lodash/throttle","lodash/uniq.js","lodash/uniq","lodash/upperFirst.js","lodash/upperFirst","memoizerific","mockdate","msw-storybook-addon","overlayscrollbars","polished","prettier/parser-babel","prettier/parser-flow","prettier/parser-typescript","prop-types","qs","react-dom","react-dom/client","react-fast-compare","react-is","react-textarea-autosize","react","react/jsx-runtime","refractor/core","refractor/lang/bash.js","refractor/lang/css.js","refractor/lang/graphql.js","refractor/lang/js-extras.js","refractor/lang/json.js","refractor/lang/jsx.js","refractor/lang/markdown.js","refractor/lang/markup.js","refractor/lang/tsx.js","refractor/lang/typescript.js","refractor/lang/yaml.js","regenerator-runtime/runtime.js","sb-original/default-loader","sb-original/image-context","slash","store2","storybook/internal/preview/runtime","synchronous-promise","telejson","ts-dedent","unfetch","util-deprecate","vue","warning"],asyncFilter=async(arr,predicate)=>Promise.all(arr.map(predicate)).then(results=>arr.filter((_v,index)=>results[index]));async function getOptimizeDeps(config,options){let extraOptimizeDeps=await options.presets.apply("optimizeViteDeps",[]),{root=process.cwd()}=config,{normalizePath,resolveConfig}=await import('vite'),stories=(await listStories(options)).map(storyPath=>normalizePath(relative$1(root,storyPath))),resolve4=(await resolveConfig(config,"serve","development")).createResolver({asSrc:!1}),include=await asyncFilter(Array.from(new Set([...INCLUDE_CANDIDATES,...extraOptimizeDeps])),async id=>!!await resolve4(id));return {...config.optimizeDeps,entries:stories,include:[...include,...config.optimizeDeps?.include||[]]}}async function createViteServer(options,devServer){let{presets}=options,commonCfg=await commonConfig(options,"development"),config={...commonCfg,server:{middlewareMode:!0,hmr:{port:options.port,server:devServer},fs:{strict:!0}},appType:"custom",optimizeDeps:await getOptimizeDeps(commonCfg,options)},finalConfig=await presets.apply("viteFinal",config,options),{createServer}=await import('vite');return createServer(await sanitizeEnvVars(options,finalConfig))}function iframeMiddleware(options,server2){return async(req,res,next)=>{if(!req.url||!req.url.match(/^\/iframe\.html($|\?)/)){next();return}if(new URL(req.url,"http://localhost:6006").searchParams.has("html-proxy")){next();return}let indexHtml=await readFile(__require.resolve("@storybook/builder-vite/input/iframe.html"),{encoding:"utf8"}),generated=await transformIframeHtml(indexHtml,options),transformed=await server2.transformIndexHtml("/iframe.html",generated);res.setHeader("Content-Type","text/html"),res.statusCode=200,res.write(transformed),res.end();}}var server;async function bail(){return server?.close()}var start=async({startTime,options,router,server:devServer})=>(server=await createViteServer(options,devServer),router.use(iframeMiddleware(options,server)),router.use(server.middlewares),{bail,stats:{toJson:()=>{throw new NoStatsForViteDevError}},totalTime:process.hrtime(startTime)}),build2=async({options})=>build(options);
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@storybook/builder-vite",
|
3
|
-
"version": "8.5.
|
3
|
+
"version": "8.5.3",
|
4
4
|
"description": "A plugin to run and build Storybooks with Vite",
|
5
5
|
"homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme",
|
6
6
|
"bugs": {
|
@@ -43,7 +43,7 @@
|
|
43
43
|
"prep": "jiti ../../../scripts/prepare/bundle.ts"
|
44
44
|
},
|
45
45
|
"dependencies": {
|
46
|
-
"@storybook/csf-plugin": "8.5.
|
46
|
+
"@storybook/csf-plugin": "8.5.3",
|
47
47
|
"browser-assert": "^1.2.1",
|
48
48
|
"ts-dedent": "^2.0.0"
|
49
49
|
},
|
@@ -62,7 +62,7 @@
|
|
62
62
|
"vite": "^4.0.4"
|
63
63
|
},
|
64
64
|
"peerDependencies": {
|
65
|
-
"storybook": "^8.5.
|
65
|
+
"storybook": "^8.5.3",
|
66
66
|
"vite": "^4.0.0 || ^5.0.0 || ^6.0.0"
|
67
67
|
},
|
68
68
|
"publishConfig": {
|