@storybook/core-common 7.0.0-alpha.8 → 7.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +69 -466
- package/dist/index.js +22 -20
- package/dist/index.mjs +23 -21
- package/jest.config.js +7 -0
- package/package.json +23 -52
- package/templates/base-preview-head.html +2 -2
- package/LICENSE +0 -21
- package/templates/base-manager-head.html +0 -46
- package/templates/index.ejs +0 -43
package/dist/index.d.ts
CHANGED
|
@@ -1,391 +1,6 @@
|
|
|
1
|
-
import { Options as Options$
|
|
2
|
-
import
|
|
3
|
-
import
|
|
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]>;
|
|
1
|
+
import { PresetConfig, CoreCommon_ResolvedAddonPreset, CoreCommon_ResolvedAddonVirtual, LoadedPreset, CLIOptions, LoadOptions, BuilderOptions, Presets, CoreCommon_AddonInfo, Options as Options$2, PackageJson, CoreCommon_StorybookInfo, Ref, StorybookConfig, StoriesEntry, NormalizedStoriesSpecifier } from '@storybook/types';
|
|
2
|
+
import * as Cache from 'file-system-cache';
|
|
3
|
+
import Cache__default from 'file-system-cache';
|
|
389
4
|
|
|
390
5
|
declare function filterPresetsConfig(presetsConfig: PresetConfig[]): PresetConfig[];
|
|
391
6
|
/**
|
|
@@ -404,44 +19,24 @@ declare function filterPresetsConfig(presetsConfig: PresetConfig[]): PresetConfi
|
|
|
404
19
|
* - { name: '@storybook/addon-docs(/preset)?', options: { ... } }
|
|
405
20
|
* => { type: 'presets', item: { name: '@storybook/addon-docs/preset', options } }
|
|
406
21
|
*/
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
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;
|
|
22
|
+
declare const resolveAddonName: (configDir: string, name: string, options: any) => CoreCommon_ResolvedAddonPreset | CoreCommon_ResolvedAddonVirtual | undefined;
|
|
23
|
+
declare function loadPreset(input: PresetConfig, level: number, storybookOptions: InterPresetOptions): Promise<LoadedPreset[]>;
|
|
24
|
+
type InterPresetOptions = Omit<CLIOptions & LoadOptions & BuilderOptions, 'frameworkPresets'>;
|
|
25
|
+
declare function getPresets(presets: PresetConfig[], storybookOptions: InterPresetOptions): Promise<Presets>;
|
|
425
26
|
declare function loadAllPresets(options: CLIOptions & LoadOptions & BuilderOptions & {
|
|
426
|
-
corePresets:
|
|
427
|
-
overridePresets:
|
|
428
|
-
}): Presets
|
|
27
|
+
corePresets: PresetConfig[];
|
|
28
|
+
overridePresets: PresetConfig[];
|
|
29
|
+
}): Promise<Presets>;
|
|
429
30
|
|
|
430
|
-
declare
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
name: string;
|
|
436
|
-
inEssentials: boolean;
|
|
437
|
-
};
|
|
438
|
-
interface Options {
|
|
439
|
-
before: AddonInfo;
|
|
440
|
-
after: AddonInfo;
|
|
31
|
+
declare const cache: Cache.FileSystemCache;
|
|
32
|
+
|
|
33
|
+
interface Options$1 {
|
|
34
|
+
before: CoreCommon_AddonInfo;
|
|
35
|
+
after: CoreCommon_AddonInfo;
|
|
441
36
|
configFile: string;
|
|
442
37
|
getConfig: (path: string) => any;
|
|
443
38
|
}
|
|
444
|
-
declare const checkAddonOrder: ({ before, after, configFile, getConfig }: Options) => Promise<void>;
|
|
39
|
+
declare const checkAddonOrder: ({ before, after, configFile, getConfig }: Options$1) => Promise<void>;
|
|
445
40
|
|
|
446
41
|
declare function loadEnvs(options?: {
|
|
447
42
|
production?: boolean;
|
|
@@ -452,8 +47,39 @@ declare function loadEnvs(options?: {
|
|
|
452
47
|
declare const stringifyEnvs: (raw: Record<string, string>) => Record<string, string>;
|
|
453
48
|
declare const stringifyProcessEnvs: (raw: Record<string, string>) => Record<string, string>;
|
|
454
49
|
|
|
50
|
+
declare const findDistEsm: (cwd: string, relativePath: string) => string;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Framework can be a string or an object. This utility always returns the string name.
|
|
54
|
+
*/
|
|
55
|
+
declare function getFrameworkName(options: Options$2): Promise<string>;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Render is set as a string on core. It must be set by the framework
|
|
59
|
+
*/
|
|
60
|
+
declare function getRendererName(options: Options$2): Promise<string>;
|
|
61
|
+
|
|
62
|
+
declare function getStorybookConfiguration(storybookScript: string, shortName: string, longName: string): string | null;
|
|
63
|
+
|
|
64
|
+
declare const getStorybookInfo: (packageJson: PackageJson) => CoreCommon_StorybookInfo;
|
|
65
|
+
|
|
66
|
+
declare const getAutoRefs: (options: Options$2) => Promise<Record<string, Ref>>;
|
|
67
|
+
declare function getRefs(options: Options$2): Promise<Record<string, Ref>>;
|
|
68
|
+
|
|
69
|
+
declare function globToRegexp(glob: string): RegExp;
|
|
70
|
+
|
|
455
71
|
declare function handlebars(source: string, data: any): string;
|
|
456
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Return a string corresponding to template filled with bindings using following pattern:
|
|
75
|
+
* For each (key, value) of `bindings` replace, in template, `{{key}}` by escaped version of `value`
|
|
76
|
+
*
|
|
77
|
+
* @param template {String} Template with `{{binding}}`
|
|
78
|
+
* @param bindings {Object} key-value object use to fill the template, `{{key}}` will be replaced by `escaped(value)`
|
|
79
|
+
* @returns {String} Filled template
|
|
80
|
+
*/
|
|
81
|
+
declare const interpolate: (template: string, bindings: Record<string, string>) => string;
|
|
82
|
+
|
|
457
83
|
declare const boost: Set<string>;
|
|
458
84
|
declare function getInterpretedFile(pathToFile: string): string | undefined;
|
|
459
85
|
declare function getInterpretedFileWithExt(pathToFile: string): {
|
|
@@ -461,6 +87,7 @@ declare function getInterpretedFileWithExt(pathToFile: string): {
|
|
|
461
87
|
ext: string;
|
|
462
88
|
} | undefined;
|
|
463
89
|
|
|
90
|
+
declare function interopRequireDefault(filePath: string): any;
|
|
464
91
|
declare function serverRequire(filePath: string | string[]): any;
|
|
465
92
|
declare function serverResolve(filePath: string | string[]): string | null;
|
|
466
93
|
|
|
@@ -472,19 +99,6 @@ declare function loadMainConfig({ configDir }: {
|
|
|
472
99
|
configDir: string;
|
|
473
100
|
}): StorybookConfig;
|
|
474
101
|
|
|
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
102
|
declare function loadManagerOrAddonsFile({ configDir }: {
|
|
489
103
|
configDir: string;
|
|
490
104
|
}): string | undefined;
|
|
@@ -495,6 +109,16 @@ declare function loadPreviewOrConfigFile({ configDir }: {
|
|
|
495
109
|
|
|
496
110
|
declare function logConfig(caption: unknown, config: unknown): void;
|
|
497
111
|
|
|
112
|
+
declare const getDirectoryFromWorkingDir: ({ configDir, workingDir, directory, }: NormalizeOptions & {
|
|
113
|
+
directory: string;
|
|
114
|
+
}) => string;
|
|
115
|
+
declare const normalizeStoriesEntry: (entry: StoriesEntry, { configDir, workingDir }: NormalizeOptions) => NormalizedStoriesSpecifier;
|
|
116
|
+
interface NormalizeOptions {
|
|
117
|
+
configDir: string;
|
|
118
|
+
workingDir: string;
|
|
119
|
+
}
|
|
120
|
+
declare const normalizeStories: (entries: StoriesEntry[], options: NormalizeOptions) => NormalizedStoriesSpecifier[];
|
|
121
|
+
|
|
498
122
|
declare const getProjectRoot: () => string;
|
|
499
123
|
declare const nodePathsToArray: (nodePath: string) => string[];
|
|
500
124
|
/**
|
|
@@ -502,10 +126,7 @@ declare const nodePathsToArray: (nodePath: string) => string[];
|
|
|
502
126
|
*/
|
|
503
127
|
declare function normalizeStoryPath(filename: string): string;
|
|
504
128
|
|
|
505
|
-
declare
|
|
506
|
-
handler: any;
|
|
507
|
-
modulesCount: number;
|
|
508
|
-
}>;
|
|
129
|
+
declare function readTemplate(filename: string): Promise<string>;
|
|
509
130
|
|
|
510
131
|
/**
|
|
511
132
|
* Get the path of the file or directory with input name inside the Storybook cache directory:
|
|
@@ -517,40 +138,22 @@ declare const useProgressReporting: (router: Router, startTime: [number, number]
|
|
|
517
138
|
*/
|
|
518
139
|
declare function resolvePathInStorybookCache(fileOrDirectoryName: string): string;
|
|
519
140
|
|
|
520
|
-
declare
|
|
141
|
+
declare function isPreservingSymlinks(): boolean | undefined;
|
|
521
142
|
|
|
522
143
|
declare function getPreviewBodyTemplate(configDirPath: string, interpolations?: Record<string, string>): string;
|
|
523
144
|
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
145
|
|
|
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;
|
|
146
|
+
declare function validateFrameworkName(frameworkName: string): void;
|
|
537
147
|
|
|
538
148
|
declare function validateConfigurationFiles(configDir: string): void;
|
|
539
149
|
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
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>;
|
|
150
|
+
/**
|
|
151
|
+
* Mimicking the satisfies operator until we can upgrade to TS4.9
|
|
152
|
+
*/
|
|
153
|
+
declare function satisfies<A>(): <T extends A>(x: T) => T;
|
|
553
154
|
|
|
554
|
-
|
|
155
|
+
type Options = Parameters<typeof Cache__default>['0'];
|
|
156
|
+
type FileSystemCache = ReturnType<typeof Cache__default>;
|
|
157
|
+
declare function createFileSystemCache(options: Options): FileSystemCache;
|
|
555
158
|
|
|
556
|
-
export {
|
|
159
|
+
export { boost, cache, checkAddonOrder, createFileSystemCache, filterPresetsConfig, findDistEsm, getAutoRefs, getDirectoryFromWorkingDir, getFrameworkName, getInterpretedFile, getInterpretedFileWithExt, getPresets, getPreviewBodyTemplate, getPreviewHeadTemplate, getProjectRoot, getRefs, getRendererName, getStorybookConfiguration, getStorybookInfo, globToRegexp, handlebars, interopRequireDefault, interpolate, isPreservingSymlinks, loadAllPresets, loadCustomPresets, loadEnvs, loadMainConfig, loadManagerOrAddonsFile, loadPreset, loadPreviewOrConfigFile, logConfig, nodePathsToArray, normalizeStories, normalizeStoriesEntry, normalizeStoryPath, readTemplate, resolveAddonName, resolvePathInStorybookCache, satisfies, serverRequire, serverResolve, stringifyEnvs, stringifyProcessEnvs, validateConfigurationFiles, validateFrameworkName };
|
package/dist/index.js
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
${
|
|
7
|
-
|
|
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)}).
|
|
1
|
+
"use strict";var He=Object.create;var O=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var Ve=Object.getOwnPropertyNames;var Ke=Object.getPrototypeOf,Ge=Object.prototype.hasOwnProperty;var Xe=(e,r)=>{for(var t in r)O(e,t,{get:r[t],enumerable:!0})},te=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Ve(r))!Ge.call(e,n)&&n!==t&&O(e,n,{get:()=>r[n],enumerable:!(o=Ye(r,n))||o.enumerable});return e};var c=(e,r,t)=>(t=e!=null?He(Ke(e)):{},te(r||!e||!e.__esModule?O(t,"default",{value:e,enumerable:!0}):t,e)),Ze=e=>te(O({},"__esModule",{value:!0}),e);var Lr={};Xe(Lr,{boost:()=>E,cache:()=>sr,checkAddonOrder:()=>ar,createFileSystemCache:()=>A,filterPresetsConfig:()=>de,findDistEsm:()=>lr,getAutoRefs:()=>Se,getDirectoryFromWorkingDir:()=>Ue,getFrameworkName:()=>V,getInterpretedFile:()=>y,getInterpretedFileWithExt:()=>z,getPresets:()=>ye,getPreviewBodyTemplate:()=>Fr,getPreviewHeadTemplate:()=>_r,getProjectRoot:()=>cr,getRefs:()=>Pr,getRendererName:()=>gr,getStorybookConfiguration:()=>K,getStorybookInfo:()=>hr,globToRegexp:()=>Z,handlebars:()=>wr,interopRequireDefault:()=>R,interpolate:()=>Cr,isPreservingSymlinks:()=>Ir,loadAllPresets:()=>nr,loadCustomPresets:()=>U,loadEnvs:()=>pr,loadMainConfig:()=>Or,loadManagerOrAddonsFile:()=>Er,loadPreset:()=>ge,loadPreviewOrConfigFile:()=>Rr,logConfig:()=>$r,nodePathsToArray:()=>q,normalizeStories:()=>jr,normalizeStoriesEntry:()=>Je,normalizeStoryPath:()=>H,readTemplate:()=>Ar,resolveAddonName:()=>le,resolvePathInStorybookCache:()=>J,satisfies:()=>Dr,serverRequire:()=>x,serverResolve:()=>$,stringifyEnvs:()=>mr,stringifyProcessEnvs:()=>dr,validateConfigurationFiles:()=>k,validateFrameworkName:()=>Tr});module.exports=Ze(Lr);var me=require("ts-dedent"),P=require("@storybook/node-logger"),g=require("path");var S=c(require("path"));var L=c(require("fs")),E=new Set([".js",".jsx",".ts",".tsx",".cjs",".mjs"]);function Qe(){return[...Array.from(E)]}var oe=Qe();function y(e){return oe.map(r=>e.endsWith(r)?e:`${e}${r}`).find(r=>L.default.existsSync(r))}function z(e){return oe.map(r=>({path:e.endsWith(r)?e:`${e}${r}`,ext:r})).find(r=>L.default.existsSync(r.path))}var ne=!1;function R(e){let r=!!require("module")._extensions[".ts"];if(ne===!1&&!r){let{register:n}=require("esbuild-register/dist/node");ne=!0,n({target:`node${process.version.slice(1)}`,format:"cjs",hookIgnoreNodeModules:!1,tsconfigRaw:`{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"strict": false,
|
|
4
|
+
"skipLibCheck": true,
|
|
5
|
+
},
|
|
6
|
+
}`})}let t=require(e);return typeof t=="object"&&t!==null&&typeof t.default<"u"?t.default:t}function er(e){for(let r=0;r<e.length;r+=1){let t=z(e[r]);if(t)return t}}function x(e){let r=$(e);return r?R(r):null}function $(e){let r=Array.isArray(e)?e:[e],t=er(r);return t?t.path:null}var se=require("ts-dedent"),ie=c(require("glob")),B=c(require("path"));function k(e){let r=`{${Array.from(E).join(",")}}`;if(!(n=>!!ie.default.sync(B.default.resolve(e,`${n}${r}`)).length)("main"))throw new Error(se.dedent`
|
|
7
|
+
No configuration files have been found in your configDir (${B.default.resolve(e)}).
|
|
12
8
|
Storybook needs either a "main" or "config" file.
|
|
13
|
-
`);if(o&&s)
|
|
14
|
-
|
|
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`
|
|
9
|
+
`)}function U({configDir:e}){k(e);let r=x(S.default.resolve(e,"presets"));if(x(S.default.resolve(e,"main"))){let o=$(S.default.resolve(e,"main"));if(o)return[o]}return r||[]}var ae=c(require("resolve-from")),ce=(e,r)=>{try{return(0,ae.default)(e,r)}catch{return}},fe=e=>{try{return require.resolve(e)}catch{return}};var w=e=>e!=null&&typeof e=="object"&&Array.isArray(e)===!1,rr=e=>typeof e=="function";function de(e){return e.filter(r=>{let t=typeof r=="string"?r:r.name;return!/@storybook[\\\\/]preset-typescript/.test(t)})}function pe(e,r,t){return rr(e)?[...e({...t,...r})]:Array.isArray(e)?[...e]:[]}var le=(e,r,t)=>{let o=r.startsWith("/")?fe:ce.bind(null,e),n=o(r);if(n){let{dir:d,name:u}=(0,g.parse)(n);if(r.match(/\/(manager|register(-panel)?)(\.(js|mjs|ts|tsx|jsx))?$/))return{type:"virtual",name:r,managerEntries:[(0,g.join)(d,u)]};if(r.match(/\/(preset)(\.(js|mjs|ts|tsx|jsx))?$/))return{type:"presets",name:n}}let s=d=>{if(o(`${r}${d}`))return`${r}${d}`},a=d=>o(`${r}${d}`),i=a("/manager"),p=a("/register")||a("/register-panel"),f=s("/preview"),m=a("/preview"),l=a("/preset");if(!(i||f)&&l)return{type:"presets",name:l};if(i||p||f||l){let d=[];if(i){let{dir:u,name:v}=(0,g.parse)(i);d.push((0,g.join)(u,v))}if(!i&&p&&!l){let{dir:u,name:v}=(0,g.parse)(p);d.push((0,g.join)(u,v))}return{type:"virtual",name:r,...d.length?{managerEntries:d}:{},...f?{previewAnnotations:[m?{bare:f,absolute:m}:f]}:{},...l?{presets:[{name:l,options:t}]}:{}}}if(n)return{type:"presets",name:n}},tr=({configDir:e})=>r=>{let t=w(r)&&r.options||void 0,o=w(r)?r.name:r;try{let n=le(e,o,t);return{...t?{options:t}:{},...n}}catch{P.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/
|
|
10
|
+
${r}`)}};async function or(e){if(e.type==="virtual"){let{type:t,name:o,...n}=e;return n}let r=e.name?e.name:e;return R(r)}async function ge(e,r,t){try{let o=e.name?e.name:e,n=e.options?e.options:{},s=await or(e);if(typeof s=="function"&&(s=s(t,n)),Array.isArray(s))return await j(s,r+1,t);if(w(s)){let{addons:a,presets:i,...p}=s,f=pe(i,n,t),m=pe(a,n,t);return[...await j([...f],r+1,t),...await j([...m.map(tr(t))].filter(Boolean),r+1,t),{name:o,preset:p,options:n}]}throw new Error(me.dedent`
|
|
16
11
|
${e} is not a valid preset
|
|
17
|
-
`)}catch(
|
|
18
|
-
You
|
|
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)}
|
|
12
|
+
`)}catch(o){let n=r>0?` Failed to load preset: ${JSON.stringify(e)} on level ${r}`:` Failed to load preset: ${JSON.stringify(e)}`;return P.logger.warn(n),P.logger.error(o),[]}}async function j(e,r,t){return!e||!Array.isArray(e)||!e.length?[]:(await Promise.all(e.map(async o=>ge(o,r,t)))).reduce((o,n)=>o.concat(n),[])}function ue(e,r,t,o,n){let s=new Promise(a=>a(t));return e.length?e.reduce((a,{preset:i,options:p})=>{let f=i[r];if(!f)return a;if(typeof f=="function"){let m=f,l={preset:i,combinedOptions:{...n,...o,...p,presetsList:e,presets:{apply:async(d,u,v={})=>ue(e,d,u,v,n)}}};return a.then(d=>m.call(l.preset,d,l.combinedOptions))}return a.then(m=>Array.isArray(m)&&Array.isArray(f)?[...m,...f]:w(m)&&w(f)?{...m,...f}:f)},s):s}async function ye(e,r){let t=await j(e,0,r);return{apply:async(o,n,s={})=>ue(t,o,n,s,r)}}async function nr(e){let{corePresets:r=[],overridePresets:t=[],...o}=e,n=[...r,...U(e),...t],s=de(n);return s.length<n.length&&P.logger.warn("Storybook now supports TypeScript natively. You can safely remove `@storybook/preset-typescript`."),ye(s,o)}var be=c(require("file-system-cache"));function A(e){return(0,be.default)(e)}var I=c(require("path")),xe=c(require("pkg-dir"));function J(e){let r=process.cwd(),t=xe.default.sync(r),o;return t?o=I.default.resolve(t,"node_modules/.cache/storybook"):o=I.default.resolve(r,".cache/storybook"),I.default.join(o,e)}var sr=A({basePath:J("dev-server"),ns:"storybook"});var F=require("@storybook/node-logger"),M=e=>r=>{let t=r.name||r;return t&&t.includes(e)},ir=(e,r,t)=>{let o=e.findIndex(M("@storybook/addon-essentials")),n=e.findIndex(M(r.name)),s=e.findIndex(M(t.name));return n===-1&&r.inEssentials&&(n=o),s===-1&&t.inEssentials&&(s=o),n!==-1&&s!==-1&&n<=s},ar=async({before:e,after:r,configFile:t,getConfig:o})=>{try{let n=await o(t);if(!(n!=null&&n.addons)){F.logger.warn("Unable to find 'addons' config in main Storybook config");return}if(!ir(n.addons,e,r)){let s=" (or '@storybook/addon-essentials')",a=`'${e.name}'${e.inEssentials?s:""}`,i=`'${r.name}'${r.inEssentials?s:""}`;F.logger.warn(`Expected ${a} to be listed before ${i} in main Storybook config.`)}}catch{F.logger.warn(`Unable to load config file: ${t}`)}};var he=require("lazy-universal-dotenv");var C=c(require("path")),W=c(require("find-up")),cr=()=>{let e;try{let r=W.default.sync(".git",{type:"directory"});r&&(e=e||C.default.join(r,".."))}catch{}try{let r=W.default.sync(".svn",{type:"directory"});r&&(e=e||C.default.join(r,".."))}catch{}try{e=e||__dirname.split("node_modules")[0]}catch{}return e||process.cwd()},q=e=>e.split(process.platform==="win32"?";":":").filter(Boolean).map(r=>C.default.resolve("./",r)),fr=/^\.{1,2}([/\\]|$)/;function H(e){return fr.test(e)?e:`.${C.default.sep}${e}`}function pr(e={}){let r=e.production?"production":"development",t={NODE_ENV:process.env.NODE_ENV||r,NODE_PATH:process.env.NODE_PATH||"",STORYBOOK:process.env.STORYBOOK||"true",PUBLIC_URL:e.production?".":""};Object.keys(process.env).filter(i=>/^STORYBOOK_/.test(i)).forEach(i=>{t[i]=process.env[i]});let o=Object.entries(t).reduce((i,[p,f])=>Object.assign(i,{[p]:JSON.stringify(f)}),{}),{stringified:n,raw:s}=(0,he.getEnvironment)({nodeEnv:t.NODE_ENV}),a={...t,...s};return a.NODE_PATH=q(a.NODE_PATH||""),{stringified:{...o,...n},raw:a}}var mr=e=>Object.entries(e).reduce((r,[t,o])=>(r[t]=JSON.stringify(o),r),{}),dr=e=>Object.entries(e).reduce((t,[o,n])=>(t[`process.env.${o}`]=JSON.stringify(n),t),{});var Y=c(require("path")),ve=require("find-up"),lr=(e,r)=>{let t=(0,ve.sync)("package.json",{cwd:e});if(!t)throw new Error(`Could not find package.json in: ${e}`);let o=Y.default.dirname(t);return Y.default.join(o,"dist","esm",r)};var ke=require("ts-dedent");async function V(e){let r=await e.presets.apply("framework","",e);if(!r)throw new Error(ke.dedent`
|
|
13
|
+
You must specify a framework in '.storybook/main.js' config.
|
|
20
14
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-field-mandatory
|
|
16
|
+
`);return typeof r=="object"?r.name:r}async function gr(e){let{renderer:r}=await e.presets.apply("core",{},e);return r||V(e)}function K(e,r,t){if(!e)return null;let o=e.split(/[\s='"]+/),n=o.indexOf(t);return n===-1&&(n=o.indexOf(r)),n===-1?null:o[n+1]}var Ce=c(require("path")),Oe=c(require("fs-extra"));var Pe={"@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"},we=console,ur=({dependencies:e,devDependencies:r,peerDependencies:t},o)=>[Object.entries(e||{}).find(o),Object.entries(r||{}).find(o),Object.entries(t||{}).find(o)],yr=e=>{let[r,t,o]=ur(e,([i])=>Pe[i]),[n,s]=r||t||o||[],a=n?Pe[n]:void 0;return r&&t&&r[0]===t[0]&&we.warn(`Found "${r[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),r&&o&&r[0]===o[0]&&we.warn(`Found "${r[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{version:s,framework:a,frameworkPackage:n,renderer:a,rendererPackage:n}},br=["ts","js","tsx","jsx","mjs","cjs"],G=(e,r)=>{let t=Ce.default.join(r,e),o=br.find(n=>Oe.default.existsSync(`${t}.${n}`));return o?`${t}.${o}`:null},xr=e=>{var o;let r=".storybook",t=(o=e.scripts)==null?void 0:o.storybook;if(t){let n=K(t,"-c","--config-dir");n&&(r=n)}return{configDir:r,mainConfig:G("main",r),previewConfig:G("preview",r),managerConfig:G("manager",r)}},hr=e=>{let r=yr(e),t=xr(e);return{...r,...t}};var X=require("fs-extra"),_=require("path"),Ee=c(require("find-up")),Re=c(require("resolve-from")),$e=require("@storybook/node-logger"),Se=async e=>{let r=await(0,Ee.default)("package.json",{cwd:e.configDir});if(!r)return{};let t=(0,_.dirname)(r),{dependencies:o=[],devDependencies:n=[]}=await(0,X.readJSON)(r)||{},s=Object.keys({...o,...n});return(await Promise.all(s.map(async i=>{try{let p=(0,Re.default)(t,(0,_.join)(i,"package.json")),{storybook:f,name:m,version:l}=await(0,X.readJSON)(p)||{};if(f!=null&&f.url)return{id:m,...f,version:l}}catch(p){if(p.code==="ERR_PACKAGE_PATH_NOT_EXPORTED")return;$e.logger.warn(`unable to find package.json for ${i}`);return}}))).filter(Boolean).reduce((i,p)=>({...i,[p.id]:{id:p.id.toLowerCase(),url:je(p.url),title:p.title,version:p.version}}),{})},vr=e=>fetch(`${e}/iframe.html`).then(async({ok:r,status:t})=>{if(r){if(t!==200)return!1;let o=await fetch(`${e}/iframe.html`,{headers:{Accept:"application/json"}});if(o.ok&&(await o.json().catch(n=>({}))).loginUrl)return!1}return r},()=>!1),je=e=>e.replace(/\/$/,""),kr=e=>{let r=e.replace(/[A-Z]/g,t=>` ${t}`).replace(/[-_][A-Z]/gi,t=>` ${t.toUpperCase()}`).replace(/-/g," ").replace(/_/g," ");return`${r.substring(0,1).toUpperCase()}${r.substring(1)}`.trim()};async function Pr(e){let r=await e.presets.apply("refs",await Se(e));return Object.entries(r).forEach(([t,o])=>{if(o.disable){delete r[t];return}r[t.toLowerCase()]={...o,id:t.toLowerCase(),title:o.title||kr(o.id||t),url:je(o.url)}}),await Promise.all(Object.entries(r).map(async([t,o])=>{let n=await vr(o.url);r[t]={...o,type:n?"server-checked":"unknown"}})),r}var Ae=require("picomatch");function Z(e){let r=(0,Ae.makeRe)(e,{fastpaths:!1,noglobstar:!1,bash:!1});if(!r.source.startsWith("^"))throw new Error(`Invalid glob: >> ${e} >> ${r}`);return e.startsWith("./")?new RegExp(["^\\.",e.startsWith("./**")?"":"[\\\\/]",r.source.substring(1)].join("")):r}var Ie=c(require("handlebars"));function wr(e,r){return Ie.default.compile(e)(r)}var Cr=(e,r)=>Object.entries(r).reduce((t,[o,n])=>{let s=n.replace(/\\/g,"/").replace(/\$/g,"$$$");return t.replace(new RegExp(`{{${o}}}`,"g"),s)},e);var Fe=c(require("path"));function Or({configDir:e}){return k(e),x(Fe.default.resolve(e,"main"))}var N=c(require("path")),_e=require("@storybook/node-logger"),Ne=require("ts-dedent");function Er({configDir:e}){let r=y(N.default.resolve(e,"addons")),t=y(N.default.resolve(e,"manager"));if((r||t)&&_e.logger.info("=> Loading custom manager config"),r&&t)throw new Error(Ne.dedent`
|
|
17
|
+
You have both a "addons.js" and a "manager.js", remove the "addons.js" file from your configDir (${N.default.resolve(e,"addons")})`);return t||r}var T=c(require("path")),Te=require("ts-dedent");function Rr({configDir:e}){let r=y(T.default.resolve(e,"config")),t=y(T.default.resolve(e,"preview"));if(r&&t)throw new Error(Te.dedent`
|
|
18
|
+
You have both a "config.js" and a "preview.js", remove the "config.js" file from your configDir (${T.default.resolve(e,"config")})`);return t||r}var De=c(require("chalk"));function $r(e,r){console.log(De.default.cyan(e)),console.dir(r,{depth:null})}var ze=c(require("fs")),h=c(require("path")),Be=require("picomatch"),Q=c(require("slash"));var D="",Le="**/*.@(mdx|stories.@(tsx|ts|jsx|js))",Sr=(e,r)=>{try{return ze.default.lstatSync(h.default.resolve(e,r)).isDirectory()}catch{return!1}},Ue=({configDir:e,workingDir:r,directory:t})=>{let o=h.default.resolve(e,t),n=h.default.relative(r,o);return H(n)},Je=(e,{configDir:r,workingDir:t})=>{let o;if(typeof e=="string"){let p=(0,Be.scan)(e);if(p.isGlob){let f=p.prefix+p.base,m=p.glob;o={titlePrefix:D,directory:f,files:m}}else Sr(r,e)?o={titlePrefix:D,directory:e,files:Le}:o={titlePrefix:D,directory:h.default.dirname(e),files:h.default.basename(e)}}else o={titlePrefix:D,files:Le,...e};let n=(0,Q.default)(o.files),{directory:s}=o,a=(0,Q.default)(Ue({configDir:r,workingDir:t,directory:s})).replace(/\/$/,""),i=Z(`${a}/${n}`);return{...o,directory:a,importPathMatcher:i}},jr=(e,r)=>e.map(t=>Je(t,r));var Me=c(require("fs-extra"));async function Ar(e){return Me.default.readFile(e,{encoding:"utf8"})}function Ir(){let{NODE_OPTIONS:e,NODE_PRESERVE_SYMLINKS:r}=process.env;return!!r||(e==null?void 0:e.includes("--preserve-symlinks"))}var ee=c(require("path")),re=require("pkg-dir"),b=c(require("fs")),We=(e,r={})=>Object.entries(r).reduce((t,[o,n])=>t.replace(new RegExp(`%${o}%`,"g"),n),e);function Fr(e,r){let t=b.default.readFileSync(`${(0,re.sync)(__dirname)}/templates/base-preview-body.html`,"utf8"),o=ee.default.resolve(e,"preview-body.html"),n=t;return b.default.existsSync(o)&&(n=b.default.readFileSync(o,"utf8")+n),We(n,r)}function _r(e,r){let t=b.default.readFileSync(`${(0,re.sync)(__dirname)}/templates/base-preview-head.html`,"utf8"),o=ee.default.resolve(e,"preview-head.html"),n=t;return b.default.existsSync(o)&&(n+=b.default.readFileSync(o,"utf8")),We(n,r)}var qe=require("ts-dedent"),Nr=["@storybook/html","@storybook/preact","@storybook/react","@storybook/server","@storybook/svelte","@storybook/vue","@storybook/vue3","@storybook/web-components"];function Tr(e){if(Nr.includes(e))throw new Error(qe.dedent`
|
|
19
|
+
Invalid value of ${e} in the 'framework' field of Storybook config.
|
|
20
|
+
|
|
21
|
+
Please run 'npx sb@next automigrate'
|
|
22
|
+
|
|
23
|
+
See the v7 Migration guide for more information:
|
|
24
|
+
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-field-mandatory
|
|
25
|
+
`)}function Dr(){return e=>e}0&&(module.exports={boost,cache,checkAddonOrder,createFileSystemCache,filterPresetsConfig,findDistEsm,getAutoRefs,getDirectoryFromWorkingDir,getFrameworkName,getInterpretedFile,getInterpretedFileWithExt,getPresets,getPreviewBodyTemplate,getPreviewHeadTemplate,getProjectRoot,getRefs,getRendererName,getStorybookConfiguration,getStorybookInfo,globToRegexp,handlebars,interopRequireDefault,interpolate,isPreservingSymlinks,loadAllPresets,loadCustomPresets,loadEnvs,loadMainConfig,loadManagerOrAddonsFile,loadPreset,loadPreviewOrConfigFile,logConfig,nodePathsToArray,normalizeStories,normalizeStoriesEntry,normalizeStoryPath,readTemplate,resolveAddonName,resolvePathInStorybookCache,satisfies,serverRequire,serverResolve,stringifyEnvs,stringifyProcessEnvs,validateConfigurationFiles,validateFrameworkName});
|
package/dist/index.mjs
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
${
|
|
7
|
-
|
|
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(F).join(",")}}`,r=n(l=>!!Me.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)}).
|
|
1
|
+
var __require=(x=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(x,{get:(a,b)=>(typeof require!="undefined"?require:a)[b]}):x)(function(x){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+x+'" is not supported')});import{dedent as dedent2}from"ts-dedent";import{logger}from"@storybook/node-logger";import{join,parse}from"path";import path2 from"path";import fs from"fs";var boost=new Set([".js",".jsx",".ts",".tsx",".cjs",".mjs"]);function sortExtensions(){return[...Array.from(boost)]}var possibleExtensions=sortExtensions();function getInterpretedFile(pathToFile){return possibleExtensions.map(ext=>pathToFile.endsWith(ext)?pathToFile:`${pathToFile}${ext}`).find(candidate=>fs.existsSync(candidate))}function getInterpretedFileWithExt(pathToFile){return possibleExtensions.map(ext=>({path:pathToFile.endsWith(ext)?pathToFile:`${pathToFile}${ext}`,ext})).find(candidate=>fs.existsSync(candidate.path))}var registered=!1;function interopRequireDefault(filePath){let hasEsbuildBeenRegistered=!!__require("module")._extensions[".ts"];if(registered===!1&&!hasEsbuildBeenRegistered){let{register}=__require("esbuild-register/dist/node");registered=!0,register({target:`node${process.version.slice(1)}`,format:"cjs",hookIgnoreNodeModules:!1,tsconfigRaw:`{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"strict": false,
|
|
4
|
+
"skipLibCheck": true,
|
|
5
|
+
},
|
|
6
|
+
}`})}let result=__require(filePath);return typeof result=="object"&&result!==null&&typeof result.default<"u"?result.default:result}function getCandidate(paths){for(let i=0;i<paths.length;i+=1){let candidate=getInterpretedFileWithExt(paths[i]);if(candidate)return candidate}}function serverRequire(filePath){let candidatePath=serverResolve(filePath);return candidatePath?interopRequireDefault(candidatePath):null}function serverResolve(filePath){let paths=Array.isArray(filePath)?filePath:[filePath],existingCandidate=getCandidate(paths);return existingCandidate?existingCandidate.path:null}import{dedent}from"ts-dedent";import glob from"glob";import path from"path";function validateConfigurationFiles(configDir){let extensionsPattern=`{${Array.from(boost).join(",")}}`;if(!(file=>!!glob.sync(path.resolve(configDir,`${file}${extensionsPattern}`)).length)("main"))throw new Error(dedent`
|
|
7
|
+
No configuration files have been found in your configDir (${path.resolve(configDir)}).
|
|
12
8
|
Storybook needs either a "main" or "config" file.
|
|
13
|
-
`);if(
|
|
14
|
-
|
|
15
|
-
${
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
You have both a "addons.js" and a "manager.js", remove the "addons.js" file from your configDir (${G.resolve(e,"addons")})`);return r||t}n(Ar,"loadManagerOrAddonsFile");import J from"path";import ct from"ts-dedent";function _r({configDir:e}){let t=b(J.resolve(e,"config")),r=b(J.resolve(e,"preview"));if(t&&r)throw new Error(ct`
|
|
19
|
-
You have both a "config.js" and a "preview.js", remove the "config.js" file from your configDir (${J.resolve(e,"config")})`);return r||t}n(_r,"loadPreviewOrConfigFile");import ft from"chalk";function qr(e,t){console.log(ft.cyan(e)),console.dir(t,{depth:null})}n(qr,"logConfig");import lt from"pretty-hrtime";var xe=n(e=>lt(process.hrtime(e)).replace(" ms"," milliseconds").replace(" s"," seconds").replace(" m"," minutes"),"printDuration");var Ur=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(v=>{g||f.writableEnded||(f.write(`data: ${JSON.stringify(v)}
|
|
9
|
+
`)}function loadCustomPresets({configDir}){validateConfigurationFiles(configDir);let presets=serverRequire(path2.resolve(configDir,"presets"));if(serverRequire(path2.resolve(configDir,"main"))){let resolved=serverResolve(path2.resolve(configDir,"main"));if(resolved)return[resolved]}return presets||[]}import resolveFrom from"resolve-from";var safeResolveFrom=(path12,file)=>{try{return resolveFrom(path12,file)}catch{return}},safeResolve=file=>{try{return __require.resolve(file)}catch{return}};var isObject=val=>val!=null&&typeof val=="object"&&Array.isArray(val)===!1,isFunction=val=>typeof val=="function";function filterPresetsConfig(presetsConfig){return presetsConfig.filter(preset=>{let presetName=typeof preset=="string"?preset:preset.name;return!/@storybook[\\\\/]preset-typescript/.test(presetName)})}function resolvePresetFunction(input,presetOptions,storybookOptions){return isFunction(input)?[...input({...storybookOptions,...presetOptions})]:Array.isArray(input)?[...input]:[]}var resolveAddonName=(configDir,name,options)=>{let resolve=name.startsWith("/")?safeResolve:safeResolveFrom.bind(null,configDir),resolved=resolve(name);if(resolved){let{dir:fdir,name:fname}=parse(resolved);if(name.match(/\/(manager|register(-panel)?)(\.(js|mjs|ts|tsx|jsx))?$/))return{type:"virtual",name,managerEntries:[join(fdir,fname)]};if(name.match(/\/(preset)(\.(js|mjs|ts|tsx|jsx))?$/))return{type:"presets",name:resolved}}let checkExists=exportName=>{if(resolve(`${name}${exportName}`))return`${name}${exportName}`},absolutizeExport=exportName=>resolve(`${name}${exportName}`),managerFile=absolutizeExport("/manager"),registerFile=absolutizeExport("/register")||absolutizeExport("/register-panel"),previewFile=checkExists("/preview"),previewFileAbsolute=absolutizeExport("/preview"),presetFile=absolutizeExport("/preset");if(!(managerFile||previewFile)&&presetFile)return{type:"presets",name:presetFile};if(managerFile||registerFile||previewFile||presetFile){let managerEntries=[];if(managerFile){let{dir:fdir,name:fname}=parse(managerFile);managerEntries.push(join(fdir,fname))}if(!managerFile&®isterFile&&!presetFile){let{dir:fdir,name:fname}=parse(registerFile);managerEntries.push(join(fdir,fname))}return{type:"virtual",name,...managerEntries.length?{managerEntries}:{},...previewFile?{previewAnnotations:[previewFileAbsolute?{bare:previewFile,absolute:previewFileAbsolute}:previewFile]}:{},...presetFile?{presets:[{name:presetFile,options}]}:{}}}if(resolved)return{type:"presets",name:resolved}},map=({configDir})=>item=>{let options=isObject(item)&&item.options||void 0,name=isObject(item)?item.name:item;try{let resolved=resolveAddonName(configDir,name,options);return{...options?{options}:{},...resolved}}catch{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/
|
|
10
|
+
${item}`)}};async function getContent(input){if(input.type==="virtual"){let{type,name:name2,...rest}=input;return rest}let name=input.name?input.name:input;return interopRequireDefault(name)}async function loadPreset(input,level,storybookOptions){try{let name=input.name?input.name:input,presetOptions=input.options?input.options:{},contents=await getContent(input);if(typeof contents=="function"&&(contents=contents(storybookOptions,presetOptions)),Array.isArray(contents))return await loadPresets(contents,level+1,storybookOptions);if(isObject(contents)){let{addons:addonsInput,presets:presetsInput,...rest}=contents,subPresets=resolvePresetFunction(presetsInput,presetOptions,storybookOptions),subAddons=resolvePresetFunction(addonsInput,presetOptions,storybookOptions);return[...await loadPresets([...subPresets],level+1,storybookOptions),...await loadPresets([...subAddons.map(map(storybookOptions))].filter(Boolean),level+1,storybookOptions),{name,preset:rest,options:presetOptions}]}throw new Error(dedent2`
|
|
11
|
+
${input} is not a valid preset
|
|
12
|
+
`)}catch(e){let warning=level>0?` Failed to load preset: ${JSON.stringify(input)} on level ${level}`:` Failed to load preset: ${JSON.stringify(input)}`;return logger.warn(warning),logger.error(e),[]}}async function loadPresets(presets,level,storybookOptions){return!presets||!Array.isArray(presets)||!presets.length?[]:(await Promise.all(presets.map(async preset=>loadPreset(preset,level,storybookOptions)))).reduce((acc,loaded)=>acc.concat(loaded),[])}function applyPresets(presets,extension,config,args,storybookOptions){let presetResult=new Promise(res=>res(config));return presets.length?presets.reduce((accumulationPromise,{preset,options})=>{let change=preset[extension];if(!change)return accumulationPromise;if(typeof change=="function"){let extensionFn=change,context={preset,combinedOptions:{...storybookOptions,...args,...options,presetsList:presets,presets:{apply:async(ext,c,a={})=>applyPresets(presets,ext,c,a,storybookOptions)}}};return accumulationPromise.then(newConfig=>extensionFn.call(context.preset,newConfig,context.combinedOptions))}return accumulationPromise.then(newConfig=>Array.isArray(newConfig)&&Array.isArray(change)?[...newConfig,...change]:isObject(newConfig)&&isObject(change)?{...newConfig,...change}:change)},presetResult):presetResult}async function getPresets(presets,storybookOptions){let loadedPresets=await loadPresets(presets,0,storybookOptions);return{apply:async(extension,config,args={})=>applyPresets(loadedPresets,extension,config,args,storybookOptions)}}async function loadAllPresets(options){let{corePresets=[],overridePresets=[],...restOptions}=options,presetsConfig=[...corePresets,...loadCustomPresets(options),...overridePresets],filteredPresetConfig=filterPresetsConfig(presetsConfig);return filteredPresetConfig.length<presetsConfig.length&&logger.warn("Storybook now supports TypeScript natively. You can safely remove `@storybook/preset-typescript`."),getPresets(filteredPresetConfig,restOptions)}import Cache from"file-system-cache";function createFileSystemCache(options){return Cache(options)}import path3 from"path";import pkgDir from"pkg-dir";function resolvePathInStorybookCache(fileOrDirectoryName){let cwd=process.cwd(),projectDir=pkgDir.sync(cwd),cacheDirectory;return projectDir?cacheDirectory=path3.resolve(projectDir,"node_modules/.cache/storybook"):cacheDirectory=path3.resolve(cwd,".cache/storybook"),path3.join(cacheDirectory,fileOrDirectoryName)}var cache=createFileSystemCache({basePath:resolvePathInStorybookCache("dev-server"),ns:"storybook"});import{logger as logger2}from"@storybook/node-logger";var predicateFor=addon=>entry=>{let name=entry.name||entry;return name&&name.includes(addon)},isCorrectOrder=(addons,before,after)=>{let essentialsIndex=addons.findIndex(predicateFor("@storybook/addon-essentials")),beforeIndex=addons.findIndex(predicateFor(before.name)),afterIndex=addons.findIndex(predicateFor(after.name));return beforeIndex===-1&&before.inEssentials&&(beforeIndex=essentialsIndex),afterIndex===-1&&after.inEssentials&&(afterIndex=essentialsIndex),beforeIndex!==-1&&afterIndex!==-1&&beforeIndex<=afterIndex},checkAddonOrder=async({before,after,configFile,getConfig})=>{try{let config=await getConfig(configFile);if(!config?.addons){logger2.warn("Unable to find 'addons' config in main Storybook config");return}if(!isCorrectOrder(config.addons,before,after)){let orEssentials=" (or '@storybook/addon-essentials')",beforeText=`'${before.name}'${before.inEssentials?orEssentials:""}`,afterText=`'${after.name}'${after.inEssentials?orEssentials:""}`;logger2.warn(`Expected ${beforeText} to be listed before ${afterText} in main Storybook config.`)}}catch{logger2.warn(`Unable to load config file: ${configFile}`)}};import{getEnvironment}from"lazy-universal-dotenv";import path4 from"path";import findUp from"find-up";var getProjectRoot=()=>{let result;try{let found=findUp.sync(".git",{type:"directory"});found&&(result=result||path4.join(found,".."))}catch{}try{let found=findUp.sync(".svn",{type:"directory"});found&&(result=result||path4.join(found,".."))}catch{}try{result=result||__dirname.split("node_modules")[0]}catch{}return result||process.cwd()},nodePathsToArray=nodePath=>nodePath.split(process.platform==="win32"?";":":").filter(Boolean).map(p=>path4.resolve("./",p)),relativePattern=/^\.{1,2}([/\\]|$)/;function normalizeStoryPath(filename){return relativePattern.test(filename)?filename:`.${path4.sep}${filename}`}function loadEnvs(options={}){let defaultNodeEnv=options.production?"production":"development",env={NODE_ENV:process.env.NODE_ENV||defaultNodeEnv,NODE_PATH:process.env.NODE_PATH||"",STORYBOOK:process.env.STORYBOOK||"true",PUBLIC_URL:options.production?".":""};Object.keys(process.env).filter(name=>/^STORYBOOK_/.test(name)).forEach(name=>{env[name]=process.env[name]});let base=Object.entries(env).reduce((acc,[k,v])=>Object.assign(acc,{[k]:JSON.stringify(v)}),{}),{stringified,raw}=getEnvironment({nodeEnv:env.NODE_ENV}),fullRaw={...env,...raw};return fullRaw.NODE_PATH=nodePathsToArray(fullRaw.NODE_PATH||""),{stringified:{...base,...stringified},raw:fullRaw}}var stringifyEnvs=raw=>Object.entries(raw).reduce((acc,[key,value])=>(acc[key]=JSON.stringify(value),acc),{}),stringifyProcessEnvs=raw=>Object.entries(raw).reduce((acc,[key,value])=>(acc[`process.env.${key}`]=JSON.stringify(value),acc),{});import path5 from"path";import{sync as findUpSync}from"find-up";var findDistEsm=(cwd,relativePath)=>{let nearestPackageJson=findUpSync("package.json",{cwd});if(!nearestPackageJson)throw new Error(`Could not find package.json in: ${cwd}`);let packageDir=path5.dirname(nearestPackageJson);return path5.join(packageDir,"dist","esm",relativePath)};import{dedent as dedent3}from"ts-dedent";async function getFrameworkName(options){let framework=await options.presets.apply("framework","",options);if(!framework)throw new Error(dedent3`
|
|
13
|
+
You must specify a framework in '.storybook/main.js' config.
|
|
20
14
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-field-mandatory
|
|
16
|
+
`);return typeof framework=="object"?framework.name:framework}async function getRendererName(options){let{renderer}=await options.presets.apply("core",{},options);return renderer||getFrameworkName(options)}function getStorybookConfiguration(storybookScript,shortName,longName){if(!storybookScript)return null;let parts=storybookScript.split(/[\s='"]+/),index=parts.indexOf(longName);return index===-1&&(index=parts.indexOf(shortName)),index===-1?null:parts[index+1]}import path6 from"path";import fse from"fs-extra";var rendererPackages={"@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"},logger3=console,findDependency=({dependencies,devDependencies,peerDependencies},predicate)=>[Object.entries(dependencies||{}).find(predicate),Object.entries(devDependencies||{}).find(predicate),Object.entries(peerDependencies||{}).find(predicate)],getRendererInfo=packageJson=>{let[dep,devDep,peerDep]=findDependency(packageJson,([key])=>rendererPackages[key]),[pkg,version]=dep||devDep||peerDep||[],renderer=pkg?rendererPackages[pkg]:void 0;return dep&&devDep&&dep[0]===devDep[0]&&logger3.warn(`Found "${dep[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`),dep&&peerDep&&dep[0]===peerDep[0]&&logger3.warn(`Found "${dep[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`),{version,framework:renderer,frameworkPackage:pkg,renderer,rendererPackage:pkg}},validConfigExtensions=["ts","js","tsx","jsx","mjs","cjs"],findConfigFile=(prefix,configDir)=>{let filePrefix=path6.join(configDir,prefix),extension=validConfigExtensions.find(ext=>fse.existsSync(`${filePrefix}.${ext}`));return extension?`${filePrefix}.${extension}`:null},getConfigInfo=packageJson=>{let configDir=".storybook",storybookScript=packageJson.scripts?.storybook;if(storybookScript){let configParam=getStorybookConfiguration(storybookScript,"-c","--config-dir");configParam&&(configDir=configParam)}return{configDir,mainConfig:findConfigFile("main",configDir),previewConfig:findConfigFile("preview",configDir),managerConfig:findConfigFile("manager",configDir)}},getStorybookInfo=packageJson=>{let rendererInfo=getRendererInfo(packageJson),configInfo=getConfigInfo(packageJson);return{...rendererInfo,...configInfo}};import{readJSON}from"fs-extra";import{dirname,join as join2}from"path";import findUp2 from"find-up";import resolveFrom2 from"resolve-from";import{logger as logger4}from"@storybook/node-logger";var getAutoRefs=async options=>{let location=await findUp2("package.json",{cwd:options.configDir});if(!location)return{};let directory=dirname(location),{dependencies=[],devDependencies=[]}=await readJSON(location)||{},deps=Object.keys({...dependencies,...devDependencies});return(await Promise.all(deps.map(async d=>{try{let l=resolveFrom2(directory,join2(d,"package.json")),{storybook,name,version}=await readJSON(l)||{};if(storybook?.url)return{id:name,...storybook,version}}catch(error){if(error.code==="ERR_PACKAGE_PATH_NOT_EXPORTED")return;logger4.warn(`unable to find package.json for ${d}`);return}}))).filter(Boolean).reduce((acc,cur)=>({...acc,[cur.id]:{id:cur.id.toLowerCase(),url:stripTrailingSlash(cur.url),title:cur.title,version:cur.version}}),{})},checkRef=url=>fetch(`${url}/iframe.html`).then(async({ok,status})=>{if(ok){if(status!==200)return!1;let data=await fetch(`${url}/iframe.html`,{headers:{Accept:"application/json"}});if(data.ok&&(await data.json().catch(e=>({}))).loginUrl)return!1}return ok},()=>!1),stripTrailingSlash=url=>url.replace(/\/$/,""),toTitle=input=>{let result=input.replace(/[A-Z]/g,f=>` ${f}`).replace(/[-_][A-Z]/gi,f=>` ${f.toUpperCase()}`).replace(/-/g," ").replace(/_/g," ");return`${result.substring(0,1).toUpperCase()}${result.substring(1)}`.trim()};async function getRefs(options){let refs=await options.presets.apply("refs",await getAutoRefs(options));return Object.entries(refs).forEach(([key,value])=>{if(value.disable){delete refs[key];return}refs[key.toLowerCase()]={...value,id:key.toLowerCase(),title:value.title||toTitle(value.id||key),url:stripTrailingSlash(value.url)}}),await Promise.all(Object.entries(refs).map(async([k,value])=>{let ok=await checkRef(value.url);refs[k]={...value,type:ok?"server-checked":"unknown"}})),refs}import{makeRe}from"picomatch";function globToRegexp(glob2){let regex=makeRe(glob2,{fastpaths:!1,noglobstar:!1,bash:!1});if(!regex.source.startsWith("^"))throw new Error(`Invalid glob: >> ${glob2} >> ${regex}`);return glob2.startsWith("./")?new RegExp(["^\\.",glob2.startsWith("./**")?"":"[\\\\/]",regex.source.substring(1)].join("")):regex}import Handlebars from"handlebars";function handlebars(source,data){return Handlebars.compile(source)(data)}var interpolate=(template,bindings)=>Object.entries(bindings).reduce((acc,[k,v])=>{let escapedString=v.replace(/\\/g,"/").replace(/\$/g,"$$$");return acc.replace(new RegExp(`{{${k}}}`,"g"),escapedString)},template);import path7 from"path";function loadMainConfig({configDir}){return validateConfigurationFiles(configDir),serverRequire(path7.resolve(configDir,"main"))}import path8 from"path";import{logger as logger5}from"@storybook/node-logger";import{dedent as dedent4}from"ts-dedent";function loadManagerOrAddonsFile({configDir}){let storybookCustomAddonsPath=getInterpretedFile(path8.resolve(configDir,"addons")),storybookCustomManagerPath=getInterpretedFile(path8.resolve(configDir,"manager"));if((storybookCustomAddonsPath||storybookCustomManagerPath)&&logger5.info("=> Loading custom manager config"),storybookCustomAddonsPath&&storybookCustomManagerPath)throw new Error(dedent4`
|
|
17
|
+
You have both a "addons.js" and a "manager.js", remove the "addons.js" file from your configDir (${path8.resolve(configDir,"addons")})`);return storybookCustomManagerPath||storybookCustomAddonsPath}import path9 from"path";import{dedent as dedent5}from"ts-dedent";function loadPreviewOrConfigFile({configDir}){let storybookConfigPath=getInterpretedFile(path9.resolve(configDir,"config")),storybookPreviewPath=getInterpretedFile(path9.resolve(configDir,"preview"));if(storybookConfigPath&&storybookPreviewPath)throw new Error(dedent5`
|
|
18
|
+
You have both a "config.js" and a "preview.js", remove the "config.js" file from your configDir (${path9.resolve(configDir,"config")})`);return storybookPreviewPath||storybookConfigPath}import chalk from"chalk";function logConfig(caption,config){console.log(chalk.cyan(caption)),console.dir(config,{depth:null})}import fs2 from"fs";import path10 from"path";import{scan}from"picomatch";import slash from"slash";var DEFAULT_TITLE_PREFIX="",DEFAULT_FILES="**/*.@(mdx|stories.@(tsx|ts|jsx|js))",isDirectory=(configDir,entry)=>{try{return fs2.lstatSync(path10.resolve(configDir,entry)).isDirectory()}catch{return!1}},getDirectoryFromWorkingDir=({configDir,workingDir,directory})=>{let directoryFromConfig=path10.resolve(configDir,directory),directoryFromWorking=path10.relative(workingDir,directoryFromConfig);return normalizeStoryPath(directoryFromWorking)},normalizeStoriesEntry=(entry,{configDir,workingDir})=>{let specifierWithoutMatcher;if(typeof entry=="string"){let globResult=scan(entry);if(globResult.isGlob){let directory2=globResult.prefix+globResult.base,files2=globResult.glob;specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:directory2,files:files2}}else isDirectory(configDir,entry)?specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:entry,files:DEFAULT_FILES}:specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,directory:path10.dirname(entry),files:path10.basename(entry)}}else specifierWithoutMatcher={titlePrefix:DEFAULT_TITLE_PREFIX,files:DEFAULT_FILES,...entry};let files=slash(specifierWithoutMatcher.files),{directory:directoryRelativeToConfig}=specifierWithoutMatcher,directory=slash(getDirectoryFromWorkingDir({configDir,workingDir,directory:directoryRelativeToConfig})).replace(/\/$/,""),importPathMatcher=globToRegexp(`${directory}/${files}`);return{...specifierWithoutMatcher,directory,importPathMatcher}},normalizeStories=(entries,options)=>entries.map(entry=>normalizeStoriesEntry(entry,options));import fse2 from"fs-extra";async function readTemplate(filename){return fse2.readFile(filename,{encoding:"utf8"})}function isPreservingSymlinks(){let{NODE_OPTIONS,NODE_PRESERVE_SYMLINKS}=process.env;return!!NODE_PRESERVE_SYMLINKS||NODE_OPTIONS?.includes("--preserve-symlinks")}import path11 from"path";import{sync}from"pkg-dir";import fs3 from"fs";var interpolate2=(string,data={})=>Object.entries(data).reduce((acc,[k,v])=>acc.replace(new RegExp(`%${k}%`,"g"),v),string);function getPreviewBodyTemplate(configDirPath,interpolations){let base=fs3.readFileSync(`${sync(__dirname)}/templates/base-preview-body.html`,"utf8"),bodyHtmlPath=path11.resolve(configDirPath,"preview-body.html"),result=base;return fs3.existsSync(bodyHtmlPath)&&(result=fs3.readFileSync(bodyHtmlPath,"utf8")+result),interpolate2(result,interpolations)}function getPreviewHeadTemplate(configDirPath,interpolations){let base=fs3.readFileSync(`${sync(__dirname)}/templates/base-preview-head.html`,"utf8"),headHtmlPath=path11.resolve(configDirPath,"preview-head.html"),result=base;return fs3.existsSync(headHtmlPath)&&(result+=fs3.readFileSync(headHtmlPath,"utf8")),interpolate2(result,interpolations)}import{dedent as dedent6}from"ts-dedent";var rendererNames=["@storybook/html","@storybook/preact","@storybook/react","@storybook/server","@storybook/svelte","@storybook/vue","@storybook/vue3","@storybook/web-components"];function validateFrameworkName(frameworkName){if(rendererNames.includes(frameworkName))throw new Error(dedent6`
|
|
19
|
+
Invalid value of ${frameworkName} in the 'framework' field of Storybook config.
|
|
20
|
+
|
|
21
|
+
Please run 'npx sb@next automigrate'
|
|
22
|
+
|
|
23
|
+
See the v7 Migration guide for more information:
|
|
24
|
+
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-field-mandatory
|
|
25
|
+
`)}function satisfies(){return x=>x}export{boost,cache,checkAddonOrder,createFileSystemCache,filterPresetsConfig,findDistEsm,getAutoRefs,getDirectoryFromWorkingDir,getFrameworkName,getInterpretedFile,getInterpretedFileWithExt,getPresets,getPreviewBodyTemplate,getPreviewHeadTemplate,getProjectRoot,getRefs,getRendererName,getStorybookConfiguration,getStorybookInfo,globToRegexp,handlebars,interopRequireDefault,interpolate,isPreservingSymlinks,loadAllPresets,loadCustomPresets,loadEnvs,loadMainConfig,loadManagerOrAddonsFile,loadPreset,loadPreviewOrConfigFile,logConfig,nodePathsToArray,normalizeStories,normalizeStoriesEntry,normalizeStoryPath,readTemplate,resolveAddonName,resolvePathInStorybookCache,satisfies,serverRequire,serverResolve,stringifyEnvs,stringifyProcessEnvs,validateConfigurationFiles,validateFrameworkName};
|
package/jest.config.js
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storybook/core-common",
|
|
3
|
-
"version": "7.0.0-
|
|
3
|
+
"version": "7.0.0-beta.0",
|
|
4
4
|
"description": "Storybook framework-agnostic API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"storybook"
|
|
@@ -42,72 +42,40 @@
|
|
|
42
42
|
"*.d.ts"
|
|
43
43
|
],
|
|
44
44
|
"scripts": {
|
|
45
|
-
"
|
|
45
|
+
"check": "../../../scripts/node_modules/.bin/tsc --noEmit",
|
|
46
|
+
"prep": "../../../scripts/prepare/bundle.ts"
|
|
46
47
|
},
|
|
47
48
|
"dependencies": {
|
|
48
|
-
"@babel/core": "^7.
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
51
|
-
"@
|
|
52
|
-
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
|
|
53
|
-
"@babel/plugin-proposal-object-rest-spread": "^7.12.1",
|
|
54
|
-
"@babel/plugin-proposal-optional-chaining": "^7.12.7",
|
|
55
|
-
"@babel/plugin-proposal-private-methods": "^7.12.1",
|
|
56
|
-
"@babel/plugin-proposal-private-property-in-object": "^7.12.1",
|
|
57
|
-
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
|
58
|
-
"@babel/plugin-transform-arrow-functions": "^7.12.1",
|
|
59
|
-
"@babel/plugin-transform-block-scoping": "^7.12.12",
|
|
60
|
-
"@babel/plugin-transform-classes": "^7.12.1",
|
|
61
|
-
"@babel/plugin-transform-destructuring": "^7.12.1",
|
|
62
|
-
"@babel/plugin-transform-for-of": "^7.12.1",
|
|
63
|
-
"@babel/plugin-transform-parameters": "^7.12.1",
|
|
64
|
-
"@babel/plugin-transform-shorthand-properties": "^7.12.1",
|
|
65
|
-
"@babel/plugin-transform-spread": "^7.12.1",
|
|
66
|
-
"@babel/preset-env": "^7.12.11",
|
|
67
|
-
"@babel/preset-react": "^7.12.10",
|
|
68
|
-
"@babel/preset-typescript": "^7.12.7",
|
|
69
|
-
"@babel/register": "^7.12.1",
|
|
70
|
-
"@storybook/csf": "0.0.2--canary.4566f4d.1",
|
|
71
|
-
"@storybook/node-logger": "7.0.0-alpha.8",
|
|
72
|
-
"@storybook/semver": "^7.3.2",
|
|
73
|
-
"@types/babel__core": "^7.0.0",
|
|
49
|
+
"@babel/core": "^7.20.2",
|
|
50
|
+
"@storybook/node-logger": "7.0.0-beta.0",
|
|
51
|
+
"@storybook/types": "7.0.0-beta.0",
|
|
52
|
+
"@types/babel__core": "^7.1.20",
|
|
74
53
|
"@types/express": "^4.7.0",
|
|
75
|
-
"@types/node": "^
|
|
54
|
+
"@types/node": "^16.0.0",
|
|
76
55
|
"@types/pretty-hrtime": "^1.0.0",
|
|
77
|
-
"babel-loader": "^8.2.5",
|
|
78
|
-
"babel-plugin-macros": "^3.0.1",
|
|
79
|
-
"babel-plugin-polyfill-corejs3": "^0.1.0",
|
|
80
56
|
"chalk": "^4.1.0",
|
|
81
|
-
"
|
|
57
|
+
"esbuild": "^0.14.48",
|
|
58
|
+
"esbuild-register": "^3.3.3",
|
|
82
59
|
"express": "^4.17.1",
|
|
83
|
-
"file-system-cache": "^
|
|
60
|
+
"file-system-cache": "^2.0.0",
|
|
84
61
|
"find-up": "^5.0.0",
|
|
85
62
|
"fs-extra": "^9.0.1",
|
|
86
63
|
"glob": "^7.1.6",
|
|
87
64
|
"handlebars": "^4.7.7",
|
|
88
|
-
"interpret": "^2.2.0",
|
|
89
|
-
"json5": "^2.1.3",
|
|
90
65
|
"lazy-universal-dotenv": "^3.0.1",
|
|
91
66
|
"picomatch": "^2.3.0",
|
|
92
67
|
"pkg-dir": "^5.0.0",
|
|
93
68
|
"pretty-hrtime": "^1.0.3",
|
|
94
69
|
"resolve-from": "^5.0.0",
|
|
95
70
|
"slash": "^3.0.0",
|
|
96
|
-
"
|
|
97
|
-
"ts-dedent": "^2.0.0",
|
|
98
|
-
"util-deprecate": "^1.0.2"
|
|
71
|
+
"ts-dedent": "^2.0.0"
|
|
99
72
|
},
|
|
100
73
|
"devDependencies": {
|
|
101
|
-
"@
|
|
102
|
-
"@types/compression": "^1.7.0",
|
|
103
|
-
"@types/interpret": "^1.1.1",
|
|
104
|
-
"@types/mock-fs": "^4.13.0",
|
|
74
|
+
"@types/mock-fs": "^4.13.1",
|
|
105
75
|
"@types/picomatch": "^2.3.0",
|
|
106
|
-
"mock-fs": "^
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
|
|
110
|
-
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
|
76
|
+
"mock-fs": "^5.2.0",
|
|
77
|
+
"type-fest": "^2.19.0",
|
|
78
|
+
"typescript": "~4.9.3"
|
|
111
79
|
},
|
|
112
80
|
"peerDependenciesMeta": {
|
|
113
81
|
"typescript": {
|
|
@@ -117,8 +85,11 @@
|
|
|
117
85
|
"publishConfig": {
|
|
118
86
|
"access": "public"
|
|
119
87
|
},
|
|
120
|
-
"
|
|
121
|
-
"
|
|
122
|
-
|
|
123
|
-
|
|
88
|
+
"bundler": {
|
|
89
|
+
"entries": [
|
|
90
|
+
"./src/index.ts"
|
|
91
|
+
],
|
|
92
|
+
"platform": "node"
|
|
93
|
+
},
|
|
94
|
+
"gitHead": "2e4ddde6a0a291266d91fe6a5ecda767bf119e70"
|
|
124
95
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<style>
|
|
4
4
|
/* While we aren't showing the main block yet, but still preparing, we want everything the user
|
|
5
|
-
has rendered, which may or may not be in #root, to be display none */
|
|
5
|
+
has rendered, which may or may not be in #storybook-root, to be display none */
|
|
6
6
|
.sb-show-preparing-story:not(.sb-show-main) > :not(.sb-preparing-story) {
|
|
7
7
|
display: none;
|
|
8
8
|
}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
min-height: 100vh;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
.sb-show-main.sb-main-centered #root {
|
|
29
|
+
.sb-show-main.sb-main-centered #storybook-root {
|
|
30
30
|
box-sizing: border-box;
|
|
31
31
|
margin: auto;
|
|
32
32
|
padding: 1rem;
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
The MIT License (MIT)
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2017 Kadira Inc. <hello@kadira.io>
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
|
13
|
-
all copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
-
THE SOFTWARE.
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
<style>
|
|
2
|
-
html, body {
|
|
3
|
-
overflow: hidden;
|
|
4
|
-
height: 100%;
|
|
5
|
-
width: 100%;
|
|
6
|
-
margin: 0;
|
|
7
|
-
padding: 0;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
* {
|
|
11
|
-
box-sizing: border-box;
|
|
12
|
-
}
|
|
13
|
-
</style>
|
|
14
|
-
|
|
15
|
-
<script>
|
|
16
|
-
/* globals window */
|
|
17
|
-
/* eslint-disable no-underscore-dangle */
|
|
18
|
-
try {
|
|
19
|
-
if (window.top !== window) {
|
|
20
|
-
window.__REACT_DEVTOOLS_GLOBAL_HOOK__ = window.top.__REACT_DEVTOOLS_GLOBAL_HOOK__;
|
|
21
|
-
}
|
|
22
|
-
} catch (e) {
|
|
23
|
-
// eslint-disable-next-line no-console
|
|
24
|
-
console.warn('unable to connect to top frame for connecting dev tools');
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
window.onerror = function onerror(message, source, line, column, err) {
|
|
28
|
-
if (window.CONFIG_TYPE !== 'DEVELOPMENT') return;
|
|
29
|
-
// eslint-disable-next-line no-var, vars-on-top
|
|
30
|
-
var xhr = new window.XMLHttpRequest();
|
|
31
|
-
xhr.open('POST', '/runtime-error');
|
|
32
|
-
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
|
|
33
|
-
xhr.send(
|
|
34
|
-
JSON.stringify({
|
|
35
|
-
/* eslint-disable object-shorthand */
|
|
36
|
-
message: message,
|
|
37
|
-
source: source,
|
|
38
|
-
line: line,
|
|
39
|
-
column: column,
|
|
40
|
-
error: err && { message: err.message, name: err.name, stack: err.stack },
|
|
41
|
-
origin: 'manager',
|
|
42
|
-
/* eslint-enable object-shorthand */
|
|
43
|
-
})
|
|
44
|
-
);
|
|
45
|
-
};
|
|
46
|
-
</script>
|
package/templates/index.ejs
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" />
|
|
5
|
-
<title><%= htmlWebpackPlugin.options.title || 'Storybook'%></title>
|
|
6
|
-
|
|
7
|
-
<% if (htmlWebpackPlugin.files.favicon) { %>
|
|
8
|
-
<link rel="shortcut icon" href="<%= htmlWebpackPlugin.files.favicon%>" />
|
|
9
|
-
<% } %>
|
|
10
|
-
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
|
|
13
|
-
<% if (typeof headHtmlSnippet !== 'undefined') { %> <%= headHtmlSnippet %> <% } %> <%
|
|
14
|
-
htmlWebpackPlugin.files.css.forEach(file => { %>
|
|
15
|
-
<link href="<%= file %>" rel="stylesheet" />
|
|
16
|
-
<% }); %>
|
|
17
|
-
|
|
18
|
-
<style>
|
|
19
|
-
#root[hidden],
|
|
20
|
-
#docs-root[hidden] {
|
|
21
|
-
display: none !important;
|
|
22
|
-
}
|
|
23
|
-
</style>
|
|
24
|
-
</head>
|
|
25
|
-
<body>
|
|
26
|
-
<% if (typeof bodyHtmlSnippet !== 'undefined') { %> <%= bodyHtmlSnippet %> <% } %>
|
|
27
|
-
|
|
28
|
-
<div id="root"></div>
|
|
29
|
-
<div id="docs-root"></div>
|
|
30
|
-
|
|
31
|
-
<% if (typeof globals !== 'undefined' && Object.keys(globals).length) { %>
|
|
32
|
-
<script>
|
|
33
|
-
<% for (var varName in globals) { %>
|
|
34
|
-
<% if (globals[varName] != undefined) { %>
|
|
35
|
-
window['<%=varName%>'] = <%= JSON.stringify(globals[varName]) %>;
|
|
36
|
-
<% } %>
|
|
37
|
-
<% } %>
|
|
38
|
-
</script>
|
|
39
|
-
<% } %> <% htmlWebpackPlugin.files.js.forEach(file => { %>
|
|
40
|
-
<script src="<%= file %>"></script>
|
|
41
|
-
<% }); %>
|
|
42
|
-
</body>
|
|
43
|
-
</html>
|