storybook-builder-rsbuild 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +5 -1
 - package/dist/index.js +75 -54
 - package/dist/index.mjs +56 -29
 - package/package.json +4 -3
 
    
        package/dist/index.d.ts
    CHANGED
    
    | 
         @@ -25,6 +25,10 @@ type BuilderOptions = { 
     | 
|
| 
       25 
25 
     | 
    
         
             
                 * Path to rsbuild.config file, relative to CWD.
         
     | 
| 
       26 
26 
     | 
    
         
             
                 */
         
     | 
| 
       27 
27 
     | 
    
         
             
                rsbuildConfigPath?: string;
         
     | 
| 
      
 28 
     | 
    
         
            +
                /**
         
     | 
| 
      
 29 
     | 
    
         
            +
                 * Enable Rspack's lazy compilation (experimental).
         
     | 
| 
      
 30 
     | 
    
         
            +
                 */
         
     | 
| 
      
 31 
     | 
    
         
            +
                lazyCompilation?: boolean;
         
     | 
| 
       28 
32 
     | 
    
         
             
            };
         
     | 
| 
       29 
33 
     | 
    
         
             
            interface BuilderResult extends BuilderResult$1 {
         
     | 
| 
       30 
34 
     | 
    
         
             
                stats?: Stats;
         
     | 
| 
         @@ -58,7 +62,7 @@ declare const rsbuild: (_: unknown, options: RsbuildBuilderOptions) => Promise<r 
     | 
|
| 
       58 
62 
     | 
    
         
             
            declare const getConfig: RsbuildBuilder['getConfig'];
         
     | 
| 
       59 
63 
     | 
    
         
             
            declare function bail(): Promise<void>;
         
     | 
| 
       60 
64 
     | 
    
         
             
            declare const start: RsbuildBuilder['start'];
         
     | 
| 
       61 
     | 
    
         
            -
            declare const build: ({ options 
     | 
| 
      
 65 
     | 
    
         
            +
            declare const build: ({ options }: BuilderStartOptions) => Promise<Stats>;
         
     | 
| 
       62 
66 
     | 
    
         
             
            declare const corePresets: string[];
         
     | 
| 
       63 
67 
     | 
    
         
             
            declare const previewMainTemplate: () => string;
         
     | 
| 
       64 
68 
     | 
    
         | 
    
        package/dist/index.js
    CHANGED
    
    | 
         @@ -120,24 +120,32 @@ __export(src_exports, { 
     | 
|
| 
       120 
120 
     | 
    
         
             
              toImportFnPart: () => toImportFnPart
         
     | 
| 
       121 
121 
     | 
    
         
             
            });
         
     | 
| 
       122 
122 
     | 
    
         
             
            module.exports = __toCommonJS(src_exports);
         
     | 
| 
      
 123 
     | 
    
         
            +
            var import_node_net = require("net");
         
     | 
| 
      
 124 
     | 
    
         
            +
            var import_node_path5 = require("path");
         
     | 
| 
       123 
125 
     | 
    
         
             
            var rsbuildReal = __toESM(require("@rsbuild/core"));
         
     | 
| 
       124 
     | 
    
         
            -
            var  
     | 
| 
      
 126 
     | 
    
         
            +
            var import_core2 = require("@rsbuild/core");
         
     | 
| 
       125 
127 
     | 
    
         
             
            var import_express = __toESM(require("express"));
         
     | 
| 
       126 
128 
     | 
    
         
             
            var import_fs_extra = __toESM(require("fs-extra"));
         
     | 
| 
      
 129 
     | 
    
         
            +
            var import_pretty_hrtime = __toESM(require_pretty_hrtime());
         
     | 
| 
      
 130 
     | 
    
         
            +
            var import_core_path = require("storybook/core-path");
         
     | 
| 
       127 
131 
     | 
    
         
             
            var import_server_errors = require("storybook/internal/server-errors");
         
     | 
| 
       128 
132 
     | 
    
         | 
| 
       129 
133 
     | 
    
         
             
            // src/preview/iframe-rsbuild.config.ts
         
     | 
| 
       130 
     | 
    
         
            -
            var  
     | 
| 
      
 134 
     | 
    
         
            +
            var import_node_path3 = require("path");
         
     | 
| 
      
 135 
     | 
    
         
            +
            var import_core = require("@rsbuild/core");
         
     | 
| 
      
 136 
     | 
    
         
            +
            var import_plugin_type_check = require("@rsbuild/plugin-type-check");
         
     | 
| 
      
 137 
     | 
    
         
            +
            var import_preset = require("@storybook/addon-docs/dist/preset");
         
     | 
| 
       131 
138 
     | 
    
         
             
            var import_case_sensitive_paths_webpack_plugin = __toESM(require("case-sensitive-paths-webpack-plugin"));
         
     | 
| 
       132 
     | 
    
         
            -
            var  
     | 
| 
      
 139 
     | 
    
         
            +
            var import_rsbuild_plugin_html_minifier_terser = require("rsbuild-plugin-html-minifier-terser");
         
     | 
| 
       133 
140 
     | 
    
         
             
            var import_common2 = require("storybook/internal/common");
         
     | 
| 
      
 141 
     | 
    
         
            +
            var import_globals = require("storybook/internal/preview/globals");
         
     | 
| 
       134 
142 
     | 
    
         
             
            var import_ts_dedent2 = require("ts-dedent");
         
     | 
| 
       135 
143 
     | 
    
         | 
| 
       136 
144 
     | 
    
         
             
            // src/preview/virtual-module-mapping.ts
         
     | 
| 
       137 
     | 
    
         
            -
            var  
     | 
| 
       138 
     | 
    
         
            -
            var  
     | 
| 
       139 
     | 
    
         
            -
            var  
     | 
| 
       140 
     | 
    
         
            -
            var  
     | 
| 
      
 145 
     | 
    
         
            +
            var import_node_fs = __toESM(require("fs"));
         
     | 
| 
      
 146 
     | 
    
         
            +
            var import_node_path = __toESM(require("path"));
         
     | 
| 
      
 147 
     | 
    
         
            +
            var import_node_path2 = require("path");
         
     | 
| 
      
 148 
     | 
    
         
            +
            var import_core_webpack = require("@storybook/core-webpack");
         
     | 
| 
       141 
149 
     | 
    
         | 
| 
       142 
150 
     | 
    
         
             
            // ../../node_modules/.pnpm/slash@5.1.0/node_modules/slash/index.js
         
     | 
| 
       143 
151 
     | 
    
         
             
            function slash(path2) {
         
     | 
| 
         @@ -149,7 +157,7 @@ function slash(path2) { 
     | 
|
| 
       149 
157 
     | 
    
         
             
            }
         
     | 
| 
       150 
158 
     | 
    
         | 
| 
       151 
159 
     | 
    
         
             
            // src/preview/virtual-module-mapping.ts
         
     | 
| 
       152 
     | 
    
         
            -
            var  
     | 
| 
      
 160 
     | 
    
         
            +
            var import_common = require("storybook/internal/common");
         
     | 
| 
       153 
161 
     | 
    
         
             
            var import_ts_dedent = require("ts-dedent");
         
     | 
| 
       154 
162 
     | 
    
         
             
            var getVirtualModules = async (options) => {
         
     | 
| 
       155 
163 
     | 
    
         
             
              const virtualModules = {};
         
     | 
| 
         @@ -162,7 +170,7 @@ var getVirtualModules = async (options) => { 
     | 
|
| 
       162 
170 
     | 
    
         
             
                configDir: options.configDir,
         
     | 
| 
       163 
171 
     | 
    
         
             
                workingDir
         
     | 
| 
       164 
172 
     | 
    
         
             
              });
         
     | 
| 
       165 
     | 
    
         
            -
              const realPathRelativeToCwd =  
     | 
| 
      
 173 
     | 
    
         
            +
              const realPathRelativeToCwd = import_node_path.default.relative(workingDir, cwd).split(import_node_path.default.sep).join(import_node_path.default.posix.sep);
         
     | 
| 
       166 
174 
     | 
    
         
             
              const previewAnnotations = [
         
     | 
| 
       167 
175 
     | 
    
         
             
                ...(await options.presets.apply(
         
     | 
| 
       168 
176 
     | 
    
         
             
                  "previewAnnotations",
         
     | 
| 
         @@ -177,12 +185,13 @@ var getVirtualModules = async (options) => { 
     | 
|
| 
       177 
185 
     | 
    
         
             
                (0, import_common.loadPreviewOrConfigFile)(options)
         
     | 
| 
       178 
186 
     | 
    
         
             
              ].filter(Boolean);
         
     | 
| 
       179 
187 
     | 
    
         
             
              const storiesFilename = "storybook-stories.js";
         
     | 
| 
       180 
     | 
    
         
            -
              const storiesPath = (0,  
     | 
| 
       181 
     | 
    
         
            -
              const  
     | 
| 
      
 188 
     | 
    
         
            +
              const storiesPath = (0, import_node_path2.resolve)((0, import_node_path2.join)(workingDir, storiesFilename));
         
     | 
| 
      
 189 
     | 
    
         
            +
              const builderOptions = await (0, import_common.getBuilderOptions)(options);
         
     | 
| 
      
 190 
     | 
    
         
            +
              const needPipelinedImport = !!builderOptions.lazyCompilation && !isProd;
         
     | 
| 
       182 
191 
     | 
    
         
             
              virtualModules[storiesPath] = toImportFn(stories, realPathRelativeToCwd, {
         
     | 
| 
       183 
192 
     | 
    
         
             
                needPipelinedImport
         
     | 
| 
       184 
193 
     | 
    
         
             
              });
         
     | 
| 
       185 
     | 
    
         
            -
              const configEntryPath = (0,  
     | 
| 
      
 194 
     | 
    
         
            +
              const configEntryPath = (0, import_node_path2.resolve)((0, import_node_path2.join)(workingDir, "storybook-config-entry.js"));
         
     | 
| 
       186 
195 
     | 
    
         
             
              virtualModules[configEntryPath] = (0, import_common.handlebars)(
         
     | 
| 
       187 
196 
     | 
    
         
             
                await (0, import_common.readTemplate)(
         
     | 
| 
       188 
197 
     | 
    
         
             
                  require.resolve("storybook-builder-rsbuild/templates/virtualModuleModernEntry.js.handlebars")
         
     | 
| 
         @@ -194,9 +203,9 @@ var getVirtualModules = async (options) => { 
     | 
|
| 
       194 
203 
     | 
    
         
             
                // We need to double escape `\` for webpack. We may have some in windows paths
         
     | 
| 
       195 
204 
     | 
    
         
             
              ).replace(/\\/g, "\\\\");
         
     | 
| 
       196 
205 
     | 
    
         
             
              entries.push(configEntryPath);
         
     | 
| 
       197 
     | 
    
         
            -
               
     | 
| 
       198 
     | 
    
         
            -
                 
     | 
| 
       199 
     | 
    
         
            -
              } 
     | 
| 
      
 206 
     | 
    
         
            +
              for (const [key, value] of Object.entries(virtualModules)) {
         
     | 
| 
      
 207 
     | 
    
         
            +
                import_node_fs.default.writeFileSync(key, value);
         
     | 
| 
      
 208 
     | 
    
         
            +
              }
         
     | 
| 
       200 
209 
     | 
    
         
             
              return {
         
     | 
| 
       201 
210 
     | 
    
         
             
                virtualModules,
         
     | 
| 
       202 
211 
     | 
    
         
             
                entries
         
     | 
| 
         @@ -221,7 +230,7 @@ function toImportFnPart(specifier) { 
     | 
|
| 
       221 
230 
     | 
    
         
             
              `;
         
     | 
| 
       222 
231 
     | 
    
         
             
            }
         
     | 
| 
       223 
232 
     | 
    
         
             
            function toImportFn(stories, relativeOffset, { needPipelinedImport } = {}) {
         
     | 
| 
       224 
     | 
    
         
            -
              let pipelinedImport =  
     | 
| 
      
 233 
     | 
    
         
            +
              let pipelinedImport = "const pipeline = (x) => x();";
         
     | 
| 
       225 
234 
     | 
    
         
             
              if (needPipelinedImport) {
         
     | 
| 
       226 
235 
     | 
    
         
             
                pipelinedImport = `
         
     | 
| 
       227 
236 
     | 
    
         
             
                  const importPipeline = ${importPipeline};
         
     | 
| 
         @@ -270,11 +279,7 @@ function importPipeline() { 
     | 
|
| 
       270 
279 
     | 
    
         
             
            }
         
     | 
| 
       271 
280 
     | 
    
         | 
| 
       272 
281 
     | 
    
         
             
            // src/preview/iframe-rsbuild.config.ts
         
     | 
| 
       273 
     | 
    
         
            -
            var  
     | 
| 
       274 
     | 
    
         
            -
            var import_preset = require("@storybook/addon-docs/dist/preset");
         
     | 
| 
       275 
     | 
    
         
            -
            var import_plugin_type_check = require("@rsbuild/plugin-type-check");
         
     | 
| 
       276 
     | 
    
         
            -
            var import_rsbuild_plugin_html_minifier_terser = require("rsbuild-plugin-html-minifier-terser");
         
     | 
| 
       277 
     | 
    
         
            -
            var getAbsolutePath = (input) => (0, import_path3.dirname)(require.resolve((0, import_path3.join)(input, "package.json")));
         
     | 
| 
      
 282 
     | 
    
         
            +
            var getAbsolutePath = (input) => (0, import_node_path3.dirname)(require.resolve((0, import_node_path3.join)(input, "package.json")));
         
     | 
| 
       278 
283 
     | 
    
         
             
            var maybeGetAbsolutePath = (input) => {
         
     | 
| 
       279 
284 
     | 
    
         
             
              try {
         
     | 
| 
       280 
285 
     | 
    
         
             
                return getAbsolutePath(input);
         
     | 
| 
         @@ -282,24 +287,24 @@ var maybeGetAbsolutePath = (input) => { 
     | 
|
| 
       282 
287 
     | 
    
         
             
                return false;
         
     | 
| 
       283 
288 
     | 
    
         
             
              }
         
     | 
| 
       284 
289 
     | 
    
         
             
            };
         
     | 
| 
       285 
     | 
    
         
            -
            var managerAPIPath = maybeGetAbsolutePath( 
     | 
| 
       286 
     | 
    
         
            -
            var componentsPath = maybeGetAbsolutePath( 
     | 
| 
       287 
     | 
    
         
            -
            var globalPath = maybeGetAbsolutePath( 
     | 
| 
       288 
     | 
    
         
            -
            var routerPath = maybeGetAbsolutePath( 
     | 
| 
       289 
     | 
    
         
            -
            var themingPath = maybeGetAbsolutePath( 
     | 
| 
      
 290 
     | 
    
         
            +
            var managerAPIPath = maybeGetAbsolutePath("@storybook/manager-api");
         
     | 
| 
      
 291 
     | 
    
         
            +
            var componentsPath = maybeGetAbsolutePath("@storybook/components");
         
     | 
| 
      
 292 
     | 
    
         
            +
            var globalPath = maybeGetAbsolutePath("@storybook/global");
         
     | 
| 
      
 293 
     | 
    
         
            +
            var routerPath = maybeGetAbsolutePath("@storybook/router");
         
     | 
| 
      
 294 
     | 
    
         
            +
            var themingPath = maybeGetAbsolutePath("@storybook/theming");
         
     | 
| 
       290 
295 
     | 
    
         
             
            var storybookPaths = {
         
     | 
| 
       291 
296 
     | 
    
         
             
              ...managerAPIPath ? {
         
     | 
| 
       292 
     | 
    
         
            -
                 
     | 
| 
      
 297 
     | 
    
         
            +
                "@storybook/manager-api": managerAPIPath
         
     | 
| 
       293 
298 
     | 
    
         
             
              } : {},
         
     | 
| 
       294 
     | 
    
         
            -
              ...componentsPath ? {  
     | 
| 
       295 
     | 
    
         
            -
              ...globalPath ? {  
     | 
| 
       296 
     | 
    
         
            -
              ...routerPath ? {  
     | 
| 
       297 
     | 
    
         
            -
              ...themingPath ? {  
     | 
| 
      
 299 
     | 
    
         
            +
              ...componentsPath ? { "@storybook/components": componentsPath } : {},
         
     | 
| 
      
 300 
     | 
    
         
            +
              ...globalPath ? { "@storybook/global": globalPath } : {},
         
     | 
| 
      
 301 
     | 
    
         
            +
              ...routerPath ? { "@storybook/router": routerPath } : {},
         
     | 
| 
      
 302 
     | 
    
         
            +
              ...themingPath ? { "@storybook/theming": themingPath } : {}
         
     | 
| 
       298 
303 
     | 
    
         
             
            };
         
     | 
| 
       299 
304 
     | 
    
         
             
            var iframe_rsbuild_config_default = async (options) => {
         
     | 
| 
       300 
305 
     | 
    
         
             
              const appliedDocsWebpack = await (0, import_preset.webpack)({}, options);
         
     | 
| 
       301 
306 
     | 
    
         
             
              const {
         
     | 
| 
       302 
     | 
    
         
            -
                outputDir = (0,  
     | 
| 
      
 307 
     | 
    
         
            +
                outputDir = (0, import_node_path3.join)(".", "public"),
         
     | 
| 
       303 
308 
     | 
    
         
             
                quiet,
         
     | 
| 
       304 
309 
     | 
    
         
             
                packageJson,
         
     | 
| 
       305 
310 
     | 
    
         
             
                configType,
         
     | 
| 
         @@ -347,6 +352,10 @@ var iframe_rsbuild_config_default = async (options) => { 
     | 
|
| 
       347 
352 
     | 
    
         
             
              });
         
     | 
| 
       348 
353 
     | 
    
         
             
              const shouldCheckTs = typescriptOptions.check && !typescriptOptions.skipCompiler;
         
     | 
| 
       349 
354 
     | 
    
         
             
              const tsCheckOptions = typescriptOptions.checkOptions || {};
         
     | 
| 
      
 355 
     | 
    
         
            +
              const builderOptions = await (0, import_common2.getBuilderOptions)(options);
         
     | 
| 
      
 356 
     | 
    
         
            +
              const lazyCompilationConfig = builderOptions.lazyCompilation && !isProd ? {
         
     | 
| 
      
 357 
     | 
    
         
            +
                lazyCompilation: { entries: false }
         
     | 
| 
      
 358 
     | 
    
         
            +
              } : {};
         
     | 
| 
       350 
359 
     | 
    
         
             
              if (!template) {
         
     | 
| 
       351 
360 
     | 
    
         
             
                throw new Error(import_ts_dedent2.dedent`
         
     | 
| 
       352 
361 
     | 
    
         
             
                  Storybook's Webpack5 builder requires a template to be specified.
         
     | 
| 
         @@ -376,10 +385,10 @@ var iframe_rsbuild_config_default = async (options) => { 
     | 
|
| 
       376 
385 
     | 
    
         
             
                  },
         
     | 
| 
       377 
386 
     | 
    
         
             
                  sourceMap: {
         
     | 
| 
       378 
387 
     | 
    
         
             
                    js: options.build?.test?.disableSourcemaps ? false : "cheap-module-source-map",
         
     | 
| 
       379 
     | 
    
         
            -
                    css: options.build?.test?.disableSourcemaps 
     | 
| 
      
 388 
     | 
    
         
            +
                    css: !options.build?.test?.disableSourcemaps
         
     | 
| 
       380 
389 
     | 
    
         
             
                  },
         
     | 
| 
       381 
390 
     | 
    
         
             
                  distPath: {
         
     | 
| 
       382 
     | 
    
         
            -
                    root: (0,  
     | 
| 
      
 391 
     | 
    
         
            +
                    root: (0, import_node_path3.resolve)(process.cwd(), outputDir)
         
     | 
| 
       383 
392 
     | 
    
         
             
                  },
         
     | 
| 
       384 
393 
     | 
    
         
             
                  filename: {
         
     | 
| 
       385 
394 
     | 
    
         
             
                    js: isProd ? "[name].[contenthash:8].iframe.bundle.js" : "[name].iframe.bundle.js",
         
     | 
| 
         @@ -479,10 +488,15 @@ var iframe_rsbuild_config_default = async (options) => { 
     | 
|
| 
       479 
488 
     | 
    
         
             
                        new import_case_sensitive_paths_webpack_plugin.default()
         
     | 
| 
       480 
489 
     | 
    
         
             
                      ].filter(Boolean)
         
     | 
| 
       481 
490 
     | 
    
         
             
                    );
         
     | 
| 
      
 491 
     | 
    
         
            +
                    config.experiments ??= {};
         
     | 
| 
      
 492 
     | 
    
         
            +
                    config.experiments = {
         
     | 
| 
      
 493 
     | 
    
         
            +
                      ...config.experiments,
         
     | 
| 
      
 494 
     | 
    
         
            +
                      ...lazyCompilationConfig
         
     | 
| 
      
 495 
     | 
    
         
            +
                    };
         
     | 
| 
       482 
496 
     | 
    
         
             
                    return mergeConfig(config, appliedDocsWebpack);
         
     | 
| 
       483 
497 
     | 
    
         
             
                  },
         
     | 
| 
       484 
498 
     | 
    
         
             
                  htmlPlugin: {
         
     | 
| 
       485 
     | 
    
         
            -
                    filename:  
     | 
| 
      
 499 
     | 
    
         
            +
                    filename: "iframe.html",
         
     | 
| 
       486 
500 
     | 
    
         
             
                    // FIXME: `none` isn't a known option
         
     | 
| 
       487 
501 
     | 
    
         
             
                    chunksSortMode: "none",
         
     | 
| 
       488 
502 
     | 
    
         
             
                    alwaysWriteToDisk: true,
         
     | 
| 
         @@ -514,12 +528,9 @@ var iframe_rsbuild_config_default = async (options) => { 
     | 
|
| 
       514 
528 
     | 
    
         
             
              return merged;
         
     | 
| 
       515 
529 
     | 
    
         
             
            };
         
     | 
| 
       516 
530 
     | 
    
         | 
| 
       517 
     | 
    
         
            -
            // src/index.ts
         
     | 
| 
       518 
     | 
    
         
            -
            var import_core_path = require("storybook/core-path");
         
     | 
| 
       519 
     | 
    
         
            -
             
     | 
| 
       520 
531 
     | 
    
         
             
            // src/react-shims.ts
         
     | 
| 
       521 
     | 
    
         
            -
            var import_path4 = require("path");
         
     | 
| 
       522 
532 
     | 
    
         
             
            var import_promises = require("fs/promises");
         
     | 
| 
      
 533 
     | 
    
         
            +
            var import_node_path4 = require("path");
         
     | 
| 
       523 
534 
     | 
    
         
             
            var getIsReactVersion18or19 = async (options) => {
         
     | 
| 
       524 
535 
     | 
    
         
             
              const { legacyRootApi } = await options.presets.apply(
         
     | 
| 
       525 
536 
     | 
    
         
             
                "frameworkOptions"
         
     | 
| 
         @@ -531,12 +542,12 @@ var getIsReactVersion18or19 = async (options) => { 
     | 
|
| 
       531 
542 
     | 
    
         
             
                "resolvedReact",
         
     | 
| 
       532 
543 
     | 
    
         
             
                {}
         
     | 
| 
       533 
544 
     | 
    
         
             
              );
         
     | 
| 
       534 
     | 
    
         
            -
              const reactDom = resolvedReact.reactDom || (0,  
     | 
| 
       535 
     | 
    
         
            -
              if (!(0,  
     | 
| 
      
 545 
     | 
    
         
            +
              const reactDom = resolvedReact.reactDom || (0, import_node_path4.dirname)(require.resolve("react-dom/package.json"));
         
     | 
| 
      
 546 
     | 
    
         
            +
              if (!(0, import_node_path4.isAbsolute)(reactDom)) {
         
     | 
| 
       536 
547 
     | 
    
         
             
                return false;
         
     | 
| 
       537 
548 
     | 
    
         
             
              }
         
     | 
| 
       538 
549 
     | 
    
         
             
              const { version } = JSON.parse(
         
     | 
| 
       539 
     | 
    
         
            -
                await (0, import_promises.readFile)((0,  
     | 
| 
      
 550 
     | 
    
         
            +
                await (0, import_promises.readFile)((0, import_node_path4.join)(reactDom, "package.json"), "utf-8")
         
     | 
| 
       540 
551 
     | 
    
         
             
              );
         
     | 
| 
       541 
552 
     | 
    
         
             
              return version.startsWith("18") || version.startsWith("19") || version.startsWith("0.0.0");
         
     | 
| 
       542 
553 
     | 
    
         
             
            };
         
     | 
| 
         @@ -555,8 +566,6 @@ var applyReactShims = async (config, options) => { 
     | 
|
| 
       555 
566 
     | 
    
         
             
            };
         
     | 
| 
       556 
567 
     | 
    
         | 
| 
       557 
568 
     | 
    
         
             
            // src/index.ts
         
     | 
| 
       558 
     | 
    
         
            -
            var import_pretty_hrtime = __toESM(require_pretty_hrtime());
         
     | 
| 
       559 
     | 
    
         
            -
            var import_core2 = require("@rsbuild/core");
         
     | 
| 
       560 
569 
     | 
    
         
             
            var printDuration = (startTime) => (0, import_pretty_hrtime.default)(process.hrtime(startTime)).replace(" ms", " milliseconds").replace(" s", " seconds").replace(" m", " minutes");
         
     | 
| 
       561 
570 
     | 
    
         
             
            var executor = {
         
     | 
| 
       562 
571 
     | 
    
         
             
              get: async (options) => {
         
     | 
| 
         @@ -608,10 +617,9 @@ var start = async ({ 
     | 
|
| 
       608 
617 
     | 
    
         
             
                  ...config,
         
     | 
| 
       609 
618 
     | 
    
         
             
                  server: {
         
     | 
| 
       610 
619 
     | 
    
         
             
                    ...config.server,
         
     | 
| 
       611 
     | 
    
         
            -
                    port: options. 
     | 
| 
       612 
     | 
    
         
            -
                    host:  
     | 
| 
      
 620 
     | 
    
         
            +
                    port: await getRandomPort(options.host),
         
     | 
| 
      
 621 
     | 
    
         
            +
                    host: options.host,
         
     | 
| 
       613 
622 
     | 
    
         
             
                    htmlFallback: false,
         
     | 
| 
       614 
     | 
    
         
            -
                    strictPort: true,
         
     | 
| 
       615 
623 
     | 
    
         
             
                    printUrls: false
         
     | 
| 
       616 
624 
     | 
    
         
             
                  },
         
     | 
| 
       617 
625 
     | 
    
         
             
                  dev: {
         
     | 
| 
         @@ -632,13 +640,13 @@ var start = async ({ 
     | 
|
| 
       632 
640 
     | 
    
         
             
              if (!rsbuildBuild) {
         
     | 
| 
       633 
641 
     | 
    
         
             
                throw new import_server_errors.WebpackInvocationError({
         
     | 
| 
       634 
642 
     | 
    
         
             
                  // eslint-disable-next-line local-rules/no-uncategorized-errors
         
     | 
| 
       635 
     | 
    
         
            -
                  error: new Error( 
     | 
| 
      
 643 
     | 
    
         
            +
                  error: new Error("Missing Rsbuild build instance at runtime!")
         
     | 
| 
       636 
644 
     | 
    
         
             
                });
         
     | 
| 
       637 
645 
     | 
    
         
             
              }
         
     | 
| 
       638 
     | 
    
         
            -
              const previewResolvedDir = (0,  
     | 
| 
      
 646 
     | 
    
         
            +
              const previewResolvedDir = (0, import_node_path5.join)(import_core_path.corePath, "dist/preview");
         
     | 
| 
       639 
647 
     | 
    
         
             
              const previewDirOrigin = previewResolvedDir;
         
     | 
| 
       640 
648 
     | 
    
         
             
              router.use(
         
     | 
| 
       641 
     | 
    
         
            -
                 
     | 
| 
      
 649 
     | 
    
         
            +
                "/sb-preview",
         
     | 
| 
       642 
650 
     | 
    
         
             
                import_express.default.static(previewDirOrigin, { immutable: true, maxAge: "5m" })
         
     | 
| 
       643 
651 
     | 
    
         
             
              );
         
     | 
| 
       644 
652 
     | 
    
         
             
              router.use(rsbuildServer.middlewares);
         
     | 
| 
         @@ -657,16 +665,16 @@ var build = async ({ options }) => { 
     | 
|
| 
       657 
665 
     | 
    
         
             
                cwd: process.cwd(),
         
     | 
| 
       658 
666 
     | 
    
         
             
                rsbuildConfig: config
         
     | 
| 
       659 
667 
     | 
    
         
             
              });
         
     | 
| 
       660 
     | 
    
         
            -
              const previewResolvedDir = (0,  
     | 
| 
      
 668 
     | 
    
         
            +
              const previewResolvedDir = (0, import_node_path5.join)(import_core_path.corePath, "dist/preview");
         
     | 
| 
       661 
669 
     | 
    
         
             
              const previewDirOrigin = previewResolvedDir;
         
     | 
| 
       662 
     | 
    
         
            -
              const previewDirTarget = (0,  
     | 
| 
      
 670 
     | 
    
         
            +
              const previewDirTarget = (0, import_node_path5.join)(options.outputDir || "", "sb-preview");
         
     | 
| 
       663 
671 
     | 
    
         
             
              let stats;
         
     | 
| 
       664 
672 
     | 
    
         
             
              rsbuildBuild.onAfterBuild((params) => {
         
     | 
| 
       665 
673 
     | 
    
         
             
                stats = params.stats;
         
     | 
| 
       666 
674 
     | 
    
         
             
              });
         
     | 
| 
       667 
675 
     | 
    
         
             
              const previewFiles = import_fs_extra.default.copy(previewDirOrigin, previewDirTarget, {
         
     | 
| 
       668 
676 
     | 
    
         
             
                filter: (src) => {
         
     | 
| 
       669 
     | 
    
         
            -
                  const { ext } = (0,  
     | 
| 
      
 677 
     | 
    
         
            +
                  const { ext } = (0, import_node_path5.parse)(src);
         
     | 
| 
       670 
678 
     | 
    
         
             
                  if (ext) {
         
     | 
| 
       671 
679 
     | 
    
         
             
                    return ext === ".js";
         
     | 
| 
       672 
680 
     | 
    
         
             
                  }
         
     | 
| 
         @@ -679,8 +687,21 @@ var build = async ({ options }) => { 
     | 
|
| 
       679 
687 
     | 
    
         
             
              await Promise.all([rsbuildBuild.build(), previewFiles]);
         
     | 
| 
       680 
688 
     | 
    
         
             
              return stats;
         
     | 
| 
       681 
689 
     | 
    
         
             
            };
         
     | 
| 
       682 
     | 
    
         
            -
            var corePresets = [(0,  
     | 
| 
      
 690 
     | 
    
         
            +
            var corePresets = [(0, import_node_path5.join)(__dirname, "./preview-preset.js")];
         
     | 
| 
       683 
691 
     | 
    
         
             
            var previewMainTemplate = () => require.resolve("storybook-builder-rsbuild/templates/preview.ejs");
         
     | 
| 
      
 692 
     | 
    
         
            +
            function getRandomPort(host) {
         
     | 
| 
      
 693 
     | 
    
         
            +
              return new Promise((resolve3, reject) => {
         
     | 
| 
      
 694 
     | 
    
         
            +
                const server2 = (0, import_node_net.createServer)();
         
     | 
| 
      
 695 
     | 
    
         
            +
                server2.unref();
         
     | 
| 
      
 696 
     | 
    
         
            +
                server2.on("error", reject);
         
     | 
| 
      
 697 
     | 
    
         
            +
                server2.listen({ port: 0, host }, () => {
         
     | 
| 
      
 698 
     | 
    
         
            +
                  const { port } = server2.address();
         
     | 
| 
      
 699 
     | 
    
         
            +
                  server2.close(() => {
         
     | 
| 
      
 700 
     | 
    
         
            +
                    resolve3(port);
         
     | 
| 
      
 701 
     | 
    
         
            +
                  });
         
     | 
| 
      
 702 
     | 
    
         
            +
                });
         
     | 
| 
      
 703 
     | 
    
         
            +
              });
         
     | 
| 
      
 704 
     | 
    
         
            +
            }
         
     | 
| 
       684 
705 
     | 
    
         
             
            // Annotate the CommonJS export names for ESM import in node:
         
     | 
| 
       685 
706 
     | 
    
         
             
            0 && (module.exports = {
         
     | 
| 
       686 
707 
     | 
    
         
             
              bail,
         
     | 
    
        package/dist/index.mjs
    CHANGED
    
    | 
         @@ -1,20 +1,21 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import { __commonJS, __toESM, __require } from './chunk-TTFRSOOU.mjs';
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { createServer } from 'net';
         
     | 
| 
      
 3 
     | 
    
         
            +
            import path, { join, resolve, parse, dirname, isAbsolute } from 'path';
         
     | 
| 
       2 
4 
     | 
    
         
             
            import * as rsbuildReal from '@rsbuild/core';
         
     | 
| 
       3 
5 
     | 
    
         
             
            import { mergeRsbuildConfig, loadConfig } from '@rsbuild/core';
         
     | 
| 
       4 
     | 
    
         
            -
            import path, { join, resolve, parse, dirname, isAbsolute } from 'path';
         
     | 
| 
       5 
6 
     | 
    
         
             
            import express from 'express';
         
     | 
| 
       6 
7 
     | 
    
         
             
            import fs2 from 'fs-extra';
         
     | 
| 
      
 8 
     | 
    
         
            +
            import { corePath } from 'storybook/core-path';
         
     | 
| 
       7 
9 
     | 
    
         
             
            import { WebpackInvocationError } from 'storybook/internal/server-errors';
         
     | 
| 
      
 10 
     | 
    
         
            +
            import { pluginTypeCheck } from '@rsbuild/plugin-type-check';
         
     | 
| 
      
 11 
     | 
    
         
            +
            import { webpack } from '@storybook/addon-docs/dist/preset';
         
     | 
| 
       8 
12 
     | 
    
         
             
            import CaseSensitivePathsPlugin from 'case-sensitive-paths-webpack-plugin';
         
     | 
| 
      
 13 
     | 
    
         
            +
            import { pluginHtmlMinifierTerser } from 'rsbuild-plugin-html-minifier-terser';
         
     | 
| 
      
 14 
     | 
    
         
            +
            import { normalizeStories, loadPreviewOrConfigFile, getBuilderOptions, handlebars, readTemplate, stringifyProcessEnvs, isPreservingSymlinks } from 'storybook/internal/common';
         
     | 
| 
       9 
15 
     | 
    
         
             
            import { globalsNameReferenceMap } from 'storybook/internal/preview/globals';
         
     | 
| 
       10 
     | 
    
         
            -
            import { normalizeStories, loadPreviewOrConfigFile, handlebars, readTemplate, getBuilderOptions, stringifyProcessEnvs, isPreservingSymlinks } from 'storybook/internal/common';
         
     | 
| 
       11 
16 
     | 
    
         
             
            import { dedent } from 'ts-dedent';
         
     | 
| 
       12 
17 
     | 
    
         
             
            import fs from 'fs';
         
     | 
| 
       13 
18 
     | 
    
         
             
            import { webpackIncludeRegexp } from '@storybook/core-webpack';
         
     | 
| 
       14 
     | 
    
         
            -
            import { webpack } from '@storybook/addon-docs/dist/preset';
         
     | 
| 
       15 
     | 
    
         
            -
            import { pluginTypeCheck } from '@rsbuild/plugin-type-check';
         
     | 
| 
       16 
     | 
    
         
            -
            import { pluginHtmlMinifierTerser } from 'rsbuild-plugin-html-minifier-terser';
         
     | 
| 
       17 
     | 
    
         
            -
            import { corePath } from 'storybook/core-path';
         
     | 
| 
       18 
19 
     | 
    
         
             
            import { readFile } from 'fs/promises';
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
       20 
21 
     | 
    
         
             
            // ../../node_modules/.pnpm/pretty-hrtime@1.0.3/node_modules/pretty-hrtime/index.js
         
     | 
| 
         @@ -88,6 +89,9 @@ var require_pretty_hrtime = __commonJS({ 
     | 
|
| 
       88 
89 
     | 
    
         
             
              }
         
     | 
| 
       89 
90 
     | 
    
         
             
            });
         
     | 
| 
       90 
91 
     | 
    
         | 
| 
      
 92 
     | 
    
         
            +
            // src/index.ts
         
     | 
| 
      
 93 
     | 
    
         
            +
            var import_pretty_hrtime = __toESM(require_pretty_hrtime());
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
       91 
95 
     | 
    
         
             
            // ../../node_modules/.pnpm/slash@5.1.0/node_modules/slash/index.js
         
     | 
| 
       92 
96 
     | 
    
         
             
            function slash(path2) {
         
     | 
| 
       93 
97 
     | 
    
         
             
              const isExtendedLengthPath = path2.startsWith("\\\\?\\");
         
     | 
| 
         @@ -123,7 +127,8 @@ var getVirtualModules = async (options) => { 
     | 
|
| 
       123 
127 
     | 
    
         
             
              ].filter(Boolean);
         
     | 
| 
       124 
128 
     | 
    
         
             
              const storiesFilename = "storybook-stories.js";
         
     | 
| 
       125 
129 
     | 
    
         
             
              const storiesPath = resolve(join(workingDir, storiesFilename));
         
     | 
| 
       126 
     | 
    
         
            -
              const  
     | 
| 
      
 130 
     | 
    
         
            +
              const builderOptions = await getBuilderOptions(options);
         
     | 
| 
      
 131 
     | 
    
         
            +
              const needPipelinedImport = !!builderOptions.lazyCompilation && !isProd;
         
     | 
| 
       127 
132 
     | 
    
         
             
              virtualModules[storiesPath] = toImportFn(stories, realPathRelativeToCwd, {
         
     | 
| 
       128 
133 
     | 
    
         
             
                needPipelinedImport
         
     | 
| 
       129 
134 
     | 
    
         
             
              });
         
     | 
| 
         @@ -141,9 +146,9 @@ var getVirtualModules = async (options) => { 
     | 
|
| 
       141 
146 
     | 
    
         
             
                // We need to double escape `\` for webpack. We may have some in windows paths
         
     | 
| 
       142 
147 
     | 
    
         
             
              ).replace(/\\/g, "\\\\");
         
     | 
| 
       143 
148 
     | 
    
         
             
              entries.push(configEntryPath);
         
     | 
| 
       144 
     | 
    
         
            -
               
     | 
| 
      
 149 
     | 
    
         
            +
              for (const [key, value] of Object.entries(virtualModules)) {
         
     | 
| 
       145 
150 
     | 
    
         
             
                fs.writeFileSync(key, value);
         
     | 
| 
       146 
     | 
    
         
            -
              } 
     | 
| 
      
 151 
     | 
    
         
            +
              }
         
     | 
| 
       147 
152 
     | 
    
         
             
              return {
         
     | 
| 
       148 
153 
     | 
    
         
             
                virtualModules,
         
     | 
| 
       149 
154 
     | 
    
         
             
                entries
         
     | 
| 
         @@ -168,7 +173,7 @@ function toImportFnPart(specifier) { 
     | 
|
| 
       168 
173 
     | 
    
         
             
              `;
         
     | 
| 
       169 
174 
     | 
    
         
             
            }
         
     | 
| 
       170 
175 
     | 
    
         
             
            function toImportFn(stories, relativeOffset, { needPipelinedImport } = {}) {
         
     | 
| 
       171 
     | 
    
         
            -
              let pipelinedImport =  
     | 
| 
      
 176 
     | 
    
         
            +
              let pipelinedImport = "const pipeline = (x) => x();";
         
     | 
| 
       172 
177 
     | 
    
         
             
              if (needPipelinedImport) {
         
     | 
| 
       173 
178 
     | 
    
         
             
                pipelinedImport = `
         
     | 
| 
       174 
179 
     | 
    
         
             
                  const importPipeline = ${importPipeline};
         
     | 
| 
         @@ -215,6 +220,8 @@ function importPipeline() { 
     | 
|
| 
       215 
220 
     | 
    
         
             
                return moduleExportsPromise;
         
     | 
| 
       216 
221 
     | 
    
         
             
              };
         
     | 
| 
       217 
222 
     | 
    
         
             
            }
         
     | 
| 
      
 223 
     | 
    
         
            +
             
     | 
| 
      
 224 
     | 
    
         
            +
            // src/preview/iframe-rsbuild.config.ts
         
     | 
| 
       218 
225 
     | 
    
         
             
            var getAbsolutePath = (input) => dirname(__require.resolve(join(input, "package.json")));
         
     | 
| 
       219 
226 
     | 
    
         
             
            var maybeGetAbsolutePath = (input) => {
         
     | 
| 
       220 
227 
     | 
    
         
             
              try {
         
     | 
| 
         @@ -223,19 +230,19 @@ var maybeGetAbsolutePath = (input) => { 
     | 
|
| 
       223 
230 
     | 
    
         
             
                return false;
         
     | 
| 
       224 
231 
     | 
    
         
             
              }
         
     | 
| 
       225 
232 
     | 
    
         
             
            };
         
     | 
| 
       226 
     | 
    
         
            -
            var managerAPIPath = maybeGetAbsolutePath( 
     | 
| 
       227 
     | 
    
         
            -
            var componentsPath = maybeGetAbsolutePath( 
     | 
| 
       228 
     | 
    
         
            -
            var globalPath = maybeGetAbsolutePath( 
     | 
| 
       229 
     | 
    
         
            -
            var routerPath = maybeGetAbsolutePath( 
     | 
| 
       230 
     | 
    
         
            -
            var themingPath = maybeGetAbsolutePath( 
     | 
| 
      
 233 
     | 
    
         
            +
            var managerAPIPath = maybeGetAbsolutePath("@storybook/manager-api");
         
     | 
| 
      
 234 
     | 
    
         
            +
            var componentsPath = maybeGetAbsolutePath("@storybook/components");
         
     | 
| 
      
 235 
     | 
    
         
            +
            var globalPath = maybeGetAbsolutePath("@storybook/global");
         
     | 
| 
      
 236 
     | 
    
         
            +
            var routerPath = maybeGetAbsolutePath("@storybook/router");
         
     | 
| 
      
 237 
     | 
    
         
            +
            var themingPath = maybeGetAbsolutePath("@storybook/theming");
         
     | 
| 
       231 
238 
     | 
    
         
             
            var storybookPaths = {
         
     | 
| 
       232 
239 
     | 
    
         
             
              ...managerAPIPath ? {
         
     | 
| 
       233 
     | 
    
         
            -
                 
     | 
| 
      
 240 
     | 
    
         
            +
                "@storybook/manager-api": managerAPIPath
         
     | 
| 
       234 
241 
     | 
    
         
             
              } : {},
         
     | 
| 
       235 
     | 
    
         
            -
              ...componentsPath ? {  
     | 
| 
       236 
     | 
    
         
            -
              ...globalPath ? {  
     | 
| 
       237 
     | 
    
         
            -
              ...routerPath ? {  
     | 
| 
       238 
     | 
    
         
            -
              ...themingPath ? {  
     | 
| 
      
 242 
     | 
    
         
            +
              ...componentsPath ? { "@storybook/components": componentsPath } : {},
         
     | 
| 
      
 243 
     | 
    
         
            +
              ...globalPath ? { "@storybook/global": globalPath } : {},
         
     | 
| 
      
 244 
     | 
    
         
            +
              ...routerPath ? { "@storybook/router": routerPath } : {},
         
     | 
| 
      
 245 
     | 
    
         
            +
              ...themingPath ? { "@storybook/theming": themingPath } : {}
         
     | 
| 
       239 
246 
     | 
    
         
             
            };
         
     | 
| 
       240 
247 
     | 
    
         
             
            var iframe_rsbuild_config_default = async (options) => {
         
     | 
| 
       241 
248 
     | 
    
         
             
              const appliedDocsWebpack = await webpack({}, options);
         
     | 
| 
         @@ -288,6 +295,10 @@ var iframe_rsbuild_config_default = async (options) => { 
     | 
|
| 
       288 
295 
     | 
    
         
             
              });
         
     | 
| 
       289 
296 
     | 
    
         
             
              const shouldCheckTs = typescriptOptions.check && !typescriptOptions.skipCompiler;
         
     | 
| 
       290 
297 
     | 
    
         
             
              const tsCheckOptions = typescriptOptions.checkOptions || {};
         
     | 
| 
      
 298 
     | 
    
         
            +
              const builderOptions = await getBuilderOptions(options);
         
     | 
| 
      
 299 
     | 
    
         
            +
              const lazyCompilationConfig = builderOptions.lazyCompilation && !isProd ? {
         
     | 
| 
      
 300 
     | 
    
         
            +
                lazyCompilation: { entries: false }
         
     | 
| 
      
 301 
     | 
    
         
            +
              } : {};
         
     | 
| 
       291 
302 
     | 
    
         
             
              if (!template) {
         
     | 
| 
       292 
303 
     | 
    
         
             
                throw new Error(dedent`
         
     | 
| 
       293 
304 
     | 
    
         
             
                  Storybook's Webpack5 builder requires a template to be specified.
         
     | 
| 
         @@ -317,7 +328,7 @@ var iframe_rsbuild_config_default = async (options) => { 
     | 
|
| 
       317 
328 
     | 
    
         
             
                  },
         
     | 
| 
       318 
329 
     | 
    
         
             
                  sourceMap: {
         
     | 
| 
       319 
330 
     | 
    
         
             
                    js: options.build?.test?.disableSourcemaps ? false : "cheap-module-source-map",
         
     | 
| 
       320 
     | 
    
         
            -
                    css: options.build?.test?.disableSourcemaps 
     | 
| 
      
 331 
     | 
    
         
            +
                    css: !options.build?.test?.disableSourcemaps
         
     | 
| 
       321 
332 
     | 
    
         
             
                  },
         
     | 
| 
       322 
333 
     | 
    
         
             
                  distPath: {
         
     | 
| 
       323 
334 
     | 
    
         
             
                    root: resolve(process.cwd(), outputDir)
         
     | 
| 
         @@ -422,10 +433,15 @@ var iframe_rsbuild_config_default = async (options) => { 
     | 
|
| 
       422 
433 
     | 
    
         
             
                        new CaseSensitivePathsPlugin()
         
     | 
| 
       423 
434 
     | 
    
         
             
                      ].filter(Boolean)
         
     | 
| 
       424 
435 
     | 
    
         
             
                    );
         
     | 
| 
      
 436 
     | 
    
         
            +
                    config.experiments ??= {};
         
     | 
| 
      
 437 
     | 
    
         
            +
                    config.experiments = {
         
     | 
| 
      
 438 
     | 
    
         
            +
                      ...config.experiments,
         
     | 
| 
      
 439 
     | 
    
         
            +
                      ...lazyCompilationConfig
         
     | 
| 
      
 440 
     | 
    
         
            +
                    };
         
     | 
| 
       425 
441 
     | 
    
         
             
                    return mergeConfig(config, appliedDocsWebpack);
         
     | 
| 
       426 
442 
     | 
    
         
             
                  },
         
     | 
| 
       427 
443 
     | 
    
         
             
                  htmlPlugin: {
         
     | 
| 
       428 
     | 
    
         
            -
                    filename:  
     | 
| 
      
 444 
     | 
    
         
            +
                    filename: "iframe.html",
         
     | 
| 
       429 
445 
     | 
    
         
             
                    // FIXME: `none` isn't a known option
         
     | 
| 
       430 
446 
     | 
    
         
             
                    chunksSortMode: "none",
         
     | 
| 
       431 
447 
     | 
    
         
             
                    alwaysWriteToDisk: true,
         
     | 
| 
         @@ -491,7 +507,6 @@ var applyReactShims = async (config, options) => { 
     | 
|
| 
       491 
507 
     | 
    
         
             
            };
         
     | 
| 
       492 
508 
     | 
    
         | 
| 
       493 
509 
     | 
    
         
             
            // src/index.ts
         
     | 
| 
       494 
     | 
    
         
            -
            var import_pretty_hrtime = __toESM(require_pretty_hrtime());
         
     | 
| 
       495 
510 
     | 
    
         
             
            var printDuration = (startTime) => (0, import_pretty_hrtime.default)(process.hrtime(startTime)).replace(" ms", " milliseconds").replace(" s", " seconds").replace(" m", " minutes");
         
     | 
| 
       496 
511 
     | 
    
         
             
            var executor = {
         
     | 
| 
       497 
512 
     | 
    
         
             
              get: async (options) => {
         
     | 
| 
         @@ -543,10 +558,9 @@ var start = async ({ 
     | 
|
| 
       543 
558 
     | 
    
         
             
                  ...config,
         
     | 
| 
       544 
559 
     | 
    
         
             
                  server: {
         
     | 
| 
       545 
560 
     | 
    
         
             
                    ...config.server,
         
     | 
| 
       546 
     | 
    
         
            -
                    port: options. 
     | 
| 
       547 
     | 
    
         
            -
                    host:  
     | 
| 
      
 561 
     | 
    
         
            +
                    port: await getRandomPort(options.host),
         
     | 
| 
      
 562 
     | 
    
         
            +
                    host: options.host,
         
     | 
| 
       548 
563 
     | 
    
         
             
                    htmlFallback: false,
         
     | 
| 
       549 
     | 
    
         
            -
                    strictPort: true,
         
     | 
| 
       550 
564 
     | 
    
         
             
                    printUrls: false
         
     | 
| 
       551 
565 
     | 
    
         
             
                  },
         
     | 
| 
       552 
566 
     | 
    
         
             
                  dev: {
         
     | 
| 
         @@ -567,13 +581,13 @@ var start = async ({ 
     | 
|
| 
       567 
581 
     | 
    
         
             
              if (!rsbuildBuild) {
         
     | 
| 
       568 
582 
     | 
    
         
             
                throw new WebpackInvocationError({
         
     | 
| 
       569 
583 
     | 
    
         
             
                  // eslint-disable-next-line local-rules/no-uncategorized-errors
         
     | 
| 
       570 
     | 
    
         
            -
                  error: new Error( 
     | 
| 
      
 584 
     | 
    
         
            +
                  error: new Error("Missing Rsbuild build instance at runtime!")
         
     | 
| 
       571 
585 
     | 
    
         
             
                });
         
     | 
| 
       572 
586 
     | 
    
         
             
              }
         
     | 
| 
       573 
587 
     | 
    
         
             
              const previewResolvedDir = join(corePath, "dist/preview");
         
     | 
| 
       574 
588 
     | 
    
         
             
              const previewDirOrigin = previewResolvedDir;
         
     | 
| 
       575 
589 
     | 
    
         
             
              router.use(
         
     | 
| 
       576 
     | 
    
         
            -
                 
     | 
| 
      
 590 
     | 
    
         
            +
                "/sb-preview",
         
     | 
| 
       577 
591 
     | 
    
         
             
                express.static(previewDirOrigin, { immutable: true, maxAge: "5m" })
         
     | 
| 
       578 
592 
     | 
    
         
             
              );
         
     | 
| 
       579 
593 
     | 
    
         
             
              router.use(rsbuildServer.middlewares);
         
     | 
| 
         @@ -594,7 +608,7 @@ var build = async ({ options }) => { 
     | 
|
| 
       594 
608 
     | 
    
         
             
              });
         
     | 
| 
       595 
609 
     | 
    
         
             
              const previewResolvedDir = join(corePath, "dist/preview");
         
     | 
| 
       596 
610 
     | 
    
         
             
              const previewDirOrigin = previewResolvedDir;
         
     | 
| 
       597 
     | 
    
         
            -
              const previewDirTarget = join(options.outputDir || "",  
     | 
| 
      
 611 
     | 
    
         
            +
              const previewDirTarget = join(options.outputDir || "", "sb-preview");
         
     | 
| 
       598 
612 
     | 
    
         
             
              let stats;
         
     | 
| 
       599 
613 
     | 
    
         
             
              rsbuildBuild.onAfterBuild((params) => {
         
     | 
| 
       600 
614 
     | 
    
         
             
                stats = params.stats;
         
     | 
| 
         @@ -616,5 +630,18 @@ var build = async ({ options }) => { 
     | 
|
| 
       616 
630 
     | 
    
         
             
            };
         
     | 
| 
       617 
631 
     | 
    
         
             
            var corePresets = [join(__dirname, "./preview-preset.js")];
         
     | 
| 
       618 
632 
     | 
    
         
             
            var previewMainTemplate = () => __require.resolve("storybook-builder-rsbuild/templates/preview.ejs");
         
     | 
| 
      
 633 
     | 
    
         
            +
            function getRandomPort(host) {
         
     | 
| 
      
 634 
     | 
    
         
            +
              return new Promise((resolve3, reject) => {
         
     | 
| 
      
 635 
     | 
    
         
            +
                const server2 = createServer();
         
     | 
| 
      
 636 
     | 
    
         
            +
                server2.unref();
         
     | 
| 
      
 637 
     | 
    
         
            +
                server2.on("error", reject);
         
     | 
| 
      
 638 
     | 
    
         
            +
                server2.listen({ port: 0, host }, () => {
         
     | 
| 
      
 639 
     | 
    
         
            +
                  const { port } = server2.address();
         
     | 
| 
      
 640 
     | 
    
         
            +
                  server2.close(() => {
         
     | 
| 
      
 641 
     | 
    
         
            +
                    resolve3(port);
         
     | 
| 
      
 642 
     | 
    
         
            +
                  });
         
     | 
| 
      
 643 
     | 
    
         
            +
                });
         
     | 
| 
      
 644 
     | 
    
         
            +
              });
         
     | 
| 
      
 645 
     | 
    
         
            +
            }
         
     | 
| 
       619 
646 
     | 
    
         | 
| 
       620 
647 
     | 
    
         
             
            export { bail, build, corePresets, executor, getConfig, getVirtualModules, importPipeline, previewMainTemplate, printDuration, rsbuild, start, toImportFn, toImportFnPart };
         
     | 
    
        package/package.json
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            {
         
     | 
| 
       2 
2 
     | 
    
         
             
              "name": "storybook-builder-rsbuild",
         
     | 
| 
       3 
     | 
    
         
            -
              "version": "0.0. 
     | 
| 
      
 3 
     | 
    
         
            +
              "version": "0.0.8",
         
     | 
| 
       4 
4 
     | 
    
         
             
              "description": "Rsbuild builder for Storybook",
         
     | 
| 
       5 
5 
     | 
    
         
             
              "keywords": [
         
     | 
| 
       6 
6 
     | 
    
         
             
                "storybook",
         
     | 
| 
         @@ -56,7 +56,7 @@ 
     | 
|
| 
       56 
56 
     | 
    
         
             
                "!src/**/*"
         
     | 
| 
       57 
57 
     | 
    
         
             
              ],
         
     | 
| 
       58 
58 
     | 
    
         
             
              "dependencies": {
         
     | 
| 
       59 
     | 
    
         
            -
                "@rsbuild/plugin-type-check": "1.0. 
     | 
| 
      
 59 
     | 
    
         
            +
                "@rsbuild/plugin-type-check": "1.0.1-beta.0",
         
     | 
| 
       60 
60 
     | 
    
         
             
                "@storybook/addon-docs": "^8.2.1",
         
     | 
| 
       61 
61 
     | 
    
         
             
                "@storybook/core-webpack": "^8.2.1",
         
     | 
| 
       62 
62 
     | 
    
         
             
                "browser-assert": "^1.2.1",
         
     | 
| 
         @@ -78,7 +78,7 @@ 
     | 
|
| 
       78 
78 
     | 
    
         
             
                "util-deprecate": "^1.0.2"
         
     | 
| 
       79 
79 
     | 
    
         
             
              },
         
     | 
| 
       80 
80 
     | 
    
         
             
              "devDependencies": {
         
     | 
| 
       81 
     | 
    
         
            -
                "@rsbuild/core": "1.0. 
     | 
| 
      
 81 
     | 
    
         
            +
                "@rsbuild/core": "1.0.1-beta.0",
         
     | 
| 
       82 
82 
     | 
    
         
             
                "@types/express": "^4.17.21",
         
     | 
| 
       83 
83 
     | 
    
         
             
                "@types/fs-extra": "^11.0.4",
         
     | 
| 
       84 
84 
     | 
    
         
             
                "@types/node": "^18.0.0",
         
     | 
| 
         @@ -110,6 +110,7 @@ 
     | 
|
| 
       110 
110 
     | 
    
         
             
                "platform": "node"
         
     | 
| 
       111 
111 
     | 
    
         
             
              },
         
     | 
| 
       112 
112 
     | 
    
         
             
              "scripts": {
         
     | 
| 
      
 113 
     | 
    
         
            +
                "build": "pnpm run prep --optimized",
         
     | 
| 
       113 
114 
     | 
    
         
             
                "check": "node --loader ../../scripts/node_modules/esbuild-register/loader.js -r ../../scripts/node_modules/esbuild-register/register.js ../../scripts/prepare/check.ts",
         
     | 
| 
       114 
115 
     | 
    
         
             
                "prep": "node --loader ../../scripts/node_modules/esbuild-register/loader.js -r ../../scripts/node_modules/esbuild-register/register.js ../../scripts/prepare/bundle.ts"
         
     | 
| 
       115 
116 
     | 
    
         
             
              }
         
     |