creevey 0.9.0-beta.2 → 0.9.0-beta.20
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/.yarn/install-state.gz +0 -0
- package/.yarnrc.yml +1 -0
- package/CHANGELOG.md +51 -0
- package/README.md +9 -1
- package/addon/README.md +3 -0
- package/addon/package.json +5 -0
- package/docs/config.md +29 -26
- package/jest.config.js +6 -0
- package/lib/cjs/cli.js +1 -0
- package/lib/cjs/client/addon/Manager.js +170 -390
- package/lib/cjs/client/addon/components/Addon.js +17 -45
- package/lib/cjs/client/addon/components/Icons.js +12 -14
- package/lib/cjs/client/addon/components/Panel.js +21 -30
- package/lib/cjs/client/addon/components/TestSelect.js +20 -31
- package/lib/cjs/client/addon/components/Tools.js +35 -65
- package/lib/cjs/client/addon/decorator.js +1 -4
- package/lib/cjs/client/addon/index.js +27 -0
- package/lib/cjs/client/addon/preset.js +3 -76
- package/lib/cjs/client/addon/preview.js +11 -0
- package/lib/cjs/client/addon/readyForCapture.js +1 -4
- package/lib/cjs/client/addon/register.js +43 -82
- package/lib/cjs/client/addon/utils.js +4 -8
- package/lib/cjs/client/addon/withCreevey.js +145 -404
- package/lib/cjs/client/shared/components/ImagesView/BlendView.js +25 -35
- package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +29 -41
- package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +46 -83
- package/lib/cjs/client/shared/components/ImagesView/SlideView.js +39 -67
- package/lib/cjs/client/shared/components/ImagesView/SwapView.js +26 -57
- package/lib/cjs/client/shared/components/ImagesView/index.js +9 -14
- package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +13 -16
- package/lib/cjs/client/shared/components/PageFooter/Paging.js +16 -37
- package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +42 -34
- package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +40 -84
- package/lib/cjs/client/shared/components/ResultsPage.js +42 -99
- package/lib/cjs/client/shared/creeveyClientApi.js +56 -93
- package/lib/cjs/client/shared/helpers.js +149 -274
- package/lib/cjs/client/shared/viewMode.js +5 -9
- package/lib/cjs/client/web/192.js +1 -0
- package/lib/cjs/client/web/632.js +43 -0
- package/lib/cjs/client/web/794.js +1 -0
- package/lib/cjs/client/web/main.js +79 -38
- package/lib/cjs/client/web/main.js.LICENSE.txt +34 -0
- package/lib/cjs/creevey.js +15 -30
- package/lib/cjs/index.js +0 -15
- package/lib/cjs/server/config.js +16 -36
- package/lib/cjs/server/docker.js +8 -34
- package/lib/cjs/server/index.js +9 -34
- package/lib/cjs/server/logger.js +7 -20
- package/lib/cjs/server/master/api.js +1 -14
- package/lib/cjs/server/master/index.js +25 -49
- package/lib/cjs/server/master/master.js +6 -21
- package/lib/cjs/server/master/pool.js +10 -53
- package/lib/cjs/server/master/runner.js +65 -105
- package/lib/cjs/server/master/server.js +10 -29
- package/lib/cjs/server/messages.js +14 -62
- package/lib/cjs/server/selenium/browser.js +149 -185
- package/lib/cjs/server/selenium/index.js +0 -4
- package/lib/cjs/server/selenium/selenoid.js +18 -44
- package/lib/cjs/server/stories.js +35 -57
- package/lib/cjs/server/storybook/providers/browser.js +15 -29
- package/lib/cjs/server/storybook/providers/hybrid.js +16 -37
- package/lib/cjs/server/telemetry.js +167 -0
- package/lib/cjs/server/testsFiles/parser.js +3 -19
- package/lib/cjs/server/testsFiles/register.js +8 -14
- package/lib/cjs/server/update.js +4 -25
- package/lib/cjs/server/utils.js +35 -76
- package/lib/cjs/server/worker/chai-image.js +1 -27
- package/lib/cjs/server/worker/helpers.js +2 -12
- package/lib/cjs/server/worker/index.js +1 -3
- package/lib/cjs/server/worker/reporter.js +16 -43
- package/lib/cjs/server/worker/worker.js +32 -72
- package/lib/cjs/shared/index.js +87 -0
- package/lib/cjs/shared/serializeRegExp.js +34 -0
- package/lib/cjs/types.js +11 -20
- package/lib/esm/cli.js +1 -1
- package/lib/esm/client/addon/Manager.js +170 -381
- package/lib/esm/client/addon/components/Addon.js +15 -34
- package/lib/esm/client/addon/components/Icons.js +10 -6
- package/lib/esm/client/addon/components/Panel.js +20 -18
- package/lib/esm/client/addon/components/TestSelect.js +19 -23
- package/lib/esm/client/addon/components/Tools.js +33 -49
- package/lib/esm/client/addon/decorator.js +1 -1
- package/lib/esm/client/addon/index.js +2 -0
- package/lib/esm/client/addon/preset.js +2 -56
- package/lib/esm/client/addon/preview.js +5 -0
- package/lib/esm/client/addon/readyForCapture.js +1 -3
- package/lib/esm/client/addon/register.js +41 -67
- package/lib/esm/client/addon/utils.js +3 -7
- package/lib/esm/client/addon/withCreevey.js +142 -388
- package/lib/esm/client/shared/components/ImagesView/BlendView.js +22 -18
- package/lib/esm/client/shared/components/ImagesView/ImagesView.js +27 -25
- package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +43 -63
- package/lib/esm/client/shared/components/ImagesView/SlideView.js +36 -47
- package/lib/esm/client/shared/components/ImagesView/SwapView.js +23 -40
- package/lib/esm/client/shared/components/PageFooter/PageFooter.js +12 -8
- package/lib/esm/client/shared/components/PageFooter/Paging.js +15 -29
- package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +40 -25
- package/lib/esm/client/shared/components/PageHeader/PageHeader.js +38 -66
- package/lib/esm/client/shared/components/ResultsPage.js +39 -75
- package/lib/esm/client/shared/creeveyClientApi.js +56 -90
- package/lib/esm/client/shared/helpers.js +133 -230
- package/lib/esm/client/shared/viewMode.js +4 -4
- package/lib/esm/client/web/192.js +1 -0
- package/lib/esm/client/web/632.js +43 -0
- package/lib/esm/client/web/794.js +1 -0
- package/lib/esm/client/web/index.html +19 -0
- package/lib/esm/client/web/main.js +79 -0
- package/lib/esm/client/web/main.js.LICENSE.txt +34 -0
- package/lib/esm/creevey.js +13 -16
- package/lib/esm/index.js +1 -4
- package/lib/esm/server/config.js +9 -16
- package/lib/esm/server/docker.js +6 -14
- package/lib/esm/server/index.js +8 -22
- package/lib/esm/server/logger.js +0 -1
- package/lib/esm/server/master/api.js +0 -9
- package/lib/esm/server/master/index.js +25 -35
- package/lib/esm/server/master/master.js +2 -7
- package/lib/esm/server/master/pool.js +8 -41
- package/lib/esm/server/master/runner.js +64 -90
- package/lib/esm/server/master/server.js +9 -11
- package/lib/esm/server/messages.js +8 -42
- package/lib/esm/server/selenium/browser.js +147 -163
- package/lib/esm/server/selenium/selenoid.js +16 -27
- package/lib/esm/server/stories.js +34 -46
- package/lib/esm/server/storybook/providers/browser.js +12 -17
- package/lib/esm/server/storybook/providers/hybrid.js +11 -22
- package/lib/esm/server/telemetry.js +160 -0
- package/lib/esm/server/testsFiles/parser.js +0 -6
- package/lib/esm/server/testsFiles/register.js +6 -7
- package/lib/esm/server/update.js +1 -13
- package/lib/esm/server/utils.js +20 -41
- package/lib/esm/server/worker/chai-image.js +0 -21
- package/lib/esm/server/worker/helpers.js +2 -9
- package/lib/esm/server/worker/reporter.js +15 -29
- package/lib/esm/server/worker/worker.js +31 -48
- package/lib/esm/shared/index.js +77 -0
- package/lib/esm/shared/serializeRegExp.js +24 -0
- package/lib/esm/types.js +5 -1
- package/lib/types/client/addon/Manager.d.ts +3 -3
- package/lib/types/client/addon/components/Addon.d.ts +1 -0
- package/lib/types/client/addon/components/Icons.d.ts +1 -0
- package/lib/types/client/addon/components/Panel.d.ts +1 -0
- package/lib/types/client/addon/components/Tools.d.ts +1 -0
- package/lib/types/client/addon/decorator.d.ts +1 -1
- package/lib/types/client/addon/index.d.ts +2 -0
- package/lib/types/client/addon/preset.d.ts +2 -24
- package/lib/types/client/addon/preview.d.ts +4 -0
- package/lib/types/client/addon/utils.d.ts +1 -0
- package/lib/types/client/addon/withCreevey.d.ts +4 -3
- package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +3 -1
- package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +3 -1
- package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +3 -1
- package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +3 -1
- package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +3 -1
- package/lib/types/client/shared/components/ResultsPage.d.ts +3 -1
- package/lib/types/client/web/CreeveyLoader.d.ts +1 -1
- package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +6 -3
- package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +1 -0
- package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +19 -14
- package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +3 -1
- package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +3 -1
- package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +1 -0
- package/lib/types/client/web/KeyboardEventsContext.d.ts +4 -2
- package/lib/types/index.d.ts +4 -1
- package/lib/types/server/logger.d.ts +6 -2
- package/lib/types/server/messages.d.ts +14 -12
- package/lib/types/server/selenium/browser.d.ts +5 -3
- package/lib/types/server/storybook/providers/browser.d.ts +2 -4
- package/lib/types/server/storybook/providers/hybrid.d.ts +2 -4
- package/lib/types/server/telemetry.d.ts +2 -0
- package/lib/types/server/utils.d.ts +5 -1
- package/lib/types/shared/index.d.ts +7 -0
- package/lib/types/shared/serializeRegExp.d.ts +9 -0
- package/lib/types/types.d.ts +29 -36
- package/package.json +132 -133
- package/types/global.d.ts +5 -0
- package/lib/cjs/client/web/1.js +0 -13
- package/lib/cjs/client/web/2.js +0 -1
- package/lib/cjs/server/extract.js +0 -50
- package/lib/cjs/server/loaders/babel/creevey-plugin.js +0 -88
- package/lib/cjs/server/loaders/babel/helpers.js +0 -479
- package/lib/cjs/server/loaders/babel/register.js +0 -126
- package/lib/cjs/server/loaders/hooks/mdx.js +0 -30
- package/lib/cjs/server/loaders/hooks/svelte.js +0 -65
- package/lib/cjs/server/loaders/webpack/compile.js +0 -286
- package/lib/cjs/server/loaders/webpack/creevey-loader.js +0 -174
- package/lib/cjs/server/loaders/webpack/dummy-hmr.js +0 -44
- package/lib/cjs/server/loaders/webpack/mdx-loader.js +0 -72
- package/lib/cjs/server/loaders/webpack/start.js +0 -41
- package/lib/cjs/server/storybook/entry.js +0 -68
- package/lib/cjs/server/storybook/helpers.js +0 -165
- package/lib/cjs/server/storybook/providers/nodejs.js +0 -239
- package/lib/cjs/shared.js +0 -124
- package/lib/esm/server/extract.js +0 -34
- package/lib/esm/server/loaders/babel/creevey-plugin.js +0 -74
- package/lib/esm/server/loaders/babel/helpers.js +0 -462
- package/lib/esm/server/loaders/babel/register.js +0 -105
- package/lib/esm/server/loaders/hooks/mdx.js +0 -15
- package/lib/esm/server/loaders/hooks/svelte.js +0 -49
- package/lib/esm/server/loaders/webpack/compile.js +0 -263
- package/lib/esm/server/loaders/webpack/creevey-loader.js +0 -153
- package/lib/esm/server/loaders/webpack/dummy-hmr.js +0 -36
- package/lib/esm/server/loaders/webpack/mdx-loader.js +0 -58
- package/lib/esm/server/loaders/webpack/start.js +0 -27
- package/lib/esm/server/storybook/entry.js +0 -44
- package/lib/esm/server/storybook/helpers.js +0 -106
- package/lib/esm/server/storybook/providers/nodejs.js +0 -217
- package/lib/esm/shared.js +0 -93
- package/lib/types/server/extract.d.ts +0 -2
- package/lib/types/server/loaders/babel/creevey-plugin.d.ts +0 -1
- package/lib/types/server/loaders/babel/helpers.d.ts +0 -19
- package/lib/types/server/loaders/babel/register.d.ts +0 -5
- package/lib/types/server/loaders/hooks/mdx.d.ts +0 -1
- package/lib/types/server/loaders/hooks/svelte.d.ts +0 -1
- package/lib/types/server/loaders/webpack/compile.d.ts +0 -2
- package/lib/types/server/loaders/webpack/creevey-loader.d.ts +0 -2
- package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +0 -10
- package/lib/types/server/loaders/webpack/mdx-loader.d.ts +0 -6
- package/lib/types/server/loaders/webpack/start.d.ts +0 -1
- package/lib/types/server/storybook/entry.d.ts +0 -18
- package/lib/types/server/storybook/helpers.d.ts +0 -24
- package/lib/types/server/storybook/providers/nodejs.d.ts +0 -9
- package/lib/types/shared.d.ts +0 -16
- package/preset.js +0 -9
- package/storybook-static/stories.json +0 -21
- package/types/mdx.d.ts +0 -6
@@ -1,106 +0,0 @@
|
|
1
|
-
import path from 'path';
|
2
|
-
import resolveFrom from 'resolve-from';
|
3
|
-
const supportedFrameworks = ['react', 'vue', 'vue3', 'angular', 'marionette', 'mithril', 'marko', 'html', 'svelte', 'riot', 'ember', 'preact', 'rax', 'aurelia', 'server', 'web-components'];
|
4
|
-
export const storybookDirRef = {
|
5
|
-
current: path.resolve('.storybook')
|
6
|
-
};
|
7
|
-
export const resolveFromStorybook = modulePath => resolveFrom(storybookDirRef.current, modulePath);
|
8
|
-
export const resolveFromStorybookAddonDocs = modulePath => resolveFrom(resolveFromStorybook('@storybook/addon-docs'), modulePath);
|
9
|
-
export const resolveFromStorybookBuilderWebpack4 = modulePath => resolveFrom(resolveFromStorybook('@storybook/builder-webpack4'), modulePath);
|
10
|
-
export const resolveFromStorybookCore = modulePath => resolveFrom(resolveFromStorybook('@storybook/core'), modulePath);
|
11
|
-
export const resolveFromStorybookCoreServer = modulePath => resolveFrom(resolveFromStorybook('@storybook/core-server'), modulePath);
|
12
|
-
|
13
|
-
const importFromStorybook = modulePath => import(resolveFromStorybook(modulePath));
|
14
|
-
|
15
|
-
export const importStorybookClientLogger = () => importFromStorybook('@storybook/client-logger');
|
16
|
-
export const importStorybookCoreCommon = () => importFromStorybook('@storybook/core-common');
|
17
|
-
export const importStorybookCoreEvents = () => importFromStorybook('@storybook/core-events');
|
18
|
-
export function hasDocsAddon() {
|
19
|
-
try {
|
20
|
-
resolveFromStorybook('@storybook/addon-docs');
|
21
|
-
return true;
|
22
|
-
} catch (_) {
|
23
|
-
return false;
|
24
|
-
}
|
25
|
-
}
|
26
|
-
export function hasSvelteCSFAddon() {
|
27
|
-
try {
|
28
|
-
resolveFromStorybook('@storybook/addon-svelte-csf');
|
29
|
-
return true;
|
30
|
-
} catch (_) {
|
31
|
-
return false;
|
32
|
-
}
|
33
|
-
}
|
34
|
-
export function getStorybookVersion() {
|
35
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
36
|
-
const {
|
37
|
-
version
|
38
|
-
} = require(resolveFromStorybook('@storybook/core/package.json'));
|
39
|
-
|
40
|
-
return version;
|
41
|
-
}
|
42
|
-
export function isStorybookVersionLessThan(major, minor) {
|
43
|
-
var _process$env$__CREEVE;
|
44
|
-
|
45
|
-
const [sbMajor, sbMinor] = ((_process$env$__CREEVE = process.env.__CREEVEY_STORYBOOK_VERSION__) !== null && _process$env$__CREEVE !== void 0 ? _process$env$__CREEVE : getStorybookVersion()).split('.');
|
46
|
-
return Number(sbMajor) < major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) < minor;
|
47
|
-
}
|
48
|
-
export function isStorybookVersionGreaterThan(major, minor) {
|
49
|
-
var _process$env$__CREEVE2;
|
50
|
-
|
51
|
-
const [sbMajor, sbMinor] = ((_process$env$__CREEVE2 = process.env.__CREEVEY_STORYBOOK_VERSION__) !== null && _process$env$__CREEVE2 !== void 0 ? _process$env$__CREEVE2 : getStorybookVersion()).split('.');
|
52
|
-
return Number(sbMajor) > major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) > minor;
|
53
|
-
}
|
54
|
-
export function isStorybookVersion(major, minor) {
|
55
|
-
var _process$env$__CREEVE3;
|
56
|
-
|
57
|
-
const [sbMajor, sbMinor] = ((_process$env$__CREEVE3 = process.env.__CREEVEY_STORYBOOK_VERSION__) !== null && _process$env$__CREEVE3 !== void 0 ? _process$env$__CREEVE3 : getStorybookVersion()).split('.');
|
58
|
-
return Number(sbMajor) == major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) == minor;
|
59
|
-
}
|
60
|
-
export function getStorybookFramework() {
|
61
|
-
var _process$env$__CREEVE4;
|
62
|
-
|
63
|
-
const framework = (_process$env$__CREEVE4 = process.env.__CREEVEY_STORYBOOK_FRAMEWORK__) !== null && _process$env$__CREEVE4 !== void 0 ? _process$env$__CREEVE4 : supportedFrameworks.find(framework => {
|
64
|
-
try {
|
65
|
-
return require.resolve(resolveFromStorybook(`@storybook/${framework}`));
|
66
|
-
} catch (_) {
|
67
|
-
return false;
|
68
|
-
}
|
69
|
-
});
|
70
|
-
if (!framework) throw new Error("Couldn't detect used Storybook framework. Please ensure that you install `@storybook/<framework>` package");
|
71
|
-
return framework;
|
72
|
-
}
|
73
|
-
export const storybookConfigRef = {
|
74
|
-
current: {
|
75
|
-
stories: []
|
76
|
-
}
|
77
|
-
};
|
78
|
-
export async function importStorybookConfig() {
|
79
|
-
const configPath = `${storybookDirRef.current}/main`;
|
80
|
-
|
81
|
-
try {
|
82
|
-
return storybookConfigRef.current = (await import(require.resolve(configPath))).default;
|
83
|
-
} catch (_) {
|
84
|
-
const storybookUtilsPath = isStorybookVersionLessThan(6, 2) ? '@storybook/core/dist/server/utils' : '@storybook/core-common/dist/cjs/utils';
|
85
|
-
const serverRequireModule = isStorybookVersionLessThan(6, 2) ? 'server-require' : 'interpret-require'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
86
|
-
|
87
|
-
const {
|
88
|
-
getInterpretedFile
|
89
|
-
} = await import(resolveFromStorybook(`${storybookUtilsPath}/interpret-files`)); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
90
|
-
|
91
|
-
const {
|
92
|
-
default: serverRequireFallback,
|
93
|
-
serverRequire = serverRequireFallback
|
94
|
-
} = await import(resolveFromStorybook(`${storybookUtilsPath}/${serverRequireModule}`)); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
95
|
-
|
96
|
-
const mainConfigFile = isStorybookVersionLessThan(6, 1) ? configPath : // eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
97
|
-
getInterpretedFile(configPath); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
|
98
|
-
|
99
|
-
return storybookConfigRef.current = serverRequire(mainConfigFile);
|
100
|
-
}
|
101
|
-
}
|
102
|
-
export async function isCSFv3Enabled() {
|
103
|
-
var _await$importStoryboo, _await$importStoryboo2, _await$importStoryboo3;
|
104
|
-
|
105
|
-
return (_await$importStoryboo = (_await$importStoryboo2 = await importStorybookConfig()) === null || _await$importStoryboo2 === void 0 ? void 0 : (_await$importStoryboo3 = _await$importStoryboo2.features) === null || _await$importStoryboo3 === void 0 ? void 0 : _await$importStoryboo3.previewCsfV3) !== null && _await$importStoryboo !== void 0 ? _await$importStoryboo : false;
|
106
|
-
}
|
@@ -1,217 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/ban-ts-comment */
|
2
|
-
import path from 'path';
|
3
|
-
import { isWorker, isMaster } from 'cluster';
|
4
|
-
import chokidar from 'chokidar';
|
5
|
-
import { noop } from '../../../types';
|
6
|
-
import { getCreeveyCache } from '../../utils';
|
7
|
-
import { subscribeOn } from '../../messages';
|
8
|
-
import { importStorybookClientLogger, importStorybookConfig, importStorybookCoreCommon, importStorybookCoreEvents, isStorybookVersionGreaterThan, isStorybookVersionLessThan } from '../helpers';
|
9
|
-
import { logger } from '../../logger';
|
10
|
-
import { denormalizeStoryParameters } from '../../../shared';
|
11
|
-
|
12
|
-
async function initStorybookEnvironment() {
|
13
|
-
// @ts-expect-error There is no @types/global-jsdom package
|
14
|
-
(await import('global-jsdom')).default(undefined, {
|
15
|
-
url: 'http://localhost'
|
16
|
-
}); // NOTE Cutoff `jsdom` part from userAgent, because storybook check enviroment and create events channel if runs in browser
|
17
|
-
// https://github.com/storybookjs/storybook/blob/v5.2.8/lib/core/src/client/preview/start.js#L98
|
18
|
-
// Example: "Mozilla/5.0 (linux) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/15.2.1"
|
19
|
-
|
20
|
-
Object.defineProperty(window.navigator, 'userAgent', {
|
21
|
-
value: window.navigator.userAgent.split(' ').filter(token => !token.startsWith('jsdom')).join(' ')
|
22
|
-
}); // TODO Look at creevey debug flag
|
23
|
-
|
24
|
-
const {
|
25
|
-
logger
|
26
|
-
} = await importStorybookClientLogger(); // NOTE: Disable duplication warnings for >=6.2 storybook
|
27
|
-
|
28
|
-
if (isWorker) logger.warn = noop; // NOTE: disable logger for 5.x storybook
|
29
|
-
|
30
|
-
logger.debug = noop;
|
31
|
-
return import('../entry');
|
32
|
-
}
|
33
|
-
|
34
|
-
function watchStories(channel, watcher, initialFiles) {
|
35
|
-
const watchingFiles = initialFiles;
|
36
|
-
let storiesByFiles = new Map();
|
37
|
-
subscribeOn('shutdown', () => void watcher.close());
|
38
|
-
watcher.add(Array.from(watchingFiles));
|
39
|
-
watcher.on('change', filePath => storiesByFiles.set(path.isAbsolute(filePath) ? filePath : `./${filePath.replace(/\\/g, '/')}`, []));
|
40
|
-
watcher.on('unlink', filePath => storiesByFiles.set(path.isAbsolute(filePath) ? filePath : `./${filePath.replace(/\\/g, '/')}`, []));
|
41
|
-
return data => {
|
42
|
-
const stories = isStorybookVersionLessThan(6) || isStorybookVersionGreaterThan(6, 3) ? data.stories : denormalizeStoryParameters(data);
|
43
|
-
const files = new Set(Object.values(stories).map(story => story.parameters.fileName));
|
44
|
-
const addedFiles = Array.from(files).filter(filePath => !watchingFiles.has(filePath));
|
45
|
-
const removedFiles = Array.from(watchingFiles).filter(filePath => !files.has(filePath));
|
46
|
-
watcher.add(addedFiles);
|
47
|
-
addedFiles.forEach(filePath => {
|
48
|
-
watchingFiles.add(filePath);
|
49
|
-
storiesByFiles.set(filePath, []);
|
50
|
-
});
|
51
|
-
removedFiles.forEach(filePath => watchingFiles.delete(filePath));
|
52
|
-
Object.values(stories).forEach(story => {
|
53
|
-
var _storiesByFiles$get;
|
54
|
-
|
55
|
-
return (_storiesByFiles$get = storiesByFiles.get(story.parameters.fileName)) === null || _storiesByFiles$get === void 0 ? void 0 : _storiesByFiles$get.push(story);
|
56
|
-
});
|
57
|
-
channel.emit('storiesUpdated', storiesByFiles);
|
58
|
-
storiesByFiles = new Map();
|
59
|
-
};
|
60
|
-
}
|
61
|
-
|
62
|
-
function loadStoriesFromBundle(watch) {
|
63
|
-
const bundlePath = path.join(getCreeveyCache(), 'storybook/main.js');
|
64
|
-
|
65
|
-
if (watch) {
|
66
|
-
subscribeOn('webpack', message => {
|
67
|
-
if (message.type != 'rebuild succeeded') return;
|
68
|
-
Object.values(global.__CREEVEY_HMR_DATA__).filter(({
|
69
|
-
callback
|
70
|
-
}) => callback).forEach(({
|
71
|
-
data,
|
72
|
-
callback
|
73
|
-
}) => callback(data));
|
74
|
-
delete require.cache[bundlePath];
|
75
|
-
import(bundlePath);
|
76
|
-
});
|
77
|
-
}
|
78
|
-
|
79
|
-
import(bundlePath);
|
80
|
-
}
|
81
|
-
|
82
|
-
async function loadStoriesDirectly(config, {
|
83
|
-
watcher,
|
84
|
-
debug
|
85
|
-
}) {
|
86
|
-
const {
|
87
|
-
toRequireContext,
|
88
|
-
normalizeStoriesEntry
|
89
|
-
} = await importStorybookCoreCommon();
|
90
|
-
const {
|
91
|
-
addParameters,
|
92
|
-
configure
|
93
|
-
} = await import('../entry');
|
94
|
-
const requireContext = await (await import('../../loaders/babel/register')).default(config, debug);
|
95
|
-
|
96
|
-
const preview = (() => {
|
97
|
-
try {
|
98
|
-
return require.resolve(`${config.storybookDir}/preview`);
|
99
|
-
} catch (_) {
|
100
|
-
/* noop */
|
101
|
-
}
|
102
|
-
})();
|
103
|
-
|
104
|
-
const {
|
105
|
-
stories
|
106
|
-
} = await importStorybookConfig();
|
107
|
-
const contexts = stories.map(entry => {
|
108
|
-
const normalizedEntry = isStorybookVersionLessThan(6, 4) ? entry : normalizeStoriesEntry(entry, {
|
109
|
-
configDir: config.storybookDir,
|
110
|
-
workingDir: process.cwd()
|
111
|
-
});
|
112
|
-
const {
|
113
|
-
path: storiesPath,
|
114
|
-
recursive,
|
115
|
-
match
|
116
|
-
} = toRequireContext(normalizedEntry);
|
117
|
-
watcher === null || watcher === void 0 ? void 0 : watcher.add(path.resolve(config.storybookDir, storiesPath));
|
118
|
-
return () => requireContext(storiesPath, recursive, new RegExp(match));
|
119
|
-
});
|
120
|
-
|
121
|
-
let disposeCallback = data => void data;
|
122
|
-
|
123
|
-
Object.assign(module, {
|
124
|
-
hot: {
|
125
|
-
data: {},
|
126
|
-
|
127
|
-
accept() {
|
128
|
-
/* noop */
|
129
|
-
},
|
130
|
-
|
131
|
-
dispose(callback) {
|
132
|
-
disposeCallback = callback;
|
133
|
-
}
|
134
|
-
|
135
|
-
}
|
136
|
-
});
|
137
|
-
|
138
|
-
async function startStorybook() {
|
139
|
-
if (preview) {
|
140
|
-
const {
|
141
|
-
parameters,
|
142
|
-
globals,
|
143
|
-
globalTypes
|
144
|
-
} = await import(preview);
|
145
|
-
if (parameters) addParameters(parameters);
|
146
|
-
if (globals) addParameters({
|
147
|
-
globals
|
148
|
-
});
|
149
|
-
if (globalTypes) addParameters({
|
150
|
-
globalTypes
|
151
|
-
});
|
152
|
-
}
|
153
|
-
|
154
|
-
try {
|
155
|
-
configure(contexts.map(ctx => ctx()), module, false);
|
156
|
-
} catch (error) {
|
157
|
-
if (isMaster) logger.error(error);
|
158
|
-
}
|
159
|
-
}
|
160
|
-
|
161
|
-
watcher === null || watcher === void 0 ? void 0 : watcher.add(config.storybookDir);
|
162
|
-
watcher === null || watcher === void 0 ? void 0 : watcher.on('all', (_event, filename) => {
|
163
|
-
var _module$hot;
|
164
|
-
|
165
|
-
disposeCallback((_module$hot = module.hot) === null || _module$hot === void 0 ? void 0 : _module$hot.data);
|
166
|
-
delete require.cache[filename];
|
167
|
-
void startStorybook();
|
168
|
-
});
|
169
|
-
void startStorybook();
|
170
|
-
} // TODO Do we need to support multiple storybooks here?
|
171
|
-
|
172
|
-
|
173
|
-
export async function loadStories(config, {
|
174
|
-
watch,
|
175
|
-
debug
|
176
|
-
}, storiesListener) {
|
177
|
-
const storybookApi = await initStorybookEnvironment();
|
178
|
-
const Events = await importStorybookCoreEvents();
|
179
|
-
const {
|
180
|
-
channel
|
181
|
-
} = storybookApi;
|
182
|
-
channel.removeAllListeners(Events.CURRENT_STORY_WAS_SET);
|
183
|
-
channel.on('storiesUpdated', storiesListener);
|
184
|
-
let watcher;
|
185
|
-
if (watch) watcher = chokidar.watch([], {
|
186
|
-
ignoreInitial: true
|
187
|
-
});
|
188
|
-
const loadPromise = new Promise(resolve => {
|
189
|
-
channel.once(Events.SET_STORIES, data => {
|
190
|
-
const stories = isStorybookVersionLessThan(6) || isStorybookVersionGreaterThan(6, 3) ? data.stories : denormalizeStoryParameters(data);
|
191
|
-
const files = new Set(Object.values(stories).map(story => story.parameters.fileName));
|
192
|
-
if (watcher) channel.on(Events.SET_STORIES, watchStories(channel, watcher, files));
|
193
|
-
resolve(stories);
|
194
|
-
});
|
195
|
-
});
|
196
|
-
if (config.useWebpackToExtractTests) loadStoriesFromBundle(watch);else void loadStoriesDirectly(config, {
|
197
|
-
watcher,
|
198
|
-
debug
|
199
|
-
});
|
200
|
-
return loadPromise;
|
201
|
-
}
|
202
|
-
export async function extractStoriesData(config, {
|
203
|
-
watch,
|
204
|
-
debug
|
205
|
-
}) {
|
206
|
-
const storybookApi = await initStorybookEnvironment();
|
207
|
-
const Events = await importStorybookCoreEvents();
|
208
|
-
const {
|
209
|
-
channel
|
210
|
-
} = storybookApi;
|
211
|
-
channel.removeAllListeners(Events.CURRENT_STORY_WAS_SET);
|
212
|
-
const loadPromise = new Promise(resolve => channel.once(Events.SET_STORIES, resolve));
|
213
|
-
if (config.useWebpackToExtractTests) loadStoriesFromBundle(watch);else void loadStoriesDirectly(config, {
|
214
|
-
debug
|
215
|
-
});
|
216
|
-
return loadPromise;
|
217
|
-
}
|
package/lib/esm/shared.js
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
2
|
-
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
4
|
-
|
5
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
6
|
-
|
7
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
8
|
-
|
9
|
-
import { mapValues, mergeWith, cloneDeepWith } from 'lodash';
|
10
|
-
// NOTE: Copy-paste from storybook/api
|
11
|
-
export var combineParameters = function combineParameters() {
|
12
|
-
for (var _len = arguments.length, parameterSets = new Array(_len), _key = 0; _key < _len; _key++) {
|
13
|
-
parameterSets[_key] = arguments[_key];
|
14
|
-
}
|
15
|
-
|
16
|
-
return (// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
17
|
-
mergeWith.apply(void 0, [{}].concat(parameterSets, [function (_, srcValue) {
|
18
|
-
// Treat arrays as scalars:
|
19
|
-
if (Array.isArray(srcValue)) return srcValue;
|
20
|
-
return undefined;
|
21
|
-
}]))
|
22
|
-
);
|
23
|
-
}; // NOTE: Copy-paste from storybook/api
|
24
|
-
|
25
|
-
export var denormalizeStoryParameters = function denormalizeStoryParameters(_ref) {
|
26
|
-
var globalParameters = _ref.globalParameters,
|
27
|
-
kindParameters = _ref.kindParameters,
|
28
|
-
stories = _ref.stories;
|
29
|
-
return mapValues(stories, function (storyData) {
|
30
|
-
var _globalParameters$cre, _kindParameters$story, _kindParameters$story2;
|
31
|
-
|
32
|
-
storyData.parameters.creevey = combineParameters((_globalParameters$cre = globalParameters.creevey) !== null && _globalParameters$cre !== void 0 ? _globalParameters$cre : {}, (_kindParameters$story = (_kindParameters$story2 = kindParameters[storyData.kind]) === null || _kindParameters$story2 === void 0 ? void 0 : _kindParameters$story2.creevey) !== null && _kindParameters$story !== void 0 ? _kindParameters$story : {}, storyData.parameters.creevey);
|
33
|
-
return storyData;
|
34
|
-
});
|
35
|
-
};
|
36
|
-
export var isSerializedRegExp = function isSerializedRegExp(exp) {
|
37
|
-
return _typeof(exp) === 'object' && exp !== null && Reflect.get(exp, '__regexp') === true;
|
38
|
-
};
|
39
|
-
export var serializeRegExp = function serializeRegExp(exp) {
|
40
|
-
var source = exp.source,
|
41
|
-
flags = exp.flags;
|
42
|
-
return {
|
43
|
-
__regexp: true,
|
44
|
-
source: source,
|
45
|
-
flags: flags
|
46
|
-
};
|
47
|
-
};
|
48
|
-
export var deserializeRegExp = function deserializeRegExp(_ref2) {
|
49
|
-
var source = _ref2.source,
|
50
|
-
flags = _ref2.flags;
|
51
|
-
return new RegExp(source, flags);
|
52
|
-
};
|
53
|
-
export var serializeRawStories = function serializeRawStories(stories) {
|
54
|
-
return mapValues(stories, function (storyData) {
|
55
|
-
var creevey = storyData.parameters.creevey;
|
56
|
-
|
57
|
-
if (creevey !== null && creevey !== void 0 && creevey.skip) {
|
58
|
-
creevey.skip = cloneDeepWith(creevey.skip, function (value) {
|
59
|
-
if (value instanceof RegExp) {
|
60
|
-
return serializeRegExp(value);
|
61
|
-
}
|
62
|
-
|
63
|
-
return undefined;
|
64
|
-
});
|
65
|
-
}
|
66
|
-
|
67
|
-
return storyData;
|
68
|
-
});
|
69
|
-
};
|
70
|
-
export var deserializeRawStories = function deserializeRawStories(stories) {
|
71
|
-
return mapValues(stories, deserializeStory);
|
72
|
-
};
|
73
|
-
export var deserializeStory = function deserializeStory(story) {
|
74
|
-
var creevey = story.parameters.creevey;
|
75
|
-
|
76
|
-
if (creevey !== null && creevey !== void 0 && creevey.skip) {
|
77
|
-
return _objectSpread(_objectSpread({}, story), {}, {
|
78
|
-
parameters: _objectSpread(_objectSpread({}, story.parameters), {}, {
|
79
|
-
creevey: _objectSpread(_objectSpread({}, creevey), {}, {
|
80
|
-
skip: cloneDeepWith(creevey.skip, function (value) {
|
81
|
-
if (isSerializedRegExp(value)) {
|
82
|
-
return deserializeRegExp(value);
|
83
|
-
}
|
84
|
-
|
85
|
-
return undefined;
|
86
|
-
})
|
87
|
-
})
|
88
|
-
})
|
89
|
-
});
|
90
|
-
}
|
91
|
-
|
92
|
-
return story;
|
93
|
-
};
|
@@ -1 +0,0 @@
|
|
1
|
-
export default function (): unknown;
|
@@ -1,19 +0,0 @@
|
|
1
|
-
import { NodePath, Binding, TraverseOptions } from '@babel/traverse';
|
2
|
-
export declare enum FileType {
|
3
|
-
Invalid = -1,
|
4
|
-
Entry = 0,
|
5
|
-
Preview = 1,
|
6
|
-
Story = 2
|
7
|
-
}
|
8
|
-
export interface VisitorState {
|
9
|
-
resourcePath: string;
|
10
|
-
fileType: FileType;
|
11
|
-
isMDX: boolean;
|
12
|
-
visitedTopPaths: Set<NodePath<any>>;
|
13
|
-
visitedBindings: Set<Binding>;
|
14
|
-
reexportedStories: Map<string, Set<string>>;
|
15
|
-
}
|
16
|
-
export declare const commonVisitor: TraverseOptions<VisitorState>;
|
17
|
-
export declare const previewVisitor: TraverseOptions<VisitorState>;
|
18
|
-
export declare const mdxVisitor: TraverseOptions<VisitorState>;
|
19
|
-
export declare const storyVisitor: TraverseOptions<VisitorState>;
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/// <reference types="webpack-env" />
|
2
|
-
import { Config } from '../../../types';
|
3
|
-
declare function getRequireContext(rootDir: string): (rootPath: string, deep?: boolean | undefined, filter?: RegExp | undefined) => __WebpackModuleApi.RequireContext;
|
4
|
-
export default function register(config: Config, debug?: boolean): Promise<ReturnType<typeof getRequireContext>>;
|
5
|
-
export {};
|
@@ -1 +0,0 @@
|
|
1
|
-
export declare const addMDXHook: (getStory: () => string | null) => Promise<void>;
|
@@ -1 +0,0 @@
|
|
1
|
-
export declare const addSvelteHook: (getStory: () => string | null) => Promise<void>;
|
@@ -1 +0,0 @@
|
|
1
|
-
export declare function startWebpackCompiler(): Promise<void>;
|
@@ -1,18 +0,0 @@
|
|
1
|
-
/// <reference types="node" />
|
2
|
-
/// <reference types="webpack-env" />
|
3
|
-
import type { StoryApi } from '@storybook/addons';
|
4
|
-
import type { Channel } from '@storybook/channels';
|
5
|
-
declare const start: typeof import("@storybook/core").start;
|
6
|
-
export declare const channel: Channel;
|
7
|
-
declare type ClientApi = ReturnType<typeof start>['clientApi'];
|
8
|
-
export declare const clientApi: ClientApi;
|
9
|
-
export declare const forceReRender: (() => never) | (() => void);
|
10
|
-
export declare const storiesOf: (kind: string, m: NodeModule) => StoryApi;
|
11
|
-
export declare const configure: (...args: unknown[]) => unknown;
|
12
|
-
export declare const addDecorator: ClientApi['addDecorator'];
|
13
|
-
export declare const addParameters: ClientApi['addParameters'];
|
14
|
-
export declare const clearDecorators: ClientApi['clearDecorators'];
|
15
|
-
export declare const setAddon: (() => never) | ((addon: any) => void);
|
16
|
-
export declare const getStorybook: ClientApi['getStorybook'];
|
17
|
-
export declare const raw: ClientApi['raw'];
|
18
|
-
export {};
|
@@ -1,24 +0,0 @@
|
|
1
|
-
import type { StorybookConfig } from '@storybook/core-common';
|
2
|
-
export declare const storybookDirRef: {
|
3
|
-
current: string;
|
4
|
-
};
|
5
|
-
export declare const resolveFromStorybook: (modulePath: string) => string;
|
6
|
-
export declare const resolveFromStorybookAddonDocs: (modulePath: string) => string;
|
7
|
-
export declare const resolveFromStorybookBuilderWebpack4: (modulePath: string) => string;
|
8
|
-
export declare const resolveFromStorybookCore: (modulePath: string) => string;
|
9
|
-
export declare const resolveFromStorybookCoreServer: (modulePath: string) => string;
|
10
|
-
export declare const importStorybookClientLogger: <T = typeof import("@storybook/client-logger")>() => Promise<T>;
|
11
|
-
export declare const importStorybookCoreCommon: <T = typeof import("@storybook/core-common")>() => Promise<T>;
|
12
|
-
export declare const importStorybookCoreEvents: <T = typeof import("@storybook/core-events")>() => Promise<T>;
|
13
|
-
export declare function hasDocsAddon(): boolean;
|
14
|
-
export declare function hasSvelteCSFAddon(): boolean;
|
15
|
-
export declare function getStorybookVersion(): string;
|
16
|
-
export declare function isStorybookVersionLessThan(major: number, minor?: number): boolean;
|
17
|
-
export declare function isStorybookVersionGreaterThan(major: number, minor?: number): boolean;
|
18
|
-
export declare function isStorybookVersion(major: number, minor?: number): boolean;
|
19
|
-
export declare function getStorybookFramework(): string;
|
20
|
-
export declare const storybookConfigRef: {
|
21
|
-
current: StorybookConfig;
|
22
|
-
};
|
23
|
-
export declare function importStorybookConfig(): Promise<StorybookConfig>;
|
24
|
-
export declare function isCSFv3Enabled(): Promise<boolean>;
|
@@ -1,9 +0,0 @@
|
|
1
|
-
import type { StoryInput, SetStoriesData, Config, StoriesRaw } from '../../../types';
|
2
|
-
export declare function loadStories(config: Config, { watch, debug }: {
|
3
|
-
watch: boolean;
|
4
|
-
debug: boolean;
|
5
|
-
}, storiesListener: (stories: Map<string, StoryInput[]>) => void): Promise<StoriesRaw>;
|
6
|
-
export declare function extractStoriesData(config: Config, { watch, debug }: {
|
7
|
-
watch: boolean;
|
8
|
-
debug: boolean;
|
9
|
-
}): Promise<SetStoriesData>;
|
package/lib/types/shared.d.ts
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
import { Parameters } from '@storybook/api';
|
2
|
-
import { SetStoriesData, StoriesRaw, StoryInput } from './types';
|
3
|
-
export declare const combineParameters: (...parameterSets: Parameters[]) => Parameters;
|
4
|
-
export declare const denormalizeStoryParameters: ({ globalParameters, kindParameters, stories, }: SetStoriesData) => StoriesRaw;
|
5
|
-
interface SerializedRegExp {
|
6
|
-
__regexp: true;
|
7
|
-
source: string;
|
8
|
-
flags: string;
|
9
|
-
}
|
10
|
-
export declare const isSerializedRegExp: (exp: unknown) => exp is SerializedRegExp;
|
11
|
-
export declare const serializeRegExp: (exp: RegExp) => SerializedRegExp;
|
12
|
-
export declare const deserializeRegExp: ({ source, flags }: SerializedRegExp) => RegExp;
|
13
|
-
export declare const serializeRawStories: (stories: StoriesRaw) => StoriesRaw;
|
14
|
-
export declare const deserializeRawStories: (stories: StoriesRaw) => StoriesRaw;
|
15
|
-
export declare const deserializeStory: (story: StoryInput) => StoryInput;
|
16
|
-
export {};
|
package/preset.js
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
/* eslint-disable node/no-missing-require, @typescript-eslint/no-unsafe-assignment */
|
2
|
-
|
3
|
-
module.exports = {
|
4
|
-
...require('./lib/cjs/client/addon/preset'),
|
5
|
-
/** @type {(entry: string[]) => string[]} */
|
6
|
-
config(entry) {
|
7
|
-
return [...entry, require.resolve('./lib/esm/client/addon/decorator')];
|
8
|
-
},
|
9
|
-
};
|
@@ -1,21 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"v": 2,
|
3
|
-
"globals": {},
|
4
|
-
"globalParameters": {},
|
5
|
-
"kindParameters": {
|
6
|
-
"BlendView": {}
|
7
|
-
},
|
8
|
-
"stories": {
|
9
|
-
"blendview--100-x-100-vs-100-x-100": {
|
10
|
-
"id": "blendview--100-x-100-vs-100-x-100",
|
11
|
-
"name": "100 X 100 Vs 100 X 100",
|
12
|
-
"kind": "BlendView",
|
13
|
-
"story": "100 X 100 Vs 100 X 100",
|
14
|
-
"parameters": {
|
15
|
-
"fileName": "/Users/pogadaev.e/code/creevey/stories/BlendView.stories.tsx",
|
16
|
-
"framework": "react",
|
17
|
-
"__id": "blendview--100-x-100-vs-100-x-100"
|
18
|
-
}
|
19
|
-
}
|
20
|
-
}
|
21
|
-
}
|