testeranto 0.47.34 → 0.47.52

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 (309) hide show
  1. package/.nvmrc +1 -0
  2. package/Bundle.Dockerfile +45 -0
  3. package/README.md +86 -11
  4. package/Report.Dockerfile +43 -0
  5. package/dist/cjs-shim.js +12 -0
  6. package/dist/common/Features.js +3 -37
  7. package/dist/common/Init.js +30 -0
  8. package/dist/common/Node.js +15 -66
  9. package/dist/common/PM/index.js +7 -0
  10. package/dist/common/PM/main.js +641 -0
  11. package/dist/common/PM/node.js +88 -0
  12. package/dist/common/PM/web.js +132 -0
  13. package/dist/common/Project.js +109 -637
  14. package/dist/common/Puppeteer.js +103 -0
  15. package/dist/common/Reporter.js +112 -0
  16. package/dist/common/Scheduler.js +1 -0
  17. package/dist/common/SubPackages/puppeteer.js +21 -0
  18. package/dist/common/{subPackages → SubPackages}/react/component/node.js +4 -4
  19. package/dist/common/{subPackages → SubPackages}/react/component/web.js +4 -4
  20. package/dist/common/SubPackages/react/jsx/index.js +25 -0
  21. package/dist/common/SubPackages/react/jsx/node.js +10 -0
  22. package/dist/common/SubPackages/react/jsx/web.js +10 -0
  23. package/dist/common/{subPackages/react-dom/jsx → SubPackages/react-dom/component}/node.js +6 -6
  24. package/dist/common/SubPackages/react-dom/component/web.js +93 -0
  25. package/dist/common/SubPackages/react-dom/jsx/index.js +2 -0
  26. package/dist/common/SubPackages/react-dom/jsx/node.js +39 -0
  27. package/dist/common/SubPackages/react-dom/jsx/web.js +118 -0
  28. package/dist/common/SubPackages/react-test-renderer/MemoExoticComponent/node.js +44 -0
  29. package/dist/common/SubPackages/react-test-renderer/component/index.js +2 -0
  30. package/dist/common/{subPackages/react-test-renderer/component/index.js → SubPackages/react-test-renderer/component/interface.js} +23 -33
  31. package/dist/common/{subPackages/react-test-renderer/jsx → SubPackages/react-test-renderer/component}/node.js +3 -5
  32. package/dist/common/{subPackages/react/jsx → SubPackages/react-test-renderer/component}/web.js +3 -5
  33. package/dist/common/SubPackages/react-test-renderer/fc/node.js +50 -0
  34. package/dist/common/SubPackages/react-test-renderer/fc/web.js +50 -0
  35. package/dist/common/{subPackages → SubPackages}/react-test-renderer/jsx/index.js +7 -3
  36. package/dist/common/SubPackages/react-test-renderer/jsx/node.js +10 -0
  37. package/dist/common/SubPackages/react-test-renderer/jsx/web.js +10 -0
  38. package/dist/common/SubPackages/react-test-renderer/jsx-promised/index.js +42 -0
  39. package/dist/common/{subPackages/react/jsx → SubPackages/react-test-renderer/jsx-promised}/node.js +2 -2
  40. package/dist/common/TaskManBackEnd.js +174 -0
  41. package/dist/common/Web.js +31 -108
  42. package/dist/common/esbuildConfigs/features.js +14 -0
  43. package/dist/common/esbuildConfigs/index.js +21 -0
  44. package/dist/common/esbuildConfigs/inputFilesPlugin.js +49 -0
  45. package/dist/common/esbuildConfigs/node.js +39 -0
  46. package/dist/common/esbuildConfigs/report.js +14 -0
  47. package/dist/common/esbuildConfigs/tests.js +13 -0
  48. package/dist/common/esbuildConfigs/web.js +57 -0
  49. package/dist/common/lib/abstractBase.js +553 -0
  50. package/dist/common/lib/basebuilder.js +79 -0
  51. package/dist/common/lib/classBuilder.js +42 -0
  52. package/dist/common/lib/core.js +75 -0
  53. package/dist/common/lib/index.js +22 -0
  54. package/dist/common/lib/types.js +2 -0
  55. package/dist/common/mongooseSchemas.js +56 -0
  56. package/dist/common/preload.js +14 -27
  57. package/dist/common/puppeteerConfiger.js +24 -0
  58. package/dist/common/report.html.js +31 -0
  59. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  60. package/dist/common/utils.js +16 -0
  61. package/dist/common/web.html.js +22 -0
  62. package/dist/module/ExampleTab.js +112 -0
  63. package/dist/module/Features.js +2 -35
  64. package/dist/module/Init.js +25 -0
  65. package/dist/module/Node.js +15 -66
  66. package/dist/module/PM/index.js +3 -0
  67. package/dist/module/PM/main.js +611 -0
  68. package/dist/module/PM/node.js +81 -0
  69. package/dist/module/PM/web.js +125 -0
  70. package/dist/module/Project.js +110 -615
  71. package/dist/module/Puppeteer.js +98 -0
  72. package/dist/module/Reporter.js +107 -0
  73. package/dist/module/Scheduler.js +1 -0
  74. package/dist/module/SubPackages/puppeteer.js +16 -0
  75. package/dist/module/{subPackages → SubPackages}/react/component/node.js +3 -3
  76. package/dist/module/{subPackages → SubPackages}/react/component/web.js +3 -3
  77. package/dist/module/SubPackages/react/jsx/index.js +19 -0
  78. package/dist/module/SubPackages/react/jsx/node.js +5 -0
  79. package/dist/module/SubPackages/react/jsx/web.js +5 -0
  80. package/dist/module/{subPackages → SubPackages}/react-dom/component/node.js +7 -7
  81. package/dist/module/SubPackages/react-dom/component/web.js +88 -0
  82. package/dist/module/SubPackages/react-dom/jsx/node.js +31 -0
  83. package/dist/module/SubPackages/react-dom/jsx/web.js +90 -0
  84. package/dist/module/SubPackages/react-test-renderer/MemoExoticComponent/node.js +16 -0
  85. package/dist/module/SubPackages/react-test-renderer/component/index.js +1 -0
  86. package/dist/module/SubPackages/react-test-renderer/component/interface.js +39 -0
  87. package/dist/module/{subPackages → SubPackages}/react-test-renderer/component/node.js +2 -2
  88. package/dist/module/{subPackages → SubPackages}/react-test-renderer/component/web.js +2 -2
  89. package/dist/module/{subPackages → SubPackages}/react-test-renderer/fc/node.js +3 -3
  90. package/dist/module/SubPackages/react-test-renderer/fc/web.js +22 -0
  91. package/dist/module/{subPackages → SubPackages}/react-test-renderer/jsx/index.js +7 -3
  92. package/dist/module/SubPackages/react-test-renderer/jsx/node.js +5 -0
  93. package/dist/module/SubPackages/react-test-renderer/jsx/web.js +5 -0
  94. package/dist/module/SubPackages/react-test-renderer/jsx-promised/index.js +16 -0
  95. package/dist/module/{subPackages/react-test-renderer/jsx → SubPackages/react-test-renderer/jsx-promised}/node.js +1 -1
  96. package/dist/module/TaskManBackEnd.js +169 -0
  97. package/dist/module/TaskManFrontEnd.js +600 -0
  98. package/dist/module/Web.js +31 -108
  99. package/dist/module/esbuildConfigs/features.js +12 -0
  100. package/dist/module/esbuildConfigs/index.js +19 -0
  101. package/dist/module/esbuildConfigs/inputFilesPlugin.js +44 -0
  102. package/dist/module/esbuildConfigs/node.js +34 -0
  103. package/dist/module/esbuildConfigs/report.js +14 -0
  104. package/dist/module/esbuildConfigs/tests.js +11 -0
  105. package/dist/module/esbuildConfigs/web.js +52 -0
  106. package/dist/module/lib/abstractBase.js +545 -0
  107. package/dist/module/lib/basebuilder.js +75 -0
  108. package/dist/module/lib/classBuilder.js +38 -0
  109. package/dist/module/lib/core.js +72 -0
  110. package/dist/module/lib/index.js +18 -0
  111. package/dist/module/lib/types.js +1 -0
  112. package/dist/module/mongooseSchemas.js +50 -0
  113. package/dist/module/preload.js +15 -26
  114. package/dist/module/puppeteerConfiger.js +19 -0
  115. package/dist/module/report.html.js +29 -0
  116. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  117. package/dist/module/utils.js +9 -0
  118. package/dist/module/web.html.js +20 -0
  119. package/dist/prebuild/TaskManBackEnd.mjs +174 -0
  120. package/dist/prebuild/TaskManFrontEnd.css +12301 -0
  121. package/dist/prebuild/TaskManFrontEnd.js +81264 -0
  122. package/dist/types/Features.d.ts +1 -34
  123. package/dist/types/Init.d.ts +2 -0
  124. package/dist/types/Node.d.ts +5 -11
  125. package/dist/types/PM/index.d.ts +20 -0
  126. package/dist/types/PM/main.d.ts +31 -0
  127. package/dist/types/PM/node.d.ts +27 -0
  128. package/dist/types/PM/web.d.ts +25 -0
  129. package/dist/types/Project.d.ts +3 -29
  130. package/dist/types/Puppeteer.d.ts +2 -0
  131. package/dist/types/Reporter.d.ts +1 -0
  132. package/dist/types/Scheduler.d.ts +0 -0
  133. package/dist/types/SubPackages/puppeteer.d.ts +6 -0
  134. package/dist/types/SubPackages/react/component/node.d.ts +7 -0
  135. package/dist/types/SubPackages/react/component/web.d.ts +7 -0
  136. package/dist/types/SubPackages/react/jsx/index.d.ts +12 -0
  137. package/dist/types/SubPackages/react/jsx/node.d.ts +4 -0
  138. package/dist/types/SubPackages/react/jsx/web.d.ts +4 -0
  139. package/dist/types/SubPackages/react-dom/component/node.d.ts +12 -0
  140. package/dist/types/SubPackages/react-dom/component/web.d.ts +11 -0
  141. package/dist/types/SubPackages/react-dom/jsx/index.d.ts +6 -0
  142. package/dist/types/SubPackages/react-dom/jsx/node.d.ts +6 -0
  143. package/dist/types/SubPackages/react-dom/jsx/web.d.ts +5 -0
  144. package/dist/types/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +5 -0
  145. package/dist/types/SubPackages/react-test-renderer/component/index.d.ts +13 -0
  146. package/dist/types/SubPackages/react-test-renderer/component/interface.d.ts +9 -0
  147. package/dist/types/SubPackages/react-test-renderer/component/node.d.ts +8 -0
  148. package/dist/types/SubPackages/react-test-renderer/component/web.d.ts +3 -0
  149. package/dist/types/SubPackages/react-test-renderer/fc/node.d.ts +8 -0
  150. package/dist/types/SubPackages/react-test-renderer/fc/web.d.ts +8 -0
  151. package/dist/types/{subPackages → SubPackages}/react-test-renderer/jsx/index.d.ts +5 -4
  152. package/dist/types/SubPackages/react-test-renderer/jsx/node.d.ts +8 -0
  153. package/dist/types/SubPackages/react-test-renderer/jsx/web.d.ts +8 -0
  154. package/dist/types/SubPackages/react-test-renderer/jsx-promised/index.d.ts +15 -0
  155. package/dist/types/SubPackages/react-test-renderer/jsx-promised/node.d.ts +4 -0
  156. package/dist/types/SubPackages/react-test-renderer/jsx-promised/web.d.ts +4 -0
  157. package/dist/types/TaskManBackEnd.d.ts +3 -0
  158. package/dist/types/Types.d.ts +49 -16
  159. package/dist/types/Web.d.ts +5 -11
  160. package/dist/types/esbuildConfigs/features.d.ts +4 -0
  161. package/dist/types/esbuildConfigs/index.d.ts +4 -0
  162. package/dist/types/esbuildConfigs/inputFilesPlugin.d.ts +5 -0
  163. package/dist/types/esbuildConfigs/node.d.ts +4 -0
  164. package/dist/types/esbuildConfigs/report.d.ts +0 -0
  165. package/dist/types/esbuildConfigs/tests.d.ts +4 -0
  166. package/dist/types/esbuildConfigs/web.d.ts +4 -0
  167. package/dist/types/lib/abstractBase.d.ts +104 -0
  168. package/dist/types/lib/basebuilder.d.ts +27 -0
  169. package/dist/types/lib/classBuilder.d.ts +7 -0
  170. package/dist/types/lib/core.d.ts +8 -0
  171. package/dist/types/lib/index.d.ts +59 -0
  172. package/dist/types/lib/types.d.ts +62 -0
  173. package/dist/types/mongooseSchemas.d.ts +124 -0
  174. package/dist/types/preload.d.ts +0 -1
  175. package/dist/types/puppeteerConfiger.d.ts +4 -0
  176. package/dist/types/report.html.d.ts +2 -0
  177. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  178. package/dist/types/utils.d.ts +2 -0
  179. package/dist/types/web.html.d.ts +2 -0
  180. package/index.html +30 -0
  181. package/package.json +151 -79
  182. package/src/ExampleTab.tsx +219 -0
  183. package/src/Features.ts +2 -58
  184. package/src/Init.ts +51 -0
  185. package/src/Node.ts +71 -157
  186. package/src/PM/index.ts +25 -0
  187. package/src/PM/main.ts +830 -0
  188. package/src/PM/node.ts +128 -0
  189. package/src/PM/web.ts +166 -0
  190. package/src/Project.ts +158 -797
  191. package/src/Puppeteer.ts +141 -0
  192. package/src/Reporter.ts +126 -0
  193. package/src/Scheduler.ts +0 -0
  194. package/src/SubPackages/puppeteer.ts +51 -0
  195. package/src/SubPackages/react/component/node.ts +43 -0
  196. package/src/SubPackages/react/component/web.ts +43 -0
  197. package/src/SubPackages/react/jsx/index.ts +42 -0
  198. package/src/SubPackages/react/jsx/node.ts +26 -0
  199. package/src/SubPackages/react/jsx/web.ts +30 -0
  200. package/src/{subPackages → SubPackages}/react-dom/component/node.ts +24 -44
  201. package/src/SubPackages/react-dom/component/web.ts +143 -0
  202. package/src/SubPackages/react-dom/jsx/index.ts +6 -0
  203. package/src/SubPackages/react-dom/jsx/node.ts +68 -0
  204. package/src/SubPackages/react-dom/jsx/web.ts +139 -0
  205. package/src/SubPackages/react-test-renderer/MemoExoticComponent/node.ts +38 -0
  206. package/src/SubPackages/react-test-renderer/component/index.ts +23 -0
  207. package/src/SubPackages/react-test-renderer/component/interface.ts +48 -0
  208. package/src/SubPackages/react-test-renderer/component/node.ts +17 -0
  209. package/src/SubPackages/react-test-renderer/component/web.ts +17 -0
  210. package/src/SubPackages/react-test-renderer/fc/node.ts +49 -0
  211. package/src/SubPackages/react-test-renderer/fc/web.ts +48 -0
  212. package/src/SubPackages/react-test-renderer/jsx/index.ts +48 -0
  213. package/src/SubPackages/react-test-renderer/jsx/node.ts +20 -0
  214. package/src/SubPackages/react-test-renderer/jsx/web.ts +20 -0
  215. package/src/SubPackages/react-test-renderer/jsx-promised/index.ts +40 -0
  216. package/src/SubPackages/react-test-renderer/jsx-promised/node.ts +19 -0
  217. package/src/SubPackages/react-test-renderer/jsx-promised/web.ts +22 -0
  218. package/src/TaskManBackEnd.ts +228 -0
  219. package/src/TaskManFrontEnd.tsx +1222 -0
  220. package/src/Types.ts +222 -17
  221. package/src/Web.ts +86 -217
  222. package/src/cjs-shim.js +12 -0
  223. package/src/esbuildConfigs/features.ts +17 -0
  224. package/src/esbuildConfigs/index.ts +23 -0
  225. package/src/esbuildConfigs/inputFilesPlugin.ts +65 -0
  226. package/src/esbuildConfigs/node.ts +62 -0
  227. package/src/esbuildConfigs/report.ts +15 -0
  228. package/src/esbuildConfigs/tests.ts +14 -0
  229. package/src/esbuildConfigs/web.ts +79 -0
  230. package/src/lib/abstractBase.ts +910 -0
  231. package/src/lib/basebuilder.ts +214 -0
  232. package/src/lib/classBuilder.ts +131 -0
  233. package/src/lib/core.ts +224 -0
  234. package/src/lib/index.ts +226 -0
  235. package/src/lib/types.ts +303 -0
  236. package/src/mongooseSchemas.ts +105 -0
  237. package/src/preload.ts +14 -28
  238. package/src/puppeteerConfiger.ts +26 -0
  239. package/src/report.html.ts +29 -0
  240. package/src/utils.ts +15 -0
  241. package/src/web.html.ts +20 -0
  242. package/tests/Rectangle.test.ts +189 -0
  243. package/trash/TaskMan.Dockerfile +23 -0
  244. package/trash/TaskMan1.Dockerfile +43 -0
  245. package/trash/devBot.dockerfile +12 -0
  246. package/trash/docker-compose-dev.yml +9 -0
  247. package/trash/docker-compose-prod.yml +18 -0
  248. package/trash/electronBuild.ts +32 -0
  249. package/tsconfig.json +18 -6
  250. package/tsconfig.module.json +14 -4
  251. package/tsconfig.types.json +13 -4
  252. package/dist/common/NodeWriter.js +0 -56
  253. package/dist/common/core.js +0 -396
  254. package/dist/common/electron.js +0 -52
  255. package/dist/common/subPackages/react/jsx/index.js +0 -26
  256. package/dist/common/subPackages/react-dom/component/node.js +0 -101
  257. package/dist/common/subPackages/react-dom/component/web.js +0 -61
  258. package/dist/common/subPackages/react-dom/jsx/web.js +0 -76
  259. package/dist/common/subPackages/react-test-renderer/component/node.js +0 -8
  260. package/dist/common/subPackages/react-test-renderer/component/web.js +0 -8
  261. package/dist/module/NodeWriter.js +0 -50
  262. package/dist/module/Report.js +0 -186
  263. package/dist/module/core.js +0 -387
  264. package/dist/module/electron.js +0 -47
  265. package/dist/module/subPackages/react/jsx/index.js +0 -22
  266. package/dist/module/subPackages/react/jsx/node.js +0 -5
  267. package/dist/module/subPackages/react/jsx/web.js +0 -5
  268. package/dist/module/subPackages/react-dom/component/web.js +0 -56
  269. package/dist/module/subPackages/react-dom/jsx/node.js +0 -93
  270. package/dist/module/subPackages/react-dom/jsx/web.js +0 -48
  271. package/dist/module/subPackages/react-test-renderer/component/index.js +0 -52
  272. package/dist/types/NodeWriter.d.ts +0 -2
  273. package/dist/types/core.d.ts +0 -220
  274. package/dist/types/subPackages/react/component/node.d.ts +0 -12
  275. package/dist/types/subPackages/react/component/web.d.ts +0 -12
  276. package/dist/types/subPackages/react/jsx/index.d.ts +0 -15
  277. package/dist/types/subPackages/react/jsx/node.d.ts +0 -4
  278. package/dist/types/subPackages/react/jsx/web.d.ts +0 -4
  279. package/dist/types/subPackages/react-dom/component/node.d.ts +0 -14
  280. package/dist/types/subPackages/react-dom/component/web.d.ts +0 -19
  281. package/dist/types/subPackages/react-dom/jsx/node.d.ts +0 -14
  282. package/dist/types/subPackages/react-dom/jsx/web.d.ts +0 -15
  283. package/dist/types/subPackages/react-test-renderer/component/index.d.ts +0 -20
  284. package/dist/types/subPackages/react-test-renderer/component/node.d.ts +0 -9
  285. package/dist/types/subPackages/react-test-renderer/component/web.d.ts +0 -9
  286. package/dist/types/subPackages/react-test-renderer/jsx/node.d.ts +0 -4
  287. package/dist/types/subPackages/react-test-renderer/jsx/web.d.ts +0 -4
  288. package/src/NodeWriter.ts +0 -72
  289. package/src/Report.tsx +0 -392
  290. package/src/core.ts +0 -1396
  291. package/src/electron.ts +0 -59
  292. package/src/subPackages/react/component/node.ts +0 -75
  293. package/src/subPackages/react/component/web.ts +0 -80
  294. package/src/subPackages/react/jsx/index.ts +0 -64
  295. package/src/subPackages/react/jsx/node.ts +0 -29
  296. package/src/subPackages/react/jsx/web.ts +0 -29
  297. package/src/subPackages/react-dom/component/web.ts +0 -129
  298. package/src/subPackages/react-dom/jsx/node.ts +0 -150
  299. package/src/subPackages/react-dom/jsx/web.ts +0 -117
  300. package/src/subPackages/react-test-renderer/component/index.ts +0 -101
  301. package/src/subPackages/react-test-renderer/component/node.ts +0 -30
  302. package/src/subPackages/react-test-renderer/component/web.ts +0 -30
  303. package/src/subPackages/react-test-renderer/fc/node.tsx +0 -77
  304. package/src/subPackages/react-test-renderer/jsx/index.ts +0 -51
  305. package/src/subPackages/react-test-renderer/jsx/node.ts +0 -31
  306. package/src/subPackages/react-test-renderer/jsx/web.ts +0 -31
  307. /package/dist/common/{subPackages/react-test-renderer/jsx → SubPackages/react-test-renderer/jsx-promised}/web.js +0 -0
  308. /package/dist/{types/electron.d.ts → module/SubPackages/react-dom/jsx/index.js} +0 -0
  309. /package/dist/module/{subPackages/react-test-renderer/jsx → SubPackages/react-test-renderer/jsx-promised}/web.js +0 -0
