creevey 0.8.0-beta.0 → 0.9.0-beta.1

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 (225) hide show
  1. package/CHANGELOG.md +5 -9
  2. package/lib/cjs/client/web/main.js +6 -6
  3. package/lib/types/cli.d.ts +1 -1
  4. package/lib/types/client/addon/Manager.d.ts +37 -37
  5. package/lib/types/client/addon/components/Addon.d.ts +8 -8
  6. package/lib/types/client/addon/components/Icons.d.ts +7 -7
  7. package/lib/types/client/addon/components/Panel.d.ts +9 -9
  8. package/lib/types/client/addon/components/TestSelect.d.ts +9 -9
  9. package/lib/types/client/addon/components/Tools.d.ts +6 -6
  10. package/lib/types/client/addon/decorator.d.ts +1 -1
  11. package/lib/types/client/addon/preset.d.ts +24 -22
  12. package/lib/types/client/addon/readyForCapture.d.ts +6 -0
  13. package/lib/types/client/addon/register.d.ts +3 -3
  14. package/lib/types/client/addon/utils.d.ts +2 -2
  15. package/lib/types/client/addon/withCreevey.d.ts +24 -13
  16. package/lib/types/client/shared/components/ImagesView/BlendView.d.ts +3 -3
  17. package/lib/types/client/shared/components/ImagesView/ImagesView.d.ts +25 -25
  18. package/lib/types/client/shared/components/ImagesView/SideBySideView.d.ts +3 -3
  19. package/lib/types/client/shared/components/ImagesView/SlideView.d.ts +3 -3
  20. package/lib/types/client/shared/components/ImagesView/SwapView.d.ts +3 -3
  21. package/lib/types/client/shared/components/ImagesView/index.d.ts +5 -5
  22. package/lib/types/client/shared/components/PageFooter/PageFooter.d.ts +9 -9
  23. package/lib/types/client/shared/components/PageFooter/Paging.d.ts +8 -8
  24. package/lib/types/client/shared/components/PageHeader/ImagePreview.d.ts +12 -12
  25. package/lib/types/client/shared/components/PageHeader/PageHeader.d.ts +17 -17
  26. package/lib/types/client/shared/components/ResultsPage.d.ts +18 -18
  27. package/lib/types/client/shared/creeveyClientApi.d.ts +9 -9
  28. package/lib/types/client/shared/helpers.d.ts +46 -46
  29. package/lib/types/client/shared/viewMode.d.ts +4 -4
  30. package/lib/types/client/web/CreeveyApp.d.ts +12 -12
  31. package/lib/types/client/web/CreeveyContext.d.ts +11 -11
  32. package/lib/types/client/web/CreeveyLoader.d.ts +3 -3
  33. package/lib/types/client/web/CreeveyView/SideBar/Checkbox.d.ts +19 -19
  34. package/lib/types/client/web/CreeveyView/SideBar/Search.d.ts +6 -6
  35. package/lib/types/client/web/CreeveyView/SideBar/SideBar.d.ts +14 -14
  36. package/lib/types/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +13 -13
  37. package/lib/types/client/web/CreeveyView/SideBar/SuiteLink.d.ts +33 -33
  38. package/lib/types/client/web/CreeveyView/SideBar/TestLink.d.ts +8 -8
  39. package/lib/types/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +10 -10
  40. package/lib/types/client/web/CreeveyView/SideBar/TestsStatus.d.ts +9 -9
  41. package/lib/types/client/web/CreeveyView/SideBar/Toggle.d.ts +6 -6
  42. package/lib/types/client/web/CreeveyView/SideBar/index.d.ts +1 -1
  43. package/lib/types/client/web/KeyboardEventsContext.d.ts +13 -13
  44. package/lib/types/client/web/index.d.ts +4 -4
  45. package/lib/types/creevey.d.ts +1 -1
  46. package/lib/types/index.d.ts +4 -2
  47. package/lib/types/server/config.d.ts +4 -4
  48. package/lib/types/server/docker.d.ts +7 -7
  49. package/lib/types/server/extract.d.ts +2 -2
  50. package/lib/types/server/index.d.ts +2 -2
  51. package/lib/types/server/loaders/babel/creevey-plugin.d.ts +1 -1
  52. package/lib/types/server/loaders/babel/helpers.d.ts +19 -19
  53. package/lib/types/server/loaders/babel/register.d.ts +5 -5
  54. package/lib/types/server/loaders/hooks/mdx.d.ts +1 -1
  55. package/lib/types/server/loaders/hooks/svelte.d.ts +1 -1
  56. package/lib/types/server/loaders/webpack/compile.d.ts +2 -2
  57. package/lib/types/server/loaders/webpack/creevey-loader.d.ts +2 -2
  58. package/lib/types/server/loaders/webpack/dummy-hmr.d.ts +10 -10
  59. package/lib/types/server/loaders/webpack/mdx-loader.d.ts +6 -6
  60. package/lib/types/server/loaders/webpack/start.d.ts +1 -1
  61. package/lib/types/server/logger.d.ts +6 -6
  62. package/lib/types/server/master/api.d.ts +7 -7
  63. package/lib/types/server/master/index.d.ts +3 -3
  64. package/lib/types/server/master/master.d.ts +7 -6
  65. package/lib/types/server/master/pool.d.ts +31 -30
  66. package/lib/types/server/master/runner.d.ts +26 -26
  67. package/lib/types/server/master/server.d.ts +2 -2
  68. package/lib/types/server/messages.d.ts +27 -18
  69. package/lib/types/server/selenium/browser.d.ts +17 -14
  70. package/lib/types/server/selenium/index.d.ts +2 -2
  71. package/lib/types/server/selenium/selenoid.d.ts +3 -3
  72. package/lib/types/server/stories.d.ts +8 -8
  73. package/lib/types/server/storybook/entry.d.ts +18 -18
  74. package/lib/types/server/storybook/helpers.d.ts +24 -24
  75. package/lib/types/server/storybook/providers/browser.d.ts +4 -0
  76. package/lib/types/server/storybook/providers/hybrid.d.ts +4 -0
  77. package/lib/types/server/storybook/providers/nodejs.d.ts +9 -0
  78. package/lib/types/server/testsFiles/parser.d.ts +12 -0
  79. package/lib/types/server/testsFiles/register.d.ts +2 -0
  80. package/lib/types/server/update.d.ts +2 -2
  81. package/lib/types/server/utils.d.ts +20 -19
  82. package/lib/types/server/worker/chai-image.d.ts +6 -6
  83. package/lib/types/server/worker/helpers.d.ts +8 -7
  84. package/lib/types/server/worker/index.d.ts +1 -1
  85. package/lib/types/server/worker/reporter.d.ts +8 -8
  86. package/lib/types/server/worker/worker.d.ts +4 -4
  87. package/lib/types/shared.d.ts +16 -4
  88. package/lib/types/types.d.ts +489 -459
  89. package/package.json +16 -7
  90. package/storybook-static/stories.json +21 -0
  91. package/types/mocha.d.ts +1 -0
  92. package/lib/cjs/cli.js +0 -5
  93. package/lib/cjs/client/addon/Manager.js +0 -413
  94. package/lib/cjs/client/addon/components/Addon.js +0 -76
  95. package/lib/cjs/client/addon/components/Icons.js +0 -42
  96. package/lib/cjs/client/addon/components/Panel.js +0 -68
  97. package/lib/cjs/client/addon/components/TestSelect.js +0 -63
  98. package/lib/cjs/client/addon/components/Tools.js +0 -114
  99. package/lib/cjs/client/addon/decorator.js +0 -11
  100. package/lib/cjs/client/addon/preset.js +0 -80
  101. package/lib/cjs/client/addon/register.js +0 -96
  102. package/lib/cjs/client/addon/utils.js +0 -38
  103. package/lib/cjs/client/addon/withCreevey.js +0 -284
  104. package/lib/cjs/client/shared/components/ImagesView/BlendView.js +0 -85
  105. package/lib/cjs/client/shared/components/ImagesView/ImagesView.js +0 -88
  106. package/lib/cjs/client/shared/components/ImagesView/SideBySideView.js +0 -176
  107. package/lib/cjs/client/shared/components/ImagesView/SlideView.js +0 -178
  108. package/lib/cjs/client/shared/components/ImagesView/SwapView.js +0 -110
  109. package/lib/cjs/client/shared/components/ImagesView/index.js +0 -45
  110. package/lib/cjs/client/shared/components/PageFooter/PageFooter.js +0 -46
  111. package/lib/cjs/client/shared/components/PageFooter/Paging.js +0 -98
  112. package/lib/cjs/client/shared/components/PageHeader/ImagePreview.js +0 -78
  113. package/lib/cjs/client/shared/components/PageHeader/PageHeader.js +0 -144
  114. package/lib/cjs/client/shared/components/ResultsPage.js +0 -173
  115. package/lib/cjs/client/shared/creeveyClientApi.js +0 -103
  116. package/lib/cjs/client/shared/helpers.js +0 -482
  117. package/lib/cjs/client/shared/viewMode.js +0 -17
  118. package/lib/cjs/client/web/index.html +0 -19
  119. package/lib/cjs/creevey.js +0 -71
  120. package/lib/cjs/index.js +0 -44
  121. package/lib/cjs/server/config.js +0 -92
  122. package/lib/cjs/server/docker.js +0 -150
  123. package/lib/cjs/server/extract.js +0 -43
  124. package/lib/cjs/server/index.js +0 -85
  125. package/lib/cjs/server/loaders/babel/creevey-plugin.js +0 -88
  126. package/lib/cjs/server/loaders/babel/helpers.js +0 -479
  127. package/lib/cjs/server/loaders/babel/register.js +0 -126
  128. package/lib/cjs/server/loaders/hooks/mdx.js +0 -30
  129. package/lib/cjs/server/loaders/hooks/svelte.js +0 -65
  130. package/lib/cjs/server/loaders/webpack/compile.js +0 -286
  131. package/lib/cjs/server/loaders/webpack/creevey-loader.js +0 -174
  132. package/lib/cjs/server/loaders/webpack/dummy-hmr.js +0 -44
  133. package/lib/cjs/server/loaders/webpack/mdx-loader.js +0 -72
  134. package/lib/cjs/server/loaders/webpack/start.js +0 -41
  135. package/lib/cjs/server/logger.js +0 -47
  136. package/lib/cjs/server/master/api.js +0 -71
  137. package/lib/cjs/server/master/index.js +0 -152
  138. package/lib/cjs/server/master/master.js +0 -56
  139. package/lib/cjs/server/master/pool.js +0 -206
  140. package/lib/cjs/server/master/runner.js +0 -294
  141. package/lib/cjs/server/master/server.js +0 -57
  142. package/lib/cjs/server/messages.js +0 -154
  143. package/lib/cjs/server/selenium/browser.js +0 -582
  144. package/lib/cjs/server/selenium/index.js +0 -31
  145. package/lib/cjs/server/selenium/selenoid.js +0 -174
  146. package/lib/cjs/server/stories.js +0 -167
  147. package/lib/cjs/server/storybook/entry.js +0 -68
  148. package/lib/cjs/server/storybook/helpers.js +0 -165
  149. package/lib/cjs/server/storybook/nodejs-provider.js +0 -220
  150. package/lib/cjs/server/update.js +0 -83
  151. package/lib/cjs/server/utils.js +0 -178
  152. package/lib/cjs/server/worker/chai-image.js +0 -142
  153. package/lib/cjs/server/worker/helpers.js +0 -73
  154. package/lib/cjs/server/worker/index.js +0 -15
  155. package/lib/cjs/server/worker/reporter.js +0 -120
  156. package/lib/cjs/server/worker/worker.js +0 -266
  157. package/lib/cjs/shared.js +0 -35
  158. package/lib/cjs/types.js +0 -69
  159. package/lib/esm/cli.js +0 -4
  160. package/lib/esm/client/addon/Manager.js +0 -397
  161. package/lib/esm/client/addon/components/Addon.js +0 -58
  162. package/lib/esm/client/addon/components/Icons.js +0 -27
  163. package/lib/esm/client/addon/components/Panel.js +0 -49
  164. package/lib/esm/client/addon/components/TestSelect.js +0 -49
  165. package/lib/esm/client/addon/components/Tools.js +0 -91
  166. package/lib/esm/client/addon/decorator.js +0 -2
  167. package/lib/esm/client/addon/preset.js +0 -55
  168. package/lib/esm/client/addon/register.js +0 -75
  169. package/lib/esm/client/addon/utils.js +0 -31
  170. package/lib/esm/client/addon/withCreevey.js +0 -270
  171. package/lib/esm/client/shared/components/ImagesView/BlendView.js +0 -64
  172. package/lib/esm/client/shared/components/ImagesView/ImagesView.js +0 -65
  173. package/lib/esm/client/shared/components/ImagesView/SideBySideView.js +0 -152
  174. package/lib/esm/client/shared/components/ImagesView/SlideView.js +0 -154
  175. package/lib/esm/client/shared/components/ImagesView/SwapView.js +0 -89
  176. package/lib/esm/client/shared/components/ImagesView/index.js +0 -5
  177. package/lib/esm/client/shared/components/PageFooter/PageFooter.js +0 -32
  178. package/lib/esm/client/shared/components/PageFooter/Paging.js +0 -84
  179. package/lib/esm/client/shared/components/PageHeader/ImagePreview.js +0 -64
  180. package/lib/esm/client/shared/components/PageHeader/PageHeader.js +0 -120
  181. package/lib/esm/client/shared/components/ResultsPage.js +0 -143
  182. package/lib/esm/client/shared/creeveyClientApi.js +0 -94
  183. package/lib/esm/client/shared/helpers.js +0 -424
  184. package/lib/esm/client/shared/viewMode.js +0 -6
  185. package/lib/esm/creevey.js +0 -56
  186. package/lib/esm/index.js +0 -4
  187. package/lib/esm/server/config.js +0 -71
  188. package/lib/esm/server/docker.js +0 -123
  189. package/lib/esm/server/extract.js +0 -30
  190. package/lib/esm/server/index.js +0 -65
  191. package/lib/esm/server/loaders/babel/creevey-plugin.js +0 -74
  192. package/lib/esm/server/loaders/babel/helpers.js +0 -462
  193. package/lib/esm/server/loaders/babel/register.js +0 -105
  194. package/lib/esm/server/loaders/hooks/mdx.js +0 -15
  195. package/lib/esm/server/loaders/hooks/svelte.js +0 -49
  196. package/lib/esm/server/loaders/webpack/compile.js +0 -263
  197. package/lib/esm/server/loaders/webpack/creevey-loader.js +0 -153
  198. package/lib/esm/server/loaders/webpack/dummy-hmr.js +0 -36
  199. package/lib/esm/server/loaders/webpack/mdx-loader.js +0 -58
  200. package/lib/esm/server/loaders/webpack/start.js +0 -27
  201. package/lib/esm/server/logger.js +0 -20
  202. package/lib/esm/server/master/api.js +0 -60
  203. package/lib/esm/server/master/index.js +0 -131
  204. package/lib/esm/server/master/master.js +0 -37
  205. package/lib/esm/server/master/pool.js +0 -187
  206. package/lib/esm/server/master/runner.js +0 -272
  207. package/lib/esm/server/master/server.js +0 -37
  208. package/lib/esm/server/messages.js +0 -128
  209. package/lib/esm/server/selenium/browser.js +0 -554
  210. package/lib/esm/server/selenium/index.js +0 -2
  211. package/lib/esm/server/selenium/selenoid.js +0 -151
  212. package/lib/esm/server/stories.js +0 -147
  213. package/lib/esm/server/storybook/entry.js +0 -44
  214. package/lib/esm/server/storybook/helpers.js +0 -106
  215. package/lib/esm/server/storybook/nodejs-provider.js +0 -200
  216. package/lib/esm/server/update.js +0 -65
  217. package/lib/esm/server/utils.js +0 -141
  218. package/lib/esm/server/worker/chai-image.js +0 -130
  219. package/lib/esm/server/worker/helpers.js +0 -64
  220. package/lib/esm/server/worker/index.js +0 -1
  221. package/lib/esm/server/worker/reporter.js +0 -98
  222. package/lib/esm/server/worker/worker.js +0 -236
  223. package/lib/esm/shared.js +0 -22
  224. package/lib/esm/types.js +0 -40
  225. package/lib/types/server/storybook/nodejs-provider.d.ts +0 -5
