@storybook/core-common 7.0.0-alpha.1 → 7.0.0-alpha.10

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