@storybook/builder-webpack5 7.1.0-alpha.8 → 7.1.0-beta.0

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.
@@ -17,7 +17,40 @@ type Primitive =
17
17
  | symbol
18
18
  | bigint;
19
19
 
20
+ /**
21
+ Matches a JSON object.
22
+
23
+ This type can be useful to enforce some input to be JSON-compatible or as a super-type to be extended from. Don't use this as a direct return type as the user would have to double-cast it: `jsonObject as unknown as CustomResponse`. Instead, you could extend your CustomResponse type from it to ensure your type only uses JSON-compatible types: `interface CustomResponse extends JsonObject { … }`.
24
+
25
+ @category JSON
26
+ */
27
+ type JsonObject = {[Key in string]: JsonValue} & {[Key in string]?: JsonValue | undefined};
28
+
29
+ /**
30
+ Matches a JSON array.
31
+
32
+ @category JSON
33
+ */
34
+ type JsonArray = JsonValue[] | readonly JsonValue[];
35
+
36
+ /**
37
+ Matches any valid JSON primitive value.
38
+
39
+ @category JSON
40
+ */
41
+ type JsonPrimitive = string | number | boolean | null;
42
+
43
+ /**
44
+ Matches any valid JSON value.
45
+
46
+ @see `Jsonify` if you need to transform a type to one that is assignable to `JsonValue`.
47
+
48
+ @category JSON
49
+ */
50
+ type JsonValue = JsonPrimitive | JsonObject | JsonArray;
51
+
20
52
  declare global {
53
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
21
54
  interface SymbolConstructor {
22
55
  readonly observable: symbol;
23
56
  }
@@ -83,8 +116,8 @@ declare namespace PackageJson$1 {
83
116
  email?: string;
84
117
  };
85
118
 
86
- export interface DirectoryLocations {
87
- [directoryType: string]: unknown;
119
+ export type DirectoryLocations = {
120
+ [directoryType: string]: JsonValue | undefined;
88
121
 
89
122
  /**
90
123
  Location for executable scripts. Sugar to generate entries in the `bin` property by walking the folder.
@@ -115,7 +148,7 @@ declare namespace PackageJson$1 {
115
148
  Location for test files.
116
149
  */
117
150
  test?: string;
118
- }
151
+ };
119
152
 
120
153
  export type Scripts = {
121
154
  /**
@@ -265,22 +298,11 @@ declare namespace PackageJson$1 {
265
298
  export type Dependency = Partial<Record<string, string>>;
266
299
 
267
300
  /**
268
- Conditions which provide a way to resolve a package entry point based on the environment.
301
+ A mapping of conditions and the paths to which they resolve.
269
302
  */
270
- export type ExportCondition = LiteralUnion<
271
- | 'import'
272
- | 'require'
273
- | 'node'
274
- | 'node-addons'
275
- | 'deno'
276
- | 'browser'
277
- | 'electron'
278
- | 'react-native'
279
- | 'default',
280
- string
281
- >;
282
-
283
- type ExportConditions = {[condition in ExportCondition]: Exports};
303
+ type ExportConditions = { // eslint-disable-line @typescript-eslint/consistent-indexed-object-style
304
+ [condition: string]: Exports;
305
+ };
284
306
 
285
307
  /**
286
308
  Entry points of a module, optionally with conditions and subpath exports.
@@ -289,16 +311,16 @@ declare namespace PackageJson$1 {
289
311
  | null
290
312
  | string
291
313
  | Array<string | ExportConditions>
292
- | ExportConditions
293
- | {[path: string]: Exports}; // eslint-disable-line @typescript-eslint/consistent-indexed-object-style
314
+ | ExportConditions;
294
315
 
295
316
  /**
296
- Import map entries of a module, optionally with conditions.
317
+ Import map entries of a module, optionally with conditions and subpath imports.
297
318
  */
298
319
  export type Imports = { // eslint-disable-line @typescript-eslint/consistent-indexed-object-style
299
- [key: string]: string | {[key in ExportCondition]: Exports};
320
+ [key: `#${string}`]: Exports;
300
321
  };
301
322
 
323
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
302
324
  export interface NonStandardEntryPoints {
303
325
  /**
304
326
  An ECMAScript module ID that is the primary entry point to the program.
@@ -331,7 +353,7 @@ declare namespace PackageJson$1 {
331
353
  sideEffects?: boolean | string[];
332
354
  }
333
355
 
334
- export interface TypeScriptConfiguration {
356
+ export type TypeScriptConfiguration = {
335
357
  /**
336
358
  Location of the bundled TypeScript declaration file.
337
359
  */
@@ -346,12 +368,12 @@ declare namespace PackageJson$1 {
346
368
  Location of the bundled TypeScript declaration file. Alias of `types`.
347
369
  */
348
370
  typings?: string;
349
- }
371
+ };
350
372
 
351
373
  /**
352
- An alternative configuration for Yarn workspaces.
374
+ An alternative configuration for workspaces.
353
375
  */
354
- export interface WorkspaceConfig {
376
+ export type WorkspaceConfig = {
355
377
  /**
356
378
  An array of workspace pattern strings which contain the workspace packages.
357
379
  */
@@ -360,10 +382,11 @@ declare namespace PackageJson$1 {
360
382
  /**
361
383
  Designed to solve the problem of packages which break when their `node_modules` are moved to the root workspace directory - a process known as hoisting. For these packages, both within your workspace, and also some that have been installed via `node_modules`, it is important to have a mechanism for preventing the default Yarn workspace behavior. By adding workspace pattern strings here, Yarn will resume non-workspace behavior for any package which matches the defined patterns.
362
384
 
363
- [Read more](https://classic.yarnpkg.com/blog/2018/02/15/nohoist/)
385
+ [Supported](https://classic.yarnpkg.com/blog/2018/02/15/nohoist/) by Yarn.
386
+ [Not supported](https://github.com/npm/rfcs/issues/287) by npm.
364
387
  */
365
388
  nohoist?: WorkspacePattern[];
366
- }
389
+ };
367
390
 
368
391
  /**
369
392
  A workspace pattern points to a directory or group of directories which contain packages that should be included in the workspace installation process.
@@ -376,16 +399,7 @@ declare namespace PackageJson$1 {
376
399
  */
377
400
  type WorkspacePattern = string;
378
401
 
379
- export interface YarnConfiguration {
380
- /**
381
- Used to configure [Yarn workspaces](https://classic.yarnpkg.com/docs/workspaces/).
382
-
383
- Workspaces allow you to manage multiple packages within the same repository in such a way that you only need to run `yarn install` once to install all of them in a single pass.
384
-
385
- Please note that the top-level `private` property of `package.json` **must** be set to `true` in order to use workspaces.
386
- */
387
- workspaces?: WorkspacePattern[] | WorkspaceConfig;
388
-
402
+ export type YarnConfiguration = {
389
403
  /**
390
404
  If your package only allows one version of a given dependency, and you’d like to enforce the same behavior as `yarn install --flat` on the command-line, set this to `true`.
391
405
 
@@ -397,18 +411,19 @@ declare namespace PackageJson$1 {
397
411
  Selective version resolutions. Allows the definition of custom package versions inside dependencies without manual edits in the `yarn.lock` file.
398
412
  */
399
413
  resolutions?: Dependency;
400
- }
414
+ };
401
415
 
402
- export interface JSPMConfiguration {
416
+ export type JSPMConfiguration = {
403
417
  /**
404
418
  JSPM configuration.
405
419
  */
406
420
  jspm?: PackageJson$1;
407
- }
421
+ };
408
422
 
409
423
  /**
410
424
  Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-json-file). Containing standard npm properties.
411
425
  */
426
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
412
427
  export interface PackageJsonStandard {
413
428
  /**
414
429
  The name of the package.
@@ -538,7 +553,7 @@ declare namespace PackageJson$1 {
538
553
  /**
539
554
  Is used to set configuration parameters used in package scripts that persist across upgrades.
540
555
  */
541
- config?: Record<string, unknown>;
556
+ config?: JsonObject;
542
557
 
543
558
  /**
544
559
  The dependencies of the package.
@@ -579,7 +594,7 @@ declare namespace PackageJson$1 {
579
594
  Engines that this package runs on.
580
595
  */
581
596
  engines?: {
582
- [EngineName in 'npm' | 'node' | string]?: string;
597
+ [EngineName in 'npm' | 'node' | string]?: string; // eslint-disable-line @typescript-eslint/no-redundant-type-constituents
583
598
  };
584
599
 
585
600
  /**
@@ -678,13 +693,41 @@ declare namespace PackageJson$1 {
678
693
  */
679
694
  url: string;
680
695
  };
696
+
697
+ /**
698
+ Used to configure [npm workspaces](https://docs.npmjs.com/cli/using-npm/workspaces) / [Yarn workspaces](https://classic.yarnpkg.com/docs/workspaces/).
699
+
700
+ Workspaces allow you to manage multiple packages within the same repository in such a way that you only need to run your install command once in order to install all of them in a single pass.
701
+
702
+ Please note that the top-level `private` property of `package.json` **must** be set to `true` in order to use workspaces.
703
+ */
704
+ workspaces?: WorkspacePattern[] | WorkspaceConfig;
681
705
  }
682
706
 
683
- export interface PublishConfig {
707
+ /**
708
+ Type for [`package.json` file used by the Node.js runtime](https://nodejs.org/api/packages.html#nodejs-packagejson-field-definitions).
709
+ */
710
+ export type NodeJsStandard = {
711
+ /**
712
+ Defines which package manager is expected to be used when working on the current project. It can set to any of the [supported package managers](https://nodejs.org/api/corepack.html#supported-package-managers), and will ensure that your teams use the exact same package manager versions without having to install anything else than Node.js.
713
+
714
+ __This field is currently experimental and needs to be opted-in; check the [Corepack](https://nodejs.org/api/corepack.html) page for details about the procedure.__
715
+
716
+ @example
717
+ ```json
718
+ {
719
+ "packageManager": "<package manager name>@<version>"
720
+ }
721
+ ```
722
+ */
723
+ packageManager?: string;
724
+ };
725
+
726
+ export type PublishConfig = {
684
727
  /**
685
728
  Additional, less common properties from the [npm docs on `publishConfig`](https://docs.npmjs.com/cli/v7/configuring-npm/package-json#publishconfig).
686
729
  */
687
- [additionalProperties: string]: unknown;
730
+ [additionalProperties: string]: JsonValue | undefined;
688
731
 
689
732
  /**
690
733
  When publishing scoped packages, the access level defaults to restricted. If you want your scoped package to be publicly viewable (and installable) set `--access=public`. The only valid values for access are public and restricted. Unscoped packages always have an access level of public.
@@ -704,7 +747,7 @@ declare namespace PackageJson$1 {
704
747
  Default: `'latest'`
705
748
  */
706
749
  tag?: string;
707
- }
750
+ };
708
751
  }
709
752
 
710
753
  /**
@@ -713,6 +756,8 @@ Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-j
713
756
  @category File
714
757
  */
715
758
  type PackageJson$1 =
759
+ JsonObject &
760
+ PackageJson$1.NodeJsStandard &
716
761
  PackageJson$1.PackageJsonStandard &
717
762
  PackageJson$1.NonStandardEntryPoints &
718
763
  PackageJson$1.TypeScriptConfiguration &
@@ -735,7 +780,7 @@ interface StoriesSpecifier {
735
780
  /**
736
781
  * What does the filename of a story file look like?
737
782
  * (a glob, relative to directory, no leading `./`)
738
- * If unset, we use `** / *.@(mdx|stories.@(mdx|tsx|ts|jsx|js))` (no spaces)
783
+ * If unset, we use `** / *.@(mdx|stories.@(mdx|js|jsx|mjs|ts|tsx))` (no spaces)
739
784
  */
740
785
  files?: string;
741
786
  }
@@ -839,11 +884,6 @@ interface VersionCheck {
839
884
  error?: any;
840
885
  time: number;
841
886
  }
842
- interface ReleaseNotesData {
843
- success: boolean;
844
- currentVersion: string;
845
- showOnFirstLaunch: boolean;
846
- }
847
887
  interface Stats {
848
888
  toJson: () => any;
849
889
  }
@@ -863,6 +903,7 @@ interface CLIOptions {
863
903
  disableTelemetry?: boolean;
864
904
  enableCrashReports?: boolean;
865
905
  host?: string;
906
+ initialPath?: string;
866
907
  /**
867
908
  * @deprecated Use 'staticDirs' Storybook Configuration option instead
868
909
  */
@@ -879,7 +920,6 @@ interface CLIOptions {
879
920
  loglevel?: string;
880
921
  quiet?: boolean;
881
922
  versionUpdates?: boolean;
882
- releaseNotes?: boolean;
883
923
  docs?: boolean;
884
924
  debugWebpack?: boolean;
885
925
  webpackStatsJson?: string | boolean;
@@ -893,7 +933,6 @@ interface BuilderOptions {
893
933
  docsMode?: boolean;
894
934
  features?: StorybookConfig['features'];
895
935
  versionCheck?: VersionCheck;
896
- releaseNotesData?: ReleaseNotesData;
897
936
  disableWebpackDefaults?: boolean;
898
937
  serverChannelUrl?: string;
899
938
  }
@@ -1020,6 +1059,10 @@ interface StorybookConfig {
1020
1059
  * Apply decorators from preview.js before decorators from addons or frameworks
1021
1060
  */
1022
1061
  legacyDecoratorFileOrder?: boolean;
1062
+ /**
1063
+ * Show a notification anytime a What's new? post is published in the Storybook blog.
1064
+ */
1065
+ whatsNewNotifications?: boolean;
1023
1066
  };
1024
1067
  /**
1025
1068
  * Tells Storybook where to find stories.
@@ -1077,13 +1120,19 @@ interface StorybookConfig {
1077
1120
  previewHead?: PresetValue<string>;
1078
1121
  previewBody?: PresetValue<string>;
1079
1122
  /**
1080
- * Programatically override the preview's main page template.
1123
+ * Programmatically override the preview's main page template.
1081
1124
  * This should return a reference to a file containing an `.ejs` template
1082
1125
  * that will be interpolated with environment variables.
1083
1126
  *
1084
1127
  * @example '.storybook/index.ejs'
1085
1128
  */
1086
1129
  previewMainTemplate?: string;
1130
+ /**
1131
+ * Programmatically modify the preview head/body HTML.
1132
+ * The managerHead function accept a string,
1133
+ * which is the existing head content, and return a modified string.
1134
+ */
1135
+ managerHead?: PresetValue<string>;
1087
1136
  }
1088
1137
  type PresetValue<T> = T | ((config: T, options: Options) => T | Promise<T>);
1089
1138
 
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import webpack__default, { Configuration, Stats } from 'webpack';
2
- import { O as Options$1, B as Builder } from './index.d-1a1e1de1.js';
2
+ import { O as Options$1, B as Builder } from './index.d-6f3a4ba9.js';
3
3
  import { StorybookConfig, Options, BuilderResult as BuilderResult$1 } from '@storybook/core-webpack';
4
4
  import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin';
5
5
  import 'file-system-cache';
@@ -30,6 +30,7 @@ interface StorybookConfigWebpack extends Pick<StorybookConfig, 'webpack' | 'webp
30
30
  }
31
31
  type BuilderOptions = {
32
32
  fsCache?: boolean;
33
+ useSWC?: boolean;
33
34
  lazyCompilation?: boolean;
34
35
  };
35
36
  interface BuilderResult extends BuilderResult$1 {
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __commonJS=(cb,mod)=>function(){return mod||(0,cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var require_pretty_hrtime=__commonJS({"../../node_modules/pretty-hrtime/index.js"(exports,module2){"use strict";var minimalDesc=["h","min","s","ms","\u03BCs","ns"],verboseDesc=["hour","minute","second","millisecond","microsecond","nanosecond"],convert=[3600,60,1,1e6,1e3,1];module2.exports=function(source,opts){var verbose,precise,i,spot,sourceAtStep,valAtStep,decimals,strAtStep,results,totalSeconds;if(verbose=!1,precise=!1,opts&&(verbose=opts.verbose||!1,precise=opts.precise||!1),!Array.isArray(source)||source.length!==2||typeof source[0]!="number"||typeof source[1]!="number")return"";for(source[1]<0&&(totalSeconds=source[0]+source[1]/1e9,source[0]=parseInt(totalSeconds),source[1]=parseFloat((totalSeconds%1).toPrecision(9))*1e9),results="",i=0;i<6&&(spot=i<3?0:1,sourceAtStep=source[spot],i!==3&&i!==0&&(sourceAtStep=sourceAtStep%convert[i-1]),i===2&&(sourceAtStep+=source[1]/1e9),valAtStep=sourceAtStep/convert[i],!(valAtStep>=1&&(verbose&&(valAtStep=Math.floor(valAtStep)),precise?strAtStep=valAtStep.toString():(decimals=valAtStep>=10?0:2,strAtStep=valAtStep.toFixed(decimals)),strAtStep.indexOf(".")>-1&&strAtStep[strAtStep.length-1]==="0"&&(strAtStep=strAtStep.replace(/\.?0+$/,"")),results&&(results+=" "),results+=strAtStep,verbose?(results+=" "+verboseDesc[i],strAtStep!=="1"&&(results+="s")):results+=" "+minimalDesc[i],!verbose)));i++);return results}}});var src_exports={};__export(src_exports,{bail:()=>bail,build:()=>build,corePresets:()=>corePresets,executor:()=>executor,getConfig:()=>getConfig,overridePresets:()=>overridePresets,printDuration:()=>printDuration,start:()=>start});module.exports=__toCommonJS(src_exports);var import_webpack=__toESM(require("webpack")),import_webpack_dev_middleware=__toESM(require("webpack-dev-middleware")),import_webpack_hot_middleware=__toESM(require("webpack-hot-middleware")),import_node_logger=require("@storybook/node-logger"),import_core_webpack=require("@storybook/core-webpack"),import_path=require("path"),import_express=__toESM(require("express")),import_fs_extra=__toESM(require("fs-extra")),import_core_events=require("@storybook/core-events"),import_pretty_hrtime=__toESM(require_pretty_hrtime()),printDuration=startTime=>(0,import_pretty_hrtime.default)(process.hrtime(startTime)).replace(" ms"," milliseconds").replace(" s"," seconds").replace(" m"," minutes"),wrapForPnP=input=>(0,import_path.dirname)(require.resolve((0,import_path.join)(input,"package.json"))),compilation,reject,executor={get:async options=>{var _a;let version=await options.presets.apply("webpackVersion")||"5",webpackInstance=((_a=await options.presets.apply("webpackInstance"))==null?void 0:_a.default)||import_webpack.default;return(0,import_core_webpack.checkWebpackVersion)({version},"5","builder-webpack5"),webpackInstance}},getConfig=async options=>{let{presets}=options,typescriptOptions=await presets.apply("typescript",{},options),babelOptions=await presets.apply("babel",{},{...options,typescriptOptions}),frameworkOptions=await presets.apply("frameworkOptions");return presets.apply("webpack",{},{...options,babelOptions,typescriptOptions,frameworkOptions})},asyncIterator,bail=async()=>{if(asyncIterator)try{await asyncIterator.throw(new Error)}catch{}return reject&&reject(),new Promise((res,rej)=>{if(process&&compilation)try{compilation.close(()=>res()),import_node_logger.logger.warn("Force closed preview build")}catch{import_node_logger.logger.warn("Unable to close preview build!"),res()}else res()})},starter=async function*({startTime,options,router,channel}){var _a,_b;let webpackInstance=await executor.get(options);yield;let config=await getConfig(options);yield;let compiler=webpackInstance(config);if(!compiler){let err=`${config.name}: missing webpack compiler at runtime!`;return import_node_logger.logger.error(err),{bail,totalTime:process.hrtime(startTime),stats:{hasErrors:()=>!0,hasWarnings:()=>!1,toJson:()=>({warnings:[],errors:[err]})}}}yield;let modulesCount=await((_a=options.cache)==null?void 0:_a.get("modulesCount").catch(()=>{}))||1e3,totalModules,value=0;new import_webpack.ProgressPlugin({handler:(newValue,message,arg3)=>{value=Math.max(newValue,value);let progress={value,message:message.charAt(0).toUpperCase()+message.slice(1)};if(message==="building"){let counts=arg3&&arg3.match(/(\d+)\/(\d+)/)||[],complete=parseInt(counts[1],10),total=parseInt(counts[2],10);!Number.isNaN(complete)&&!Number.isNaN(total)&&(progress.modules={complete,total},totalModules=total)}value===1&&(options.cache&&options.cache.set("modulesCount",totalModules),progress.message||(progress.message=`Completed in ${printDuration(startTime)}.`)),channel.emit(import_core_events.PREVIEW_BUILDER_PROGRESS,[progress])},modulesCount}).apply(compiler);let middlewareOptions={publicPath:(_b=config.output)==null?void 0:_b.publicPath,writeToDisk:!0};compilation=(0,import_webpack_dev_middleware.default)(compiler,middlewareOptions);let previewResolvedDir=wrapForPnP("@storybook/preview"),previewDirOrigin=(0,import_path.join)(previewResolvedDir,"dist");router.use("/sb-preview",import_express.default.static(previewDirOrigin,{immutable:!0,maxAge:"5m"})),router.use(compilation),router.use((0,import_webpack_hot_middleware.default)(compiler,{log:!1}));let stats=await new Promise((ready,stop)=>{compilation==null||compilation.waitUntilValid(ready),reject=stop});if(yield,!stats)throw new Error("no stats after building preview");if(stats.hasErrors())throw stats;return{bail,stats,totalTime:process.hrtime(startTime)}},builder=async function*({startTime,options}){let webpackInstance=await executor.get(options);yield,import_node_logger.logger.info("=> Compiling preview..");let config=await getConfig(options);yield;let compiler=webpackInstance(config);if(!compiler){let err=`${config.name}: missing webpack compiler at runtime!`;return import_node_logger.logger.error(err),{hasErrors:()=>!0,hasWarnings:()=>!1,toJson:()=>({warnings:[],errors:[err]})}}let webpackCompilation=new Promise((succeed,fail)=>{compiler.run((error,stats)=>{if(error||!stats||stats.hasErrors()){if(import_node_logger.logger.error("=> Failed to build the preview"),process.exitCode=1,error){import_node_logger.logger.error(error.message),compiler.close(()=>fail(error));return}if(stats&&(stats.hasErrors()||stats.hasWarnings())){let{warnings=[],errors=[]}=stats.toJson(typeof config.stats=="string"?config.stats:{warnings:!0,errors:!0,...config.stats});errors.forEach(e=>import_node_logger.logger.error(e.message)),warnings.forEach(e=>import_node_logger.logger.error(e.message)),compiler.close(()=>options.debugWebpack?fail(stats):fail(new Error("=> Webpack failed, learn more with --debug-webpack")));return}}import_node_logger.logger.trace({message:"=> Preview built",time:process.hrtime(startTime)}),stats&&stats.hasWarnings()&&stats.toJson({warnings:!0}).warnings.forEach(e=>import_node_logger.logger.warn(e.message)),compiler.close(closeErr=>closeErr?fail(closeErr):succeed(stats))})}),previewResolvedDir=wrapForPnP("@storybook/preview"),previewDirOrigin=(0,import_path.join)(previewResolvedDir,"dist"),previewDirTarget=(0,import_path.join)(options.outputDir||"","sb-preview"),previewFiles=import_fs_extra.default.copy(previewDirOrigin,previewDirTarget,{filter:src=>{let{ext}=(0,import_path.parse)(src);return ext?ext===".mjs":!0}}),[webpackCompilationOutput]=await Promise.all([webpackCompilation,previewFiles]);return webpackCompilationOutput},start=async options=>{asyncIterator=starter(options);let result;do result=await asyncIterator.next();while(!result.done);return result.value},build=async options=>{asyncIterator=builder(options);let result;do result=await asyncIterator.next();while(!result.done);return result.value},corePresets=[(0,import_path.join)(__dirname,"presets/preview-preset.js")],overridePresets=[(0,import_path.join)(__dirname,"./presets/custom-webpack-preset.js")];0&&(module.exports={bail,build,corePresets,executor,getConfig,overridePresets,printDuration,start});
1
+ "use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __commonJS=(cb,mod)=>function(){return mod||(0,cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var require_pretty_hrtime=__commonJS({"../../node_modules/pretty-hrtime/index.js"(exports,module2){"use strict";var minimalDesc=["h","min","s","ms","\u03BCs","ns"],verboseDesc=["hour","minute","second","millisecond","microsecond","nanosecond"],convert=[3600,60,1,1e6,1e3,1];module2.exports=function(source,opts){var verbose,precise,i,spot,sourceAtStep,valAtStep,decimals,strAtStep,results,totalSeconds;if(verbose=!1,precise=!1,opts&&(verbose=opts.verbose||!1,precise=opts.precise||!1),!Array.isArray(source)||source.length!==2||typeof source[0]!="number"||typeof source[1]!="number")return"";for(source[1]<0&&(totalSeconds=source[0]+source[1]/1e9,source[0]=parseInt(totalSeconds),source[1]=parseFloat((totalSeconds%1).toPrecision(9))*1e9),results="",i=0;i<6&&(spot=i<3?0:1,sourceAtStep=source[spot],i!==3&&i!==0&&(sourceAtStep=sourceAtStep%convert[i-1]),i===2&&(sourceAtStep+=source[1]/1e9),valAtStep=sourceAtStep/convert[i],!(valAtStep>=1&&(verbose&&(valAtStep=Math.floor(valAtStep)),precise?strAtStep=valAtStep.toString():(decimals=valAtStep>=10?0:2,strAtStep=valAtStep.toFixed(decimals)),strAtStep.indexOf(".")>-1&&strAtStep[strAtStep.length-1]==="0"&&(strAtStep=strAtStep.replace(/\.?0+$/,"")),results&&(results+=" "),results+=strAtStep,verbose?(results+=" "+verboseDesc[i],strAtStep!=="1"&&(results+="s")):results+=" "+minimalDesc[i],!verbose)));i++);return results}}});var src_exports={};__export(src_exports,{bail:()=>bail,build:()=>build,corePresets:()=>corePresets,executor:()=>executor,getConfig:()=>getConfig,overridePresets:()=>overridePresets,printDuration:()=>printDuration,start:()=>start});module.exports=__toCommonJS(src_exports);var import_webpack=__toESM(require("webpack")),import_webpack_dev_middleware=__toESM(require("webpack-dev-middleware")),import_webpack_hot_middleware=__toESM(require("webpack-hot-middleware")),import_node_logger=require("@storybook/node-logger"),import_core_webpack=require("@storybook/core-webpack"),import_path=require("path"),import_express=__toESM(require("express")),import_fs_extra=__toESM(require("fs-extra")),import_core_events=require("@storybook/core-events"),import_pretty_hrtime=__toESM(require_pretty_hrtime()),printDuration=startTime=>(0,import_pretty_hrtime.default)(process.hrtime(startTime)).replace(" ms"," milliseconds").replace(" s"," seconds").replace(" m"," minutes"),wrapForPnP=input=>(0,import_path.dirname)(require.resolve((0,import_path.join)(input,"package.json"))),compilation,reject,executor={get:async options=>{var _a;let version=await options.presets.apply("webpackVersion")||"5",webpackInstance=((_a=await options.presets.apply("webpackInstance"))==null?void 0:_a.default)||import_webpack.default;return(0,import_core_webpack.checkWebpackVersion)({version},"5","builder-webpack5"),webpackInstance}},getConfig=async options=>{let{presets}=options,typescriptOptions=await presets.apply("typescript",{},options),babelOptions=await presets.apply("babel",{},{...options,typescriptOptions}),frameworkOptions=await presets.apply("frameworkOptions");return presets.apply("webpack",{},{...options,babelOptions,typescriptOptions,frameworkOptions})},asyncIterator,bail=async()=>{if(asyncIterator)try{await asyncIterator.throw(new Error)}catch{}return reject&&reject(),new Promise((res,rej)=>{if(process&&compilation)try{compilation.close(()=>res()),import_node_logger.logger.warn("Force closed preview build")}catch{import_node_logger.logger.warn("Unable to close preview build!"),res()}else res()})},starter=async function*({startTime,options,router,channel}){var _a,_b;let webpackInstance=await executor.get(options);yield;let config=await getConfig(options);yield;let compiler=webpackInstance(config);if(!compiler){let err=`${config.name}: missing webpack compiler at runtime!`;return import_node_logger.logger.error(err),{bail,totalTime:process.hrtime(startTime),stats:{hasErrors:()=>!0,hasWarnings:()=>!1,toJson:()=>({warnings:[],errors:[err]})}}}yield;let modulesCount=await((_a=options.cache)==null?void 0:_a.get("modulesCount").catch(()=>{}))||1e3,totalModules,value=0;new import_webpack.ProgressPlugin({handler:(newValue,message,arg3)=>{value=Math.max(newValue,value);let progress={value,message:message.charAt(0).toUpperCase()+message.slice(1)};if(message==="building"){let counts=arg3&&arg3.match(/(\d+)\/(\d+)/)||[],complete=parseInt(counts[1],10),total=parseInt(counts[2],10);!Number.isNaN(complete)&&!Number.isNaN(total)&&(progress.modules={complete,total},totalModules=total)}value===1&&(options.cache&&options.cache.set("modulesCount",totalModules),progress.message||(progress.message=`Completed in ${printDuration(startTime)}.`)),channel.emit(import_core_events.PREVIEW_BUILDER_PROGRESS,progress)},modulesCount}).apply(compiler);let middlewareOptions={publicPath:(_b=config.output)==null?void 0:_b.publicPath,writeToDisk:!0};compilation=(0,import_webpack_dev_middleware.default)(compiler,middlewareOptions);let previewResolvedDir=wrapForPnP("@storybook/preview"),previewDirOrigin=(0,import_path.join)(previewResolvedDir,"dist");router.use("/sb-preview",import_express.default.static(previewDirOrigin,{immutable:!0,maxAge:"5m"})),router.use(compilation),router.use((0,import_webpack_hot_middleware.default)(compiler,{log:!1}));let stats=await new Promise((ready,stop)=>{compilation==null||compilation.waitUntilValid(ready),reject=stop});if(yield,!stats)throw new Error("no stats after building preview");if(stats.hasErrors())throw stats;return{bail,stats,totalTime:process.hrtime(startTime)}},builder=async function*({startTime,options}){let webpackInstance=await executor.get(options);yield,import_node_logger.logger.info("=> Compiling preview..");let config=await getConfig(options);yield;let compiler=webpackInstance(config);if(!compiler){let err=`${config.name}: missing webpack compiler at runtime!`;return import_node_logger.logger.error(err),{hasErrors:()=>!0,hasWarnings:()=>!1,toJson:()=>({warnings:[],errors:[err]})}}let webpackCompilation=new Promise((succeed,fail)=>{compiler.run((error,stats)=>{if(error||!stats||stats.hasErrors()){if(import_node_logger.logger.error("=> Failed to build the preview"),process.exitCode=1,error){import_node_logger.logger.error(error.message),compiler.close(()=>fail(error));return}if(stats&&(stats.hasErrors()||stats.hasWarnings())){let{warnings=[],errors=[]}=stats.toJson(typeof config.stats=="string"?config.stats:{warnings:!0,errors:!0,...config.stats});errors.forEach(e=>import_node_logger.logger.error(e.message)),warnings.forEach(e=>import_node_logger.logger.error(e.message)),compiler.close(()=>options.debugWebpack?fail(stats):fail(new Error("=> Webpack failed, learn more with --debug-webpack")));return}}import_node_logger.logger.trace({message:"=> Preview built",time:process.hrtime(startTime)}),stats&&stats.hasWarnings()&&stats.toJson({warnings:!0}).warnings.forEach(e=>import_node_logger.logger.warn(e.message)),compiler.close(closeErr=>closeErr?fail(closeErr):succeed(stats))})}),previewResolvedDir=wrapForPnP("@storybook/preview"),previewDirOrigin=(0,import_path.join)(previewResolvedDir,"dist"),previewDirTarget=(0,import_path.join)(options.outputDir||"","sb-preview"),previewFiles=import_fs_extra.default.copy(previewDirOrigin,previewDirTarget,{filter:src=>{let{ext}=(0,import_path.parse)(src);return ext?ext===".js":!0}}),[webpackCompilationOutput]=await Promise.all([webpackCompilation,previewFiles]);return webpackCompilationOutput},start=async options=>{asyncIterator=starter(options);let result;do result=await asyncIterator.next();while(!result.done);return result.value},build=async options=>{asyncIterator=builder(options);let result;do result=await asyncIterator.next();while(!result.done);return result.value},corePresets=[(0,import_path.join)(__dirname,"presets/preview-preset.js")],overridePresets=[(0,import_path.join)(__dirname,"./presets/custom-webpack-preset.js")];0&&(module.exports={bail,build,corePresets,executor,getConfig,overridePresets,printDuration,start});
package/dist/index.mjs CHANGED
@@ -1 +1,13 @@
1
- import{__commonJS,__require,__toESM}from"./chunk-GYZG6JM4.mjs";var require_pretty_hrtime=__commonJS({"../../node_modules/pretty-hrtime/index.js"(exports,module){"use strict";var minimalDesc=["h","min","s","ms","\u03BCs","ns"],verboseDesc=["hour","minute","second","millisecond","microsecond","nanosecond"],convert=[3600,60,1,1e6,1e3,1];module.exports=function(source,opts){var verbose,precise,i,spot,sourceAtStep,valAtStep,decimals,strAtStep,results,totalSeconds;if(verbose=!1,precise=!1,opts&&(verbose=opts.verbose||!1,precise=opts.precise||!1),!Array.isArray(source)||source.length!==2||typeof source[0]!="number"||typeof source[1]!="number")return"";for(source[1]<0&&(totalSeconds=source[0]+source[1]/1e9,source[0]=parseInt(totalSeconds),source[1]=parseFloat((totalSeconds%1).toPrecision(9))*1e9),results="",i=0;i<6&&(spot=i<3?0:1,sourceAtStep=source[spot],i!==3&&i!==0&&(sourceAtStep=sourceAtStep%convert[i-1]),i===2&&(sourceAtStep+=source[1]/1e9),valAtStep=sourceAtStep/convert[i],!(valAtStep>=1&&(verbose&&(valAtStep=Math.floor(valAtStep)),precise?strAtStep=valAtStep.toString():(decimals=valAtStep>=10?0:2,strAtStep=valAtStep.toFixed(decimals)),strAtStep.indexOf(".")>-1&&strAtStep[strAtStep.length-1]==="0"&&(strAtStep=strAtStep.replace(/\.?0+$/,"")),results&&(results+=" "),results+=strAtStep,verbose?(results+=" "+verboseDesc[i],strAtStep!=="1"&&(results+="s")):results+=" "+minimalDesc[i],!verbose)));i++);return results}}});var import_pretty_hrtime=__toESM(require_pretty_hrtime());import webpack,{ProgressPlugin}from"webpack";import webpackDevMiddleware from"webpack-dev-middleware";import webpackHotMiddleware from"webpack-hot-middleware";import{logger}from"@storybook/node-logger";import{checkWebpackVersion}from"@storybook/core-webpack";import{dirname,join,parse}from"path";import express from"express";import fs from"fs-extra";import{PREVIEW_BUILDER_PROGRESS}from"@storybook/core-events";var printDuration=startTime=>(0,import_pretty_hrtime.default)(process.hrtime(startTime)).replace(" ms"," milliseconds").replace(" s"," seconds").replace(" m"," minutes"),wrapForPnP=input=>dirname(__require.resolve(join(input,"package.json"))),compilation,reject,executor={get:async options=>{let version=await options.presets.apply("webpackVersion")||"5",webpackInstance=(await options.presets.apply("webpackInstance"))?.default||webpack;return checkWebpackVersion({version},"5","builder-webpack5"),webpackInstance}},getConfig=async options=>{let{presets}=options,typescriptOptions=await presets.apply("typescript",{},options),babelOptions=await presets.apply("babel",{},{...options,typescriptOptions}),frameworkOptions=await presets.apply("frameworkOptions");return presets.apply("webpack",{},{...options,babelOptions,typescriptOptions,frameworkOptions})},asyncIterator,bail=async()=>{if(asyncIterator)try{await asyncIterator.throw(new Error)}catch{}return reject&&reject(),new Promise((res,rej)=>{if(process&&compilation)try{compilation.close(()=>res()),logger.warn("Force closed preview build")}catch{logger.warn("Unable to close preview build!"),res()}else res()})},starter=async function*({startTime,options,router,channel}){let webpackInstance=await executor.get(options);yield;let config=await getConfig(options);yield;let compiler=webpackInstance(config);if(!compiler){let err=`${config.name}: missing webpack compiler at runtime!`;return logger.error(err),{bail,totalTime:process.hrtime(startTime),stats:{hasErrors:()=>!0,hasWarnings:()=>!1,toJson:()=>({warnings:[],errors:[err]})}}}yield;let modulesCount=await options.cache?.get("modulesCount").catch(()=>{})||1e3,totalModules,value=0;new ProgressPlugin({handler:(newValue,message,arg3)=>{value=Math.max(newValue,value);let progress={value,message:message.charAt(0).toUpperCase()+message.slice(1)};if(message==="building"){let counts=arg3&&arg3.match(/(\d+)\/(\d+)/)||[],complete=parseInt(counts[1],10),total=parseInt(counts[2],10);!Number.isNaN(complete)&&!Number.isNaN(total)&&(progress.modules={complete,total},totalModules=total)}value===1&&(options.cache&&options.cache.set("modulesCount",totalModules),progress.message||(progress.message=`Completed in ${printDuration(startTime)}.`)),channel.emit(PREVIEW_BUILDER_PROGRESS,[progress])},modulesCount}).apply(compiler);let middlewareOptions={publicPath:config.output?.publicPath,writeToDisk:!0};compilation=webpackDevMiddleware(compiler,middlewareOptions);let previewResolvedDir=wrapForPnP("@storybook/preview"),previewDirOrigin=join(previewResolvedDir,"dist");router.use("/sb-preview",express.static(previewDirOrigin,{immutable:!0,maxAge:"5m"})),router.use(compilation),router.use(webpackHotMiddleware(compiler,{log:!1}));let stats=await new Promise((ready,stop)=>{compilation?.waitUntilValid(ready),reject=stop});if(yield,!stats)throw new Error("no stats after building preview");if(stats.hasErrors())throw stats;return{bail,stats,totalTime:process.hrtime(startTime)}},builder=async function*({startTime,options}){let webpackInstance=await executor.get(options);yield,logger.info("=> Compiling preview..");let config=await getConfig(options);yield;let compiler=webpackInstance(config);if(!compiler){let err=`${config.name}: missing webpack compiler at runtime!`;return logger.error(err),{hasErrors:()=>!0,hasWarnings:()=>!1,toJson:()=>({warnings:[],errors:[err]})}}let webpackCompilation=new Promise((succeed,fail)=>{compiler.run((error,stats)=>{if(error||!stats||stats.hasErrors()){if(logger.error("=> Failed to build the preview"),process.exitCode=1,error){logger.error(error.message),compiler.close(()=>fail(error));return}if(stats&&(stats.hasErrors()||stats.hasWarnings())){let{warnings=[],errors=[]}=stats.toJson(typeof config.stats=="string"?config.stats:{warnings:!0,errors:!0,...config.stats});errors.forEach(e=>logger.error(e.message)),warnings.forEach(e=>logger.error(e.message)),compiler.close(()=>options.debugWebpack?fail(stats):fail(new Error("=> Webpack failed, learn more with --debug-webpack")));return}}logger.trace({message:"=> Preview built",time:process.hrtime(startTime)}),stats&&stats.hasWarnings()&&stats.toJson({warnings:!0}).warnings.forEach(e=>logger.warn(e.message)),compiler.close(closeErr=>closeErr?fail(closeErr):succeed(stats))})}),previewResolvedDir=wrapForPnP("@storybook/preview"),previewDirOrigin=join(previewResolvedDir,"dist"),previewDirTarget=join(options.outputDir||"","sb-preview"),previewFiles=fs.copy(previewDirOrigin,previewDirTarget,{filter:src=>{let{ext}=parse(src);return ext?ext===".mjs":!0}}),[webpackCompilationOutput]=await Promise.all([webpackCompilation,previewFiles]);return webpackCompilationOutput},start=async options=>{asyncIterator=starter(options);let result;do result=await asyncIterator.next();while(!result.done);return result.value},build=async options=>{asyncIterator=builder(options);let result;do result=await asyncIterator.next();while(!result.done);return result.value},corePresets=[join(__dirname,"presets/preview-preset.js")],overridePresets=[join(__dirname,"./presets/custom-webpack-preset.js")];export{bail,build,corePresets,executor,getConfig,overridePresets,printDuration,start};
1
+ import webpack, { ProgressPlugin } from 'webpack';
2
+ import webpackDevMiddleware from 'webpack-dev-middleware';
3
+ import webpackHotMiddleware from 'webpack-hot-middleware';
4
+ import { logger } from '@storybook/node-logger';
5
+ import { checkWebpackVersion } from '@storybook/core-webpack';
6
+ import { join, parse, dirname } from 'path';
7
+ import express from 'express';
8
+ import fs from 'fs-extra';
9
+ import { PREVIEW_BUILDER_PROGRESS } from '@storybook/core-events';
10
+
11
+ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __require=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(a,b)=>(typeof require<"u"?require:a)[b]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+x+'" is not supported')});var __commonJS=(cb,mod)=>function(){return mod||(0, cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod));var require_pretty_hrtime=__commonJS({"../../node_modules/pretty-hrtime/index.js"(exports,module){var minimalDesc=["h","min","s","ms","\u03BCs","ns"],verboseDesc=["hour","minute","second","millisecond","microsecond","nanosecond"],convert=[3600,60,1,1e6,1e3,1];module.exports=function(source,opts){var verbose,precise,i,spot,sourceAtStep,valAtStep,decimals,strAtStep,results,totalSeconds;if(verbose=!1,precise=!1,opts&&(verbose=opts.verbose||!1,precise=opts.precise||!1),!Array.isArray(source)||source.length!==2||typeof source[0]!="number"||typeof source[1]!="number")return "";for(source[1]<0&&(totalSeconds=source[0]+source[1]/1e9,source[0]=parseInt(totalSeconds),source[1]=parseFloat((totalSeconds%1).toPrecision(9))*1e9),results="",i=0;i<6&&(spot=i<3?0:1,sourceAtStep=source[spot],i!==3&&i!==0&&(sourceAtStep=sourceAtStep%convert[i-1]),i===2&&(sourceAtStep+=source[1]/1e9),valAtStep=sourceAtStep/convert[i],!(valAtStep>=1&&(verbose&&(valAtStep=Math.floor(valAtStep)),precise?strAtStep=valAtStep.toString():(decimals=valAtStep>=10?0:2,strAtStep=valAtStep.toFixed(decimals)),strAtStep.indexOf(".")>-1&&strAtStep[strAtStep.length-1]==="0"&&(strAtStep=strAtStep.replace(/\.?0+$/,"")),results&&(results+=" "),results+=strAtStep,verbose?(results+=" "+verboseDesc[i],strAtStep!=="1"&&(results+="s")):results+=" "+minimalDesc[i],!verbose)));i++);return results};}});var import_pretty_hrtime=__toESM(require_pretty_hrtime());var printDuration=startTime=>(0, import_pretty_hrtime.default)(process.hrtime(startTime)).replace(" ms"," milliseconds").replace(" s"," seconds").replace(" m"," minutes"),wrapForPnP=input=>dirname(__require.resolve(join(input,"package.json"))),compilation,reject,executor={get:async options=>{let version=await options.presets.apply("webpackVersion")||"5",webpackInstance=(await options.presets.apply("webpackInstance"))?.default||webpack;return checkWebpackVersion({version},"5","builder-webpack5"),webpackInstance}},getConfig=async options=>{let{presets}=options,typescriptOptions=await presets.apply("typescript",{},options),babelOptions=await presets.apply("babel",{},{...options,typescriptOptions}),frameworkOptions=await presets.apply("frameworkOptions");return presets.apply("webpack",{},{...options,babelOptions,typescriptOptions,frameworkOptions})},asyncIterator,bail=async()=>{if(asyncIterator)try{await asyncIterator.throw(new Error);}catch{}return reject&&reject(),new Promise((res,rej)=>{if(process&&compilation)try{compilation.close(()=>res()),logger.warn("Force closed preview build");}catch{logger.warn("Unable to close preview build!"),res();}else res();})},starter=async function*({startTime,options,router,channel}){let webpackInstance=await executor.get(options);yield;let config=await getConfig(options);yield;let compiler=webpackInstance(config);if(!compiler){let err=`${config.name}: missing webpack compiler at runtime!`;return logger.error(err),{bail,totalTime:process.hrtime(startTime),stats:{hasErrors:()=>!0,hasWarnings:()=>!1,toJson:()=>({warnings:[],errors:[err]})}}}yield;let modulesCount=await options.cache?.get("modulesCount").catch(()=>{})||1e3,totalModules,value=0;new ProgressPlugin({handler:(newValue,message,arg3)=>{value=Math.max(newValue,value);let progress={value,message:message.charAt(0).toUpperCase()+message.slice(1)};if(message==="building"){let counts=arg3&&arg3.match(/(\d+)\/(\d+)/)||[],complete=parseInt(counts[1],10),total=parseInt(counts[2],10);!Number.isNaN(complete)&&!Number.isNaN(total)&&(progress.modules={complete,total},totalModules=total);}value===1&&(options.cache&&options.cache.set("modulesCount",totalModules),progress.message||(progress.message=`Completed in ${printDuration(startTime)}.`)),channel.emit(PREVIEW_BUILDER_PROGRESS,progress);},modulesCount}).apply(compiler);let middlewareOptions={publicPath:config.output?.publicPath,writeToDisk:!0};compilation=webpackDevMiddleware(compiler,middlewareOptions);let previewResolvedDir=wrapForPnP("@storybook/preview"),previewDirOrigin=join(previewResolvedDir,"dist");router.use("/sb-preview",express.static(previewDirOrigin,{immutable:!0,maxAge:"5m"})),router.use(compilation),router.use(webpackHotMiddleware(compiler,{log:!1}));let stats=await new Promise((ready,stop)=>{compilation?.waitUntilValid(ready),reject=stop;});if(yield,!stats)throw new Error("no stats after building preview");if(stats.hasErrors())throw stats;return {bail,stats,totalTime:process.hrtime(startTime)}},builder=async function*({startTime,options}){let webpackInstance=await executor.get(options);yield,logger.info("=> Compiling preview..");let config=await getConfig(options);yield;let compiler=webpackInstance(config);if(!compiler){let err=`${config.name}: missing webpack compiler at runtime!`;return logger.error(err),{hasErrors:()=>!0,hasWarnings:()=>!1,toJson:()=>({warnings:[],errors:[err]})}}let webpackCompilation=new Promise((succeed,fail)=>{compiler.run((error,stats)=>{if(error||!stats||stats.hasErrors()){if(logger.error("=> Failed to build the preview"),process.exitCode=1,error){logger.error(error.message),compiler.close(()=>fail(error));return}if(stats&&(stats.hasErrors()||stats.hasWarnings())){let{warnings=[],errors=[]}=stats.toJson(typeof config.stats=="string"?config.stats:{warnings:!0,errors:!0,...config.stats});errors.forEach(e=>logger.error(e.message)),warnings.forEach(e=>logger.error(e.message)),compiler.close(()=>options.debugWebpack?fail(stats):fail(new Error("=> Webpack failed, learn more with --debug-webpack")));return}}logger.trace({message:"=> Preview built",time:process.hrtime(startTime)}),stats&&stats.hasWarnings()&&stats.toJson({warnings:!0}).warnings.forEach(e=>logger.warn(e.message)),compiler.close(closeErr=>closeErr?fail(closeErr):succeed(stats));});}),previewResolvedDir=wrapForPnP("@storybook/preview"),previewDirOrigin=join(previewResolvedDir,"dist"),previewDirTarget=join(options.outputDir||"","sb-preview"),previewFiles=fs.copy(previewDirOrigin,previewDirTarget,{filter:src=>{let{ext}=parse(src);return ext?ext===".js":!0}}),[webpackCompilationOutput]=await Promise.all([webpackCompilation,previewFiles]);return webpackCompilationOutput},start=async options=>{asyncIterator=starter(options);let result;do result=await asyncIterator.next();while(!result.done);return result.value},build=async options=>{asyncIterator=builder(options);let result;do result=await asyncIterator.next();while(!result.done);return result.value},corePresets=[join(__dirname,"presets/preview-preset.js")],overridePresets=[join(__dirname,"./presets/custom-webpack-preset.js")];
12
+
13
+ export { bail, build, corePresets, executor, getConfig, overridePresets, printDuration, start };
@@ -1,6 +1,6 @@
1
1
  import * as webpack$1 from 'webpack';
2
2
  import { Configuration } from 'webpack';
3
- import { O as Options } from '../index.d-1a1e1de1.js';
3
+ import { O as Options } from '../index.d-6f3a4ba9.js';
4
4
  import 'file-system-cache';
5
5
  import '@babel/core';
6
6
  import 'express';
@@ -1,6 +1,8 @@
1
- "use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var preview_preset_exports={};__export(preview_preset_exports,{babel:()=>babel,entries:()=>entries,previewMainTemplate:()=>previewMainTemplate,webpack:()=>webpack});module.exports=__toCommonJS(preview_preset_exports);var import_path=require("path"),import_webpack=require("webpack"),import_html_webpack_plugin=__toESM(require("html-webpack-plugin")),import_case_sensitive_paths_webpack_plugin=__toESM(require("case-sensitive-paths-webpack-plugin")),import_terser_webpack_plugin=__toESM(require("terser-webpack-plugin")),import_webpack_virtual_modules=__toESM(require("webpack-virtual-modules")),import_fork_ts_checker_webpack_plugin=__toESM(require("fork-ts-checker-webpack-plugin"));function slash(path){return/^\\\\\?\\/.test(path)?path:path.replace(/\\/g,"/")}var import_globals=require("@storybook/preview/globals"),import_core_common2=require("@storybook/core-common"),import_core_webpack=require("@storybook/core-webpack"),import_ts_dedent=require("ts-dedent");var import_core_common=require("@storybook/core-common"),createBabelLoader=(options,typescriptOptions)=>({test:typescriptOptions.skipBabel?/\.(mjs|jsx?)$/:/\.(mjs|tsx?|jsx?)$/,use:[{loader:require.resolve("babel-loader"),options}],include:[(0,import_core_common.getProjectRoot)()],exclude:/node_modules/});var wrapForPnP=input=>(0,import_path.dirname)(require.resolve((0,import_path.join)(input,"package.json"))),storybookPaths={global:wrapForPnP("@storybook/global"),...["api","components","global","manager-api","router","theming"].reduce((acc,sbPackage)=>({...acc,[`@storybook/${sbPackage}`]:wrapForPnP(`@storybook/${sbPackage}`)}),{}),["@storybook/api"]:wrapForPnP("@storybook/manager-api")},iframe_webpack_config_default=async options=>{var _a;let{outputDir=(0,import_path.join)(".","public"),quiet,packageJson,configType,presets,previewUrl,babelOptions,typescriptOptions,features}=options,isProd=configType==="PRODUCTION",workingDir=process.cwd(),[coreOptions,frameworkOptions,envs,logLevel,headHtmlSnippet,bodyHtmlSnippet,template,docsOptions,entries2,nonNormalizedStories,modulesCount=1e3]=await Promise.all([presets.apply("core"),presets.apply("frameworkOptions"),presets.apply("env"),presets.apply("logLevel",void 0),presets.apply("previewHead"),presets.apply("previewBody"),presets.apply("previewMainTemplate"),presets.apply("docs"),presets.apply("entries",[]),presets.apply("stories",[]),(_a=options.cache)==null?void 0:_a.get("modulesCount").catch(()=>{})]),stories=(0,import_core_common2.normalizeStories)(nonNormalizedStories,{configDir:options.configDir,workingDir}),builderOptions=await(0,import_core_common2.getBuilderOptions)(options),previewAnnotations=[...(await presets.apply("previewAnnotations",[],options)).map(entry=>typeof entry=="object"?entry.absolute:(0,import_path.isAbsolute)(entry)?entry:slash(entry)),(0,import_core_common2.loadPreviewOrConfigFile)(options)].filter(Boolean),virtualModuleMapping={};if(features!=null&&features.storyStoreV7){let storiesFilename="storybook-stories.js",storiesPath=(0,import_path.resolve)((0,import_path.join)(workingDir,storiesFilename)),needPipelinedImport=!!builderOptions.lazyCompilation&&!isProd;virtualModuleMapping[storiesPath]=(0,import_core_webpack.toImportFn)(stories,{needPipelinedImport});let configEntryPath=(0,import_path.resolve)((0,import_path.join)(workingDir,"storybook-config-entry.js"));virtualModuleMapping[configEntryPath]=(0,import_core_common2.handlebars)(await(0,import_core_common2.readTemplate)(require.resolve("@storybook/builder-webpack5/templates/virtualModuleModernEntry.js.handlebars")),{storiesFilename,previewAnnotations}).replace(/\\/g,"\\\\"),entries2.push(configEntryPath)}else{let rendererName=await(0,import_core_common2.getRendererName)(options),rendererInitEntry=(0,import_path.resolve)((0,import_path.join)(workingDir,"storybook-init-renderer-entry.js"));virtualModuleMapping[rendererInitEntry]=`import '${rendererName}';`,entries2.push(rendererInitEntry);let entryTemplate=await(0,import_core_common2.readTemplate)((0,import_path.join)(__dirname,"..","..","templates","virtualModuleEntry.template.js"));if(previewAnnotations.forEach(previewAnnotationFilename=>{if(!previewAnnotationFilename)return;let entryFilename=previewAnnotationFilename.startsWith(".")?`${previewAnnotationFilename.replace(/(\w)(\/|\\)/g,"$1-")}-generated-config-entry.js`:`${previewAnnotationFilename}-generated-config-entry.js`;virtualModuleMapping[entryFilename]=(0,import_core_common2.interpolate)(entryTemplate,{previewAnnotationFilename}),entries2.push(entryFilename)}),stories.length>0){let storyTemplate=await(0,import_core_common2.readTemplate)((0,import_path.join)(__dirname,"..","..","templates","virtualModuleStory.template.js")),storiesFilename=(0,import_path.resolve)((0,import_path.join)(workingDir,"generated-stories-entry.cjs"));virtualModuleMapping[storiesFilename]=(0,import_core_common2.interpolate)(storyTemplate,{rendererName}).replace("'{{stories}}'",stories.map(import_core_webpack.toRequireContextString).join(",")),entries2.push(storiesFilename)}}let shouldCheckTs=typescriptOptions.check&&!typescriptOptions.skipBabel,tsCheckOptions=typescriptOptions.checkOptions||{},cacheConfig=builderOptions.fsCache?{cache:{type:"filesystem"}}:{},lazyCompilationConfig=builderOptions.lazyCompilation&&!isProd?{lazyCompilation:{entries:!1}}:{};if(!template)throw new Error(import_ts_dedent.dedent`
1
+ "use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var preview_preset_exports={};__export(preview_preset_exports,{babel:()=>babel,entries:()=>entries,previewMainTemplate:()=>previewMainTemplate,webpack:()=>webpack});module.exports=__toCommonJS(preview_preset_exports);var import_path=require("path"),import_webpack=require("webpack"),import_html_webpack_plugin=__toESM(require("html-webpack-plugin")),import_case_sensitive_paths_webpack_plugin=__toESM(require("case-sensitive-paths-webpack-plugin")),import_terser_webpack_plugin=__toESM(require("terser-webpack-plugin")),import_webpack_virtual_modules=__toESM(require("webpack-virtual-modules")),import_fork_ts_checker_webpack_plugin=__toESM(require("fork-ts-checker-webpack-plugin"));function slash(path){return path.startsWith("\\\\?\\")?path:path.replace(/\\/g,"/")}var import_globals=require("@storybook/preview/globals"),import_core_common2=require("@storybook/core-common"),import_core_webpack=require("@storybook/core-webpack"),import_ts_dedent2=require("ts-dedent");var import_core_common=require("@storybook/core-common"),import_ts_dedent=require("ts-dedent"),import_node_logger=require("@storybook/node-logger"),createBabelLoader=(options,typescriptOptions,excludes=[])=>({test:typescriptOptions.skipBabel?/\.(mjs|jsx?)$/:/\.(mjs|tsx?|jsx?)$/,use:[{loader:require.resolve("babel-loader"),options}],include:[(0,import_core_common.getProjectRoot)()],exclude:[/node_modules/,...excludes]}),createSWCLoader=(excludes=[])=>{import_node_logger.logger.warn(import_ts_dedent.dedent`
2
+ The SWC loader is an experimental feature and may change or even be removed at any time.
3
+ `);let config={jsc:{parser:{syntax:"typescript",tsx:!0,dynamicImport:!0}}};return{test:/\.(mjs|cjs|tsx?|jsx?)$/,use:[{loader:require.resolve("swc-loader"),options:config}],include:[(0,import_core_common.getProjectRoot)()],exclude:[/node_modules/,...excludes]}};var wrapForPnP=input=>(0,import_path.dirname)(require.resolve((0,import_path.join)(input,"package.json"))),storybookPaths={...["api","components","global","manager-api","router","theming"].reduce((acc,sbPackage)=>({...acc,[`@storybook/${sbPackage}`]:wrapForPnP(`@storybook/${sbPackage}`)}),{}),"@storybook/api":wrapForPnP("@storybook/manager-api")},iframe_webpack_config_default=async options=>{var _a;let{outputDir=(0,import_path.join)(".","public"),quiet,packageJson,configType,presets,previewUrl,babelOptions,typescriptOptions,features}=options,isProd=configType==="PRODUCTION",workingDir=process.cwd(),[coreOptions,frameworkOptions,envs,logLevel,headHtmlSnippet,bodyHtmlSnippet,template,docsOptions,entries2,nonNormalizedStories,modulesCount=1e3]=await Promise.all([presets.apply("core"),presets.apply("frameworkOptions"),presets.apply("env"),presets.apply("logLevel",void 0),presets.apply("previewHead"),presets.apply("previewBody"),presets.apply("previewMainTemplate"),presets.apply("docs"),presets.apply("entries",[]),presets.apply("stories",[]),(_a=options.cache)==null?void 0:_a.get("modulesCount").catch(()=>{})]),stories=(0,import_core_common2.normalizeStories)(nonNormalizedStories,{configDir:options.configDir,workingDir}),builderOptions=await(0,import_core_common2.getBuilderOptions)(options),previewAnnotations=[...(await presets.apply("previewAnnotations",[],options)).map(entry=>typeof entry=="object"?entry.absolute:(0,import_path.isAbsolute)(entry)?entry:slash(entry)),(0,import_core_common2.loadPreviewOrConfigFile)(options)].filter(Boolean),virtualModuleMapping={};if(features!=null&&features.storyStoreV7){let storiesFilename="storybook-stories.js",storiesPath=(0,import_path.resolve)((0,import_path.join)(workingDir,storiesFilename)),needPipelinedImport=!!builderOptions.lazyCompilation&&!isProd;virtualModuleMapping[storiesPath]=(0,import_core_webpack.toImportFn)(stories,{needPipelinedImport});let configEntryPath=(0,import_path.resolve)((0,import_path.join)(workingDir,"storybook-config-entry.js"));virtualModuleMapping[configEntryPath]=(0,import_core_common2.handlebars)(await(0,import_core_common2.readTemplate)(require.resolve("@storybook/builder-webpack5/templates/virtualModuleModernEntry.js.handlebars")),{storiesFilename,previewAnnotations}).replace(/\\/g,"\\\\"),entries2.push(configEntryPath)}else{let rendererName=await(0,import_core_common2.getRendererName)(options),rendererInitEntry=(0,import_path.resolve)((0,import_path.join)(workingDir,"storybook-init-renderer-entry.js"));virtualModuleMapping[rendererInitEntry]=`import '${slash(rendererName)}';`,entries2.push(rendererInitEntry);let entryTemplate=await(0,import_core_common2.readTemplate)((0,import_path.join)(__dirname,"..","..","templates","virtualModuleEntry.template.js"));if(previewAnnotations.forEach(previewAnnotationFilename=>{if(!previewAnnotationFilename)return;let entryFilename=previewAnnotationFilename.startsWith(".")?`${previewAnnotationFilename.replace(/(\w)(\/|\\)/g,"$1-")}-generated-config-entry.js`:`${previewAnnotationFilename}-generated-config-entry.js`;virtualModuleMapping[entryFilename]=(0,import_core_common2.interpolate)(entryTemplate,{previewAnnotationFilename}),entries2.push(entryFilename)}),stories.length>0){let storyTemplate=await(0,import_core_common2.readTemplate)((0,import_path.join)(__dirname,"..","..","templates","virtualModuleStory.template.js")),storiesFilename=(0,import_path.resolve)((0,import_path.join)(workingDir,"generated-stories-entry.cjs"));virtualModuleMapping[storiesFilename]=(0,import_core_common2.interpolate)(storyTemplate,{rendererName}).replace("'{{stories}}'",stories.map(import_core_webpack.toRequireContextString).join(",")),entries2.push(storiesFilename)}}let shouldCheckTs=typescriptOptions.check&&!typescriptOptions.skipBabel,tsCheckOptions=typescriptOptions.checkOptions||{},cacheConfig=builderOptions.fsCache?{cache:{type:"filesystem"}}:{},lazyCompilationConfig=builderOptions.lazyCompilation&&!isProd?{lazyCompilation:{entries:!1}}:{};if(!template)throw new Error(import_ts_dedent2.dedent`
2
4
  Storybook's Webpack5 builder requires a template to be specified.
3
5
  Somehow you've ended up with a falsy value for the template option.
4
6
 
5
7
  Please file an issue at https://github.com/storybookjs/storybook with a reproduction.
6
- `);return{name:"preview",mode:isProd?"production":"development",bail:isProd,devtool:"cheap-module-source-map",entry:entries2,output:{path:(0,import_path.resolve)(process.cwd(),outputDir),filename:isProd?"[name].[contenthash:8].iframe.bundle.js":"[name].iframe.bundle.js",publicPath:""},stats:{preset:"none",logging:"error"},watchOptions:{ignored:/node_modules/},externals:import_globals.globals,ignoreWarnings:[{message:/export '\S+' was not found in 'global'/},{message:/export '\S+' was not found in '@storybook\/global'/}],plugins:[Object.keys(virtualModuleMapping).length>0?new import_webpack_virtual_modules.default(virtualModuleMapping):null,new import_html_webpack_plugin.default({filename:"iframe.html",chunksSortMode:"none",alwaysWriteToDisk:!0,inject:!1,template,templateParameters:{version:packageJson.version,globals:{CONFIG_TYPE:configType,LOGLEVEL:logLevel,FRAMEWORK_OPTIONS:frameworkOptions,CHANNEL_OPTIONS:coreOptions.channelOptions,FEATURES:features,PREVIEW_URL:previewUrl,STORIES:stories.map(specifier=>({...specifier,importPathMatcher:specifier.importPathMatcher.source})),DOCS_OPTIONS:docsOptions},headHtmlSnippet,bodyHtmlSnippet},minify:{collapseWhitespace:!0,removeComments:!0,removeRedundantAttributes:!0,removeScriptTypeAttributes:!1,removeStyleLinkTypeAttributes:!0,useShortDoctype:!0}}),new import_webpack.DefinePlugin({...(0,import_core_common2.stringifyProcessEnvs)(envs),NODE_ENV:JSON.stringify(process.env.NODE_ENV)}),new import_webpack.ProvidePlugin({process:require.resolve("process/browser.js")}),isProd?null:new import_webpack.HotModuleReplacementPlugin,new import_case_sensitive_paths_webpack_plugin.default,quiet?null:new import_webpack.ProgressPlugin({modulesCount}),shouldCheckTs?new import_fork_ts_checker_webpack_plugin.default(tsCheckOptions):null].filter(Boolean),module:{rules:[{test:/\.m?js$/,type:"javascript/auto"},{test:/\.m?js$/,resolve:{fullySpecified:!1}},createBabelLoader(babelOptions,typescriptOptions),{test:/\.md$/,type:"asset/source"}]},resolve:{extensions:[".mjs",".js",".jsx",".ts",".tsx",".json",".cjs"],modules:["node_modules"].concat(envs.NODE_PATH||[]),mainFields:["browser","module","main"].filter(Boolean),alias:storybookPaths,fallback:{path:require.resolve("path-browserify"),assert:require.resolve("browser-assert"),util:require.resolve("util")},symlinks:!(0,import_core_common2.isPreservingSymlinks)()},optimization:{splitChunks:{chunks:"all"},runtimeChunk:!0,sideEffects:!0,usedExports:isProd,moduleIds:"named",minimizer:isProd?[new import_terser_webpack_plugin.default({parallel:!0,terserOptions:{sourceMap:!0,mangle:!1,keep_fnames:!0}})]:[]},performance:{hints:isProd?"warning":!1},...cacheConfig,experiments:{...lazyCompilationConfig}}};var webpack=async(_,options)=>iframe_webpack_config_default(options),entries=async(_,options)=>{let result=[];return options.configType==="DEVELOPMENT"&&(result=result.concat(`${require.resolve("webpack-hot-middleware/client")}?reload=true&quiet=false&noInfo=${options.quiet}`)),result},babel=async(config,options)=>({...config,overrides:[...(config==null?void 0:config.overrides)||[],{test:/\.(story|stories).*$/,plugins:[require.resolve("babel-plugin-named-exports-order")]}]}),previewMainTemplate=()=>require.resolve("@storybook/builder-webpack5/templates/preview.ejs");0&&(module.exports={babel,entries,previewMainTemplate,webpack});
8
+ `);return{name:"preview",mode:isProd?"production":"development",bail:isProd,devtool:"cheap-module-source-map",entry:entries2,output:{path:(0,import_path.resolve)(process.cwd(),outputDir),filename:isProd?"[name].[contenthash:8].iframe.bundle.js":"[name].iframe.bundle.js",publicPath:""},stats:{preset:"none",logging:"error"},watchOptions:{ignored:/node_modules/},externals:import_globals.globals,ignoreWarnings:[{message:/export '\S+' was not found in 'global'/},{message:/export '\S+' was not found in '@storybook\/global'/}],plugins:[Object.keys(virtualModuleMapping).length>0?new import_webpack_virtual_modules.default(virtualModuleMapping):null,new import_html_webpack_plugin.default({filename:"iframe.html",chunksSortMode:"none",alwaysWriteToDisk:!0,inject:!1,template,templateParameters:{version:packageJson.version,globals:{CONFIG_TYPE:configType,LOGLEVEL:logLevel,FRAMEWORK_OPTIONS:frameworkOptions,CHANNEL_OPTIONS:coreOptions.channelOptions,FEATURES:features,PREVIEW_URL:previewUrl,STORIES:stories.map(specifier=>({...specifier,importPathMatcher:specifier.importPathMatcher.source})),DOCS_OPTIONS:docsOptions},headHtmlSnippet,bodyHtmlSnippet},minify:{collapseWhitespace:!0,removeComments:!0,removeRedundantAttributes:!0,removeScriptTypeAttributes:!1,removeStyleLinkTypeAttributes:!0,useShortDoctype:!0}}),new import_webpack.DefinePlugin({...(0,import_core_common2.stringifyProcessEnvs)(envs),NODE_ENV:JSON.stringify(process.env.NODE_ENV)}),new import_webpack.ProvidePlugin({process:require.resolve("process/browser.js")}),isProd?null:new import_webpack.HotModuleReplacementPlugin,new import_case_sensitive_paths_webpack_plugin.default,quiet?null:new import_webpack.ProgressPlugin({modulesCount}),shouldCheckTs?new import_fork_ts_checker_webpack_plugin.default(tsCheckOptions):null].filter(Boolean),module:{rules:[{test:/\.m?js$/,type:"javascript/auto"},{test:/\.m?js$/,resolve:{fullySpecified:!1}},builderOptions.useSWC?createSWCLoader(Object.keys(virtualModuleMapping)):createBabelLoader(babelOptions,typescriptOptions,Object.keys(virtualModuleMapping)),{test:/\.md$/,type:"asset/source"}]},resolve:{extensions:[".mjs",".js",".jsx",".ts",".tsx",".json",".cjs"],modules:["node_modules"].concat(envs.NODE_PATH||[]),mainFields:["browser","module","main"].filter(Boolean),alias:storybookPaths,fallback:{stream:!1,path:require.resolve("path-browserify"),assert:require.resolve("browser-assert"),util:require.resolve("util"),url:require.resolve("url"),fs:!1,constants:require.resolve("constants-browserify")},symlinks:!(0,import_core_common2.isPreservingSymlinks)()},optimization:{splitChunks:{chunks:"all"},runtimeChunk:!0,sideEffects:!0,usedExports:isProd,moduleIds:"named",...isProd?{minimize:!0,minimizer:builderOptions.useSWC?[new import_terser_webpack_plugin.default({minify:import_terser_webpack_plugin.default.swcMinify,terserOptions:{sourceMap:!0,mangle:!1,keep_fnames:!0}})]:[new import_terser_webpack_plugin.default({parallel:!0,terserOptions:{sourceMap:!0,mangle:!1,keep_fnames:!0}})]}:{}},performance:{hints:isProd?"warning":!1},...cacheConfig,experiments:{...lazyCompilationConfig}}};var webpack=async(_,options)=>iframe_webpack_config_default(options),entries=async(_,options)=>{let result=[];return options.configType==="DEVELOPMENT"&&(result=result.concat(`${require.resolve("webpack-hot-middleware/client")}?reload=true&quiet=false&noInfo=${options.quiet}`)),result},babel=async(config,options)=>({...config,overrides:[...(config==null?void 0:config.overrides)||[],{test:/\.(story|stories).*$/,plugins:[require.resolve("babel-plugin-named-exports-order")]}]}),previewMainTemplate=()=>require.resolve("@storybook/builder-webpack5/templates/preview.ejs");0&&(module.exports={babel,entries,previewMainTemplate,webpack});
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@storybook/builder-webpack5",
3
- "version": "7.1.0-alpha.8",
3
+ "version": "7.1.0-beta.0",
4
4
  "description": "Storybook framework-agnostic API",