@@ -1,668 +1,140 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
4
  };
28
5
  Object.defineProperty(exports, "__esModule", { value: true });
29
6
  exports.ITProject = void 0;
30
- const ws_1 = require("ws");
31
7
  const esbuild_1 = __importDefault(require("esbuild"));
32
8
  const fs_1 = __importDefault(require("fs"));
33
9
  const path_1 = __importDefault(require("path"));
34
- const fs_promises_exists_1 = __importDefault(require("fs.promises.exists"));
35
- const pm2_1 = __importDefault(require("pm2"));
36
10
  const readline_1 = __importDefault(require("readline"));
11
+ const glob_1 = require("glob");
12
+ const node_js_1 = __importDefault(require("./esbuildConfigs/node.js"));
13
+ const web_js_1 = __importDefault(require("./esbuildConfigs/web.js"));
14
+ const web_html_js_1 = __importDefault(require("./web.html.js"));
15
+ var mode = process.argv[2] === "-dev" ? "DEV" : "PROD";
37
16
  readline_1.default.emitKeypressEvents(process.stdin);
38
17
  if (process.stdin.isTTY)
39
18
  process.stdin.setRawMode(true);
40
- const TIMEOUT = 2000;
41
- const OPEN_PORT = "";
42
- let webSocketServer;
43
- const getRunnables = (tests, payload = [new Set(), new Set()]) => {
44
- return tests.reduce((pt, cv, cndx, cry) => {
45
- if (cv[1] === "node") {
46
- pt[0].add(cv[0]);
47
- }
48
- else if (cv[1] === "web") {
49
- pt[1].add(cv[0]);
50
- }
51
- if (cv[2].length) {
52
- getRunnables(cv[2], payload);
53
- }
54
- return pt;
55
- }, payload);
19
+ process.stdin.on("keypress", (str, key) => {
20
+ if (key.name === "q") {
21
+ console.log("Testeranto-EsBuild is shutting down...");
22
+ mode = "PROD";
23
+ onDone();
24
+ }
25
+ });
26
+ let nodeDone, webDone = false;
27
+ const onNodeDone = () => {
28
+ nodeDone = true;
29
+ onDone();
30
+ };
31
+ const onWebDone = () => {
32
+ webDone = true;
33
+ onDone();
34
+ };
35
+ const onDone = () => {
36
+ console.log(JSON.stringify({
37
+ nodeDone,
38
+ webDone,
39
+ mode,
40
+ }, null, 2));
41
+ if (nodeDone && webDone && mode === "PROD") {
42
+ console.log("Testeranto-EsBuild is all done. Goodbye!");
43
+ process.exit();
44
+ }
45
+ else {
46
+ console.log("Testeranto-EsBuild is still working...");
47
+ }
56
48
  };
57
49
  class ITProject {
58
- constructor(config) {
59
- this.exitCodes = {};
50
+ constructor(configs) {
60
51
  this.mode = `up`;
61
- this.ports = {};
62
- this.websockets = {};
63
- this.resourceQueue = [];
64
- this.spinCycle = 0;
65
- this.spinAnimation = "←↖↑↗→↘↓↙";
66
- this.mainLoop = async () => {
67
- if (this.clearScreen) {
68
- console.clear();
69
- }
70
- const procsTable = [];
71
- pm2_1.default.list((err, procs) => {
72
- procs.forEach((proc) => {
73
- var _a, _b;
74
- procsTable.push({
75
- name: proc.name,
76
- pid: proc.pid,
77
- pm_id: proc.pm_id,
78
- mem: (_a = proc.monit) === null || _a === void 0 ? void 0 : _a.memory,
79
- cpu: (_b = proc.monit) === null || _b === void 0 ? void 0 : _b.cpu,
80
- "exit code": this.exitCodes[proc.name]
52
+ this.config = configs;
53
+ fs_1.default.writeFileSync(`${this.config.outdir}/testeranto.json`, JSON.stringify(Object.assign(Object.assign({}, this.config), { buildDir: process.cwd() + "/" + this.config.outdir }), null, 2));
54
+ Promise.resolve(Promise.all([...this.getSecondaryEndpointsPoints("web")].map(async (sourceFilePath) => {
55
+ const sourceFileSplit = sourceFilePath.split("/");
56
+ const sourceDir = sourceFileSplit.slice(0, -1);
57
+ const sourceFileName = sourceFileSplit[sourceFileSplit.length - 1];
58
+ const sourceFileNameMinusJs = sourceFileName
59
+ .split(".")
60
+ .slice(0, -1)
61
+ .join(".");
62
+ const htmlFilePath = path_1.default.normalize(`${process.cwd()}/${this.config.outdir}/web/${sourceDir.join("/")}/${sourceFileNameMinusJs}.html`);
63
+ const jsfilePath = `./${sourceFileNameMinusJs}.mjs`;
64
+ return fs_1.default.promises
65
+ .mkdir(path_1.default.dirname(htmlFilePath), { recursive: true })
66
+ .then((x) => fs_1.default.writeFileSync(htmlFilePath, (0, web_html_js_1.default)(jsfilePath, htmlFilePath)));
67
+ })));
68
+ const [nodeEntryPoints, webEntryPoints] = getRunnables(this.config.tests);
69
+ console.log(`this.getSecondaryEndpointsPoints("web")`, this.getSecondaryEndpointsPoints("web"));
70
+ (0, glob_1.glob)(`./${this.config.outdir}/chunk-*.mjs`, {
71
+ ignore: "node_modules/**",
72
+ }).then((chunks) => {
73
+ chunks.forEach((chunk) => {
74
+ fs_1.default.unlinkSync(chunk);
75
+ });
76
+ });
77
+ Promise.all([
78
+ esbuild_1.default
79
+ .context((0, node_js_1.default)(this.config, nodeEntryPoints))
80
+ .then(async (nodeContext) => {
81
+ if (mode == "DEV") {
82
+ await nodeContext.watch().then((v) => {
83
+ onNodeDone();
81
84
  });
82
- });
83
- console.table(procsTable);
84
- console.table(this.resourceQueue);
85
- console.log("webSocketServer.clients", Object.keys(this.websockets));
86
- const resourceRequest = this.resourceQueue.pop();
87
- if (!resourceRequest) {
88
- if (!this.devMode && this.mode === "up") {
89
- this.initiateShutdown("resource request queue is empty");
90
- }
91
- if (this.mode === "down" &&
92
- (procsTable.every((p) => p.pid === 0 || p.pid === undefined) ||
93
- procsTable.length === 0)) {
94
- this.shutdown();
95
- }
96
85
  }
97
86
  else {
98
- if (resourceRequest.protocol === "ipc") {
99
- this.allocateViaIpc(resourceRequest);
100
- }
101
- else if (resourceRequest.protocol === "ws") {
102
- this.allocateViaWs(resourceRequest);
103
- }
87
+ nodeContext.rebuild().then((v) => {
88
+ onNodeDone();
89
+ });
104
90
  }
105
- if (this.devMode) {
106
- if (this.mode === "up") {
107
- console.log(this.spinner(), "Running tests while watching for changes. Use 'q' to initiate shutdown");
108
- }
109
- else {
110
- console.log(this.spinner(), "Shutdown is in progress. Please wait.");
111
- }
91
+ return nodeContext;
92
+ }),
93
+ esbuild_1.default
94
+ .context((0, web_js_1.default)(this.config, webEntryPoints))
95
+ .then(async (webContext) => {
96
+ if (mode == "DEV") {
97
+ await webContext.watch().then((v) => {
98
+ onWebDone();
99
+ });
112
100
  }
113
101
  else {
114
- if (this.mode === "up") {
115
- console.log(this.spinner(), "Running tests without watching for changes. Use 'q' to initiate shutdown");
116
- }
117
- else {
118
- console.log(this.spinner(), "Shutdown is in progress. Please wait.");
119
- }
120
- }
121
- });
122
- };
123
- this.clearScreen = config.clearScreen;
124
- this.devMode = config.devMode;
125
- Object.values(config.ports).forEach((port) => {
126
- this.ports[port] = OPEN_PORT;
127
- });
128
- const testPath = `${process.cwd()}/${config.tests}`;
129
- const featurePath = `${process.cwd()}/${config.features}`;
130
- process.on('SIGINT', () => this.initiateShutdown("CTRL+C"));
131
- process.on('SIGQUIT', () => this.initiateShutdown("Keyboard quit"));
132
- process.on('SIGTERM', () => this.initiateShutdown("'kill' command"));
133
- process.stdin.on('keypress', (str, key) => {
134
- if (key.name === 'q') {
135
- this.initiateShutdown("'q' command");
136
- }
137
- });
138
- process.stdin.on('keypress', (str, key) => {
139
- if (key.name === 'x') {
140
- console.log("Shutting down hard!");
141
- process.exit(-1);
142
- }
143
- });
144
- Promise.resolve().then(() => __importStar(require(testPath))).then((tests) => {
145
- this.tests = tests.default;
146
- Promise.resolve().then(() => __importStar(require(featurePath))).then((features) => {
147
- this.features = features.default;
148
- Promise.resolve(Promise.all([
149
- ...this.getSecondaryEndpointsPoints("web")
150
- ]
151
- .map(async (sourceFilePath) => {
152
- const sourceFileSplit = sourceFilePath.split("/");
153
- const sourceDir = sourceFileSplit.slice(0, -1);
154
- const sourceFileName = sourceFileSplit[sourceFileSplit.length - 1];
155
- const sourceFileNameMinusJs = sourceFileName.split(".").slice(0, -1).join(".");
156
- const htmlFilePath = path_1.default.normalize(`${process.cwd()}/${config.outdir}/${sourceDir.join("/")}/${sourceFileNameMinusJs}.html`);
157
- const jsfilePath = `./${sourceFileNameMinusJs}.mjs`;
158
- return fs_1.default.promises.mkdir(path_1.default.dirname(htmlFilePath), { recursive: true }).then(x => fs_1.default.writeFileSync(htmlFilePath, `
159
- <!DOCTYPE html>
160
- <html lang="en">
161
- <head>
162
- <script type="module" src="${jsfilePath}"></script>
163
- </head>
164
-
165
- <body>
166
- <h1>${htmlFilePath}</h1>
167
- <div id="root">
168
-
169
- </div>
170
- </body>
171
-
172
- <footer></footer>
173
-
174
- </html>
175
- `));
176
- })));
177
- const [nodeEntryPoints, webEntryPoints] = getRunnables(this.tests);
178
- const esbuildConfigNode = {
179
- define: {
180
- "process.env.FLUENTFFMPEG_COV": "0"
181
- },
182
- absWorkingDir: process.cwd(),
183
- banner: {
184
- js: `import { createRequire } from 'module';const require = createRequire(import.meta.url);`
185
- },
186
- target: "esnext",
187
- // packages: "external",
188
- format: "esm",
189
- splitting: true,
190
- outExtension: { '.js': '.mjs' },
191
- platform: "node",
192
- external: ["tests.test.js", "features.test.js", "react"],
193
- outbase: config.outbase,
194
- outdir: config.outdir,
195
- jsx: 'transform',
196
- entryPoints: [...nodeEntryPoints],
197
- bundle: true,
198
- minify: config.minify === true,
199
- write: true,
200
- loader: {
201
- '.js': 'jsx',
202
- '.png': 'binary',
203
- '.jpg': 'binary',
204
- },
205
- plugins: [
206
- ...(config.plugins || []),
207
- {
208
- name: 'rebuild-notify',
209
- setup(build) {
210
- build.onEnd(result => {
211
- console.log(`node build ended with ${result.errors.length} errors`);
212
- console.log(result);
213
- result.errors.length !== 0 && process.exit(-1);
214
- // HERE: somehow restart the server from here, e.g., by sending a signal that you trap and react to inside the server.
215
- });
216
- }
217
- },
218
- ],
219
- };
220
- const esbuildConfigWeb = {
221
- // packages: "external",
222
- target: "esnext",
223
- format: "esm",
224
- splitting: true,
225
- outExtension: { '.js': '.mjs' },
226
- alias: {
227
- react: path_1.default.resolve("./node_modules/react")
228
- },
229
- external: [
230
- // "url",
231
- "electron",
232
- "path",
233
- "fs",
234
- // "react",
235
- "stream",
236
- "tests.test.js", "features.test.js"
237
- ],
238
- platform: "browser",
239
- outbase: config.outbase,
240
- outdir: config.outdir,
241
- jsx: 'transform',
242
- entryPoints: [
243
- ...webEntryPoints,
244
- testPath,
245
- featurePath,
246
- ],
247
- bundle: true,
248
- minify: config.minify === true,
249
- write: true,
250
- loader: {
251
- '.js': 'jsx',
252
- '.png': 'binary',
253
- '.jpg': 'binary',
254
- },
255
- plugins: [
256
- ...(config.plugins || []),
257
- {
258
- name: 'rebuild-notify',
259
- setup(build) {
260
- build.onEnd(result => {
261
- console.log(`web build ended with ${result.errors.length} errors`);
262
- console.log(result);
263
- result.errors.length !== 0 && process.exit(-1);
264
- // HERE: somehow restart the server from here, e.g., by sending a signal that you trap and react to inside the server.
265
- });
266
- }
267
- },
268
- ],
269
- };
270
- esbuild_1.default.build({
271
- bundle: true,
272
- entryPoints: ["./node_modules/testeranto/dist/module/Report.js"],
273
- minify: config.minify === true,
274
- outbase: config.outbase,
275
- write: true,
276
- outfile: `${config.outdir}/Report.js`,
277
- external: ["tests.test.js", "features.test.js"]
278
- });
279
- fs_1.default.writeFileSync(`${config.outdir}/report.html`, `
280
- <!DOCTYPE html>
281
- <html lang="en">
282
-
283
- <head>
284
- <meta name="description" content="Webpage description goes here" />
285
- <meta charset="utf-8" />
286
- <title>kokomoBay - testeranto</title>
287
- <meta name="viewport" content="width=device-width, initial-scale=1" />
288
- <meta name="author" content="" />
289
- <link rel="stylesheet" href="./Report.css" />
290
-
291
- <script type="importmap">
292
- {
293
- "imports": {
294
- "tests.test.js": "./tests.test.js",
295
- "features.test.js": "./features.test.js"
296
- }
297
- }
298
- </script>
299
-
300
-
301
- <script src="./Report.js"></script>
302
- </head>
303
-
304
- <body>
305
- <div id="root">
306
- react is loading
307
- </div>
308
- </body>
309
-
310
- </html>
311
- `);
312
- Promise.all([
313
- esbuild_1.default.context(esbuildConfigNode).then(async (nodeContext) => {
314
- await nodeContext.watch();
315
- }),
316
- esbuild_1.default.context(esbuildConfigWeb).then(async (esbuildWeb) => {
317
- await esbuildWeb.watch();
318
- })
319
- ]).then(() => {
320
- if (config.devMode === false) {
321
- console.log("Your tests were built but not run because devMode was false. Exiting gracefully");
322
- process.exit(0);
323
- }
324
- else {
325
- pm2_1.default.connect(async (err) => {
326
- if (err) {
327
- console.error(err);
328
- process.exit(-1);
329
- }
330
- else {
331
- console.log(`pm2 is connected`);
332
- }
333
- // run a websocket as an alternative to node IPC
334
- webSocketServer = new ws_1.WebSocketServer({
335
- port: 8080,
336
- host: "localhost",
337
- });
338
- webSocketServer.on('open', () => {
339
- console.log('open');
340
- // process.exit()
341
- });
342
- webSocketServer.on('close', (data) => {
343
- console.log('webSocketServer close: %s', data);
344
- // process.exit()
345
- });
346
- webSocketServer.on('listening', () => {
347
- console.log("webSocketServer listening", webSocketServer.address());
348
- // process.exit()
349
- });
350
- webSocketServer.on('connection', (webSocket) => {
351
- console.log('webSocketServer connection');
352
- webSocket.on('message', (webSocketData) => {
353
- // console.log('webSocket message: %s', webSocketData);
354
- const payload = JSON.parse(webSocketData.valueOf().toString());
355
- // console.log('webSocket payload', JSON.stringify(payload.data.testResourceConfiguration.name, null, 2));
356
- // as {
357
- // type: string,
358
- // data: ITTestResourceRequirement & {
359
- // testResourceConfiguration: {
360
- // name: string;
361
- // }
362
- // }
363
- // };
364
- const messageType = payload.type;
365
- if (messageType === "testeranto:hola") {
366
- const name = payload.data.requirement.name;
367
- const requestedResources = payload.data;
368
- this.websockets[name] = webSocket;
369
- console.log('hola WS! connected: ' + name + ' in ' + Object.getOwnPropertyNames(this.websockets));
370
- this.requestResource(requestedResources.requirement, 'ws');
371
- }
372
- else if (messageType === "testeranto:adios") {
373
- console.log("adios WS", payload.data.testResourceConfiguration.name);
374
- this.releaseTestResourceWs(payload);
375
- }
376
- });
377
- });
378
- const makePath = (fPath, rt) => {
379
- return path_1.default.resolve("./" + config.outdir + "/" + fPath.replace(path_1.default.extname(fPath), "") + ".mjs");
380
- };
381
- const bootInterval = setInterval(async () => {
382
- const filesToLookup = this.tests
383
- .map(([p, rt]) => {
384
- const filepath = makePath(p, rt);
385
- return {
386
- filepath,
387
- exists: (0, fs_promises_exists_1.default)(filepath),
388
- };
389
- });
390
- const allFilesExist = (await Promise.all(filesToLookup.map((f) => f.exists))).every((b) => b);
391
- if (!allFilesExist) {
392
- console.log(this.spinner(), "waiting for files to build...");
393
- filesToLookup.forEach((f) => {
394
- console.log(f.exists, "\t", f.filepath);
395
- });
396
- }
397
- else {
398
- clearInterval(bootInterval);
399
- pm2_1.default.launchBus((err, pm2_bus) => {
400
- pm2_bus.on("testeranto:hola", (packet) => {
401
- console.log("hola IPC", packet);
402
- this.requestResource(packet.data.requirement, 'ipc');
403
- });
404
- pm2_bus.on("testeranto:adios", (payload) => {
405
- this.releaseTestResourcePm2(payload.data);
406
- });
407
- });
408
- this
409
- .tests
410
- .reduce((m, [inputFilePath, runtime]) => {
411
- const script = makePath(inputFilePath, runtime);
412
- const partialTestResourceByCommandLineArg = `${script} '${JSON.stringify({
413
- name: inputFilePath,
414
- ports: [],
415
- fs: path_1.default.resolve(process.cwd(), config.outdir, inputFilePath),
416
- })}'`;
417
- if (runtime === "web") {
418
- const fileAsList = inputFilePath.split("/");
419
- const fileListHead = fileAsList.slice(0, -1);
420
- const fname = fileAsList[fileAsList.length - 1];
421
- const fnameOnly = fname.split(".").slice(0, -1).join(".");
422
- const htmlFile = [config.outdir, ...fileListHead, `${fnameOnly}.html`].join("/");
423
- const jsFile = path_1.default.resolve(htmlFile.split(".html")[0] + ".mjs");
424
- console.log("watching", jsFile);
425
- pm2_1.default.start({
426
- script: `yarn electron node_modules/testeranto/dist/common/electron.js ${htmlFile} '${JSON.stringify({
427
- scheduled: true,
428
- name: inputFilePath,
429
- ports: [],
430
- fs: path_1.default.resolve(process.cwd(), config.outdir, inputFilePath),
431
- })}'`,
432
- name: inputFilePath,
433
- autorestart: false,
434
- args: partialTestResourceByCommandLineArg,
435
- watch: [jsFile],
436
- }, (err, proc) => {
437
- if (err) {
438
- console.error(err);
439
- return pm2_1.default.disconnect();
440
- }
441
- });
442
- }
443
- else if (runtime === "node") {
444
- const resolvedPath = path_1.default.resolve(script);
445
- console.log("watching", resolvedPath);
446
- pm2_1.default.start({
447
- name: inputFilePath,
448
- script: `node ${resolvedPath} '${JSON.stringify({
449
- scheduled: true,
450
- name: inputFilePath,
451
- ports: [],
452
- fs: path_1.default.resolve(process.cwd(), config.outdir, inputFilePath),
453
- })}'`,
454
- autorestart: false,
455
- watch: [resolvedPath],
456
- args: partialTestResourceByCommandLineArg
457
- }, (err, proc) => {
458
- if (err) {
459
- console.error(err);
460
- return pm2_1.default.disconnect();
461
- }
462
- });
463
- }
464
- this.exitCodes[inputFilePath] = null;
465
- return [inputFilePath, ...m];
466
- }, []);
467
- setInterval(this.mainLoop, TIMEOUT).unref();
468
- }
469
- }, TIMEOUT).unref();
470
- });
471
- }
472
- });
473
- });
474
- });
475
- }
476
- requestResource(requirement, protocol) {
477
- this.resourceQueue.push({ requirement, protocol });
478
- }
479
- getSecondaryEndpointsPoints(runtime) {
480
- if (runtime) {
481
- return this.tests
482
- .filter((t) => {
483
- return (t[1] === runtime);
484
- })
485
- .map((tc) => tc[0]);
486
- }
487
- return this.tests
488
- .map((tc) => tc[0]);
489
- }
490
- initiateShutdown(reason) {
491
- console.log("Shutdown initiated because", reason);
492
- this.mode = "down";
493
- }
494
- shutdown() {
495
- let i = 0;
496
- new Promise((res, reh) => {
497
- console.log("final results: ");
498
- const procsTable = [];
499
- pm2_1.default.list((err, procs) => {
500
- procs.forEach((proc, ndx) => {
501
- const exitCode = this.exitCodes[proc.name];
502
- if (exitCode !== 0) {
503
- i++;
504
- }
505
- procsTable.push({
506
- name: proc.name,
507
- pm_id: proc.pm_id,
508
- exitCode
509
- });
510
- if (ndx === procs.length - 1) {
511
- console.table(procsTable);
512
- res(i);
513
- }
514
- });
515
- });
516
- }).then((failures) => {
517
- console.log("Stopping PM2");
518
- pm2_1.default.stop("all", (e) => console.error(e));
519
- // pm2.killDaemon((e) => console.error(e));
520
- pm2_1.default.disconnect();
521
- console.log(`gracefully exiting with ${failures} failures`);
522
- process.exit(failures);
523
- });
524
- }
525
- spinner() {
526
- this.spinCycle = (this.spinCycle + 1) % this.spinAnimation.length;
527
- return this.spinAnimation[this.spinCycle];
528
- }
529
- async releaseTestResourceWs(payload) {
530
- const name = payload.data.testResourceConfiguration.name;
531
- const failed = payload.data.failed;
532
- this.exitCodes[name] = failed;
533
- Object.keys(this.ports).forEach((port) => {
534
- if (this.ports[port] === name) {
535
- this.ports[port] = OPEN_PORT;
536
- }
537
- });
538
- }
539
- async releaseTestResourcePm2(payload) {
540
- const name = payload.testResourceConfiguration.name;
541
- const failed = payload.failed;
542
- this.exitCodes[name] = failed;
543
- pm2_1.default.list((err, processes) => {
544
- processes.forEach((proc) => {
545
- if (proc.name === name) {
546
- Object.keys(this.ports).forEach((port) => {
547
- if (this.ports[port] === name) {
548
- this.ports[port] = OPEN_PORT;
549
- }
102
+ webContext.rebuild().then((v) => {
103
+ onWebDone();
550
104
  });
551
105
  }
552
- });
553
- });
106
+ return webContext;
107
+ }),
108
+ ]);
554
109
  }
555
- allocateViaWs(resourceRequest) {
556
- const name = resourceRequest.requirement.name;
557
- const testResourceRequirement = resourceRequest.requirement;
558
- const websocket = this.websockets[name];
559
- if ((testResourceRequirement === null || testResourceRequirement === void 0 ? void 0 : testResourceRequirement.ports) === 0) {
560
- websocket.send(JSON.stringify({
561
- data: {
562
- testResourceConfiguration: {
563
- ports: [],
564
- },
565
- }
566
- }));
567
- }
568
- else if (((testResourceRequirement === null || testResourceRequirement === void 0 ? void 0 : testResourceRequirement.ports) || 0) > 0) {
569
- // clear any port-slots associated with this job
570
- Object.values(this.ports).forEach((jobMaybe, portNumber) => {
571
- if (jobMaybe && jobMaybe === name) {
572
- this.ports[portNumber] = OPEN_PORT;
573
- }
574
- });
575
- // find a list of open ports
576
- const foundOpenPorts = Object.keys(this.ports).filter((p) => this.ports[p] === OPEN_PORT);
577
- if (foundOpenPorts.length >= testResourceRequirement.ports) {
578
- const selectionOfPorts = foundOpenPorts.slice(0, testResourceRequirement.ports);
579
- websocket.send(JSON.stringify({
580
- data: {
581
- testResourceConfiguration: {
582
- ports: selectionOfPorts,
583
- },
584
- }
585
- }));
586
- // mark the selected ports as occupied
587
- for (const foundOpenPort of selectionOfPorts) {
588
- this.ports[foundOpenPort] = name;
110
+ getSecondaryEndpointsPoints(runtime) {
111
+ const meta = (ts, st) => {
112
+ ts.forEach((t) => {
113
+ console.log("getSecondaryEndpointsPoints", t);
114
+ if (t[1] === runtime) {
115
+ st.add(t[0]);
589
116
  }
590
- }
591
- else {
592
- console.log(`no port was open so send the ${name} job to the back of the resourceQueue`);
593
- this.resourceQueue.push(resourceRequest);
594
- }
595
- }
596
- }
597
- allocateViaIpc(resourceRequest) {
598
- const pName = resourceRequest.requirement.name;
599
- const testResourceRequirement = resourceRequest.requirement;
600
- pm2_1.default.list((err, processes) => {
601
- console.error(err);
602
- processes.forEach((p) => {
603
- if (p.name === pName && p.pid) {
604
- const message = {
605
- // these fields must be present
606
- id: p.pid,
607
- topic: "some topic",
608
- type: "process:msg",
609
- // Data to be sent
610
- data: {
611
- testResourceConfiguration: {
612
- ports: [],
613
- // fs: fPath,
614
- },
615
- id: p.pm_id,
616
- },
617
- };
618
- if ((testResourceRequirement === null || testResourceRequirement === void 0 ? void 0 : testResourceRequirement.ports) === 0) {
619
- pm2_1.default.sendDataToProcessId(p.pm_id, message, function (err, res) {
620
- // console.log("sendDataToProcessId", err, res, message);
621
- });
622
- }
623
- if (((testResourceRequirement === null || testResourceRequirement === void 0 ? void 0 : testResourceRequirement.ports) || 0) > 0) {
624
- // clear any port-slots associated with this job
625
- Object.values(this.ports).forEach((jobMaybe, portNumber) => {
626
- if (jobMaybe && jobMaybe === pName) {
627
- this.ports[portNumber] = OPEN_PORT;
628
- }
629
- });
630
- // find a list of open ports
631
- const foundOpenPorts = Object.keys(this.ports).filter((p) => this.ports[p] === OPEN_PORT);
632
- // if there are enough open port-slots...
633
- if (foundOpenPorts.length >= testResourceRequirement.ports) {
634
- const selectionOfPorts = foundOpenPorts.slice(0, testResourceRequirement.ports);
635
- const message = {
636
- // these fields must be present
637
- id: p.pid,
638
- topic: "some topic",
639
- // process:msg will be send as 'message' on target process
640
- type: "process:msg",
641
- // Data to be sent
642
- data: {
643
- testResourceConfiguration: {
644
- // fs: fPath,
645
- ports: selectionOfPorts,
646
- },
647
- id: p.pid,
648
- },
649
- };
650
- pm2_1.default.sendDataToProcessId(p.pm_id, message, function (err, res) {
651
- // no-op
652
- });
653
- // mark the selected ports as occupied
654
- for (const foundOpenPort of selectionOfPorts) {
655
- this.ports[foundOpenPort] = p.pid.toString();
656
- }
657
- }
658
- else {
659
- console.log(`no port was open so send the ${p.pid} job to the back of the resourceQueue`);
660
- this.resourceQueue.push(resourceRequest);
661
- }
662
- }
117
+ if (Array.isArray(t[3])) {
118
+ meta(t[3], st);
663
119
  }
664
120
  });
665
- });
121
+ return st;
122
+ };
123
+ return Array.from(meta(this.config.tests, new Set()));
666
124
  }
667
125
  }
668
126
  exports.ITProject = ITProject;
127
+ const getRunnables = (tests, payload = [new Set(), new Set()]) => {
128
+ return tests.reduce((pt, cv, cndx, cry) => {
129
+ if (cv[1] === "node") {
130
+ pt[0].add(cv[0]);
131
+ }
132
+ else if (cv[1] === "web") {
133
+ pt[1].add(cv[0]);
134
+ }
135
+ if (cv[3].length) {
136
+ getRunnables(cv[3], payload);
137
+ }
138
+ return pt;
139
+ }, payload);
140
+ };