creevey 0.8.0-beta.0 → 0.8.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.
Files changed (199) hide show
  1. package/CHANGELOG.md +30 -7
  2. package/README.md +9 -1
  3. package/addon/README.md +3 -0
  4. package/addon/package.json +4 -0
  5. package/docs/config.md +29 -26
  6. package/jest.config.js +6 -0
  7. package/lib/cjs/client/addon/Manager.js +122 -271
  8. package/lib/cjs/client/addon/components/Addon.js +17 -38
  9. package/lib/cjs/client/addon/components/Icons.js +11 -7
  10. package/lib/cjs/client/addon/components/Panel.js +17 -13
  11. package/lib/cjs/client/addon/components/TestSelect.js +11 -9
  12. package/lib/cjs/client/addon/components/Tools.js +21 -40
  13. package/lib/cjs/client/addon/decorator.js +1 -1
  14. package/lib/cjs/client/addon/index.js +31 -0
  15. package/lib/cjs/client/addon/preset.ie11.js +74 -0
  16. package/lib/cjs/client/addon/preset.js +13 -31
  17. package/lib/cjs/client/addon/readyForCapture.js +12 -0
  18. package/lib/cjs/client/addon/register.js +46 -70
  19. package/lib/cjs/client/addon/utils.js +6 -2
  20. package/lib/cjs/client/addon/withCreevey.js +221 -155
  21. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +26 -24
  22. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +22 -18
  23. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +44 -66
  24. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +38 -50
  25. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +26 -45
  26. package/lib/cjs/client/shared/components/ImagesView/index.js +9 -9
  27. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +12 -8
  28. package/lib/cjs/client/shared/components/PageFooter/Paging.js +14 -18
  29. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +22 -18
  30. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +42 -67
  31. package/lib/cjs/client/shared/components/ResultsPage.js +39 -69
  32. package/lib/cjs/client/shared/creeveyClientApi.js +55 -82
  33. package/lib/cjs/client/shared/helpers.js +140 -211
  34. package/lib/cjs/client/shared/viewMode.js +5 -5
  35. package/lib/cjs/client/web/142.js +2 -0
  36. package/lib/cjs/client/web/142.js.LICENSE.txt +12 -0
  37. package/lib/cjs/client/web/32.js +1 -0
  38. package/lib/cjs/client/web/551.js +1 -0
  39. package/lib/cjs/client/web/566.js +2 -0
  40. package/lib/cjs/client/web/566.js.LICENSE.txt +31 -0
  41. package/lib/cjs/client/web/691.js +2 -0
  42. package/lib/cjs/client/web/691.js.LICENSE.txt +8 -0
  43. package/lib/cjs/client/web/725.js +1 -0
  44. package/lib/cjs/client/web/main.js +2 -38
  45. package/lib/cjs/client/web/main.js.LICENSE.txt +49 -0
  46. package/lib/cjs/creevey.js +3 -5
  47. package/lib/cjs/index.js +10 -15
  48. package/lib/cjs/server/config.js +5 -4
  49. package/lib/cjs/server/docker.js +3 -7
  50. package/lib/cjs/server/extract.js +7 -4
  51. package/lib/cjs/server/index.js +3 -5
  52. package/lib/cjs/server/loaders/babel/creevey-plugin.js +1 -3
  53. package/lib/cjs/server/loaders/babel/helpers.js +13 -23
  54. package/lib/cjs/server/loaders/babel/register.js +2 -4
  55. package/lib/cjs/server/loaders/webpack/compile.js +34 -51
  56. package/lib/cjs/server/loaders/webpack/creevey-loader.js +20 -22
  57. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +2 -7
  58. package/lib/cjs/server/loaders/webpack/mdx-loader.js +2 -2
  59. package/lib/cjs/server/loaders/webpack/start.js +1 -1
  60. package/lib/cjs/server/logger.js +2 -1
  61. package/lib/cjs/server/master/index.js +4 -4
  62. package/lib/cjs/server/master/master.js +1 -0
  63. package/lib/cjs/server/master/pool.js +38 -47
  64. package/lib/cjs/server/master/runner.js +53 -66
  65. package/lib/cjs/server/master/server.js +78 -4
  66. package/lib/cjs/server/messages.js +128 -18
  67. package/lib/cjs/server/selenium/browser.js +129 -55
  68. package/lib/cjs/server/selenium/selenoid.js +5 -7
  69. package/lib/cjs/server/stories.js +58 -72
  70. package/lib/cjs/server/storybook/entry.js +7 -22
  71. package/lib/cjs/server/storybook/helpers.js +20 -27
  72. package/lib/cjs/server/storybook/providers/browser.js +74 -0
  73. package/lib/cjs/server/storybook/{nodejs-provider.js → providers/nodejs.js} +37 -20
  74. package/lib/cjs/server/update.js +1 -5
  75. package/lib/cjs/server/utils.js +26 -35
  76. package/lib/cjs/server/worker/helpers.js +2 -6
  77. package/lib/cjs/server/worker/reporter.js +8 -20
  78. package/lib/cjs/server/worker/worker.js +21 -19
  79. package/lib/cjs/shared/index.js +101 -0
  80. package/lib/cjs/shared/serializeRegExp.js +42 -0
  81. package/lib/cjs/types.js +11 -6
  82. package/lib/esm/client/addon/Manager.js +122 -271
  83. package/lib/esm/client/addon/components/Addon.js +15 -34
  84. package/lib/esm/client/addon/components/Icons.js +10 -6
  85. package/lib/esm/client/addon/components/Panel.js +17 -13
  86. package/lib/esm/client/addon/components/TestSelect.js +11 -9
  87. package/lib/esm/client/addon/components/Tools.js +19 -36
  88. package/lib/esm/client/addon/decorator.js +1 -1
  89. package/lib/esm/client/addon/index.js +2 -0
  90. package/lib/esm/client/addon/preset.ie11.js +59 -0
  91. package/lib/esm/client/addon/preset.js +12 -26
  92. package/lib/esm/client/addon/readyForCapture.js +5 -0
  93. package/lib/esm/client/addon/register.js +42 -66
  94. package/lib/esm/client/addon/utils.js +3 -2
  95. package/lib/esm/client/addon/withCreevey.js +209 -156
  96. package/lib/esm/client/shared/components/ImagesView/BlendView.js +23 -20
  97. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +21 -17
  98. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +42 -63
  99. package/lib/esm/client/shared/components/ImagesView/SlideView.js +36 -47
  100. package/lib/esm/client/shared/components/ImagesView/SwapView.js +24 -42
  101. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +12 -8
  102. package/lib/esm/client/shared/components/PageFooter/Paging.js +14 -18
  103. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +22 -18
  104. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +37 -60
  105. package/lib/esm/client/shared/components/ResultsPage.js +36 -64
  106. package/lib/esm/client/shared/creeveyClientApi.js +57 -84
  107. package/lib/esm/client/shared/helpers.js +124 -195
  108. package/lib/esm/client/shared/viewMode.js +4 -4
  109. package/lib/esm/creevey.js +3 -5
  110. package/lib/esm/index.js +2 -3
  111. package/lib/esm/server/config.js +4 -5
  112. package/lib/esm/server/docker.js +2 -2
  113. package/lib/esm/server/extract.js +6 -4
  114. package/lib/esm/server/index.js +3 -4
  115. package/lib/esm/server/loaders/babel/creevey-plugin.js +1 -3
  116. package/lib/esm/server/loaders/babel/helpers.js +12 -22
  117. package/lib/esm/server/loaders/babel/register.js +3 -5
  118. package/lib/esm/server/loaders/webpack/compile.js +35 -52
  119. package/lib/esm/server/loaders/webpack/creevey-loader.js +9 -10
  120. package/lib/esm/server/loaders/webpack/dummy-hmr.js +2 -6
  121. package/lib/esm/server/loaders/webpack/mdx-loader.js +2 -2
  122. package/lib/esm/server/loaders/webpack/start.js +1 -1
  123. package/lib/esm/server/master/index.js +4 -4
  124. package/lib/esm/server/master/master.js +1 -0
  125. package/lib/esm/server/master/pool.js +38 -49
  126. package/lib/esm/server/master/runner.js +53 -66
  127. package/lib/esm/server/master/server.js +76 -6
  128. package/lib/esm/server/messages.js +118 -14
  129. package/lib/esm/server/selenium/browser.js +126 -57
  130. package/lib/esm/server/selenium/selenoid.js +4 -6
  131. package/lib/esm/server/stories.js +58 -70
  132. package/lib/esm/server/storybook/entry.js +5 -22
  133. package/lib/esm/server/storybook/helpers.js +11 -20
  134. package/lib/esm/server/storybook/providers/browser.js +60 -0
  135. package/lib/esm/server/storybook/{nodejs-provider.js → providers/nodejs.js} +35 -19
  136. package/lib/esm/server/update.js +1 -5
  137. package/lib/esm/server/utils.js +18 -31
  138. package/lib/esm/server/worker/helpers.js +2 -6
  139. package/lib/esm/server/worker/reporter.js +8 -20
  140. package/lib/esm/server/worker/worker.js +22 -20
  141. package/lib/esm/shared/index.js +78 -0
  142. package/lib/esm/shared/serializeRegExp.js +24 -0
  143. package/lib/esm/types.js +3 -0
  144. package/lib/types/client/addon/Manager.d.ts +2 -2
  145. package/lib/types/client/addon/components/TestSelect.d.ts +0 -1
  146. package/lib/types/client/addon/index.d.ts +2 -0
  147. package/lib/types/client/addon/preset.d.ts +2 -1
  148. package/lib/types/client/addon/preset.ie11.d.ts +10 -0
  149. package/lib/types/client/addon/readyForCapture.d.ts +6 -0
  150. package/lib/types/client/addon/utils.d.ts +1 -0
  151. package/lib/types/client/addon/withCreevey.d.ts +13 -2
  152. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +1 -1
  153. package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +0 -1
  154. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +1 -1
  155. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +1 -1
  156. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +1 -1
  157. package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +0 -1
  158. package/lib/types/client/shared/components/PageFooter/Paging.d.ts +0 -1
  159. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +1 -1
  160. package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +0 -1
  161. package/lib/types/client/shared/components/ResultsPage.d.ts +1 -1
  162. package/lib/types/client/web/CreeveyApp.d.ts +0 -1
  163. package/lib/types/client/web/CreeveyLoader.d.ts +1 -2
  164. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +1 -1
  165. package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +0 -1
  166. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +6 -6
  167. package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +0 -1
  168. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +1 -1
  169. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +1 -1
  170. package/lib/types/index.d.ts +0 -1
  171. package/lib/types/server/loaders/babel/register.d.ts +1 -1
  172. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +4 -2
  173. package/lib/types/server/logger.d.ts +6 -2
  174. package/lib/types/server/master/master.d.ts +1 -0
  175. package/lib/types/server/master/pool.d.ts +1 -0
  176. package/lib/types/server/master/server.d.ts +1 -1
  177. package/lib/types/server/messages.d.ts +17 -6
  178. package/lib/types/server/selenium/browser.d.ts +5 -2
  179. package/lib/types/server/stories.d.ts +2 -2
  180. package/lib/types/server/storybook/entry.d.ts +2 -3
  181. package/lib/types/server/storybook/helpers.d.ts +1 -1
  182. package/lib/types/server/storybook/providers/browser.d.ts +4 -0
  183. package/lib/types/server/storybook/providers/nodejs.d.ts +9 -0
  184. package/lib/types/server/utils.d.ts +5 -1
  185. package/lib/types/server/worker/helpers.d.ts +2 -1
  186. package/lib/types/shared/index.d.ts +7 -0
  187. package/lib/types/shared/serializeRegExp.d.ts +9 -0
  188. package/lib/types/types.d.ts +32 -5
  189. package/package.json +120 -103
  190. package/preset/ie11.js +5 -0
  191. package/{preset.js → preset/index.js} +2 -2
  192. package/types/mdx.d.ts +3 -2
  193. package/types/mocha.d.ts +1 -0
  194. package/lib/cjs/client/web/1.js +0 -13
  195. package/lib/cjs/client/web/2.js +0 -1
  196. package/lib/cjs/shared.js +0 -35
  197. package/lib/esm/shared.js +0 -22
  198. package/lib/types/server/storybook/nodejs-provider.d.ts +0 -5
  199. package/lib/types/shared.d.ts +0 -4