5
5
  "keywords": [
6
6
  "storybook"
7
7
  ],
8
- "homepage": "https://github.com/storybookjs/storybook/tree/main/lib/core",
8
+ "homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-webpack5",
9
9
  "bugs": {
10
10
  "url": "https://github.com/storybookjs/storybook/issues"
11
11
  },
12
12
  "repository": {
13
13
  "type": "git",
14
14
  "url": "https://github.com/storybookjs/storybook.git",
15
- "directory": "lib/core"
15
+ "directory": "code/builders/builder-webpack5"
16
16
  },
17
17
  "funding": {
18
18
  "type": "opencollective",
@@ -21,22 +21,20 @@
21
21
  "license": "MIT",
22
22
  "exports": {
23
23
  ".": {
24
+ "types": "./dist/index.d.ts",
24
25
  "node": "./dist/index.js",
25
26
  "require": "./dist/index.js",
26
- "import": "./dist/index.mjs",
27
- "types": "./dist/index.d.ts"
27
+ "import": "./dist/index.mjs"
28
28
  },
29
29
  "./presets/custom-webpack-preset": {
30
+ "types": "./dist/presets/custom-webpack-preset.d.ts",
30
31
  "node": "./dist/presets/custom-webpack-preset.js",
31
- "require": "./dist/presets/custom-webpack-preset.js",
32
- "import": "./dist/presets/custom-webpack-preset.mjs",
33
- "types": "./dist/presets/custom-webpack-preset.d.ts"
32
+ "require": "./dist/presets/custom-webpack-preset.js"
34
33
  },
35
34
  "./presets/preview-preset": {
35
+ "types": "./dist/presets/preview-preset.d.ts",
36
36
  "node": "./dist/presets/preview-preset.js",
37
- "require": "./dist/presets/preview-preset.js",
38
- "import": "./dist/presets/preview-preset.mjs",
39
- "types": "./dist/presets/preview-preset.d.ts"
37
+ "require": "./dist/presets/preview-preset.js"
40
38
  },
41
39
  "./templates/virtualModuleModernEntry.js.handlebars": "./templates/virtualModuleModernEntry.js.handlebars",
42
40
  "./templates/preview.ejs": "./templates/preview.ejs",
@@ -57,54 +55,56 @@
57
55
  "prep": "../../../scripts/prepare/bundle.ts"
58
56
  },
59
57
  "dependencies": {
60
- "@babel/core": "^7.12.10",
61
- "@storybook/addons": "7.1.0-alpha.8",
62
- "@storybook/api": "7.1.0-alpha.8",
63
- "@storybook/channel-postmessage": "7.1.0-alpha.8",
64
- "@storybook/channel-websocket": "7.1.0-alpha.8",
65
- "@storybook/channels": "7.1.0-alpha.8",
66
- "@storybook/client-api": "7.1.0-alpha.8",
67
- "@storybook/client-logger": "7.1.0-alpha.8",
68
- "@storybook/components": "7.1.0-alpha.8",
69
- "@storybook/core-common": "7.1.0-alpha.8",
70
- "@storybook/core-events": "7.1.0-alpha.8",
71
- "@storybook/core-webpack": "7.1.0-alpha.8",
58
+ "@babel/core": "^7.22.0",
59
+ "@storybook/addons": "7.1.0-beta.0",
60
+ "@storybook/api": "7.1.0-beta.0",
61
+ "@storybook/channel-postmessage": "7.1.0-beta.0",
62
+ "@storybook/channels": "7.1.0-beta.0",
63
+ "@storybook/client-api": "7.1.0-beta.0",
64
+ "@storybook/client-logger": "7.1.0-beta.0",
65
+ "@storybook/components": "7.1.0-beta.0",
66
+ "@storybook/core-common": "7.1.0-beta.0",
67
+ "@storybook/core-events": "7.1.0-beta.0",
68
+ "@storybook/core-webpack": "7.1.0-beta.0",
72
69
  "@storybook/global": "^5.0.0",
73
- "@storybook/manager-api": "7.1.0-alpha.8",
74
- "@storybook/node-logger": "7.1.0-alpha.8",
75
- "@storybook/preview": "7.1.0-alpha.8",
76
- "@storybook/preview-api": "7.1.0-alpha.8",
77
- "@storybook/router": "7.1.0-alpha.8",
78
- "@storybook/store": "7.1.0-alpha.8",
79
- "@storybook/theming": "7.1.0-alpha.8",
70
+ "@storybook/manager-api": "7.1.0-beta.0",
71
+ "@storybook/node-logger": "7.1.0-beta.0",
72
+ "@storybook/preview": "7.1.0-beta.0",
73
+ "@storybook/preview-api": "7.1.0-beta.0",
74
+ "@storybook/router": "7.1.0-beta.0",
75
+ "@storybook/store": "7.1.0-beta.0",
76
+ "@storybook/theming": "7.1.0-beta.0",
77
+ "@swc/core": "^1.3.49",
80
78
  "@types/node": "^16.0.0",
81
79
  "@types/semver": "^7.3.4",
82
80
  "babel-loader": "^9.0.0",
83
81
  "babel-plugin-named-exports-order": "^0.0.2",
84
82
  "browser-assert": "^1.2.1",
85
83
  "case-sensitive-paths-webpack-plugin": "^2.4.0",
84
+ "constants-browserify": "^1.0.0",
86
85
  "css-loader": "^6.7.1",
87
86
  "express": "^4.17.3",
88
- "fork-ts-checker-webpack-plugin": "^7.2.8",
87
+ "fork-ts-checker-webpack-plugin": "^8.0.0",
89
88
  "fs-extra": "^11.1.0",
90
89
  "html-webpack-plugin": "^5.5.0",
91
90
  "path-browserify": "^1.0.1",
92
91
  "process": "^0.11.10",
93
92
  "semver": "^7.3.7",
94
93
  "style-loader": "^3.3.1",
94
+ "swc-loader": "^0.2.3",
95
95
  "terser-webpack-plugin": "^5.3.1",
96
96
  "ts-dedent": "^2.0.0",
97
+ "url": "^0.11.0",
97
98
  "util": "^0.12.4",
98
99
  "util-deprecate": "^1.0.2",
99
100
  "webpack": "5",
100
- "webpack-dev-middleware": "^5.3.1",
101
+ "webpack-dev-middleware": "^6.1.1",
101
102
  "webpack-hot-middleware": "^2.25.1",
102
- "webpack-virtual-modules": "^0.4.3"
103
+ "webpack-virtual-modules": "^0.5.0"
103
104
  },
104
105
  "devDependencies": {
105
106
  "@types/pretty-hrtime": "^1.0.0",
106
107
  "@types/terser-webpack-plugin": "^5.2.0",
107
- "@types/webpack-dev-middleware": "^5.3.0",
108
108
  "@types/webpack-hot-middleware": "^2.25.6",
109
109
  "@types/webpack-virtual-modules": "^0.1.1",
110
110
  "pretty-hrtime": "^1.0.3",
@@ -131,5 +131,5 @@
131
131
  ],
132
132
  "platform": "node"
133
133
  },
