@storybook/core-common 7.0.0-alpha.4 → 7.0.0-alpha.7

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.
Files changed (103) hide show
  1. package/dist/index.d.ts +556 -0
  2. package/dist/index.js +23 -0
  3. package/dist/index.mjs +23 -0
  4. package/package.json +24 -7
  5. package/templates/base-preview-head.html +2 -2
  6. package/dist/cjs/index.js +0 -380
  7. package/dist/cjs/presets.js +0 -332
  8. package/dist/cjs/test-typings.d.js +0 -1
  9. package/dist/cjs/types.js +0 -5
  10. package/dist/cjs/utils/cache.js +0 -17
  11. package/dist/cjs/utils/check-addon-order.js +0 -54
  12. package/dist/cjs/utils/envs.js +0 -85
  13. package/dist/cjs/utils/file-cache.js +0 -71
  14. package/dist/cjs/utils/findDistEsm.js +0 -28
  15. package/dist/cjs/utils/get-storybook-configuration.js +0 -31
  16. package/dist/cjs/utils/get-storybook-info.js +0 -131
  17. package/dist/cjs/utils/glob-to-regexp.js +0 -32
  18. package/dist/cjs/utils/handlebars.js +0 -16
  19. package/dist/cjs/utils/interpolate.js +0 -23
  20. package/dist/cjs/utils/interpret-files.js +0 -48
  21. package/dist/cjs/utils/interpret-require.js +0 -113
  22. package/dist/cjs/utils/load-custom-presets.js +0 -32
  23. package/dist/cjs/utils/load-main-config.js +0 -21
  24. package/dist/cjs/utils/load-manager-or-addons-file.js +0 -34
  25. package/dist/cjs/utils/load-preview-or-config-file.js +0 -28
  26. package/dist/cjs/utils/log-config.js +0 -18
  27. package/dist/cjs/utils/normalize-stories.js +0 -143
  28. package/dist/cjs/utils/notify-telemetry.js +0 -38
  29. package/dist/cjs/utils/paths.js +0 -65
  30. package/dist/cjs/utils/print-duration.js +0 -16
  31. package/dist/cjs/utils/progress-reporting.js +0 -86
  32. package/dist/cjs/utils/readTemplate.js +0 -18
  33. package/dist/cjs/utils/resolve-path-in-sb-cache.js +0 -36
  34. package/dist/cjs/utils/safeResolve.js +0 -30
  35. package/dist/cjs/utils/template.js +0 -74
  36. package/dist/cjs/utils/to-importFn.js +0 -67
  37. package/dist/cjs/utils/to-require-context.js +0 -35
  38. package/dist/cjs/utils/validate-configuration-files.js +0 -83
  39. package/dist/esm/index.js +0 -28
  40. package/dist/esm/presets.js +0 -309
  41. package/dist/esm/test-typings.d.js +0 -0
  42. package/dist/esm/types.js +0 -1
  43. package/dist/esm/utils/cache.js +0 -7
  44. package/dist/esm/utils/check-addon-order.js +0 -45
  45. package/dist/esm/utils/envs.js +0 -70
  46. package/dist/esm/utils/file-cache.js +0 -57
  47. package/dist/esm/utils/findDistEsm.js +0 -14
  48. package/dist/esm/utils/get-storybook-configuration.js +0 -24
  49. package/dist/esm/utils/get-storybook-info.js +0 -116
  50. package/dist/esm/utils/glob-to-regexp.js +0 -24
  51. package/dist/esm/utils/handlebars.js +0 -5
  52. package/dist/esm/utils/interpolate.js +0 -14
  53. package/dist/esm/utils/interpret-files.js +0 -31
  54. package/dist/esm/utils/interpret-require.js +0 -95
  55. package/dist/esm/utils/load-custom-presets.js +0 -20
  56. package/dist/esm/utils/load-main-config.js +0 -9
  57. package/dist/esm/utils/load-manager-or-addons-file.js +0 -21
  58. package/dist/esm/utils/load-preview-or-config-file.js +0 -16
  59. package/dist/esm/utils/log-config.js +0 -8
  60. package/dist/esm/utils/normalize-stories.js +0 -116
  61. package/dist/esm/utils/notify-telemetry.js +0 -22
  62. package/dist/esm/utils/paths.js +0 -48
  63. package/dist/esm/utils/print-duration.js +0 -4
  64. package/dist/esm/utils/progress-reporting.js +0 -75
  65. package/dist/esm/utils/readTemplate.js +0 -7
  66. package/dist/esm/utils/resolve-path-in-sb-cache.js +0 -24
  67. package/dist/esm/utils/safeResolve.js +0 -15
  68. package/dist/esm/utils/template.js +0 -49
  69. package/dist/esm/utils/to-importFn.js +0 -52
  70. package/dist/esm/utils/to-require-context.js +0 -22
  71. package/dist/esm/utils/validate-configuration-files.js +0 -67
  72. package/dist/types/index.d.ts +0 -27
  73. package/dist/types/presets.d.ts +0 -41
  74. package/dist/types/types.d.ts +0 -371
  75. package/dist/types/utils/cache.d.ts +0 -1
  76. package/dist/types/utils/check-addon-order.d.ts +0 -16
  77. package/dist/types/utils/envs.d.ts +0 -8
  78. package/dist/types/utils/file-cache.d.ts +0 -30
  79. package/dist/types/utils/findDistEsm.d.ts +0 -1
  80. package/dist/types/utils/get-storybook-configuration.d.ts +0 -1
  81. package/dist/types/utils/get-storybook-info.d.ts +0 -12
  82. package/dist/types/utils/glob-to-regexp.d.ts +0 -1
  83. package/dist/types/utils/handlebars.d.ts +0 -1
  84. package/dist/types/utils/interpolate.d.ts +0 -9
  85. package/dist/types/utils/interpret-files.d.ts +0 -6
  86. package/dist/types/utils/interpret-require.d.ts +0 -2
  87. package/dist/types/utils/load-custom-presets.d.ts +0 -4
  88. package/dist/types/utils/load-main-config.d.ts +0 -4
  89. package/dist/types/utils/load-manager-or-addons-file.d.ts +0 -3
  90. package/dist/types/utils/load-preview-or-config-file.d.ts +0 -3
  91. package/dist/types/utils/log-config.d.ts +0 -1
  92. package/dist/types/utils/normalize-stories.d.ts +0 -11
  93. package/dist/types/utils/notify-telemetry.d.ts +0 -1
  94. package/dist/types/utils/paths.d.ts +0 -6
  95. package/dist/types/utils/print-duration.d.ts +0 -1
  96. package/dist/types/utils/progress-reporting.d.ts +0 -5
  97. package/dist/types/utils/readTemplate.d.ts +0 -1
  98. package/dist/types/utils/resolve-path-in-sb-cache.d.ts +0 -9
  99. package/dist/types/utils/safeResolve.d.ts +0 -2
  100. package/dist/types/utils/template.d.ts +0 -5
  101. package/dist/types/utils/to-importFn.d.ts +0 -4
  102. package/dist/types/utils/to-require-context.d.ts +0 -7
  103. package/dist/types/utils/validate-configuration-files.d.ts +0 -1