@@ -19,18 +19,17 @@ var _types = require("../types");
19
19
 
20
20
  var _utils = require("./utils");
21
21
 
22
- var _helpers = require("./storybook/helpers");
23
-
24
- var _shared = require("../shared");
25
-
26
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
23
 
28
24
  function storyTestFabric(delay, testFn) {
29
25
  return async function storyTest() {
30
- var _testFn$call;
31
-
32
26
  delay ? await new Promise(resolve => setTimeout(resolve, delay)) : void 0;
33
- await ((_testFn$call = testFn === null || testFn === void 0 ? void 0 : testFn.call(this)) !== null && _testFn$call !== void 0 ? _testFn$call : this.expect(await this.takeScreenshot()).to.matchImage());
27
+ await (testFn ? testFn.call(this) : this.screenshots.length > 0 ? this.expect(this.screenshots.reduce((screenshots, {
28
+ imageName,
29
+ screenshot
30
+ }, index) => ({ ...screenshots,
31
+ [imageName ?? `screenshot_${index}`]: screenshot
32
+ }), {})).to.matchImages() : this.expect(await this.takeScreenshot()).to.matchImage());
34
33
  };
35
34
  }
36
35
 
@@ -56,42 +55,38 @@ function createCreeveyTest(browser, storyMeta, skipOptions, testName) {
56
55
  };