134
- "gitHead": "ae73d1c8065f7d614cfe6f3462ae7ca55a0c4e6b"
135
- }
134
+ "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17"
135
+ }
@@ -44,7 +44,7 @@
44
44
  </script>
45
45
  <% } %>
46
46
  <script type="module">
47
- import './sb-preview/runtime.mjs';
47
+ import './sb-preview/runtime.js';
48
48
 
49
49
  <% htmlWebpackPlugin.files.js.forEach(file => { %>
50
50
  import './<%= file %>';
@@ -1,20 +1,19 @@
1
1
  import { global } from '@storybook/global';
2
2
 
3
3
  import { ClientApi, PreviewWeb, addons, composeConfigs } from '@storybook/preview-api';
4
- import { createChannel as createPostMessageChannel } from '@storybook/channel-postmessage';
5
- import { createChannel as createWebSocketChannel } from '@storybook/channel-websocket';
4
+ import { createBrowserChannel } from '@storybook/channels';
6
5
 
7
6
  import { importFn } from './{{storiesFilename}}';
8
7
 
9
8
  const getProjectAnnotations = () =>
10
9
  composeConfigs([{{#each previewAnnotations}}require('{{this}}'),{{/each}}]);
11
10
 
12
- const channel = createPostMessageChannel({ page: 'preview' });
11
+ const channel = createBrowserChannel({ page: 'preview' });
13
12
  addons.setChannel(channel);
14
13
 
15
- const serverChannel = createWebSocketChannel({});
16
- addons.setServerChannel(serverChannel);
17
- window.__STORYBOOK_SERVER_CHANNEL__ = serverChannel;
14
+ if (global.CONFIG_TYPE === 'DEVELOPMENT'){
15
+ window.__STORYBOOK_SERVER_CHANNEL__ = channel;
16
+ }
18
17
 
19
18
  const preview = new PreviewWeb();
20
19
 
@@ -1 +0,0 @@
1
- var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __require=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(a,b)=>(typeof require<"u"?require:a)[b]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+x+'" is not supported')});var __commonJS=(cb,mod)=>function(){return mod||(0,cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod));export{__require,__commonJS,__toESM};
@@ -1,3 +0,0 @@
1
- import{__require}from"../chunk-GYZG6JM4.mjs";import*as webpackReal from"webpack";import{logger as logger2}from"@storybook/node-logger";import deprecate from"util-deprecate";import{dedent}from"ts-dedent";import{loadCustomWebpackConfig}from"@storybook/core-webpack";import{logger}from"@storybook/node-logger";async function createDefaultWebpackConfig(storybookBaseConfig,options){if(options.presetsList?.some(preset=>/@storybook(\/|\\)preset-create-react-app/.test(typeof preset=="string"?preset:preset.name)))return storybookBaseConfig;let hasPostcssAddon=options.presetsList?.some(preset=>/@storybook(\/|\\)addon-postcss/.test(typeof preset=="string"?preset:preset.name)),cssLoaders={};hasPostcssAddon||(logger.info("=> Using implicit CSS loaders"),cssLoaders={test:/\.css$/,sideEffects:!0,use:[__require.resolve("style-loader"),{loader:__require.resolve("css-loader"),options:{importLoaders:1}}]});let isProd=storybookBaseConfig.mode!=="development";return{...storybookBaseConfig,module:{...storybookBaseConfig.module,rules:[...storybookBaseConfig.module?.rules||[],cssLoaders,{test:/\.(svg|ico|jpg|jpeg|png|apng|gif|eot|otf|webp|ttf|woff|woff2|cur|ani|pdf)(\?.*)?$/,type:"asset/resource",generator:{filename:isProd?"static/media/[name].[contenthash:8][ext]":"static/media/[path][name][ext]"}},{test:/\.(mp4|webm|wav|mp3|m4a|aac|oga)(\?.*)?$/,type:"asset",parser:{dataUrlCondition:{maxSize:1e4}},generator:{filename:isProd?"static/media/[name].[contenthash:8][ext]":"static/media/[path][name][ext]"}},{resourceQuery:/raw/,type:"asset/source"}]},resolve:{...storybookBaseConfig.resolve,fallback:{crypto:!1,assert:!1,...storybookBaseConfig.resolve?.fallback}}}}async function webpack(config,options){let{configDir,configType,presets,webpackConfig}=options,coreOptions=await presets.apply("core"),defaultConfig=config;coreOptions?.disableWebpackDefaults||(defaultConfig=await createDefaultWebpackConfig(config,options));let finalDefaultConfig=await presets.apply("webpackFinal",defaultConfig,options);if(webpackConfig)return deprecate(webpackConfig,dedent`
2
- You've provided a webpack config directly in CallOptions, this is not recommended. Please use presets instead. This feature will be removed in 7.0
3
- `)(finalDefaultConfig);let customConfig=loadCustomWebpackConfig(configDir);return typeof customConfig=="function"?(logger2.info("=> Loading custom Webpack config (full-control mode)."),customConfig({config:finalDefaultConfig,mode:configType})):(logger2.info("=> Using default Webpack5 setup"),finalDefaultConfig)}var webpackInstance=async()=>webpackReal,webpackVersion=async()=>"5";export{webpack,webpackInstance,webpackVersion};
@@ -1,6 +0,0 @@
1
- import{__require}from"../chunk-GYZG6JM4.mjs";import{dirname,isAbsolute,join,resolve}from"path";import{DefinePlugin,HotModuleReplacementPlugin,ProgressPlugin,ProvidePlugin}from"webpack";import HtmlWebpackPlugin from"html-webpack-plugin";import CaseSensitivePathsPlugin from"case-sensitive-paths-webpack-plugin";import TerserWebpackPlugin from"terser-webpack-plugin";import VirtualModulePlugin from"webpack-virtual-modules";import ForkTsCheckerWebpackPlugin from"fork-ts-checker-webpack-plugin";function slash(path){return/^\\\\\?\\/.test(path)?path:path.replace(/\\/g,"/")}import{globals}from"@storybook/preview/globals";import{getBuilderOptions,getRendererName,stringifyProcessEnvs,handlebars,interpolate,normalizeStories,readTemplate,loadPreviewOrConfigFile,isPreservingSymlinks}from"@storybook/core-common";import{toRequireContextString,toImportFn}from"@storybook/core-webpack";import{dedent}from"ts-dedent";import{getProjectRoot}from"@storybook/core-common";var createBabelLoader=(options,typescriptOptions)=>({test:typescriptOptions.skipBabel?/\.(mjs|jsx?)$/:/\.(mjs|tsx?|jsx?)$/,use:[{loader:__require.resolve("babel-loader"),options}],include:[getProjectRoot()],exclude:/node_modules/});var wrapForPnP=input=>dirname(__require.resolve(join(input,"package.json"))),storybookPaths={global:wrapForPnP("@storybook/global"),...["api","components","global","manager-api","router","theming"].reduce((acc,sbPackage)=>({...acc,[`@storybook/${sbPackage}`]:wrapForPnP(`@storybook/${sbPackage}`)}),{}),["@storybook/api"]:wrapForPnP("@storybook/manager-api")},iframe_webpack_config_default=async options=>{let{outputDir=join(".","public"),quiet,packageJson,configType,presets,previewUrl,babelOptions,typescriptOptions,features}=options,isProd=configType==="PRODUCTION",workingDir=process.cwd(),[coreOptions,frameworkOptions,envs,logLevel,headHtmlSnippet,bodyHtmlSnippet,template,docsOptions,entries2,nonNormalizedStories,modulesCount=1e3]=await Promise.all([presets.apply("core"),presets.apply("frameworkOptions"),presets.apply("env"),presets.apply("logLevel",void 0),presets.apply("previewHead"),presets.apply("previewBody"),presets.apply("previewMainTemplate"),presets.apply("docs"),presets.apply("entries",[]),presets.apply("stories",[]),options.cache?.get("modulesCount").catch(()=>{})]),stories=normalizeStories(nonNormalizedStories,{configDir:options.configDir,workingDir}),builderOptions=await getBuilderOptions(options),previewAnnotations=[...(await presets.apply("previewAnnotations",[],options)).map(entry=>typeof entry=="object"?entry.absolute:isAbsolute(entry)?entry:slash(entry)),loadPreviewOrConfigFile(options)].filter(Boolean),virtualModuleMapping={};if(features?.storyStoreV7){let storiesFilename="storybook-stories.js",storiesPath=resolve(join(workingDir,storiesFilename)),needPipelinedImport=!!builderOptions.lazyCompilation&&!isProd;virtualModuleMapping[storiesPath]=toImportFn(stories,{needPipelinedImport});let configEntryPath=resolve(join(workingDir,"storybook-config-entry.js"));virtualModuleMapping[configEntryPath]=handlebars(await readTemplate(__require.resolve("@storybook/builder-webpack5/templates/virtualModuleModernEntry.js.handlebars")),{storiesFilename,previewAnnotations}).replace(/\\/g,"\\\\"),entries2.push(configEntryPath)}else{let rendererName=await getRendererName(options),rendererInitEntry=resolve(join(workingDir,"storybook-init-renderer-entry.js"));virtualModuleMapping[rendererInitEntry]=`import '${rendererName}';`,entries2.push(rendererInitEntry);let entryTemplate=await readTemplate(join(__dirname,"..","..","templates","virtualModuleEntry.template.js"));if(previewAnnotations.forEach(previewAnnotationFilename=>{if(!previewAnnotationFilename)return;let entryFilename=previewAnnotationFilename.startsWith(".")?`${previewAnnotationFilename.replace(/(\w)(\/|\\)/g,"$1-")}-generated-config-entry.js`:`${previewAnnotationFilename}-generated-config-entry.js`;virtualModuleMapping[entryFilename]=interpolate(entryTemplate,{previewAnnotationFilename}),entries2.push(entryFilename)}),stories.length>0){let storyTemplate=await readTemplate(join(__dirname,"..","..","templates","virtualModuleStory.template.js")),storiesFilename=resolve(join(workingDir,"generated-stories-entry.cjs"));virtualModuleMapping[storiesFilename]=interpolate(storyTemplate,{rendererName}).replace("'{{stories}}'",stories.map(toRequireContextString).join(",")),entries2.push(storiesFilename)}}let shouldCheckTs=typescriptOptions.check&&!typescriptOptions.skipBabel,tsCheckOptions=typescriptOptions.checkOptions||{},cacheConfig=builderOptions.fsCache?{cache:{type:"filesystem"}}:{},lazyCompilationConfig=builderOptions.lazyCompilation&&!isProd?{lazyCompilation:{entries:!1}}:{};if(!template)throw new Error(dedent`
2
- Storybook's Webpack5 builder requires a template to be specified.
3
- Somehow you've ended up with a falsy value for the template option.
4
-
5
- Please file an issue at https://github.com/storybookjs/storybook with a reproduction.
6
- `);return{name:"preview",mode:isProd?"production":"development",bail:isProd,devtool:"cheap-module-source-map",entry:entries2,output:{path:resolve(process.cwd(),outputDir),filename:isProd?"[name].[contenthash:8].iframe.bundle.js":"[name].iframe.bundle.js",publicPath:""},stats:{preset:"none",logging:"error"},watchOptions:{ignored:/node_modules/},externals:globals,ignoreWarnings:[{message:/export '\S+' was not found in 'global'/},{message:/export '\S+' was not found in '@storybook\/global'/}],plugins:[Object.keys(virtualModuleMapping).length>0?new VirtualModulePlugin(virtualModuleMapping):null,new HtmlWebpackPlugin({filename:"iframe.html",chunksSortMode:"none",alwaysWriteToDisk:!0,inject:!1,template,templateParameters:{version:packageJson.version,globals:{CONFIG_TYPE:configType,LOGLEVEL:logLevel,FRAMEWORK_OPTIONS:frameworkOptions,CHANNEL_OPTIONS:coreOptions.channelOptions,FEATURES:features,PREVIEW_URL:previewUrl,STORIES:stories.map(specifier=>({...specifier,importPathMatcher:specifier.importPathMatcher.source})),DOCS_OPTIONS:docsOptions},headHtmlSnippet,bodyHtmlSnippet},minify:{collapseWhitespace:!0,removeComments:!0,removeRedundantAttributes:!0,removeScriptTypeAttributes:!1,removeStyleLinkTypeAttributes:!0,useShortDoctype:!0}}),new DefinePlugin({...stringifyProcessEnvs(envs),NODE_ENV:JSON.stringify(process.env.NODE_ENV)}),new ProvidePlugin({process:__require.resolve("process/browser.js")}),isProd?null:new HotModuleReplacementPlugin,new CaseSensitivePathsPlugin,quiet?null:new ProgressPlugin({modulesCount}),shouldCheckTs?new ForkTsCheckerWebpackPlugin(tsCheckOptions):null].filter(Boolean),module:{rules:[{test:/\.m?js$/,type:"javascript/auto"},{test:/\.m?js$/,resolve:{fullySpecified:!1}},createBabelLoader(babelOptions,typescriptOptions),{test:/\.md$/,type:"asset/source"}]},resolve:{extensions:[".mjs",".js",".jsx",".ts",".tsx",".json",".cjs"],modules:["node_modules"].concat(envs.NODE_PATH||[]),mainFields:["browser","module","main"].filter(Boolean),alias:storybookPaths,fallback:{path:__require.resolve("path-browserify"),assert:__require.resolve("browser-assert"),util:__require.resolve("util")},symlinks:!isPreservingSymlinks()},optimization:{splitChunks:{chunks:"all"},runtimeChunk:!0,sideEffects:!0,usedExports:isProd,moduleIds:"named",minimizer:isProd?[new TerserWebpackPlugin({parallel:!0,terserOptions:{sourceMap:!0,mangle:!1,keep_fnames:!0}})]:[]},performance:{hints:isProd?"warning":!1},...cacheConfig,experiments:{...lazyCompilationConfig}}};var webpack=async(_,options)=>iframe_webpack_config_default(options),entries=async(_,options)=>{let result=[];return options.configType==="DEVELOPMENT"&&(result=result.concat(`${__require.resolve("webpack-hot-middleware/client")}?reload=true&quiet=false&noInfo=${options.quiet}`)),result},babel=async(config,options)=>({...config,overrides:[...config?.overrides||[],{test:/\.(story|stories).*$/,plugins:[__require.resolve("babel-plugin-named-exports-order")]}]}),previewMainTemplate=()=>__require.resolve("@storybook/builder-webpack5/templates/preview.ejs");export{babel,entries,previewMainTemplate,webpack};