@@ -0,0 +1,556 @@
1
+ import { Options as Options$3 } from 'telejson';
2
+ import { TransformOptions } from '@babel/core';
3
+ import { Router } from 'express';
4
+ import { Server } from 'http';
5
+ import { Parameters } from '@storybook/csf';
6
+
7
+ interface Options$2 {
8
+ basePath?: string;
9
+ ns?: string | string[];
10
+ extension?: string;
11
+ }
12
+ declare class FileSystemCache {
13
+ constructor(options: Options$2);
14
+ private internal;
15
+ path(key: string): string;
16
+ fileExists(key: string): Promise<boolean>;
17
+ ensureBasePath(): Promise<void>;
18
+ get(key: string, defaultValue?: any): Promise<any | typeof defaultValue>;
19
+ getSync(key: string, defaultValue?: any): any | typeof defaultValue;
20
+ set(key: string, value: any): Promise<{
21
+ path: string;
22
+ }>;
23
+ setSync(key: string, value: any): this;
24
+ remove(key: string): Promise<void>;
25
+ clear(): Promise<void>;
26
+ save(): Promise<{
27
+ paths: string[];
28
+ }>;
29
+ load(): Promise<{
30
+ files: Array<{
31
+ path: string;
32
+ value: any;
33
+ }>;
34
+ }>;
35
+ }
36
+ declare function createFileSystemCache(options: Options$2): FileSystemCache;
37
+
38
+ /**
39
+ * ⚠️ This file contains internal WIP types they MUST NOT be exported outside this package for now!
40
+ */
41
+ declare type BuilderName = 'webpack5' | '@storybook/builder-webpack5' | string;
42
+ interface CoreConfig {
43
+ builder?: BuilderName | {
44
+ name: BuilderName;
45
+ options?: Record<string, any>;
46
+ };
47
+ disableWebpackDefaults?: boolean;
48
+ channelOptions?: Partial<Options$3>;
49
+ /**
50
+ * Disables the generation of project.json, a file containing Storybook metadata
51
+ */
52
+ disableProjectJson?: boolean;
53
+ /**
54
+ * Disables Storybook telemetry
55
+ * @see https://storybook.js.org/telemetry
56
+ */
57
+ disableTelemetry?: boolean;
58
+ /**
59
+ * Enable crash reports to be sent to Storybook telemetry
60
+ * @see https://storybook.js.org/telemetry
61
+ */
62
+ enableCrashReports?: boolean;
63
+ /**
64
+ * enable CORS headings to run document in a "secure context"
65
+ * see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements
66
+ * This enables these headers in development-mode:
67
+ * Cross-Origin-Opener-Policy: same-origin
68
+ * Cross-Origin-Embedder-Policy: require-corp
69
+ */
70
+ crossOriginIsolated?: boolean;
71
+ }
72
+ interface DirectoryMapping {
73
+ from: string;
74
+ to: string;
75
+ }
76
+ interface Presets {
77
+ apply(extension: 'typescript', config: TypescriptOptions, args?: Options$1): Promise<TypescriptOptions>;
78
+ apply(extension: 'framework', config: {}, args: any): Promise<Preset>;
79
+ apply(extension: 'babel', config: {}, args: any): Promise<TransformOptions>;
80
+ apply(extension: 'entries', config: [], args: any): Promise<unknown>;
81
+ apply(extension: 'stories', config: [], args: any): Promise<StoriesEntry[]>;
82
+ apply(extension: 'managerEntries', config: [], args: any): Promise<string[]>;
83
+ apply(extension: 'refs', config: [], args: any): Promise<unknown>;
84
+ apply(extension: 'core', config: {}, args: any): Promise<CoreConfig>;
85
+ apply<T>(extension: string, config?: T, args?: unknown): Promise<T>;
86
+ }
87
+ interface LoadedPreset {
88
+ name: string;
89
+ preset: any;
90
+ options: any;
91
+ }
92
+ declare type PresetConfig = string | {
93
+ name: string;
94
+ options?: unknown;
95
+ };
96
+ interface Ref {
97
+ id: string;
98
+ url: string;
99
+ title: string;
100
+ version: string;
101
+ type?: string;
102
+ }
103
+ interface VersionCheck {
104
+ success: boolean;
105
+ data?: any;
106
+ error?: any;
107
+ time: number;
108
+ }
109
+ interface ReleaseNotesData {
110
+ success: boolean;
111
+ currentVersion: string;
112
+ showOnFirstLaunch: boolean;
113
+ }
114
+ interface Stats {
115
+ toJson: () => any;
116
+ }
117
+ interface BuilderResult {
118
+ totalTime?: ReturnType<typeof process.hrtime>;
119
+ stats?: Stats;
120
+ }
121
+ interface PackageJson {
122
+ name: string;
123
+ version: string;
124
+ dependencies?: Record<string, string>;
125
+ devDependencies?: Record<string, string>;
126
+ peerDependencies?: Record<string, string>;
127
+ scripts?: Record<string, string>;
128
+ eslintConfig?: Record<string, any>;
129
+ type?: 'module';
130
+ [key: string]: any;
131
+ }
132
+ interface LoadOptions {
133
+ packageJson: PackageJson;
134
+ outputDir?: string;
135
+ configDir?: string;
136
+ ignorePreview?: boolean;
137
+ extendServer?: (server: Server) => void;
138
+ }
139
+ interface ManagerWebpackOptions {
140
+ entries: string[];
141
+ refs: Record<string, Ref>;
142
+ }
143
+ interface CLIOptions {
144
+ port?: number;
145
+ ignorePreview?: boolean;
146
+ previewUrl?: string;
147
+ forceBuildPreview?: boolean;
148
+ disableTelemetry?: boolean;
149
+ enableCrashReports?: boolean;
150
+ host?: string;
151
+ /**
152
+ * @deprecated Use 'staticDirs' Storybook Configuration option instead
153
+ */
154
+ staticDir?: string[];
155
+ configDir?: string;
156
+ https?: boolean;
157
+ sslCa?: string[];
158
+ sslCert?: string;
159
+ sslKey?: string;
160
+ smokeTest?: boolean;
161
+ managerCache?: boolean;
162
+ open?: boolean;
163
+ ci?: boolean;
164
+ loglevel?: string;
165
+ quiet?: boolean;
166
+ versionUpdates?: boolean;
167
+ releaseNotes?: boolean;
168
+ dll?: boolean;
169
+ docs?: boolean;
170
+ docsDll?: boolean;
171
+ uiDll?: boolean;
172
+ debugWebpack?: boolean;
173
+ webpackStatsJson?: string | boolean;
174
+ outputDir?: string;
175
+ }
176
+ interface BuilderOptions {
177
+ configType?: 'DEVELOPMENT' | 'PRODUCTION';
178
+ ignorePreview: boolean;
179
+ cache: FileSystemCache;
180
+ configDir: string;
181
+ docsMode: boolean;
182
+ features?: StorybookConfig['features'];
183
+ versionCheck?: VersionCheck;
184
+ releaseNotesData?: ReleaseNotesData;
185
+ disableWebpackDefaults?: boolean;
186
+ serverChannelUrl?: string;
187
+ }
188
+ interface StorybookConfigOptions {
189
+ presets: Presets;
190
+ presetsList?: LoadedPreset[];
191
+ }
192
+ declare type Options$1 = LoadOptions & StorybookConfigOptions & CLIOptions & BuilderOptions;
193
+ interface Builder<Config, Stats> {
194
+ getConfig: (options: Options$1) => Promise<Config>;
195
+ start: (args: {
196
+ options: Options$1;
197
+ startTime: ReturnType<typeof process.hrtime>;
198
+ router: Router;
199
+ server: Server;
200
+ }) => Promise<void | {
201
+ stats: Stats;
202
+ totalTime: ReturnType<typeof process.hrtime>;
203
+ bail: (e?: Error) => Promise<void>;
204
+ }>;
205
+ build: (arg: {
206
+ options: Options$1;
207
+ startTime: ReturnType<typeof process.hrtime>;
208
+ }) => Promise<void | Stats>;
209
+ bail: (e?: Error) => Promise<void>;
210
+ corePresets?: string[];
211
+ overridePresets?: string[];
212
+ }
213
+ interface IndexerOptions {
214
+ makeTitle: (userTitle?: string) => string;
215
+ }
216
+ interface IndexedStory {
217
+ id: string;
218
+ name: string;
219
+ parameters?: Parameters;
220
+ }
221
+ interface StoryIndex {
222
+ meta: {
223
+ title?: string;
224
+ };
225
+ stories: IndexedStory[];
226
+ }
227
+ interface StoryIndexer {
228
+ test: RegExp;
229
+ indexer: (fileName: string, options: IndexerOptions) => Promise<StoryIndex>;
230
+ }
231
+ /**
232
+ * Options for TypeScript usage within Storybook.
233
+ */
234
+ interface TypescriptOptions {
235
+ /**
236
+ * Enables type checking within Storybook.
237
+ *
238
+ * @default `false`
239
+ */
240
+ check: boolean;
241
+ /**
242
+ * Disable parsing typescript files through babel.
243
+ *
244
+ * @default `false`
245
+ */
246
+ skipBabel: boolean;
247
+ }
248
+ interface StoriesSpecifier {
249
+ /**
250
+ * When auto-titling, what to prefix all generated titles with (default: '')
251
+ */
252
+ titlePrefix?: string;
253
+ /**
254
+ * Where to start looking for story files
255
+ */
256
+ directory: string;
257
+ /**
258
+ * What does the filename of a story file look like?
259
+ * (a glob, relative to directory, no leading `./`)
260
+ * If unset, we use `** / *.stories.@(mdx|tsx|ts|jsx|js)` (no spaces)
261
+ */
262
+ files?: string;
263
+ }
264
+ declare type StoriesEntry = string | StoriesSpecifier;
265
+ declare type NormalizedStoriesSpecifier = Required<StoriesSpecifier> & {
266
+ importPathMatcher: RegExp;
267
+ };
268
+ declare type Preset = string | {
269
+ name: string;
270
+ options?: any;
271
+ };
272
+ /**
273
+ * An additional script that gets injected into the
274
+ * preview or the manager,
275
+ */
276
+ declare type Entry = string;
277
+ declare type StorybookRefs = Record<string, {
278
+ title: string;
279
+ url: string;
280
+ } | {
281
+ disable: boolean;
282
+ }>;
283
+ /**
284
+ * The interface for Storybook configuration in `main.ts` files.
285
+ */
286
+ interface StorybookConfig {
287
+ /**
288
+ * Sets the addons you want to use with Storybook.
289
+ *
290
+ * @example `['@storybook/addon-essentials']` or `[{ name: '@storybook/addon-essentials', options: { backgrounds: false } }]`
291
+ */
292
+ addons?: Preset[];
293
+ core?: CoreConfig;
294
+ /**
295
+ * Sets a list of directories of static files to be loaded by Storybook server
296
+ *
297
+ * @example `['./public']` or `[{from: './public', 'to': '/assets'}]`
298
+ */
299
+ staticDirs?: (DirectoryMapping | string)[];
300
+ logLevel?: string;
301
+ features?: {
302
+ /**
303
+ * Allows to disable deprecated implicit PostCSS loader. (will be removed in 7.0)
304
+ */
305
+ postcss?: boolean;
306
+ /**
307
+ * Build stories.json automatically on start/build
308
+ */
309
+ buildStoriesJson?: boolean;
310
+ /**
311
+ * Activate preview of CSF v3.0
312
+ *
313
+ * @deprecated This is always on now from 6.4 regardless of the setting
314
+ */
315
+ previewCsfV3?: boolean;
316
+ /**
317
+ * Activate on demand story store
318
+ */
319
+ storyStoreV7?: boolean;
320
+ /**
321
+ * Enable a set of planned breaking changes for SB7.0
322
+ */
323
+ breakingChangesV7?: boolean;
324
+ /**
325
+ * Enable the step debugger functionality in Addon-interactions.
326
+ */
327
+ interactionsDebugger?: boolean;
328
+ /**
329
+ * Use Storybook 7.0 babel config scheme
330
+ */
331
+ babelModeV7?: boolean;
332
+ /**
333
+ * Filter args with a "target" on the type from the render function (EXPERIMENTAL)
334
+ */
335
+ argTypeTargetsV7?: boolean;
336
+ /**
337
+ * Warn when there is a pre-6.0 hierarchy separator ('.' / '|') in the story title.
338
+ * Will be removed in 7.0.
339
+ */
340
+ warnOnLegacyHierarchySeparator?: boolean;
341
+ /**
342
+ * Preview MDX2 support, will become default in 7.0
343
+ */
344
+ previewMdx2?: boolean;
345
+ };
346
+ /**
347
+ * Tells Storybook where to find stories.
348
+ *
349
+ * @example `['./src/*.stories.@(j|t)sx?']`
350
+ */
351
+ stories: StoriesEntry[];
352
+ /**
353
+ * Framework, e.g. '@storybook/react', required in v7
354
+ */
355
+ framework?: Preset;
356
+ /**
357
+ * Controls how Storybook handles TypeScript files.
358
+ */
359
+ typescript?: Partial<TypescriptOptions>;
360
+ /**
361
+ * References external Storybooks
362
+ */
363
+ refs?: StorybookRefs | ((config: any, options: Options$1) => StorybookRefs);
364
+ /**
365
+ * Modify or return babel config.
366
+ */
367
+ babel?: (config: TransformOptions, options: Options$1) => TransformOptions | Promise<TransformOptions>;
368
+ /**
369
+ * Modify or return babel config.
370
+ */
371
+ babelDefault?: (config: TransformOptions, options: Options$1) => TransformOptions | Promise<TransformOptions>;
372
+ /**
373
+ * Add additional scripts to run in the preview a la `.storybook/preview.js`
374
+ *
375
+ * @deprecated use `previewAnnotations` or `/preview.js` file instead
376
+ */
377
+ config?: (entries: Entry[], options: Options$1) => Entry[];
378
+ /**
379
+ * Add additional scripts to run in the preview a la `.storybook/preview.js`
380
+ */
381
+ previewAnnotations?: (entries: Entry[], options: Options$1) => Entry[];
382
+ /**
383
+ * Process CSF files for the story index.
384
+ */
385
+ storyIndexers?: (indexers: StoryIndexer[], options: Options$1) => StoryIndexer[];
386
+ }
387
+ declare type PresetProperty<K, TStorybookConfig = StorybookConfig> = TStorybookConfig[K extends keyof TStorybookConfig ? K : never] | PresetPropertyFn<K, TStorybookConfig>;
388
+ declare type PresetPropertyFn<K, TStorybookConfig = StorybookConfig, TOptions = {}> = (config: TStorybookConfig[K extends keyof TStorybookConfig ? K : never], options: Options$1 & TOptions) => TStorybookConfig[K extends keyof TStorybookConfig ? K : never] | Promise<TStorybookConfig[K extends keyof TStorybookConfig ? K : never]>;
389
+
390
+ declare function filterPresetsConfig(presetsConfig: PresetConfig[]): PresetConfig[];
391
+ /**
392
+ * Parse an addon into either a managerEntries or a preset. Throw on invalid input.
393
+ *
394
+ * Valid inputs:
395
+ * - '@storybook/addon-actions/manager'
396
+ * => { type: 'virtual', item }
397
+ *
398
+ * - '@storybook/addon-docs/preset'
399
+ * => { type: 'presets', item }
400
+ *
401
+ * - '@storybook/addon-docs'
402
+ * => { type: 'presets', item: '@storybook/addon-docs/preset' }
403
+ *
404
+ * - { name: '@storybook/addon-docs(/preset)?', options: { ... } }
405
+ * => { type: 'presets', item: { name: '@storybook/addon-docs/preset', options } }
406
+ */
407
+ interface ResolvedAddonPreset {
408
+ type: 'presets';
409
+ name: string;
410
+ }
411
+ interface ResolvedAddonVirtual {
412
+ type: 'virtual';
413
+ name: string;
414
+ managerEntries?: string[];
415
+ previewAnnotations?: string[];
416
+ presets?: (string | {
417
+ name: string;
418
+ options?: any;
419
+ })[];
420
+ }
421
+ declare const resolveAddonName: (configDir: string, name: string, options: any) => ResolvedAddonPreset | ResolvedAddonVirtual | undefined;
422
+ declare function loadPreset(input: PresetConfig, level: number, storybookOptions: InterPresetOptions): LoadedPreset[];
423
+ declare type InterPresetOptions = Omit<CLIOptions & LoadOptions & BuilderOptions, 'frameworkPresets'>;
424
+ declare function getPresets(presets: PresetConfig[], storybookOptions: InterPresetOptions): Presets;
425
+ declare function loadAllPresets(options: CLIOptions & LoadOptions & BuilderOptions & {
426
+ corePresets: string[];
427
+ overridePresets: string[];
428
+ }): Presets;
429
+
430
+ declare type OptionsEntry = {
431
+ name: string;
432
+ };
433
+ declare type AddonEntry = string | OptionsEntry;
434
+ declare type AddonInfo = {
435
+ name: string;
436
+ inEssentials: boolean;
437
+ };
438
+ interface Options {
439
+ before: AddonInfo;
440
+ after: AddonInfo;
441
+ configFile: string;
442
+ getConfig: (path: string) => any;
443
+ }
444
+ declare const checkAddonOrder: ({ before, after, configFile, getConfig }: Options) => Promise<void>;
445
+
446
+ declare function loadEnvs(options?: {
447
+ production?: boolean;
448
+ }): {
449
+ stringified: Record<string, string>;
450
+ raw: Record<string, string>;
451
+ };
452
+ declare const stringifyEnvs: (raw: Record<string, string>) => Record<string, string>;
453
+ declare const stringifyProcessEnvs: (raw: Record<string, string>) => Record<string, string>;
454
+
455
+ declare function handlebars(source: string, data: any): string;
456
+
457
+ declare const boost: Set<string>;
458
+ declare function getInterpretedFile(pathToFile: string): string | undefined;
459
+ declare function getInterpretedFileWithExt(pathToFile: string): {
460
+ path: string;
461
+ ext: string;
462
+ } | undefined;
463
+
464
+ declare function serverRequire(filePath: string | string[]): any;
465
+ declare function serverResolve(filePath: string | string[]): string | null;
466
+
467
+ declare function loadCustomPresets({ configDir }: {
468
+ configDir: string;
469
+ }): PresetConfig[];
470
+
471
+ declare function loadMainConfig({ configDir }: {
472
+ configDir: string;
473
+ }): StorybookConfig;
474
+
475
+ declare function getStorybookConfiguration(storybookScript: string, shortName: string, longName: string): string | null;
476
+
477
+ interface StorybookInfo {
478
+ framework: string;
479
+ version: string;
480
+ frameworkPackage: string;
481
+ configDir?: string;
482
+ mainConfig?: string;
483
+ previewConfig?: string;
484
+ managerConfig?: string;
485
+ }
486
+ declare const getStorybookInfo: (packageJson: PackageJson) => StorybookInfo;
487
+
488
+ declare function loadManagerOrAddonsFile({ configDir }: {
489
+ configDir: string;
490
+ }): string | undefined;
491
+
492
+ declare function loadPreviewOrConfigFile({ configDir }: {
493
+ configDir: string;
494
+ }): string | undefined;
495
+
496
+ declare function logConfig(caption: unknown, config: unknown): void;
497
+
498
+ declare const getProjectRoot: () => string;
499
+ declare const nodePathsToArray: (nodePath: string) => string[];
500
+ /**
501
+ * Ensures that a path starts with `./` or `../`, or is entirely `.` or `..`
502
+ */
503
+ declare function normalizeStoryPath(filename: string): string;
504
+
505
+ declare const useProgressReporting: (router: Router, startTime: [number, number], options: any) => Promise<{
506
+ handler: any;
507
+ modulesCount: number;
508
+ }>;
509
+
510
+ /**
511
+ * Get the path of the file or directory with input name inside the Storybook cache directory:
512
+ * - `node_modules/.cache/storybook/{directoryName}` in a Node.js project or npm package
513
+ * - `.cache/storybook/{directoryName}` otherwise
514
+ *
515
+ * @param fileOrDirectoryName {string} Name of the file or directory
516
+ * @return {string} Absolute path to the file or directory
517
+ */
518
+ declare function resolvePathInStorybookCache(fileOrDirectoryName: string): string;
519
+
520
+ declare const cache: FileSystemCache;
521
+
522
+ declare function getPreviewBodyTemplate(configDirPath: string, interpolations?: Record<string, string>): string;
523
+ declare function getPreviewHeadTemplate(configDirPath: string, interpolations?: Record<string, string>): string;
524
+ declare function getManagerHeadTemplate(configDirPath: string, interpolations: Record<string, string>): string;
525
+ declare function getManagerMainTemplate(): string;
526
+ declare function getPreviewMainTemplate(): string;
527
+
528
+ /**
529
+ * Return a string corresponding to template filled with bindings using following pattern:
530
+ * For each (key, value) of `bindings` replace, in template, `{{key}}` by escaped version of `value`
531
+ *
532
+ * @param template {String} Template with `{{binding}}`
533
+ * @param bindings {Object} key-value object use to fill the template, `{{key}}` will be replaced by `escaped(value)`
534
+ * @returns {String} Filled template
535
+ */
536
+ declare const interpolate: (template: string, bindings: Record<string, string>) => string;
537
+
538
+ declare function validateConfigurationFiles(configDir: string): void;
539
+
540
+ declare function globToRegexp(glob: string): RegExp;
541
+
542
+ declare const getDirectoryFromWorkingDir: ({ configDir, workingDir, directory, }: NormalizeOptions & {
543
+ directory: string;
544
+ }) => string;
545
+ declare const normalizeStoriesEntry: (entry: StoriesEntry, { configDir, workingDir }: NormalizeOptions) => NormalizedStoriesSpecifier;
546
+ interface NormalizeOptions {
547
+ configDir: string;
548
+ workingDir: string;
549
+ }
550
+ declare const normalizeStories: (entries: StoriesEntry[], options: NormalizeOptions) => NormalizedStoriesSpecifier[];
551
+
552
+ declare function readTemplate(filename: string): Promise<string>;
553
+
554
+ declare const findDistEsm: (cwd: string, relativePath: string) => string;
555
+
556
+ export { AddonEntry, AddonInfo, Builder, BuilderName, BuilderOptions, BuilderResult, CLIOptions, CoreConfig, Entry, IndexedStory, IndexerOptions, LoadOptions, LoadedPreset, ManagerWebpackOptions, NormalizedStoriesSpecifier, Options$1 as Options, OptionsEntry, PackageJson, Preset, PresetConfig, PresetProperty, PresetPropertyFn, Presets, Ref, ReleaseNotesData, Stats, StoriesEntry, StoryIndex, StoryIndexer, StorybookConfig, StorybookConfigOptions, TypescriptOptions, VersionCheck, boost, cache, checkAddonOrder, createFileSystemCache, filterPresetsConfig, findDistEsm, getDirectoryFromWorkingDir, getInterpretedFile, getInterpretedFileWithExt, getManagerHeadTemplate, getManagerMainTemplate, getPresets, getPreviewBodyTemplate, getPreviewHeadTemplate, getPreviewMainTemplate, getProjectRoot, getStorybookConfiguration, getStorybookInfo, globToRegexp, handlebars, interpolate, loadAllPresets, loadCustomPresets, loadEnvs, loadMainConfig, loadManagerOrAddonsFile, loadPreset, loadPreviewOrConfigFile, logConfig, nodePathsToArray, normalizeStories, normalizeStoriesEntry, normalizeStoryPath, readTemplate, resolveAddonName, resolvePathInStorybookCache, serverRequire, serverResolve, stringifyEnvs, stringifyProcessEnvs, useProgressReporting, validateConfigurationFiles };
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ var rt=Object.create;var b=Object.defineProperty,ot=Object.defineProperties,nt=Object.getOwnPropertyDescriptor,st=Object.getOwnPropertyDescriptors,it=Object.getOwnPropertyNames,R=Object.getOwnPropertySymbols,at=Object.getPrototypeOf,J=Object.prototype.hasOwnProperty,me=Object.prototype.propertyIsEnumerable;var pe=(e,t,r)=>t in e?b(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,d=(e,t)=>{for(var r in t||(t={}))J.call(t,r)&&pe(e,r,t[r]);if(R)for(var r of R(t))me.call(t,r)&&pe(e,r,t[r]);return e},I=(e,t)=>ot(e,st(t)),n=(e,t)=>b(e,"name",{value:t,configurable:!0});var N=(e,t)=>{var r={};for(var o in e)J.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&R)for(var o of R(e))t.indexOf(o)<0&&me.call(e,o)&&(r[o]=e[o]);return r};var ct=(e,t)=>{for(var r in t)b(e,r,{get:t[r],enumerable:!0})},de=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of it(t))!J.call(e,s)&&s!==r&&b(e,s,{get:()=>t[s],enumerable:!(o=nt(t,s))||o.enumerable});return e};var c=(e,t,r)=>(r=e!=null?rt(at(e)):{},de(t||!e||!e.__esModule?b(r,"default",{value:e,enumerable:!0}):r,e)),ft=e=>de(b({},"__esModule",{value:!0}),e);var Vt={};ct(Vt,{boost:()=>k,cache:()=>Mt,checkAddonOrder:()=>bt,createFileSystemCache:()=>W,filterPresetsConfig:()=>je,findDistEsm:()=>Kt,getDirectoryFromWorkingDir:()=>Qe,getInterpretedFile:()=>v,getInterpretedFileWithExt:()=>K,getManagerHeadTemplate:()=>Bt,getManagerMainTemplate:()=>Dt,getPresets:()=>Ae,getPreviewBodyTemplate:()=>Ht,getPreviewHeadTemplate:()=>qt,getPreviewMainTemplate:()=>Lt,getProjectRoot:()=>wt,getStorybookConfiguration:()=>ne,getStorybookInfo:()=>Rt,globToRegexp:()=>ce,handlebars:()=>jt,interpolate:()=>Wt,loadAllPresets:()=>xt,loadCustomPresets:()=>Q,loadEnvs:()=>Et,loadMainConfig:()=>St,loadManagerOrAddonsFile:()=>It,loadPreset:()=>Ce,loadPreviewOrConfigFile:()=>Nt,logConfig:()=>Tt,nodePathsToArray:()=>re,normalizeStories:()=>Jt,normalizeStoriesEntry:()=>Ze,normalizeStoryPath:()=>oe,readTemplate:()=>zt,resolveAddonName:()=>Se,resolvePathInStorybookCache:()=>ie,serverRequire:()=>w,serverResolve:()=>_,stringifyEnvs:()=>Pt,stringifyProcessEnvs:()=>kt,useProgressReporting:()=>_t,validateConfigurationFiles:()=>S});module.exports=ft(Vt);var ke=c(require("ts-dedent")),C=require("@storybook/node-logger");var M=c(require("path"));var he=c(require("interpret")),ye=c(require("path")),V=require("@storybook/node-logger");var z=c(require("fs")),ue=require("interpret"),k=new Set([".js",".jsx",".ts",".tsx",".cjs",".mjs"]);function lt(){return[...Array.from(k),...Object.keys(ue.extensions).filter(e=>!k.has(e)).sort((e,t)=>e.length-t.length)]}n(lt,"sortExtensions");var ge=lt();function v(e){return ge.map(t=>e.endsWith(t)?e:`${e}${t}`).find(t=>z.default.existsSync(t))}n(v,"getInterpretedFile");function K(e){return ge.map(t=>({path:e.endsWith(t)?e:`${e}${t}`,ext:t})).find(t=>z.default.existsSync(t.path))}n(K,"getInterpretedFileWithExt");var T=new Map;function xe(e){if(!e)return 0;let t=T.get(e);if(t!==void 0)return t;if(typeof e=="string")return require(e),T.set(e,1),1;if(!Array.isArray(e))return e.register(require(e.module)),T.set(e,1),1;let r=0;for(let o=0;o<e.length;o+=1)try{r+=xe(e[o]);break}catch{}return T.set(e,r),r}n(xe,"registerCompiler");function pt(e){let t=require(e);return typeof t=="object"&&t!==null&&typeof t.default<"u"?t.default:t}n(pt,"interopRequireDefault");function mt(e){for(let t=0;t<e.length;t+=1){let r=K(e[t]);if(r)return r}}n(mt,"getCandidate");function w(e){let t=_(e);if(!t)return null;let r=ye.default.extname(t),o=he.default.extensions[r];return o&&xe(o)===0?(V.logger.warn(`=> File ${t} is detected`),V.logger.warn(` but impossible to import loader for ${r}`),null):pt(t)}n(w,"serverRequire");function _(e){let t=Array.isArray(e)?e:[e],r=mt(t);return r?r.path:null}n(_,"serverResolve");var j=c(require("ts-dedent")),ve=c(require("util-deprecate")),be=c(require("glob")),$=c(require("path"));var dt=(0,ve.default)(()=>{},j.default`
2
+ Configuration files such as "config", "presets" and "addons" are deprecated and will be removed in Storybook 7.0.
3
+ Read more about it in the migration guide: https://github.com/storybookjs/storybook/blob/master/MIGRATION.md#to-mainjs-configuration
4
+ `),X=n((e,t,r)=>{let o=$.default.resolve(r,e),s=$.default.resolve(r,t);throw new Error(j.default`
5
+ You have mixing configuration files:
6
+ ${o}
7
+ ${s}
8
+ "${e}" and "${t}" cannot coexist.
9
+ Please check the documentation for migration steps: https://github.com/storybookjs/storybook/blob/master/MIGRATION.md#to-mainjs-configuration
10
+ `)},"errorMixingConfigFiles");function S(e){let t=`{${Array.from(k).join(",")}}`,r=n(l=>!!be.default.sync($.default.resolve(e,`${l}${t}`)).length,"exists"),o=r("main"),s=r("config");if(!o&&!s)throw new Error(j.default`
11
+ No configuration files have been found in your configDir (${$.default.resolve(e)}).
12
+ Storybook needs either a "main" or "config" file.
13
+ `);if(o&&s)throw new Error(j.default`
14
+ You have both a "main" and a "config". Please remove the "config" file from your configDir (${$.default.resolve(e,"config")})`);let i=r("presets");o&&i&&X("main","presets",e),r("preview")&&s&&X("preview","config",e);let m=r("addons");r("manager")&&m&&X("manager","addons",e),(i||s||m)&&dt()}n(S,"validateConfigurationFiles");function Q({configDir:e}){S(e);let t=w(M.default.resolve(e,"presets"));if(w(M.default.resolve(e,"main"))){let o=_(M.default.resolve(e,"main"));if(o)return[o]}return t||[]}n(Q,"loadCustomPresets");var we=c(require("resolve-from")),$e=n((e,t)=>{try{return(0,we.default)(e,t)}catch{return}},"safeResolveFrom"),Ee=n(e=>{try{return require.resolve(e)}catch{return}},"safeResolve");var O=n(e=>e!=null&&typeof e=="object"&&Array.isArray(e)===!1,"isObject"),ut=n(e=>typeof e=="function","isFunction");function je(e){return e.filter(t=>{let r=typeof t=="string"?t:t.name;return!/@storybook[\\\\/]preset-typescript/.test(r)})}n(je,"filterPresetsConfig");function Pe(e,t,r){return ut(e)?[...e(d(d({},r),t))]:Array.isArray(e)?[...e]:[]}n(Pe,"resolvePresetFunction");var Se=n((e,t,r)=>{let o=t.startsWith("/")?Ee:$e.bind(null,e),s=o(t);if(s){if(t.match(/\/(manager|register(-panel)?)(\.(js|ts|tsx|jsx))?$/))return{type:"virtual",name:t,managerEntries:[s]};if(t.match(/\/(preset)(\.(js|ts|tsx|jsx))?$/))return{type:"presets",name:s}}let i=t,a=o(`${i}/manager`),m=o(`${i}/register`)||o(`${i}/register-panel`),u=o(`${i}/preview`),l=o(`${i}/preset`);if(!(a||u)&&l)return{type:"presets",name:l};if(a||m||u||l){let f=[];return a&&f.push(a),!a&&m&&!l&&f.push(m),d(d(d({type:"virtual",name:i},f.length?{managerEntries:f}:{}),u?{previewAnnotations:[u]}:{}),l?{presets:[{name:l,options:r}]}:{})}if(s)return{type:"presets",name:s}},"resolveAddonName"),gt=n(({configDir:e})=>t=>{let r=O(t)&&t.options||void 0,o=O(t)?t.name:t;try{let s=Se(e,o,r);return d(d({},r?{options:r}:{}),s)}catch{C.logger.error(`Addon value should end in /manager or /preview or /register OR it should be a valid preset https://storybook.js.org/docs/react/addons/writing-presets/
15
+ ${t}`)}},"map");function ht(e){let t=require(e);return typeof t=="object"&&t!==null&&typeof t.default<"u"?t.default:t}n(ht,"interopRequireDefault");function yt(e){if(e.type==="virtual"){let r=e,{type:o,name:s}=r;return N(r,["type","name"])}let t=e.name?e.name:e;return ht(t)}n(yt,"getContent");function Ce(e,t,r){try{let s=e.name?e.name:e,i=e.options?e.options:{},a=yt(e);if(typeof a=="function"&&(a=a(r,i)),Array.isArray(a))return H(a,t+1,r);if(O(a)){let o=a,{addons:m,presets:u}=o,l=N(o,["addons","presets"]),f=Pe(u,i,r),g=Pe(m,i,r);return[...H([...f],t+1,r),...H([...g.map(gt(r))].filter(Boolean),t+1,r),{name:s,preset:l,options:i}]}throw new Error(ke.default`
16
+ ${e} is not a valid preset
17
+ `)}catch(s){let i=t>0?` Failed to load preset: ${JSON.stringify(e)} on level ${t}`:` Failed to load preset: ${JSON.stringify(e)}`;return C.logger.warn(i),C.logger.error(s),[]}}n(Ce,"loadPreset");function H(e,t,r){return!e||!Array.isArray(e)||!e.length?[]:e.reduce((o,s)=>{let i=Ce(s,t,r);return o.concat(i)},[])}n(H,"loadPresets");function Oe(e,t,r,o,s){let i=new Promise(a=>a(r));return e.length?e.reduce((a,{preset:m,options:u})=>{let l=m[t];if(!l)return a;if(typeof l=="function"){let f=l,g={preset:m,combinedOptions:I(d(d(d({},s),o),u),{presetsList:e,presets:{apply:async(h,x,F={})=>Oe(e,h,x,F,s)}})};return a.then(h=>f.call(g.preset,h,g.combinedOptions))}return a.then(f=>Array.isArray(f)&&Array.isArray(l)?[...f,...l]:O(f)&&O(l)?d(d({},f),l):l)},i):i}n(Oe,"applyPresets");function Ae(e,t){let r=H(e,0,t);return{apply:async(o,s,i={})=>Oe(r,o,s,i,t)}}n(Ae,"getPresets");function xt(e){let a=e,{corePresets:t=[],overridePresets:r=[]}=a,o=N(a,["corePresets","overridePresets"]),s=[...t,...Q(e),...r],i=je(s);return i.length<s.length&&C.logger.warn("Storybook now supports TypeScript natively. You can safely remove `@storybook/preset-typescript`."),Ae(i,o)}n(xt,"loadAllPresets");var{logger:Z}=require("@storybook/node-logger"),ee=n(e=>t=>{let r=t.name||t;return r&&r.includes(e)},"predicateFor"),vt=n((e,t,r)=>{let o=e.findIndex(ee("@storybook/addon-essentials")),s=e.findIndex(ee(t.name)),i=e.findIndex(ee(r.name));return s===-1&&t.inEssentials&&(s=o),i===-1&&r.inEssentials&&(i=o),s!==-1&&i!==-1&&s<=i},"isCorrectOrder"),bt=n(async({before:e,after:t,configFile:r,getConfig:o})=>{try{let s=await o(r);if(!(s!=null&&s.addons)){Z.warn("Unable to find 'addons' config in main Storybook config");return}if(!vt(s.addons,e,t)){let i=" (or '@storybook/addon-essentials')",a=`'${e.name}'${e.inEssentials?i:""}`,m=`'${t.name}'${t.inEssentials?i:""}`;Z.warn(`Expected ${a} to be listed before ${m} in main Storybook config.`)}}catch{Z.warn(`Unable to load config file: ${r}`)}},"checkAddonOrder");var Fe=require("lazy-universal-dotenv");var A=c(require("path")),te=c(require("find-up")),wt=n(()=>{let e;try{let t=te.default.sync(".git",{type:"directory"});t&&(e=e||A.default.join(t,".."))}catch{}try{let t=te.default.sync(".svn",{type:"directory"});t&&(e=e||A.default.join(t,".."))}catch{}try{e=e||__dirname.split("node_modules")[0]}catch{}return e||process.cwd()},"getProjectRoot"),re=n(e=>e.split(process.platform==="win32"?";":":").filter(Boolean).map(t=>A.default.resolve("./",t)),"nodePathsToArray"),$t=/^\.{1,2}([/\\]|$)/;function oe(e){return $t.test(e)?e:`.${A.default.sep}${e}`}n(oe,"normalizeStoryPath");function Et(e={}){let t=e.production?"production":"development",r={NODE_ENV:process.env.NODE_ENV||t,NODE_PATH:process.env.NODE_PATH||"",STORYBOOK:process.env.STORYBOOK||"true",PUBLIC_URL:e.production?".":""};Object.keys(process.env).filter(m=>/^STORYBOOK_/.test(m)).forEach(m=>{r[m]=process.env[m]});let o=Object.entries(r).reduce((m,[u,l])=>Object.assign(m,{[u]:JSON.stringify(l)}),{}),{stringified:s,raw:i}=(0,Fe.getEnvironment)({nodeEnv:r.NODE_ENV}),a=d(d({},r),i);return a.NODE_PATH=re(a.NODE_PATH||""),{stringified:d(d({},o),s),raw:a}}n(Et,"loadEnvs");var Pt=n(e=>Object.entries(e).reduce((t,[r,o])=>(t[r]=JSON.stringify(o),t),{}),"stringifyEnvs"),kt=n(e=>Object.entries(e).reduce((r,[o,s])=>(r[`process.env.${o}`]=JSON.stringify(s),r),{"process.env.XSTORYBOOK_EXAMPLE_APP":'""'}),"stringifyProcessEnvs");var Re=c(require("handlebars"));function jt(e,t){return Re.default.compile(e)(t)}n(jt,"handlebars");var Ie=c(require("path"));function St({configDir:e}){return S(e),w(Ie.default.resolve(e,"main"))}n(St,"loadMainConfig");function ne(e,t,r){if(!e)return null;let o=e.split(/[\s='"]+/),s=o.indexOf(r);return s===-1&&(s=o.indexOf(t)),s===-1?null:o[s+1]}n(ne,"getStorybookConfiguration");var _e=c(require("path")),Me=c(require("fs-extra"));var Ne={"@storybook/react":"react","@storybook/vue":"vue","@storybook/vue3":"vue3","@storybook/angular":"angular","@storybook/html":"html","@storybook/web-components":"web-components","@storybook/polymer":"polymer","@storybook/ember":"ember","@storybook/marko":"marko","@storybook/mithril":"mithril","@storybook/riot":"riot","@storybook/svelte":"svelte","@storybook/preact":"preact","@storybook/rax":"rax","@storybook/server":"server"},Te=console,Ct=n(({dependencies:e,devDependencies:t,peerDependencies:r},o)=>[Object.entries(e||{}).find(o),Object.entries(t||{}).find(o),Object.entries(r||{}).find(o)],"findDependency"),Ot=n(e=>{let[t,r,o]=Ct(e,([m])=>Ne[m]),[s,i]=t||r||o||[],a=s?Ne[s]:void 0;return t&&r&&t[0]===r[0]&&Te.warn(`Found "${t[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),t&&o&&t[0]===o[0]&&Te.warn(`Found "${t[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{framework:a,version:i,frameworkPackage:s}},"getFrameworkInfo"),At=["ts","js","tsx","jsx","mjs","cjs"],se=n((e,t)=>{let r=_e.default.join(t,e),o=At.find(s=>Me.default.existsSync(`${r}.${s}`));return o?`${r}.${o}`:null},"findConfigFile"),Ft=n(e=>{var o;let t=".storybook",r=(o=e.scripts)==null?void 0:o.storybook;if(r){let s=ne(r,"-c","--config-dir");s&&(t=s)}return{configDir:t,mainConfig:se("main",t),previewConfig:se("preview",t),managerConfig:se("manager",t)}},"getConfigInfo"),Rt=n(e=>{let t=Ot(e),r=Ft(e);return d(d({},t),r)},"getStorybookInfo");var q=c(require("path")),He=require("@storybook/node-logger"),qe=c(require("ts-dedent"));function It({configDir:e}){let t=v(q.default.resolve(e,"addons")),r=v(q.default.resolve(e,"manager"));if((t||r)&&He.logger.info("=> Loading custom manager config"),t&&r)throw new Error(qe.default`
18
+ You have both a "addons.js" and a "manager.js", remove the "addons.js" file from your configDir (${q.default.resolve(e,"addons")})`);return r||t}n(It,"loadManagerOrAddonsFile");var B=c(require("path")),Be=c(require("ts-dedent"));function Nt({configDir:e}){let t=v(B.default.resolve(e,"config")),r=v(B.default.resolve(e,"preview"));if(t&&r)throw new Error(Be.default`
19
+ You have both a "config.js" and a "preview.js", remove the "config.js" file from your configDir (${B.default.resolve(e,"config")})`);return r||t}n(Nt,"loadPreviewOrConfigFile");var De=c(require("chalk"));function Tt(e,t){console.log(De.default.cyan(e)),console.dir(t,{depth:null})}n(Tt,"logConfig");var Le=c(require("pretty-hrtime")),We=n(e=>(0,Le.default)(process.hrtime(e)).replace(" ms"," milliseconds").replace(" s"," seconds").replace(" m"," minutes"),"printDuration");var _t=n(async(e,t,r)=>{var u;let o=0,s,i=n(()=>{},"reportProgress");e.get("/progress",(l,f)=>{let g=!1,h=n(()=>{g=!0,f.end()},"close");f.on("close",h),!(g||f.writableEnded)&&(f.setHeader("Cache-Control","no-cache"),f.setHeader("Content-Type","text/event-stream"),f.setHeader("Connection","keep-alive"),f.flushHeaders(),i=n(x=>{g||f.writableEnded||(f.write(`data: ${JSON.stringify(x)}
20
+
21
+ `),f.flush(),x.value===1&&h())},"reportProgress"))});let a=n((l,f,g)=>{o=Math.max(l,o);let h={value:o,message:f.charAt(0).toUpperCase()+f.slice(1)};if(f==="building"){let x=g&&g.match(/(\d+)\/(\d+)/)||[],F=parseInt(x[1],10),G=parseInt(x[2],10);!Number.isNaN(F)&&!Number.isNaN(G)&&(h.modules={complete:F,total:G},s=G)}o===1&&(r.cache&&r.cache.set("modulesCount",s),h.message||(h.message=`Completed in ${We(t)}.`)),i(h)},"handler"),m=await((u=r.cache)==null?void 0:u.get("modulesCount").catch(()=>{}))||1e3;return{handler:a,modulesCount:m}},"useProgressReporting");var D=c(require("path")),Ye=c(require("pkg-dir"));function ie(e){let t=process.cwd(),r=Ye.default.sync(t),o;return r?o=D.default.resolve(r,"node_modules/.cache/storybook"):o=D.default.resolve(t,".cache/storybook"),D.default.join(o,e)}n(ie,"resolvePathInStorybookCache");var Ue=c(require("file-system-cache")),L=class{constructor(t){this.internal=(0,Ue.default)(t)}path(t){return this.internal.path(t)}fileExists(t){return this.internal.fileExists(t)}ensureBasePath(){return this.internal.ensureBasePath()}get(t,r){return this.internal.get(t,r)}getSync(t,r){return this.internal.getSync(t,r)}set(t,r){return this.internal.set(t,r)}setSync(t,r){return this.internal.setSync(t,r),this}remove(t){return this.internal.remove(t)}clear(){return this.internal.clear()}save(){return this.internal.save()}load(){return this.internal.load()}};n(L,"FileSystemCache");function W(e){return new L(e)}n(W,"createFileSystemCache");var Mt=W({basePath:ie("dev-server"),ns:"storybook"});var Y=c(require("path")),E=require("pkg-dir"),y=c(require("fs")),ae=n((e,t={})=>Object.entries(t).reduce((r,[o,s])=>r.replace(new RegExp(`%${o}%`,"g"),s),e),"interpolate");function Ht(e,t){let r=y.default.readFileSync(`${(0,E.sync)(__dirname)}/templates/base-preview-body.html`,"utf8"),o=Y.default.resolve(e,"preview-body.html"),s=r;return y.default.existsSync(o)&&(s=y.default.readFileSync(o,"utf8")+s),ae(s,t)}n(Ht,"getPreviewBodyTemplate");function qt(e,t){let r=y.default.readFileSync(`${(0,E.sync)(__dirname)}/templates/base-preview-head.html`,"utf8"),o=Y.default.resolve(e,"preview-head.html"),s=r;return y.default.existsSync(o)&&(s+=y.default.readFileSync(o,"utf8")),ae(s,t)}n(qt,"getPreviewHeadTemplate");function Bt(e,t){let r=y.default.readFileSync(`${(0,E.sync)(__dirname)}/templates/base-manager-head.html`,"utf8"),o=Y.default.resolve(e,"manager-head.html"),s=r;return y.default.existsSync(o)&&(s+=y.default.readFileSync(o,"utf8")),ae(s,t)}n(Bt,"getManagerHeadTemplate");function Dt(){return`${(0,E.sync)(__dirname)}/templates/index.ejs`}n(Dt,"getManagerMainTemplate");function Lt(){return`${(0,E.sync)(__dirname)}/templates/index.ejs`}n(Lt,"getPreviewMainTemplate");var Wt=n((e,t)=>Object.entries(t).reduce((r,[o,s])=>{let i=s.replace(/\\/g,"/").replace(/\$/g,"$$$");return r.replace(new RegExp(`{{${o}}}`,"g"),i)},e),"interpolate");var Ge=require("picomatch");function ce(e){let t=(0,Ge.makeRe)(e,{fastpaths:!1,noglobstar:!1,bash:!1});if(!t.source.startsWith("^"))throw new Error(`Invalid glob: >> ${e} >> ${t}`);return e.startsWith("./")?new RegExp(["^\\.",e.startsWith("./**")?"":"[\\\\/]",t.source.substring(1)].join("")):t}n(ce,"globToRegexp");var ze=c(require("fs")),P=c(require("path")),Ke=c(require("util-deprecate")),Ve=c(require("ts-dedent")),Xe=require("picomatch"),fe=c(require("slash"));var U="",Je="**/*.(stories|docs).@(mdx|tsx|ts|jsx|js)",Yt=(0,Ke.default)(e=>e.input.replace(e[1],`@${e[1]}`),Ve.default`
22
+ You have specified an invalid glob, we've attempted to fix it, please ensure that the glob you specify is valid. See: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#correct-globs-in-mainjs
23
+ `),Ut=n(e=>{let t=e.match(/\.(\([^)]+\))/);return t?Yt(t):e},"detectBadGlob"),Gt=n((e,t)=>{try{return ze.default.lstatSync(P.default.resolve(e,t)).isDirectory()}catch{return!1}},"isDirectory"),Qe=n(({configDir:e,workingDir:t,directory:r})=>{let o=P.default.resolve(e,r),s=P.default.relative(t,o);return oe(s)},"getDirectoryFromWorkingDir"),Ze=n((e,{configDir:t,workingDir:r})=>{let o;if(typeof e=="string"){let u=Ut(e),l=(0,Xe.scan)(u);if(l.isGlob){let f=l.prefix+l.base,g=l.glob;o={titlePrefix:U,directory:f,files:g}}else Gt(t,e)?o={titlePrefix:U,directory:e,files:Je}:o={titlePrefix:U,directory:P.default.dirname(e),files:P.default.basename(e)}}else o=d({titlePrefix:U,files:Je},e);let s=(0,fe.default)(o.files),{directory:i}=o,a=(0,fe.default)(Qe({configDir:t,workingDir:r,directory:i})).replace(/\/$/,""),m=ce(`${a}/${s}`);return I(d({},o),{directory:a,importPathMatcher:m})},"normalizeStoriesEntry"),Jt=n((e,t)=>e.map(r=>Ze(r,t)),"normalizeStories");var et=c(require("fs-extra"));async function zt(e){return et.default.readFile(e,{encoding:"utf8"})}n(zt,"readTemplate");var le=c(require("path")),tt=require("find-up"),Kt=n((e,t)=>{let r=(0,tt.sync)("package.json",{cwd:e});if(!r)throw new Error(`Could not find package.json in: ${e}`);let o=le.default.dirname(r);return le.default.join(o,"dist","esm",t)},"findDistEsm");0&&(module.exports={boost,cache,checkAddonOrder,createFileSystemCache,filterPresetsConfig,findDistEsm,getDirectoryFromWorkingDir,getInterpretedFile,getInterpretedFileWithExt,getManagerHeadTemplate,getManagerMainTemplate,getPresets,getPreviewBodyTemplate,getPreviewHeadTemplate,getPreviewMainTemplate,getProjectRoot,getStorybookConfiguration,getStorybookInfo,globToRegexp,handlebars,interpolate,loadAllPresets,loadCustomPresets,loadEnvs,loadMainConfig,loadManagerOrAddonsFile,loadPreset,loadPreviewOrConfigFile,logConfig,nodePathsToArray,normalizeStories,normalizeStoriesEntry,normalizeStoryPath,readTemplate,resolveAddonName,resolvePathInStorybookCache,serverRequire,serverResolve,stringifyEnvs,stringifyProcessEnvs,useProgressReporting,validateConfigurationFiles});