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.
Files changed (226) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/.yarnrc.yml +1 -0
  3. package/CHANGELOG.md +51 -0
  4. package/README.md +9 -1
  5. package/addon/README.md +3 -0
  6. package/addon/package.json +5 -0
  7. package/docs/config.md +29 -26
  8. package/jest.config.js +6 -0
  9. package/lib/cjs/cli.js +1 -0
  10. package/lib/cjs/client/addon/Manager.js +170 -390
  11. package/lib/cjs/client/addon/components/Addon.js +17 -45
  12. package/lib/cjs/client/addon/components/Icons.js +12 -14
  13. package/lib/cjs/client/addon/components/Panel.js +21 -30
  14. package/lib/cjs/client/addon/components/TestSelect.js +20 -31
  15. package/lib/cjs/client/addon/components/Tools.js +35 -65
  16. package/lib/cjs/client/addon/decorator.js +1 -4
  17. package/lib/cjs/client/addon/index.js +27 -0
  18. package/lib/cjs/client/addon/preset.js +3 -76
  19. package/lib/cjs/client/addon/preview.js +11 -0
  20. package/lib/cjs/client/addon/readyForCapture.js +1 -4
  21. package/lib/cjs/client/addon/register.js +43 -82
  22. package/lib/cjs/client/addon/utils.js +4 -8
  23. package/lib/cjs/client/addon/withCreevey.js +145 -404
  24. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +25 -35
  25. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +29 -41
  26. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +46 -83
  27. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +39 -67
  28. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +26 -57
  29. package/lib/cjs/client/shared/components/ImagesView/index.js +9 -14
  30. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +13 -16
  31. package/lib/cjs/client/shared/components/PageFooter/Paging.js +16 -37
  32. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +42 -34
  33. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +40 -84
  34. package/lib/cjs/client/shared/components/ResultsPage.js +42 -99
  35. package/lib/cjs/client/shared/creeveyClientApi.js +56 -93
  36. package/lib/cjs/client/shared/helpers.js +149 -274
  37. package/lib/cjs/client/shared/viewMode.js +5 -9
  38. package/lib/cjs/client/web/192.js +1 -0
  39. package/lib/cjs/client/web/632.js +43 -0
  40. package/lib/cjs/client/web/794.js +1 -0
  41. package/lib/cjs/client/web/main.js +79 -38
  42. package/lib/cjs/client/web/main.js.LICENSE.txt +34 -0
  43. package/lib/cjs/creevey.js +15 -30
  44. package/lib/cjs/index.js +0 -15
  45. package/lib/cjs/server/config.js +16 -36
  46. package/lib/cjs/server/docker.js +8 -34
  47. package/lib/cjs/server/index.js +9 -34
  48. package/lib/cjs/server/logger.js +7 -20
  49. package/lib/cjs/server/master/api.js +1 -14
  50. package/lib/cjs/server/master/index.js +25 -49
  51. package/lib/cjs/server/master/master.js +6 -21
  52. package/lib/cjs/server/master/pool.js +10 -53
  53. package/lib/cjs/server/master/runner.js +65 -105
  54. package/lib/cjs/server/master/server.js +10 -29
  55. package/lib/cjs/server/messages.js +14 -62
  56. package/lib/cjs/server/selenium/browser.js +149 -185
  57. package/lib/cjs/server/selenium/index.js +0 -4
  58. package/lib/cjs/server/selenium/selenoid.js +18 -44
  59. package/lib/cjs/server/stories.js +35 -57
  60. package/lib/cjs/server/storybook/providers/browser.js +15 -29
  61. package/lib/cjs/server/storybook/providers/hybrid.js +16 -37
  62. package/lib/cjs/server/telemetry.js +167 -0
  63. package/lib/cjs/server/testsFiles/parser.js +3 -19
  64. package/lib/cjs/server/testsFiles/register.js +8 -14
  65. package/lib/cjs/server/update.js +4 -25
  66. package/lib/cjs/server/utils.js +35 -76
  67. package/lib/cjs/server/worker/chai-image.js +1 -27
  68. package/lib/cjs/server/worker/helpers.js +2 -12
  69. package/lib/cjs/server/worker/index.js +1 -3
  70. package/lib/cjs/server/worker/reporter.js +16 -43
  71. package/lib/cjs/server/worker/worker.js +32 -72
  72. package/lib/cjs/shared/index.js +87 -0
  73. package/lib/cjs/shared/serializeRegExp.js +34 -0
  74. package/lib/cjs/types.js +11 -20
  75. package/lib/esm/cli.js +1 -1
  76. package/lib/esm/client/addon/Manager.js +170 -381
  77. package/lib/esm/client/addon/components/Addon.js +15 -34
  78. package/lib/esm/client/addon/components/Icons.js +10 -6
  79. package/lib/esm/client/addon/components/Panel.js +20 -18
  80. package/lib/esm/client/addon/components/TestSelect.js +19 -23
  81. package/lib/esm/client/addon/components/Tools.js +33 -49
  82. package/lib/esm/client/addon/decorator.js +1 -1
  83. package/lib/esm/client/addon/index.js +2 -0
  84. package/lib/esm/client/addon/preset.js +2 -56
  85. package/lib/esm/client/addon/preview.js +5 -0
  86. package/lib/esm/client/addon/readyForCapture.js +1 -3
  87. package/lib/esm/client/addon/register.js +41 -67
  88. package/lib/esm/client/addon/utils.js +3 -7
  89. package/lib/esm/client/addon/withCreevey.js +142 -388
  90. package/lib/esm/client/shared/components/ImagesView/BlendView.js +22 -18
  91. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +27 -25
  92. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +43 -63
  93. package/lib/esm/client/shared/components/ImagesView/SlideView.js +36 -47
  94. package/lib/esm/client/shared/components/ImagesView/SwapView.js +23 -40
  95. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +12 -8
  96. package/lib/esm/client/shared/components/PageFooter/Paging.js +15 -29
  97. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +40 -25
  98. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +38 -66
  99. package/lib/esm/client/shared/components/ResultsPage.js +39 -75
  100. package/lib/esm/client/shared/creeveyClientApi.js +56 -90
  101. package/lib/esm/client/shared/helpers.js +133 -230
  102. package/lib/esm/client/shared/viewMode.js +4 -4
  103. package/lib/esm/client/web/192.js +1 -0
  104. package/lib/esm/client/web/632.js +43 -0
  105. package/lib/esm/client/web/794.js +1 -0
  106. package/lib/esm/client/web/index.html +19 -0
  107. package/lib/esm/client/web/main.js +79 -0
  108. package/lib/esm/client/web/main.js.LICENSE.txt +34 -0
  109. package/lib/esm/creevey.js +13 -16
  110. package/lib/esm/index.js +1 -4
  111. package/lib/esm/server/config.js +9 -16
  112. package/lib/esm/server/docker.js +6 -14
  113. package/lib/esm/server/index.js +8 -22
  114. package/lib/esm/server/logger.js +0 -1
  115. package/lib/esm/server/master/api.js +0 -9
  116. package/lib/esm/server/master/index.js +25 -35
  117. package/lib/esm/server/master/master.js +2 -7
  118. package/lib/esm/server/master/pool.js +8 -41
  119. package/lib/esm/server/master/runner.js +64 -90
  120. package/lib/esm/server/master/server.js +9 -11
  121. package/lib/esm/server/messages.js +8 -42
  122. package/lib/esm/server/selenium/browser.js +147 -163
  123. package/lib/esm/server/selenium/selenoid.js +16 -27
  124. package/lib/esm/server/stories.js +34 -46
  125. package/lib/esm/server/storybook/providers/browser.js +12 -17
  126. package/lib/esm/server/storybook/providers/hybrid.js +11 -22
  127. package/lib/esm/server/telemetry.js +160 -0
  128. package/lib/esm/server/testsFiles/parser.js +0 -6
  129. package/lib/esm/server/testsFiles/register.js +6 -7
  130. package/lib/esm/server/update.js +1 -13
  131. package/lib/esm/server/utils.js +20 -41
  132. package/lib/esm/server/worker/chai-image.js +0 -21
  133. package/lib/esm/server/worker/helpers.js +2 -9
  134. package/lib/esm/server/worker/reporter.js +15 -29
  135. package/lib/esm/server/worker/worker.js +31 -48
  136. package/lib/esm/shared/index.js +77 -0
  137. package/lib/esm/shared/serializeRegExp.js +24 -0
  138. package/lib/esm/types.js +5 -1
  139. package/lib/types/client/addon/Manager.d.ts +3 -3
  140. package/lib/types/client/addon/components/Addon.d.ts +1 -0
  141. package/lib/types/client/addon/components/Icons.d.ts +1 -0
  142. package/lib/types/client/addon/components/Panel.d.ts +1 -0
  143. package/lib/types/client/addon/components/Tools.d.ts +1 -0
  144. package/lib/types/client/addon/decorator.d.ts +1 -1
  145. package/lib/types/client/addon/index.d.ts +2 -0
  146. package/lib/types/client/addon/preset.d.ts +2 -24
  147. package/lib/types/client/addon/preview.d.ts +4 -0
  148. package/lib/types/client/addon/utils.d.ts +1 -0
  149. package/lib/types/client/addon/withCreevey.d.ts +4 -3
  150. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +3 -1
  151. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +3 -1
  152. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +3 -1
  153. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +3 -1
  154. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +3 -1
  155. package/lib/types/client/shared/components/ResultsPage.d.ts +3 -1
  156. package/lib/types/client/web/CreeveyLoader.d.ts +1 -1
  157. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +6 -3
  158. package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +1 -0
  159. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +19 -14
  160. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +3 -1
  161. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +3 -1
  162. package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +1 -0
  163. package/lib/types/client/web/KeyboardEventsContext.d.ts +4 -2
  164. package/lib/types/index.d.ts +4 -1
  165. package/lib/types/server/logger.d.ts +6 -2
  166. package/lib/types/server/messages.d.ts +14 -12
  167. package/lib/types/server/selenium/browser.d.ts +5 -3
  168. package/lib/types/server/storybook/providers/browser.d.ts +2 -4
  169. package/lib/types/server/storybook/providers/hybrid.d.ts +2 -4
  170. package/lib/types/server/telemetry.d.ts +2 -0
  171. package/lib/types/server/utils.d.ts +5 -1
  172. package/lib/types/shared/index.d.ts +7 -0
  173. package/lib/types/shared/serializeRegExp.d.ts +9 -0
  174. package/lib/types/types.d.ts +29 -36
  175. package/package.json +132 -133
  176. package/types/global.d.ts +5 -0
  177. package/lib/cjs/client/web/1.js +0 -13
  178. package/lib/cjs/client/web/2.js +0 -1
  179. package/lib/cjs/server/extract.js +0 -50
  180. package/lib/cjs/server/loaders/babel/creevey-plugin.js +0 -88
  181. package/lib/cjs/server/loaders/babel/helpers.js +0 -479
  182. package/lib/cjs/server/loaders/babel/register.js +0 -126
  183. package/lib/cjs/server/loaders/hooks/mdx.js +0 -30
  184. package/lib/cjs/server/loaders/hooks/svelte.js +0 -65
  185. package/lib/cjs/server/loaders/webpack/compile.js +0 -286
  186. package/lib/cjs/server/loaders/webpack/creevey-loader.js +0 -174
  187. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +0 -44
  188. package/lib/cjs/server/loaders/webpack/mdx-loader.js +0 -72
  189. package/lib/cjs/server/loaders/webpack/start.js +0 -41
  190. package/lib/cjs/server/storybook/entry.js +0 -68
  191. package/lib/cjs/server/storybook/helpers.js +0 -165
  192. package/lib/cjs/server/storybook/providers/nodejs.js +0 -239
  193. package/lib/cjs/shared.js +0 -124
  194. package/lib/esm/server/extract.js +0 -34
  195. package/lib/esm/server/loaders/babel/creevey-plugin.js +0 -74
  196. package/lib/esm/server/loaders/babel/helpers.js +0 -462
  197. package/lib/esm/server/loaders/babel/register.js +0 -105
  198. package/lib/esm/server/loaders/hooks/mdx.js +0 -15
  199. package/lib/esm/server/loaders/hooks/svelte.js +0 -49
  200. package/lib/esm/server/loaders/webpack/compile.js +0 -263
  201. package/lib/esm/server/loaders/webpack/creevey-loader.js +0 -153
  202. package/lib/esm/server/loaders/webpack/dummy-hmr.js +0 -36
  203. package/lib/esm/server/loaders/webpack/mdx-loader.js +0 -58
  204. package/lib/esm/server/loaders/webpack/start.js +0 -27
  205. package/lib/esm/server/storybook/entry.js +0 -44
  206. package/lib/esm/server/storybook/helpers.js +0 -106
  207. package/lib/esm/server/storybook/providers/nodejs.js +0 -217
  208. package/lib/esm/shared.js +0 -93
  209. package/lib/types/server/extract.d.ts +0 -2
  210. package/lib/types/server/loaders/babel/creevey-plugin.d.ts +0 -1
  211. package/lib/types/server/loaders/babel/helpers.d.ts +0 -19
  212. package/lib/types/server/loaders/babel/register.d.ts +0 -5
  213. package/lib/types/server/loaders/hooks/mdx.d.ts +0 -1
  214. package/lib/types/server/loaders/hooks/svelte.d.ts +0 -1
  215. package/lib/types/server/loaders/webpack/compile.d.ts +0 -2
  216. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +0 -2
  217. package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +0 -10
  218. package/lib/types/server/loaders/webpack/mdx-loader.d.ts +0 -6
  219. package/lib/types/server/loaders/webpack/start.d.ts +0 -1
  220. package/lib/types/server/storybook/entry.d.ts +0 -18
  221. package/lib/types/server/storybook/helpers.d.ts +0 -24
  222. package/lib/types/server/storybook/providers/nodejs.d.ts +0 -9
  223. package/lib/types/shared.d.ts +0 -16
  224. package/preset.js +0 -9
  225. package/storybook-static/stories.json +0 -21
  226. 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,2 +0,0 @@