@@ -1,294 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _path = _interopRequireDefault(require("path"));
9
-
10
- var _fs = require("fs");
11
-
12
- var _util = require("util");
13
-
14
- var _events = require("events");
15
-
16
- var _types = require("../../types");
17
-
18
- var _pool = _interopRequireDefault(require("./pool"));
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
- 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; }
23
-
24
- const copyFileAsync = (0, _util.promisify)(_fs.copyFile);
25
- const mkdirAsync = (0, _util.promisify)(_fs.mkdir);
26
-
27
- class Runner extends _events.EventEmitter {
28
- get isRunning() {
29
- return Object.values(this.pools).some(pool => pool.isRunning);
30
- }
31
-
32
- constructor(config) {
33
- super();
34
-
35
- _defineProperty(this, "failFast", void 0);
36
-
37
- _defineProperty(this, "screenDir", void 0);
38
-
39
- _defineProperty(this, "reportDir", void 0);
40
-
41
- _defineProperty(this, "browsers", void 0);
42
-
43
- _defineProperty(this, "pools", {});
44
-
45
- _defineProperty(this, "tests", {});
46
-
47
- _defineProperty(this, "handlePoolMessage", message => {
48
- const {
49
- id,
50
- status,
51
- result
52
- } = message;
53
- const test = this.tests[id];
54
- if (!test) return;
55
- const {
56
- browser,
57
- testName,
58
- storyPath,
59
- storyId
60
- } = test; // TODO Handle 'retrying' status
61
-
62
- test.status = status == 'retrying' ? 'failed' : status;
63
-
64
- if (!result) {
65
- this.sendUpdate({
66
- tests: {
67
- [id]: {
68
- id,
69
- browser,
70
- testName,
71
- storyPath,
72
- status: test.status,
73
- storyId
74
- }
75
- }
76
- });
77
- return;
78
- }
79
-
80
- if (!test.results) {
81
- test.results = [];
82
- }
83
-
84
- test.results.push(result);
85
- this.sendUpdate({
86
- tests: {
87
- [id]: {
88
- id,
89
- browser,
90
- testName,
91
- storyPath,
92
- status: test.status,
93
- results: [result],
94
- storyId
95
- }
96
- }
97
- });
98
- if (this.failFast && status == 'failed') this.stop();
99
- });
100
-
101
- _defineProperty(this, "handlePoolStop", () => {
102
- if (!this.isRunning) {
103
- this.sendUpdate({
104
- isRunning: false
105
- });
106
- this.emit('stop');
107
- }
108
- });
109
-
110
- this.failFast = config.failFast;
111
- this.screenDir = config.screenDir;
112
- this.reportDir = config.reportDir;
113
- this.browsers = Object.keys(config.browsers);
114
- this.browsers.map(browser => this.pools[browser] = new _pool.default(config, browser)).map(pool => pool.on('test', this.handlePoolMessage));
115
- }
116
-
117
- async init() {
118
- await Promise.all(Object.values(this.pools).map(pool => pool.init()));
119
- }
120
-
121
- updateTests(testsDiff) {
122
- const tests = {};
123
- const removedTests = [];
124
- Object.entries(testsDiff).forEach(([id, newTest]) => {
125
- const oldTest = this.tests[id];
126
-
127
- if (newTest) {
128
- if (oldTest) {
129
- this.tests[id] = { ...newTest,
130
- retries: oldTest.retries,
131
- results: oldTest.results,
132
- approved: oldTest.approved
133
- };
134
- } else this.tests[id] = newTest; // eslint-disable-next-line @typescript-eslint/no-unused-vars
135
-
136
-
137
- const {
138
- story,
139
- fn,
140
- ...restTest
141
- } = newTest;
142
- tests[id] = { ...restTest,
143
- status: 'unknown'
144
- };
145
- } else if (oldTest) {
146
- const {
147
- id,
148
- browser,
149
- testName,
150
- storyPath,
151
- storyId
152
- } = oldTest;
153
- removedTests.push({
154
- id,
155
- browser,
156
- testName,
157
- storyPath,
158
- storyId
159
- });
160
- delete this.tests[id];
161
- }
162
- });
163
- this.sendUpdate({
164
- tests,
165
- removedTests
166
- });
167
- }
168
-
169
- start(ids) {
170
- if (this.isRunning) return;
171
- const testsToStart = ids.map(id => this.tests[id]).filter(_types.isDefined).filter(test => !test.skip);
172
- if (testsToStart.length == 0) return;
173
- this.sendUpdate({
174
- isRunning: true,
175
- tests: testsToStart.reduce((update, {
176
- id,
177
- storyId,
178
- browser,
179
- testName,
180
- storyPath
181
- }) => ({ ...update,
182
- [id]: {
183
- id,
184
- browser,
185
- testName,
186
- storyPath,
187
- status: 'pending',
188
- storyId
189
- }
190
- }), {})
191
- });
192
- const testsByBrowser = testsToStart.reduce((tests, test) => {
193
- const {
194
- id,
195
- browser,
196
- testName,
197
- storyPath
198
- } = test;
199
- const restPath = [...storyPath, testName].filter(_types.isDefined);
200
- test.status = 'pending';
201
- return { ...tests,
202
- [browser]: [...(tests[browser] || []), {
203
- id,
204
- path: restPath
205
- }]
206
- };
207
- }, {});
208
- this.browsers.forEach(browser => {
209
- const pool = this.pools[browser];
210
- const tests = testsByBrowser[browser];
211
-
212
- if (tests && tests.length > 0 && pool.start(tests)) {
213
- pool.once('stop', this.handlePoolStop);
214
- }
215
- });
216
- }
217
-
218
- stop() {
219
- if (!this.isRunning) return;
220
- this.browsers.forEach(browser => this.pools[browser].stop());
221
- }
222
-
223
- get status() {
224
- const tests = {};
225
- Object.values(this.tests).filter(_types.isDefined) // eslint-disable-next-line @typescript-eslint/no-unused-vars
226
- .forEach(({
227
- story,
228
- fn,
229
- ...test
230
- }) => tests[test.id] = test);
231
- return {
232
- isRunning: this.isRunning,
233
- tests,
234
- browsers: this.browsers
235
- };
236
- }
237
-
238
- async approve({
239
- id,
240
- retry,
241
- image
242
- }) {
243
- const test = this.tests[id];
244
- if (!test || !test.results) return;
245
- const result = test.results[retry];
246
- if (!result || !result.images) return;
247
- const images = result.images[image];
248
- if (!images) return;
249
-
250
- if (!test.approved) {
251
- test.approved = {};
252
- }
253
-
254
- const {
255
- browser,
256
- testName,
257
- storyPath
258
- } = test;
259
- const restPath = [...storyPath, testName].filter(_types.isDefined);
260
-
261
- const testPath = _path.default.join(...restPath, image == browser ? '' : browser);
262
-
263
- const srcImagePath = _path.default.join(this.reportDir, testPath, images.actual);
264
-
265
- const dstImagePath = _path.default.join(this.screenDir, testPath, `${image}.png`);
266
-
267
- await mkdirAsync(_path.default.join(this.screenDir, testPath), {
268
- recursive: true
269
- });
270
- await copyFileAsync(srcImagePath, dstImagePath);
271
- test.approved[image] = retry;
272
- this.sendUpdate({
273
- tests: {
274
- [id]: {
275
- id,
276
- browser,
277
- testName,
278
- storyPath,
279
- approved: {
280
- [image]: retry
281
- },
282
- storyId: test.storyId
283
- }
284
- }
285
- });
286
- }
287
-
288
- sendUpdate(data) {
289
- this.emit('update', data);
290
- }
291
-
292
- }
293
-
294
- exports.default = Runner;
@@ -1,57 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = server;
7
-
8
- var _path = _interopRequireDefault(require("path"));
9
-
10
- var _http = _interopRequireDefault(require("http"));
11
-
12
- var _koa = _interopRequireDefault(require("koa"));
13
-
14
- var _koaStatic = _interopRequireDefault(require("koa-static"));
15
-
16
- var _koaMount = _interopRequireDefault(require("koa-mount"));
17
-
18
- var _ws = _interopRequireDefault(require("ws"));
19
-
20
- var _messages = require("../messages");
21
-
22
- var _types = require("../../types");
23
-
24
- var _logger = require("../logger");
25
-
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
-
28
- function server(reportDir, port) {
29
- let resolveApi = _types.noop;
30
- const creeveyApi = new Promise(resolve => resolveApi = resolve);
31
- const app = new _koa.default();
32
-
33
- const server = _http.default.createServer(app.callback());
34
-
35
- const wss = new _ws.default.Server({
36
- server
37
- });
38
- app.use(async (_, next) => {
39
- await creeveyApi;
40
- await next();
41
- });
42
- app.use((0, _koaStatic.default)(_path.default.join(__dirname, '../../client/web')));
43
- app.use((0, _koaMount.default)('/report', (0, _koaStatic.default)(reportDir)));
44
- wss.on('error', error => _logger.logger.error(error));
45
- server.listen(port);
46
- (0, _messages.subscribeOn)('shutdown', () => {
47
- server.close();
48
- wss.close();
49
- });
50
- void creeveyApi.then(api => {
51
- api.subscribe(wss);
52
- wss.on('connection', ws => {
53
- ws.on('message', message => api.handleMessage(ws, message));
54
- });
55
- });
56
- return resolveApi;
57
- }
@@ -1,154 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.emitWorkerMessage = emitWorkerMessage;
7
- exports.emitTestMessage = emitTestMessage;
8
- exports.emitWebpackMessage = emitWebpackMessage;
9
- exports.emitDockerMessage = emitDockerMessage;
10
- exports.emitShutdownMessage = emitShutdownMessage;
11
- exports.sendTestMessage = sendTestMessage;
12
- exports.sendDockerMessage = sendDockerMessage;
13
- exports.sendShutdownMessage = sendShutdownMessage;
14
- exports.subscribeOn = subscribeOn;
15
-
16
- var _cluster = _interopRequireDefault(require("cluster"));
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
- function emitMessage(message) {
21
- var _process$send, _process$send2, _process;
22
-
23
- if (_cluster.default.isWorker && !process.connected) return false;
24
- return (_process$send = (_process$send2 = (_process = process).send) === null || _process$send2 === void 0 ? void 0 : _process$send2.call(_process, message)) !== null && _process$send !== void 0 ? _process$send : // @ts-expect-error: wrong typings `process.emit` return boolean
25
- process.emit('message', message);
26
- }
27
-
28
- function emitWorkerMessage(message) {
29
- return emitMessage({
30
- scope: 'worker',
31
- ...message
32
- });
33
- }
34
-
35
- function emitTestMessage(message) {
36
- return emitMessage({
37
- scope: 'test',
38
- ...message
39
- });
40
- }
41
-
42
- function emitWebpackMessage(message) {
43
- return emitMessage({
44
- scope: 'webpack',
45
- ...message
46
- });
47
- }
48
-
49
- function emitDockerMessage(message) {
50
- return emitMessage({
51
- scope: 'docker',
52
- ...message
53
- });
54
- }
55
-
56
- function emitShutdownMessage() {
57
- return emitMessage({
58
- scope: 'shutdown'
59
- });
60
- }
61
-
62
- const handlers = Object.assign(Object.create(null), {
63
- worker: new Set(),
64
- test: new Set(),
65
- webpack: new Set(),
66
- docker: new Set(),
67
- shutdown: new Set()
68
- });
69
-
70
- const handler = message => {
71
- switch (message.scope) {
72
- case 'worker':
73
- return handlers.worker.forEach(h => h(message));
74
-
75
- case 'test':
76
- return handlers.test.forEach(h => h(message));
77
-
78
- case 'webpack':
79
- return handlers.webpack.forEach(h => h(message));
80
-
81
- case 'docker':
82
- return handlers.docker.forEach(h => h(message));
83
-
84
- case 'shutdown':
85
- return handlers.shutdown.forEach(h => h(message));
86
- }
87
- };
88
-
89
- process.on('message', handler);
90
-
91
- function sendTestMessage(target, message) {
92
- var _target$send;
93
-
94
- (_target$send = target.send) === null || _target$send === void 0 ? void 0 : _target$send.call(target, {
95
- scope: 'test',
96
- ...message
97
- });
98
- }
99
-
100
- function sendDockerMessage(target, message) {
101
- var _target$send2;
102
-
103
- (_target$send2 = target.send) === null || _target$send2 === void 0 ? void 0 : _target$send2.call(target, {
104
- scope: 'docker',
105
- ...message
106
- });
107
- }
108
-
109
- function sendShutdownMessage(target) {
110
- var _target$send3;
111
-
112
- (_target$send3 = target.send) === null || _target$send3 === void 0 ? void 0 : _target$send3.call(target, {
113
- scope: 'shutdown'
114
- });
115
- }
116
-
117
- function subscribeOn(scope, handler) {
118
- switch (scope) {
119
- case 'worker':
120
- {
121
- const workerHandler = handler;
122
- handlers.worker.add(workerHandler);
123
- return () => handlers.worker.delete(workerHandler);
124
- }
125
-
126
- case 'test':
127
- {
128
- const testHandler = handler;
129
- handlers.test.add(testHandler);
130
- return () => handlers.test.delete(testHandler);
131
- }
132
-
133
- case 'webpack':
134
- {
135
- const webpackHandler = handler;
136
- handlers.webpack.add(webpackHandler);
137
- return () => handlers.webpack.delete(webpackHandler);
138
- }
139
-
140
- case 'docker':
141
- {
142
- const dockerHandler = handler;
143
- handlers.docker.add(dockerHandler);
144
- return () => handlers.docker.delete(dockerHandler);
145
- }
146
-
147
- case 'shutdown':
148
- {
149
- const shutdownHandler = handler;
150
- handlers.shutdown.add(shutdownHandler);
151
- return () => handlers.shutdown.delete(shutdownHandler);
152
- }
153
- }
154
- }