57
56
  }
58
57
 
59
- function convertStories(browsers, stories) {
58
+ function convertStories(browserName, stories) {
60
59
  const tests = {};
61
60
  (Array.isArray(stories) ? stories : Object.values(stories)).forEach(storyMeta => {
62
61
  // TODO Skip docsOnly stories for now
63
62
  if (storyMeta.parameters.docsOnly) return;
64
- browsers.forEach(browserName => {
65
- var _storyMeta$parameters;
66
-
67
- const {
68
- delay: delayParam,
69
- tests: storyTests,
70
- skip
71
- } = (_storyMeta$parameters = storyMeta.parameters.creevey) !== null && _storyMeta$parameters !== void 0 ? _storyMeta$parameters : {};
72
- const delay = typeof delayParam == 'number' ? delayParam : delayParam !== null && delayParam !== void 0 && delayParam.for.includes(browserName) ? delayParam.ms : 0; // typeof tests === "undefined" => rootSuite -> kindSuite -> storyTest -> [browsers.png]
73
- // typeof tests === "function" => rootSuite -> kindSuite -> storyTest -> browser -> [images.png]
74
- // typeof tests === "object" => rootSuite -> kindSuite -> storySuite -> test -> [browsers.png]
75
- // typeof tests === "object" => rootSuite -> kindSuite -> storySuite -> test -> browser -> [images.png]
76
-
77
- if (!storyTests) {
78
- const test = createCreeveyTest(browserName, storyMeta, skip);
79
- tests[test.id] = { ...test,
80
- storyId: storyMeta.id,
81
- story: storyMeta,
82
- fn: storyTestFabric(delay)
83
- };
84
- return;
85
- }
63
+ const {
64
+ delay: delayParam,
65
+ tests: storyTests,
66
+ skip
67
+ } = storyMeta.parameters.creevey ?? {};
68
+ const delay = typeof delayParam == 'number' ? delayParam : delayParam !== null && delayParam !== void 0 && delayParam.for.includes(browserName) ? delayParam.ms : 0; // typeof tests === "undefined" => rootSuite -> kindSuite -> storyTest -> [browsers.png]
69
+ // typeof tests === "function" => rootSuite -> kindSuite -> storyTest -> browser -> [images.png]
70
+ // typeof tests === "object" => rootSuite -> kindSuite -> storySuite -> test -> [browsers.png]
71
+ // typeof tests === "object" => rootSuite -> kindSuite -> storySuite -> test -> browser -> [images.png]
72
+
73
+ if (!storyTests) {
74
+ const test = createCreeveyTest(browserName, storyMeta, skip);
75
+ tests[test.id] = { ...test,
76
+ storyId: storyMeta.id,
77
+ story: storyMeta,
78
+ fn: storyTestFabric(delay)
79
+ };
80
+ return;
81
+ }
86
82
 
87
- Object.entries(storyTests).forEach(([testName, testFn]) => {
88
- const test = createCreeveyTest(browserName, storyMeta, skip, testName);
89
- tests[test.id] = { ...test,
90
- storyId: storyMeta.id,
91
- story: storyMeta,
92
- fn: storyTestFabric(delay, testFn)
93
- };
94
- });
83
+ Object.entries(storyTests).forEach(([testName, testFn]) => {
84
+ const test = createCreeveyTest(browserName, storyMeta, skip, testName);
85
+ tests[test.id] = { ...test,
86
+ storyId: storyMeta.id,
87
+ story: storyMeta,
88
+ fn: storyTestFabric(delay, testFn)
89
+ };
95
90
  });
96
91
  });
97
92
  return tests;
@@ -99,22 +94,24 @@ function convertStories(browsers, stories) {
99
94
 
100
95
  async function loadTestsFromStories(browsers, provider, update) {
101
96
  const testIdsByFiles = new Map();
102
- const data = await provider(storiesByFiles => {
97
+ const stories = await provider(storiesByFiles => {
103
98
  const testsDiff = {};
104
- Array.from(storiesByFiles.entries()).forEach(([filename, stories]) => {
105
- var _testIdsByFiles$get$f, _testIdsByFiles$get;
106
-
107
- const tests = convertStories(browsers, stories);
108
- const changed = Object.keys(tests);
109
- const removed = (_testIdsByFiles$get$f = (_testIdsByFiles$get = testIdsByFiles.get(filename)) === null || _testIdsByFiles$get === void 0 ? void 0 : _testIdsByFiles$get.filter(testId => !tests[testId])) !== null && _testIdsByFiles$get$f !== void 0 ? _testIdsByFiles$get$f : [];
110
- if (changed.length == 0) testIdsByFiles.delete(filename);else testIdsByFiles.set(filename, changed);
111
- Object.assign(testsDiff, tests);
112
- removed.forEach(testId => testsDiff[testId] = undefined);
99
+ const tests = {};
100
+ browsers.forEach(browser => {
101
+ Array.from(storiesByFiles.entries()).forEach(([filename, stories]) => {
102
+ var _testIdsByFiles$get;
103
+
104
+ Object.assign(tests, convertStories(browser, stories));
105
+ const changed = Object.keys(tests);
106
+ const removed = ((_testIdsByFiles$get = testIdsByFiles.get(filename)) === null || _testIdsByFiles$get === void 0 ? void 0 : _testIdsByFiles$get.filter(testId => !tests[testId])) ?? [];
107
+ if (changed.length == 0) testIdsByFiles.delete(filename);else testIdsByFiles.set(filename, changed);
108
+ Object.assign(testsDiff, tests);
109
+ removed.forEach(testId => testsDiff[testId] = undefined);
110
+ });
113
111
  });
114
112
  update === null || update === void 0 ? void 0 : update(testsDiff);
115
113
  });
116
- const stories = (0, _helpers.isStorybookVersionLessThan)(6) || (0, _helpers.isStorybookVersionGreaterThan)(6, 3) ? data.stories : (0, _shared.denormalizeStoryParameters)(data);
117
- const tests = convertStories(browsers, stories);
114
+ const tests = browsers.reduce((tests, browser) => Object.assign(tests, convertStories(browser, stories)), {});
118
115
  Object.values(tests).filter(_types.isDefined).forEach(({
119
116
  id,
120
117
  story: {
@@ -122,36 +119,25 @@ async function loadTestsFromStories(browsers, provider, update) {
122
119
  fileName
123
120
  }
124
121
  }
125
- }) => {
126
- var _testIdsByFiles$get2;
127
-
128
- return (// TODO Don't use filename as a key, due possible collisions if two require.context with same structure of modules are defined
129
- testIdsByFiles.set(fileName, [...((_testIdsByFiles$get2 = testIdsByFiles.get(fileName)) !== null && _testIdsByFiles$get2 !== void 0 ? _testIdsByFiles$get2 : []), id])
130
- );
131
- });
122
+ }) => // TODO Don't use filename as a key, due possible collisions if two require.context with same structure of modules are defined
123
+ testIdsByFiles.set(fileName, [...(testIdsByFiles.get(fileName) ?? []), id]));
132
124
  return tests;
133
125
  }
134
126
 
135
127
  function saveStoriesJson(storiesData, extract) {
136
- var _storiesData$stories;
137
-
138
- const outputDir = typeof extract == 'boolean' ? 'storybook-static' : extract;
139
-
140
- if (!(0, _helpers.isStorybookVersionLessThan)(6)) {
141
- // NOTE Copy-pasted from Storybook's `getStoriesJsonData` method
142
- const allowed = ['fileName', 'docsOnly', 'framework', '__id', '__isArgsStory'];
143
- storiesData.globalParameters = (0, _lodash.pick)(storiesData.globalParameters, allowed); // @ts-expect-error ignore error
128
+ const outputDir = typeof extract == 'boolean' ? 'storybook-static' : extract; // NOTE Copy-pasted from Storybook's `getStoriesJsonData` method
144
129
 
145
- storiesData.kindParameters = (0, _lodash.mapValues)(storiesData.kindParameters, v => (0, _lodash.pick)(v, allowed)); // @ts-expect-error ignore error
130
+ const allowed = ['fileName', 'docsOnly', 'framework', '__id', '__isArgsStory'];
131
+ storiesData.globalParameters = (0, _lodash.pick)(storiesData.globalParameters, allowed); // @ts-expect-error ignore error
146
132
 
147
- storiesData.stories = (0, _lodash.mapValues)(storiesData.stories, v => ({ ...(0, _lodash.pick)(v, ['id', 'name', 'kind', 'story']),
148
- parameters: (0, _lodash.pick)(v.parameters, allowed)
149
- }));
150
- } // TODO Fix args stories
133
+ storiesData.kindParameters = (0, _lodash.mapValues)(storiesData.kindParameters, v => (0, _lodash.pick)(v, allowed)); // @ts-expect-error ignore error
151
134
 
135
+ storiesData.stories = (0, _lodash.mapValues)(storiesData.stories, v => ({ ...(0, _lodash.pick)(v, ['id', 'name', 'kind', 'story']),
136
+ parameters: (0, _lodash.pick)(v.parameters, allowed)
137
+ })); // TODO Fix args stories
152
138
 
153
- (0, _utils.removeProps)(storiesData !== null && storiesData !== void 0 ? storiesData : {}, ['stories', () => true, 'parameters', '__isArgsStory']);
154
- Object.values((_storiesData$stories = storiesData === null || storiesData === void 0 ? void 0 : storiesData.stories) !== null && _storiesData$stories !== void 0 ? _storiesData$stories : {}).forEach(story => (0, _types.isObject)(story) && 'parameters' in story && (0, _types.isObject)(story.parameters) && delete story.parameters.__isArgsStory);
139
+ (0, _utils.removeProps)(storiesData ?? {}, ['stories', () => true, 'parameters', '__isArgsStory']);
140
+ Object.values((storiesData === null || storiesData === void 0 ? void 0 : storiesData.stories) ?? {}).forEach(story => (0, _types.isObject)(story) && 'parameters' in story && (0, _types.isObject)(story.parameters) && delete story.parameters.__isArgsStory);
155
141
  (0, _fs.mkdirSync)(outputDir, {
156
142
  recursive: true
157
143
  });
@@ -3,23 +3,21 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.raw = exports.getStorybook = exports.setAddon = exports.clearDecorators = exports.addParameters = exports.addDecorator = exports.configure = exports.storiesOf = exports.forceReRender = exports.clientApi = exports.channel = void 0;
6
+ exports.storiesOf = exports.setAddon = exports.raw = exports.getStorybook = exports.forceReRender = exports.configure = exports.clientApi = exports.clearDecorators = exports.channel = exports.addParameters = exports.addDecorator = void 0;
7
7
 
8
8
  var _addons = require("@storybook/addons");
9
9
 
10
10
  var _helpers = require("./helpers");
11
11
 
12
- var _api$channel, _api$context;
13
-
14
12
  const framework = (0, _helpers.getStorybookFramework)(); // eslint-disable-next-line @typescript-eslint/no-var-requires
15
13
 
16
- const core = require((0, _helpers.resolveFromStorybook)('@storybook/core')); //@ts-expect-error: 6.2 use named exports
17
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
18
-
14
+ const core = require((0, _helpers.resolveFromStorybook)('@storybook/core-client'));
19
15
 
20
- const start = (0, _helpers.isStorybookVersionLessThan)(6, 2) ? core.default.start : core.start;
16
+ const start = core.start;
21
17
  const api = start(() => void 0);
22
- const channel = (0, _helpers.isStorybookVersionLessThan)(6, 4) ? (_api$channel = api.channel) !== null && _api$channel !== void 0 ? _api$channel : (_api$context = api.context) === null || _api$context === void 0 ? void 0 : _api$context.channel : _addons.addons.getChannel();
18
+
19
+ const channel = _addons.addons.getChannel();
20
+
23
21
  exports.channel = channel;
24
22
  const clientApi = api.clientApi;
25
23
  exports.clientApi = clientApi;
@@ -35,21 +33,8 @@ const storiesOf = (kind, m) => {
35
33
  exports.storiesOf = storiesOf;
36
34
 
37
35
  const configure = (...args) => {
38
- if ((0, _helpers.isStorybookVersionLessThan)(5, 2)) {
39
- //NOTE: Storybook <= 5.1 pass args as is
40
- //@ts-expect-error: ignore it
41
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
42
- return api.configApi.configure(...args);
43
- }
44
-
45
- if ((0, _helpers.isStorybookVersionLessThan)(6)) {
46
- //NOTE: Storybook <= 5.3 pass `framework` as last argument
47
- //@ts-expect-error: ignore it
48
- return api.configure(...args, framework);
49
- } //NOTE Storybook 6.x pass `framework` as first argument
36
+ //NOTE Storybook 6.x pass `framework` as first argument
50
37
  //@ts-expect-error: ignore it
51
-
52
-
53
38
  return api.configure(framework, ...args);
54
39
  };
55
40
 
@@ -3,16 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.getStorybookFramework = getStorybookFramework;
7
+ exports.getStorybookVersion = getStorybookVersion;
6
8
  exports.hasDocsAddon = hasDocsAddon;
7
9
  exports.hasSvelteCSFAddon = hasSvelteCSFAddon;
8
- exports.getStorybookVersion = getStorybookVersion;
9
- exports.isStorybookVersionLessThan = isStorybookVersionLessThan;
10
- exports.isStorybookVersionGreaterThan = isStorybookVersionGreaterThan;
11
- exports.isStorybookVersion = isStorybookVersion;
12
- exports.getStorybookFramework = getStorybookFramework;
10
+ exports.importStorybookClientLogger = void 0;
13
11
  exports.importStorybookConfig = importStorybookConfig;
12
+ exports.importStorybookCoreEvents = exports.importStorybookCoreCommon = void 0;
14
13
  exports.isCSFv3Enabled = isCSFv3Enabled;
15
- exports.storybookConfigRef = exports.importStorybookCoreEvents = exports.importStorybookCoreCommon = exports.importStorybookClientLogger = exports.resolveFromStorybookCoreServer = exports.resolveFromStorybookCore = exports.resolveFromStorybookBuilderWebpack4 = exports.resolveFromStorybookAddonDocs = exports.resolveFromStorybook = exports.storybookDirRef = void 0;
14
+ exports.isStorybookVersion = isStorybookVersion;
15
+ exports.isStorybookVersionGreaterThan = isStorybookVersionGreaterThan;
16
+ exports.isStorybookVersionLessThan = isStorybookVersionLessThan;
17
+ exports.storybookDirRef = exports.storybookConfigRef = exports.resolveFromStorybookCoreServer = exports.resolveFromStorybookCoreClient = exports.resolveFromStorybookBuilderWebpack4 = exports.resolveFromStorybookAddonDocs = exports.resolveFromStorybook = void 0;
16
18
 
17
19
  var _path = _interopRequireDefault(require("path"));
18
20
 
@@ -42,9 +44,9 @@ const resolveFromStorybookBuilderWebpack4 = modulePath => (0, _resolveFrom.defau
42
44
 
43
45
  exports.resolveFromStorybookBuilderWebpack4 = resolveFromStorybookBuilderWebpack4;
44
46
 
45
- const resolveFromStorybookCore = modulePath => (0, _resolveFrom.default)(resolveFromStorybook('@storybook/core'), modulePath);
47
+ const resolveFromStorybookCoreClient = modulePath => (0, _resolveFrom.default)(resolveFromStorybook('@storybook/core-client'), modulePath);
46
48
 
47
- exports.resolveFromStorybookCore = resolveFromStorybookCore;
49
+ exports.resolveFromStorybookCoreClient = resolveFromStorybookCoreClient;
48
50
 
49
51
  const resolveFromStorybookCoreServer = modulePath => (0, _resolveFrom.default)(resolveFromStorybook('@storybook/core-server'), modulePath);
50
52
 
@@ -92,30 +94,22 @@ function getStorybookVersion() {
92
94
  }
93
95
 
94
96
  function isStorybookVersionLessThan(major, minor) {
95
- var _process$env$__CREEVE;
96
-
97
- const [sbMajor, sbMinor] = ((_process$env$__CREEVE = process.env.__CREEVEY_STORYBOOK_VERSION__) !== null && _process$env$__CREEVE !== void 0 ? _process$env$__CREEVE : getStorybookVersion()).split('.');
97
+ const [sbMajor, sbMinor] = (process.env.__CREEVEY_STORYBOOK_VERSION__ ?? getStorybookVersion()).split('.');
98
98
  return Number(sbMajor) < major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) < minor;
99
99
  }
100
100
 
101
101
  function isStorybookVersionGreaterThan(major, minor) {
102
- var _process$env$__CREEVE2;
103
-
104
- const [sbMajor, sbMinor] = ((_process$env$__CREEVE2 = process.env.__CREEVEY_STORYBOOK_VERSION__) !== null && _process$env$__CREEVE2 !== void 0 ? _process$env$__CREEVE2 : getStorybookVersion()).split('.');
102
+ const [sbMajor, sbMinor] = (process.env.__CREEVEY_STORYBOOK_VERSION__ ?? getStorybookVersion()).split('.');
105
103
  return Number(sbMajor) > major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) > minor;
106
104
  }
107
105
 
108
106
  function isStorybookVersion(major, minor) {
109
- var _process$env$__CREEVE3;
110
-
111
- const [sbMajor, sbMinor] = ((_process$env$__CREEVE3 = process.env.__CREEVEY_STORYBOOK_VERSION__) !== null && _process$env$__CREEVE3 !== void 0 ? _process$env$__CREEVE3 : getStorybookVersion()).split('.');
107
+ const [sbMajor, sbMinor] = (process.env.__CREEVEY_STORYBOOK_VERSION__ ?? getStorybookVersion()).split('.');
112
108
  return Number(sbMajor) == major || minor != undefined && Number(sbMajor) == major && Number(sbMinor) == minor;
113
109
  }
114
110
 
115
111
  function getStorybookFramework() {
116
- var _process$env$__CREEVE4;
117
-
118
- const framework = (_process$env$__CREEVE4 = process.env.__CREEVEY_STORYBOOK_FRAMEWORK__) !== null && _process$env$__CREEVE4 !== void 0 ? _process$env$__CREEVE4 : supportedFrameworks.find(framework => {
112
+ const framework = process.env.__CREEVEY_STORYBOOK_FRAMEWORK__ ?? supportedFrameworks.find(framework => {
119
113
  try {
120
114
  return require.resolve(resolveFromStorybook(`@storybook/${framework}`));
121
115
  } catch (_) {
@@ -139,8 +133,8 @@ async function importStorybookConfig() {
139
133
  try {
140
134
  return storybookConfigRef.current = (await Promise.resolve(`${require.resolve(configPath)}`).then(s => _interopRequireWildcard(require(s)))).default;
141
135
  } catch (_) {
142
- const storybookUtilsPath = isStorybookVersionLessThan(6, 2) ? '@storybook/core/dist/server/utils' : '@storybook/core-common/dist/cjs/utils';
143
- const serverRequireModule = isStorybookVersionLessThan(6, 2) ? 'server-require' : 'interpret-require'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
136
+ const storybookUtilsPath = '@storybook/core-common/dist/cjs/utils';
137
+ const serverRequireModule = 'interpret-require'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
144
138
 
145
139
  const {
146
140
  getInterpretedFile
@@ -149,17 +143,16 @@ async function importStorybookConfig() {
149
143
  const {
150
144
  default: serverRequireFallback,
151
145
  serverRequire = serverRequireFallback
152
- } = await Promise.resolve(`${resolveFromStorybook(`${storybookUtilsPath}/${serverRequireModule}`)}`).then(s => _interopRequireWildcard(require(s))); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
146
+ } = await Promise.resolve(`${resolveFromStorybook(`${storybookUtilsPath}/${serverRequireModule}`)}`).then(s => _interopRequireWildcard(require(s))); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
153
147
 
154
- const mainConfigFile = isStorybookVersionLessThan(6, 1) ? configPath : // eslint-disable-next-line @typescript-eslint/no-unsafe-call
155
- getInterpretedFile(configPath); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
148
+ const mainConfigFile = getInterpretedFile(configPath); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
156
149
 
157
150
  return storybookConfigRef.current = serverRequire(mainConfigFile);
158
151
  }
159
152
  }
160
153
 
161
154
  async function isCSFv3Enabled() {
162
- var _await$importStoryboo, _await$importStoryboo2, _await$importStoryboo3;
155
+ var _await$importStoryboo, _await$importStoryboo2;
163
156
 
164
- 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;
157
+ return ((_await$importStoryboo = await importStorybookConfig()) === null || _await$importStoryboo === void 0 ? void 0 : (_await$importStoryboo2 = _await$importStoryboo.features) === null || _await$importStoryboo2 === void 0 ? void 0 : _await$importStoryboo2.previewCsfV3) ?? false;
165
158
  }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.loadStories = loadStories;
7
+
8
+ var _cluster = _interopRequireDefault(require("cluster"));
9
+
10
+ var _selenium = require("../../selenium");
11
+
12
+ var _messages = require("../../messages");
13
+
14
+ var _types = require("../../../types");
15
+
16
+ var _logger = require("../../logger");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ async function loadStories(_config, {
21
+ port
22
+ }, storiesListener) {
23
+ if (_cluster.default.isPrimary) {
24
+ return new Promise(resolve => {
25
+ const worker = Object.values(_cluster.default.workers ?? {}).filter(_types.isDefined).find(worker => worker.isConnected());
26
+
27
+ if (worker) {
28
+ const unsubscribe = (0, _messages.subscribeOnWorker)(worker, 'stories', message => {
29
+ if (message.type == 'set') {
30
+ const {
31
+ stories,
32
+ oldTests
33
+ } = message.payload;
34
+ if (oldTests.length > 0) _logger.logger.warn(`If you use browser stories provider of CSFv3 Storybook feature\n` + `Creevey will not load tests defined in story parameters from following stories:\n` + oldTests.join('\n'));
35
+ unsubscribe();
36
+ resolve(stories);
37
+ }
38
+ });
39
+ (0, _messages.sendStoriesMessage)(worker, {
40
+ type: 'get'
41
+ });
42
+ }
43
+
44
+ (0, _messages.subscribeOn)('stories', message => {
45
+ // TODO updates only one browser :(
46
+ if (message.type == 'update') storiesListener(new Map(message.payload));
47
+ });
48
+ });
49
+ } else {
50
+ (0, _messages.subscribeOn)('stories', message => {
51
+ if (message.type == 'get') (0, _messages.emitStoriesMessage)({
52
+ type: 'set',
53
+ payload: {
54
+ stories,
55
+ oldTests: storiesWithOldTests
56
+ }
57
+ });
58
+ if (message.type == 'update') storiesListener(new Map(message.payload));
59
+ });
60
+ const stories = await (0, _selenium.loadStoriesFromBrowser)(port);
61
+ const storiesWithOldTests = [];
62
+ Object.values(stories).forEach(story => {
63
+ var _parameters, _parameters$creevey;
64
+
65
+ if ((_parameters = story.parameters) !== null && _parameters !== void 0 && (_parameters$creevey = _parameters.creevey) !== null && _parameters$creevey !== void 0 && _parameters$creevey.tests) {
66
+ var _parameters2, _parameters2$creevey;
67
+
68
+ (_parameters2 = story.parameters) === null || _parameters2 === void 0 ? true : (_parameters2$creevey = _parameters2.creevey) === null || _parameters2$creevey === void 0 ? true : delete _parameters2$creevey.tests;
69
+ storiesWithOldTests.push(`${story.kind}/${story.name}`);
70
+ }
71
+ });
72
+ return stories;
73
+ }
74
+ }
@@ -3,25 +3,24 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.extractStoriesData = extractStoriesData;
6
7
  exports.loadStories = loadStories;
7
8
 
8
9
  var _path = _interopRequireDefault(require("path"));
9
10
 
10
- var _cluster = require("cluster");
11
+ var _cluster = _interopRequireDefault(require("cluster"));
11
12
 
12
13
  var _chokidar = _interopRequireDefault(require("chokidar"));
13
14
 
14
- var _types = require("../../types");
15
+ var _types = require("../../../types");
15
16
 
16
- var _utils = require("../utils");
17
+ var _utils = require("../../utils");
17
18
 
18
- var _messages = require("../messages");
19
+ var _messages = require("../../messages");
19
20
 
20
- var _helpers = require("./helpers");
21
+ var _helpers = require("../helpers");
21
22
 
22
- var _logger = require("../logger");
23
-
24
- var _shared = require("../../shared");
23
+ var _logger = require("../../logger");
25
24
 
26
25
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
26
 
@@ -30,7 +29,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
30
29
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
30
 
32
31
  async function initStorybookEnvironment() {
33
- // @ts-ignore
32
+ // @ts-expect-error There is no @types/global-jsdom package
34
33
  (await Promise.resolve().then(() => _interopRequireWildcard(require('global-jsdom')))).default(undefined, {
35
34
  url: 'http://localhost'
36
35
  }); // NOTE Cutoff `jsdom` part from userAgent, because storybook check enviroment and create events channel if runs in browser
@@ -45,10 +44,10 @@ async function initStorybookEnvironment() {
45
44
  logger
46
45
  } = await (0, _helpers.importStorybookClientLogger)(); // NOTE: Disable duplication warnings for >=6.2 storybook
47
46
 
48
- if (_cluster.isWorker) logger.warn = _types.noop; // NOTE: disable logger for 5.x storybook
47
+ if (_cluster.default.isWorker) logger.warn = _types.noop; // NOTE: disable logger for 5.x storybook
49
48
 
50
49
  logger.debug = _types.noop;
51
- return Promise.resolve().then(() => _interopRequireWildcard(require('./entry')));
50
+ return Promise.resolve().then(() => _interopRequireWildcard(require('../entry')));
52
51
  }
53
52
 
54
53
  function watchStories(channel, watcher, initialFiles) {
@@ -59,7 +58,7 @@ function watchStories(channel, watcher, initialFiles) {
59
58
  watcher.on('change', filePath => storiesByFiles.set(_path.default.isAbsolute(filePath) ? filePath : `./${filePath.replace(/\\/g, '/')}`, []));
60
59
  watcher.on('unlink', filePath => storiesByFiles.set(_path.default.isAbsolute(filePath) ? filePath : `./${filePath.replace(/\\/g, '/')}`, []));
61
60
  return data => {
62
- const stories = (0, _helpers.isStorybookVersionLessThan)(6) || (0, _helpers.isStorybookVersionGreaterThan)(6, 3) ? data.stories : (0, _shared.denormalizeStoryParameters)(data);
61
+ const stories = data.stories;
63
62
  const files = new Set(Object.values(stories).map(story => story.parameters.fileName));
64
63
  const addedFiles = Array.from(files).filter(filePath => !watchingFiles.has(filePath));
65
64
  const removedFiles = Array.from(watchingFiles).filter(filePath => !files.has(filePath));
@@ -110,8 +109,8 @@ async function loadStoriesDirectly(config, {
110
109
  const {
111
110
  addParameters,
112
111
  configure
113
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./entry')));
114
- const requireContext = await (await Promise.resolve().then(() => _interopRequireWildcard(require('../loaders/babel/register')))).default(config, debug);
112
+ } = await Promise.resolve().then(() => _interopRequireWildcard(require('../entry')));
113
+ const requireContext = await (await Promise.resolve().then(() => _interopRequireWildcard(require('../../loaders/babel/register')))).default(config, debug);
115
114
 
116
115
  const preview = (() => {
117
116
  try {
@@ -125,7 +124,7 @@ async function loadStoriesDirectly(config, {
125
124
  stories
126
125
  } = await (0, _helpers.importStorybookConfig)();
127
126
  const contexts = stories.map(entry => {
128
- const normalizedEntry = (0, _helpers.isStorybookVersionLessThan)(6, 4) ? entry : normalizeStoriesEntry(entry, {
127
+ const normalizedEntry = normalizeStoriesEntry(entry, {
129
128
  configDir: config.storybookDir,
130
129
  workingDir: process.cwd()
131
130
  });
@@ -174,7 +173,7 @@ async function loadStoriesDirectly(config, {
174
173
  try {
175
174
  configure(contexts.map(ctx => ctx()), module, false);
176
175
  } catch (error) {
177
- if (_cluster.isMaster) _logger.logger.error(error);
176
+ if (_cluster.default.isPrimary) _logger.logger.error(error);
178
177
  }
179
178
  }
180
179
 
@@ -187,7 +186,8 @@ async function loadStoriesDirectly(config, {
187
186
  void startStorybook();
188
187
  });
189
188
  void startStorybook();
190
- }
189
+ } // TODO Do we need to support multiple storybooks here?
190
+
191
191
 
192
192
  async function loadStories(config, {
193
193
  watch,
@@ -200,16 +200,16 @@ async function loadStories(config, {
200
200
  } = storybookApi;
201
201
  channel.removeAllListeners(Events.CURRENT_STORY_WAS_SET);
202
202
  channel.on('storiesUpdated', storiesListener);
203
- let watcher = null;
203
+ let watcher;
204
204
  if (watch) watcher = _chokidar.default.watch([], {
205
205
  ignoreInitial: true
206
206
  });
207
207
  const loadPromise = new Promise(resolve => {
208
208
  channel.once(Events.SET_STORIES, data => {
209
- const stories = (0, _helpers.isStorybookVersionLessThan)(6) || (0, _helpers.isStorybookVersionGreaterThan)(6, 3) ? data.stories : (0, _shared.denormalizeStoryParameters)(data);
209
+ const stories = data.stories;
210
210
  const files = new Set(Object.values(stories).map(story => story.parameters.fileName));
211
211
  if (watcher) channel.on(Events.SET_STORIES, watchStories(channel, watcher, files));
212
- resolve(data);
212
+ resolve(stories);
213
213
  });
214
214
  });
215
215
  if (config.useWebpackToExtractTests) loadStoriesFromBundle(watch);else void loadStoriesDirectly(config, {
@@ -217,4 +217,21 @@ async function loadStories(config, {
217
217
  debug
218
218
  });
219
219
  return loadPromise;
220
+ }
221
+
222
+ async function extractStoriesData(config, {
223
+ watch,
224
+ debug
225
+ }) {
226
+ const storybookApi = await initStorybookEnvironment();
227
+ const Events = await (0, _helpers.importStorybookCoreEvents)();
228
+ const {
229
+ channel
230
+ } = storybookApi;
231
+ channel.removeAllListeners(Events.CURRENT_STORY_WAS_SET);
232
+ const loadPromise = new Promise(resolve => channel.once(Events.SET_STORIES, resolve));
233
+ if (config.useWebpackToExtractTests) loadStoriesFromBundle(watch);else void loadStoriesDirectly(config, {
234
+ debug
235
+ });
236
+ return loadPromise;
220
237
  }
@@ -31,11 +31,7 @@ function tryToLoadTestsData(filename) {
31
31
  const actualRegex = /^(.*)-actual-(\d+)\.png$/i;
32
32
 
33
33
  function approve(dirents, srcPath, dstPath, testPaths, isMatch) {
34
- dirents.filter(dirent => dirent.isFile()).map(dirent => actualRegex.exec(dirent.name)).filter(_types.isDefined).filter(([fileName, imageName]) => !testPaths || testPaths.find(([token]) => token == imageName) && isMatch(_path.default.join(srcPath, fileName))).reduce((images, [, imageName, retry]) => {
35
- var _images$get;
36
-
37
- return Number(retry) > ((_images$get = images.get(imageName)) !== null && _images$get !== void 0 ? _images$get : -1) ? images.set(imageName, Number(retry)) : images;
38
- }, new Map()).forEach((retry, imageName) => {
34
+ dirents.filter(dirent => dirent.isFile()).map(dirent => actualRegex.exec(dirent.name)).filter(_types.isDefined).filter(([fileName, imageName]) => !testPaths || testPaths.find(([token]) => token == imageName) && isMatch(_path.default.join(srcPath, fileName))).reduce((images, [, imageName, retry]) => Number(retry) > (images.get(imageName) ?? -1) ? images.set(imageName, Number(retry)) : images, new Map()).forEach((retry, imageName) => {
39
35
  (0, _fs.mkdirSync)(dstPath, {
40
36
  recursive: true
41
37
  });