1
- import { Config, Options } from '../types';
2
- export default function extract(config: Config, options: Options): Promise<void>;
@@ -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,2 +0,0 @@
1
- import { Config, Options } from '../../../types';
2
- export default function compile(config: Config, { debug, ui }: Options): Promise<void>;
@@ -1,2 +0,0 @@
1
- import { loader } from 'webpack';
2
- export default function (this: loader.LoaderContext | void, source: string): string;
@@ -1,10 +0,0 @@
1
- declare global {
2
- var __CREEVEY_HMR_DATA__: {
3
- [moduleId: string]: {
4
- data: unknown;
5
- callback: (data: unknown) => void;
6
- };
7
- };
8
- }
9
- declare const _default: {};
10
- export default _default;
@@ -1,6 +0,0 @@
1
- export declare let mdxLoaders: any[];
2
- export declare const mdxOptions: (options?: any) => {
3
- compilers: any[];
4
- remarkPlugins: any[];
5
- };
6
- export declare function webpack(webpackConfig?: any, options?: any): any;
@@ -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>;
@@ -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
- }
package/types/mdx.d.ts DELETED
@@ -1,6 +0,0 @@
1
- // TODO: mdx@1 doesn't have types :(
2
- declare module '@mdx-js/mdx' {
3
- export default {
4
- sync(code: string, options: unknown): string;,
5
- };
6
- }