testeranto 0.94.0 → 0.110.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 (308) hide show
  1. package/README.md +1 -0
  2. package/bundle.js +80 -33
  3. package/dist/common/{src/Init.js → Init.js} +28 -0
  4. package/dist/common/{src/PM → PM}/main.js +272 -111
  5. package/dist/common/{src/PM → PM}/node.js +20 -5
  6. package/dist/common/{src/PM → PM}/web.js +19 -4
  7. package/dist/common/ReportServer.js +22 -0
  8. package/dist/common/{src/SubPackages → SubPackages}/react/jsx/index.js +0 -12
  9. package/dist/common/{src/SubPackages → SubPackages}/react/jsx/node.js +1 -6
  10. package/dist/common/{src/SubPackages → SubPackages}/react-dom/component/node.js +3 -16
  11. package/dist/common/{src/SubPackages → SubPackages}/react-dom/component/web.js +3 -3
  12. package/dist/common/{src/SubPackages → SubPackages}/react-dom/jsx/node.js +1 -1
  13. package/dist/common/{src/SubPackages → SubPackages}/react-dom/jsx/web.js +41 -30
  14. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/MemoExoticComponent/node.js +17 -7
  15. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/interface.js +17 -7
  16. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/fc/node.js +17 -7
  17. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/fc/web.js +17 -7
  18. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx/index.js +18 -14
  19. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/index.js +17 -7
  20. package/dist/common/build.js +222 -0
  21. package/dist/common/{src/defaultConfig.js → defaultConfig.js} +1 -0
  22. package/dist/common/esbuildConfigs/eslint-formatter-testeranto.js +6 -0
  23. package/dist/common/esbuildConfigs/inputFilesPlugin.js +27 -0
  24. package/dist/common/{src/esbuildConfigs → esbuildConfigs}/node.js +3 -14
  25. package/dist/common/{src/esbuildConfigs → esbuildConfigs}/web.js +3 -14
  26. package/dist/common/{src/init-docs.js → init-docs.js} +20 -10
  27. package/dist/common/{src/lib → lib}/abstractBase.js +20 -92
  28. package/dist/common/{src/lib → lib}/basebuilder.js +23 -10
  29. package/dist/common/{src/lib → lib}/classBuilder.js +1 -3
  30. package/dist/common/{src/lib → lib}/core.js +26 -10
  31. package/dist/common/{src/lib → lib}/index.js +0 -1
  32. package/dist/common/run.js +297 -0
  33. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  34. package/dist/common/utils.js +43 -0
  35. package/dist/module/Footer.js +4 -0
  36. package/dist/module/Init.js +63 -0
  37. package/dist/module/{src/PM → PM}/main.js +253 -102
  38. package/dist/module/{src/PM → PM}/node.js +20 -5
  39. package/dist/module/{src/PM → PM}/web.js +19 -4
  40. package/dist/module/ReportClient.js +97 -0
  41. package/dist/module/ReportServer.js +17 -0
  42. package/dist/module/SubPackages/react/jsx/index.js +15 -0
  43. package/dist/module/{src/SubPackages → SubPackages}/react/jsx/node.js +1 -6
  44. package/dist/module/{src/SubPackages → SubPackages}/react-dom/component/node.js +3 -16
  45. package/dist/module/{src/SubPackages → SubPackages}/react-dom/component/web.js +3 -3
  46. package/dist/module/{src/SubPackages → SubPackages}/react-dom/jsx/node.js +3 -3
  47. package/dist/module/{src/SubPackages → SubPackages}/react-dom/jsx/web.js +24 -23
  48. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx/index.js +1 -7
  49. package/dist/module/TestReport.js +91 -0
  50. package/dist/module/build.js +184 -0
  51. package/dist/module/{src/defaultConfig.js → defaultConfig.js} +1 -0
  52. package/dist/module/esbuildConfigs/eslint-formatter-testeranto.js +3 -0
  53. package/dist/module/esbuildConfigs/inputFilesPlugin.js +22 -0
  54. package/dist/module/{src/esbuildConfigs → esbuildConfigs}/node.js +3 -14
  55. package/dist/module/{src/esbuildConfigs → esbuildConfigs}/web.js +3 -14
  56. package/dist/module/{src/init-docs.js → init-docs.js} +1 -1
  57. package/dist/module/{src/lib → lib}/abstractBase.js +20 -92
  58. package/dist/module/{src/lib → lib}/basebuilder.js +23 -10
  59. package/dist/module/{src/lib → lib}/classBuilder.js +1 -3
  60. package/dist/module/{src/lib → lib}/core.js +26 -10
  61. package/dist/module/{src/lib → lib}/index.js +0 -1
  62. package/dist/module/run.js +259 -0
  63. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  64. package/dist/module/utils.js +29 -0
  65. package/dist/prebuild/ReportClient.css +11367 -0
  66. package/dist/prebuild/ReportClient.js +23641 -0
  67. package/dist/prebuild/ReportServer.mjs +16 -0
  68. package/dist/prebuild/TestReport.css +11367 -0
  69. package/dist/prebuild/TestReport.js +27484 -0
  70. package/dist/prebuild/build.mjs +376 -0
  71. package/dist/prebuild/esbuildConfigs/eslint-formatter-testeranto.mjs +9 -0
  72. package/dist/prebuild/init-docs.mjs +64 -8
  73. package/dist/prebuild/{run-tests.mjs → run.mjs} +501 -182
  74. package/dist/tsconfig.tsbuildinfo +1 -0
  75. package/dist/types/Node.d.ts +12 -0
  76. package/dist/types/{src/PM → PM}/index.d.ts +11 -3
  77. package/dist/types/{src/PM → PM}/main.d.ts +24 -15
  78. package/dist/types/{src/PM → PM}/node.d.ts +11 -6
  79. package/dist/types/{src/PM → PM}/web.d.ts +11 -7
  80. package/dist/types/SubPackages/react/component/node.d.ts +7 -0
  81. package/dist/types/SubPackages/react/component/web.d.ts +7 -0
  82. package/dist/types/SubPackages/react/jsx/index.d.ts +12 -0
  83. package/dist/types/SubPackages/react/jsx/node.d.ts +4 -0
  84. package/dist/types/SubPackages/react/jsx/web.d.ts +4 -0
  85. package/dist/types/SubPackages/react-dom/component/node.d.ts +11 -0
  86. package/dist/types/SubPackages/react-dom/component/web.d.ts +20 -0
  87. package/dist/types/SubPackages/react-dom/jsx/index.d.ts +6 -0
  88. package/dist/types/SubPackages/react-dom/jsx/node.d.ts +7 -0
  89. package/dist/types/SubPackages/react-dom/jsx/web.d.ts +5 -0
  90. package/dist/types/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +6 -0
  91. package/dist/types/SubPackages/react-test-renderer/component/index.d.ts +13 -0
  92. package/dist/types/SubPackages/react-test-renderer/component/node.d.ts +4 -0
  93. package/dist/types/SubPackages/react-test-renderer/component/web.d.ts +4 -0
  94. package/dist/types/SubPackages/react-test-renderer/fc/node.d.ts +8 -0
  95. package/dist/types/SubPackages/react-test-renderer/fc/web.d.ts +9 -0
  96. package/dist/types/SubPackages/react-test-renderer/jsx/index.d.ts +16 -0
  97. package/dist/types/SubPackages/react-test-renderer/jsx/node.d.ts +9 -0
  98. package/dist/types/SubPackages/react-test-renderer/jsx/web.d.ts +9 -0
  99. package/dist/types/SubPackages/react-test-renderer/jsx-promised/index.d.ts +15 -0
  100. package/dist/types/SubPackages/react-test-renderer/jsx-promised/node.d.ts +5 -0
  101. package/dist/types/SubPackages/react-test-renderer/jsx-promised/web.d.ts +5 -0
  102. package/dist/types/Types.d.ts +61 -0
  103. package/dist/types/Web.d.ts +9 -0
  104. package/dist/types/defaultConfig.d.ts +3 -0
  105. package/dist/types/esbuildConfigs/eslint-formatter-testeranto.d.ts +2 -0
  106. package/dist/types/{src/esbuildConfigs → esbuildConfigs}/index.d.ts +1 -1
  107. package/dist/types/{src/esbuildConfigs → esbuildConfigs}/inputFilesPlugin.d.ts +0 -1
  108. package/dist/types/{src/esbuildConfigs → esbuildConfigs}/node.d.ts +1 -1
  109. package/dist/types/{src/esbuildConfigs → esbuildConfigs}/web.d.ts +1 -1
  110. package/dist/types/lib/abstractBase.d.ts +110 -0
  111. package/dist/types/lib/basebuilder.d.ts +27 -0
  112. package/dist/types/lib/classBuilder.d.ts +7 -0
  113. package/dist/types/lib/core.d.ts +7 -0
  114. package/dist/types/lib/index.d.ts +83 -0
  115. package/dist/types/lib/types.d.ts +14 -0
  116. package/dist/types/run.d.ts +1 -0
  117. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  118. package/dist/types/utils.d.ts +9 -0
  119. package/package.json +50 -39
  120. package/src/Footer.tsx +4 -0
  121. package/src/Init.ts +48 -0
  122. package/src/Node.ts +23 -17
  123. package/src/PM/index.ts +13 -9
  124. package/src/PM/main.ts +337 -139
  125. package/src/PM/node.ts +43 -8
  126. package/src/PM/web.ts +34 -6
  127. package/src/ReportClient.tsx +155 -0
  128. package/src/ReportServer.ts +21 -0
  129. package/src/SubPackages/react/component/node.ts +68 -24
  130. package/src/SubPackages/react/component/web.ts +68 -25
  131. package/src/SubPackages/react/jsx/index.ts +39 -18
  132. package/src/SubPackages/react/jsx/node.ts +23 -10
  133. package/src/SubPackages/react/jsx/web.ts +27 -14
  134. package/src/SubPackages/react-dom/component/node.ts +42 -50
  135. package/src/SubPackages/react-dom/component/web.ts +28 -10
  136. package/src/SubPackages/react-dom/jsx/node.ts +54 -56
  137. package/src/SubPackages/react-dom/jsx/web.ts +55 -42
  138. package/src/SubPackages/react-test-renderer/MemoExoticComponent/node.ts +23 -7
  139. package/src/SubPackages/react-test-renderer/component/index.ts +38 -5
  140. package/src/SubPackages/react-test-renderer/component/node.ts +24 -5
  141. package/src/SubPackages/react-test-renderer/component/web.ts +22 -5
  142. package/src/SubPackages/react-test-renderer/fc/node.ts +41 -7
  143. package/src/SubPackages/react-test-renderer/fc/web.ts +43 -11
  144. package/src/SubPackages/react-test-renderer/jsx/index.ts +39 -16
  145. package/src/SubPackages/react-test-renderer/jsx/node.ts +22 -5
  146. package/src/SubPackages/react-test-renderer/jsx/web.ts +22 -5
  147. package/src/SubPackages/react-test-renderer/jsx-promised/index.ts +39 -6
  148. package/src/SubPackages/react-test-renderer/jsx-promised/node.ts +27 -10
  149. package/src/SubPackages/react-test-renderer/jsx-promised/web.ts +26 -12
  150. package/src/TestReport.tsx +176 -0
  151. package/src/Types.ts +131 -129
  152. package/src/Web.ts +24 -18
  153. package/src/build.ts +240 -0
  154. package/src/defaultConfig.ts +2 -1
  155. package/src/esbuildConfigs/eslint-formatter-testeranto.ts +5 -0
  156. package/src/esbuildConfigs/featuresPlugin.ts +0 -1
  157. package/src/esbuildConfigs/index.ts +1 -1
  158. package/src/esbuildConfigs/inputFilesPlugin.ts +2 -114
  159. package/src/esbuildConfigs/node.ts +7 -19
  160. package/src/esbuildConfigs/web.ts +6 -21
  161. package/src/init-docs.ts +2 -1
  162. package/src/lib/abstractBase.ts +140 -195
  163. package/src/lib/basebuilder.ts +57 -45
  164. package/src/lib/classBuilder.ts +15 -15
  165. package/src/lib/core.ts +44 -35
  166. package/src/lib/index.ts +47 -98
  167. package/src/lib/readme.md +12 -0
  168. package/src/lib/types.ts +40 -231
  169. package/src/run.ts +398 -0
  170. package/src/style.css +8 -0
  171. package/src/utils.ts +74 -2
  172. package/tsc.log +106 -0
  173. package/Bundle.Dockerfile +0 -52
  174. package/bin/init-docs.js +0 -24
  175. package/dist/common/dist/module/src/Init.js +0 -40
  176. package/dist/common/src/Aider.js +0 -143
  177. package/dist/common/src/Project.js +0 -227
  178. package/dist/common/src/Puppeteer.js +0 -111
  179. package/dist/common/src/SubPackages/puppeteer.js +0 -21
  180. package/dist/common/src/build-tests.js +0 -39
  181. package/dist/common/src/esbuildConfigs/features.js +0 -14
  182. package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +0 -87
  183. package/dist/common/src/esbuildConfigs/report.js +0 -14
  184. package/dist/common/src/esbuildConfigs/tests.js +0 -13
  185. package/dist/common/src/run-tests.js +0 -39
  186. package/dist/common/src/utils.js +0 -16
  187. package/dist/common/testeranto.js +0 -15
  188. package/dist/module/src/Aider.js +0 -136
  189. package/dist/module/src/Init.js +0 -35
  190. package/dist/module/src/Project.js +0 -220
  191. package/dist/module/src/Puppeteer.js +0 -106
  192. package/dist/module/src/SubPackages/puppeteer.js +0 -16
  193. package/dist/module/src/SubPackages/react/jsx/index.js +0 -27
  194. package/dist/module/src/build-tests.js +0 -11
  195. package/dist/module/src/esbuildConfigs/features.js +0 -12
  196. package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +0 -82
  197. package/dist/module/src/esbuildConfigs/report.js +0 -14
  198. package/dist/module/src/esbuildConfigs/tests.js +0 -11
  199. package/dist/module/src/run-tests.js +0 -11
  200. package/dist/module/src/utils.js +0 -9
  201. package/dist/module/testeranto.js +0 -13
  202. package/dist/prebuild/build-tests.mjs +0 -553
  203. package/dist/types/dist/module/src/Init.d.ts +0 -2
  204. package/dist/types/src/Aider.d.ts +0 -1
  205. package/dist/types/src/Node.d.ts +0 -13
  206. package/dist/types/src/Project.d.ts +0 -12
  207. package/dist/types/src/Puppeteer.d.ts +0 -2
  208. package/dist/types/src/SubPackages/puppeteer.d.ts +0 -6
  209. package/dist/types/src/SubPackages/react/component/node.d.ts +0 -7
  210. package/dist/types/src/SubPackages/react/component/web.d.ts +0 -7
  211. package/dist/types/src/SubPackages/react/jsx/index.d.ts +0 -12
  212. package/dist/types/src/SubPackages/react/jsx/node.d.ts +0 -4
  213. package/dist/types/src/SubPackages/react/jsx/web.d.ts +0 -4
  214. package/dist/types/src/SubPackages/react-dom/component/node.d.ts +0 -12
  215. package/dist/types/src/SubPackages/react-dom/component/web.d.ts +0 -11
  216. package/dist/types/src/SubPackages/react-dom/jsx/index.d.ts +0 -7
  217. package/dist/types/src/SubPackages/react-dom/jsx/node.d.ts +0 -6
  218. package/dist/types/src/SubPackages/react-dom/jsx/web.d.ts +0 -5
  219. package/dist/types/src/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +0 -5
  220. package/dist/types/src/SubPackages/react-test-renderer/component/index.d.ts +0 -13
  221. package/dist/types/src/SubPackages/react-test-renderer/component/node.d.ts +0 -8
  222. package/dist/types/src/SubPackages/react-test-renderer/component/web.d.ts +0 -3
  223. package/dist/types/src/SubPackages/react-test-renderer/fc/node.d.ts +0 -8
  224. package/dist/types/src/SubPackages/react-test-renderer/fc/web.d.ts +0 -8
  225. package/dist/types/src/SubPackages/react-test-renderer/jsx/index.d.ts +0 -17
  226. package/dist/types/src/SubPackages/react-test-renderer/jsx/node.d.ts +0 -8
  227. package/dist/types/src/SubPackages/react-test-renderer/jsx/web.d.ts +0 -8
  228. package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/index.d.ts +0 -16
  229. package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/node.d.ts +0 -4
  230. package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/web.d.ts +0 -4
  231. package/dist/types/src/Types.d.ts +0 -51
  232. package/dist/types/src/Web.d.ts +0 -10
  233. package/dist/types/src/defaultConfig.d.ts +0 -3
  234. package/dist/types/src/esbuildConfigs/features.d.ts +0 -4
  235. package/dist/types/src/esbuildConfigs/report.d.ts +0 -0
  236. package/dist/types/src/esbuildConfigs/tests.d.ts +0 -4
  237. package/dist/types/src/lib/abstractBase.d.ts +0 -110
  238. package/dist/types/src/lib/basebuilder.d.ts +0 -27
  239. package/dist/types/src/lib/classBuilder.d.ts +0 -7
  240. package/dist/types/src/lib/core.d.ts +0 -8
  241. package/dist/types/src/lib/index.d.ts +0 -60
  242. package/dist/types/src/lib/types.d.ts +0 -68
  243. package/dist/types/src/utils.d.ts +0 -2
  244. package/dist/types/testeranto.d.ts +0 -16
  245. package/docker-compose.yml +0 -37
  246. package/src/Aider.ts +0 -168
  247. package/src/Project.ts +0 -292
  248. package/src/Puppeteer.ts +0 -143
  249. package/src/SubPackages/puppeteer.ts +0 -51
  250. package/src/build-tests.ts +0 -12
  251. package/src/esbuildConfigs/features.ts +0 -17
  252. package/src/esbuildConfigs/report.ts +0 -15
  253. package/src/esbuildConfigs/tests.ts +0 -14
  254. package/src/run-tests.ts +0 -12
  255. package/testeranto.ts +0 -13
  256. package/dist/common/{src/Node.js → Node.js} +0 -0
  257. package/dist/common/{src/PM → PM}/index.js +0 -0
  258. package/dist/common/{src/SubPackages → SubPackages}/react/component/node.js +0 -0
  259. package/dist/common/{src/SubPackages → SubPackages}/react/component/web.js +0 -0
  260. package/dist/common/{src/SubPackages → SubPackages}/react/jsx/web.js +0 -0
  261. package/dist/common/{src/SubPackages → SubPackages}/react-dom/jsx/index.js +0 -0
  262. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/index.js +0 -0
  263. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/node.js +0 -0
  264. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/web.js +0 -0
  265. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx/node.js +0 -0
  266. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx/web.js +0 -0
  267. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/node.js +1 -1
  268. package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  269. package/dist/common/{src/Types.js → Types.js} +0 -0
  270. package/dist/common/{src/Web.js → Web.js} +0 -0
  271. package/dist/common/{src/esbuildConfigs → esbuildConfigs}/featuresPlugin.js +0 -0
  272. package/dist/common/{src/esbuildConfigs → esbuildConfigs}/index.js +0 -0
  273. package/dist/common/{src/lib → lib}/types.js +0 -0
  274. package/dist/common/{src/puppeteerConfiger.js → puppeteerConfiger.js} +0 -0
  275. package/dist/common/{src/web.html.js → web.html.js} +0 -0
  276. package/dist/module/{src/Node.js → Node.js} +0 -0
  277. package/dist/module/{src/PM → PM}/index.js +0 -0
  278. package/dist/module/{src/SubPackages → SubPackages}/react/component/node.js +0 -0
  279. package/dist/module/{src/SubPackages → SubPackages}/react/component/web.js +0 -0
  280. package/dist/module/{src/SubPackages → SubPackages}/react/jsx/web.js +0 -0
  281. package/dist/module/{src/SubPackages → SubPackages}/react-dom/jsx/index.js +0 -0
  282. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  283. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/index.js +0 -0
  284. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/interface.js +0 -0
  285. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/node.js +0 -0
  286. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/web.js +0 -0
  287. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/fc/node.js +0 -0
  288. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/fc/web.js +0 -0
  289. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx/node.js +0 -0
  290. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx/web.js +0 -0
  291. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  292. package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/node.js +1 -1
  293. /package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  294. /package/dist/module/{src/Types.js → Types.js} +0 -0
  295. /package/dist/module/{src/Web.js → Web.js} +0 -0
  296. /package/dist/module/{src/esbuildConfigs → esbuildConfigs}/featuresPlugin.js +0 -0
  297. /package/dist/module/{src/esbuildConfigs → esbuildConfigs}/index.js +0 -0
  298. /package/dist/module/{src/lib → lib}/types.js +0 -0
  299. /package/dist/module/{src/puppeteerConfiger.js → puppeteerConfiger.js} +0 -0
  300. /package/dist/module/{src/web.html.js → web.html.js} +0 -0
  301. /package/dist/types/{src/Init.d.ts → Init.d.ts} +0 -0
  302. /package/dist/types/{src/build-tests.d.ts → ReportServer.d.ts} +0 -0
  303. /package/dist/types/{src/SubPackages → SubPackages}/react-test-renderer/component/interface.d.ts +0 -0
  304. /package/dist/types/{src/init-docs.d.ts → build.d.ts} +0 -0
  305. /package/dist/types/{src/esbuildConfigs → esbuildConfigs}/featuresPlugin.d.ts +0 -0
  306. /package/dist/types/{src/run-tests.d.ts → init-docs.d.ts} +0 -0
  307. /package/dist/types/{src/puppeteerConfiger.d.ts → puppeteerConfiger.d.ts} +0 -0
  308. /package/dist/types/{src/web.html.d.ts → web.html.d.ts} +0 -0
package/src/PM/main.ts CHANGED
@@ -1,29 +1,65 @@
1
+ import { CdpPage, Page } from "puppeteer-core/lib/esm/puppeteer";
1
2
  import fs from "fs";
2
3
  import path from "path";
3
4
  import puppeteer, {
4
5
  Browser,
5
6
  ConsoleMessage,
7
+ LaunchOptions,
8
+ ScreenRecorder,
6
9
  ScreenshotOptions,
7
10
  } from "puppeteer-core";
8
11
  import { PassThrough } from "stream";
9
- import crypto from "crypto";
10
-
11
- import { IBuiltConfig, IFinalResults, ITestTypes } from "../lib/types";
12
+ import ansiC from "ansi-colors";
13
+
14
+ import {
15
+ IBuiltConfig,
16
+ IFinalResults,
17
+ ITestTypes,
18
+ ITLog,
19
+ } from "../lib/index.js";
20
+ import {
21
+ bddExitCodePather,
22
+ lintExitCodePather,
23
+ tscExitCodePather,
24
+ } from "../utils";
12
25
 
13
26
  import { PM } from "./index.js";
14
- import { destinationOfRuntime } from "../utils.js";
15
- import { ITLog } from "../lib/index.js";
16
- import { Page } from "puppeteer-core/lib/esm/puppeteer";
17
27
 
18
28
  const fileStreams3: fs.WriteStream[] = [];
19
-
20
29
  type IFPaths = string[];
21
-
22
30
  const fPaths: IFPaths = [];
23
-
24
31
  const files: Record<string, Set<string>> = {};
32
+ const recorders: Record<string, ScreenRecorder> = {};
25
33
  const screenshots: Record<string, Promise<Uint8Array>[]> = {};
26
34
 
35
+ const statusMessagePretty = (failures: number, test: string) => {
36
+ if (failures === 0) {
37
+ console.log(ansiC.green(ansiC.inverse(`> ${test} completed successfully`)));
38
+ } else {
39
+ console.log(ansiC.red(ansiC.inverse(`> ${test} failed ${failures} times`)));
40
+ }
41
+ };
42
+
43
+ async function writeFileAndCreateDir(filePath, data) {
44
+ const dirPath = path.dirname(filePath);
45
+
46
+ try {
47
+ await fs.promises.mkdir(dirPath, { recursive: true });
48
+ await fs.appendFileSync(filePath, data);
49
+ } catch (error) {
50
+ console.error(`Error writing file: ${error}`);
51
+ }
52
+ }
53
+
54
+ function isValidUrl(string) {
55
+ try {
56
+ new URL(string);
57
+ return true;
58
+ } catch (err) {
59
+ return false;
60
+ }
61
+ }
62
+
27
63
  export class PM_Main extends PM {
28
64
  browser: Browser;
29
65
 
@@ -31,18 +67,71 @@ export class PM_Main extends PM {
31
67
  configs: IBuiltConfig;
32
68
  ports: Record<number, boolean>;
33
69
  queue: any[];
34
- registry: Record<string, boolean>;
70
+
71
+ bigBoard: Record<
72
+ string,
73
+ {
74
+ status: "?" | "running" | "waiting";
75
+ runTimeError?: number;
76
+ typeErrors?: string;
77
+ staticErrors?: string;
78
+ }
79
+ > = {};
35
80
 
36
81
  constructor(configs: IBuiltConfig) {
37
82
  super();
38
83
  this.server = {};
39
84
  this.configs = configs;
40
85
  this.ports = {};
41
- this.registry = {};
86
+
87
+ this.configs.tests.forEach(([t]) => {
88
+ this.bigBoard[t] = {
89
+ status: "?",
90
+ };
91
+ });
92
+
42
93
  this.configs.ports.forEach((element) => {
43
94
  this.ports[element] = "true"; // set ports as open
44
95
  });
45
96
 
97
+ globalThis["waitForSelector"] = async (pageKey: string, sel: string) => {
98
+ const page = (await this.browser.pages()).find(
99
+ /* @ts-ignore:next-line */
100
+ (p) => p.mainFrame()._id === pageKey
101
+ );
102
+ await page?.waitForSelector(sel);
103
+ };
104
+
105
+ globalThis["screencastStop"] = async (path: string) => {
106
+ return recorders[path].stop();
107
+ };
108
+
109
+ globalThis["closePage"] = async (pageKey) => {
110
+ const page = (await this.browser.pages()).find(
111
+ /* @ts-ignore:next-line */
112
+ (p) => p.mainFrame()._id === pageKey
113
+ );
114
+ /* @ts-ignore:next-line */
115
+ return page.close();
116
+ };
117
+
118
+ globalThis["goto"] = async (pageKey: string, url: string) => {
119
+ const page = (await this.browser.pages()).find(
120
+ /* @ts-ignore:next-line */
121
+ (p) => p.mainFrame()._id === pageKey
122
+ );
123
+ await page?.goto(url);
124
+ return;
125
+ };
126
+
127
+ globalThis["newPage"] = () => {
128
+ return this.browser.newPage();
129
+ };
130
+
131
+ globalThis["pages"] = () => {
132
+ return this.browser.pages();
133
+ };
134
+
46
135
  globalThis["mkdirSync"] = (fp: string) => {
47
136
  if (!fs.existsSync(fp)) {
48
137
  return fs.mkdirSync(fp, {
@@ -57,19 +146,9 @@ export class PM_Main extends PM {
57
146
  contents: string,
58
147
  testName: string
59
148
  ) => {
60
- // console.log(testName, "writeFileSync", filepath, testName);
61
-
62
- // Create directories if they don't exist
63
- const dir = path.dirname(filepath);
64
-
65
- // console.log(testName, "mkdirSync", dir);
66
-
67
- fs.mkdirSync(dir, {
149
+ fs.mkdirSync(path.dirname(filepath), {
68
150
  recursive: true,
69
151
  });
70
-
71
- // console.log(testName, "mkdirSync2");
72
-
73
152
  if (!files[testName]) {
74
153
  files[testName] = new Set();
75
154
  }
@@ -99,10 +178,42 @@ export class PM_Main extends PM {
99
178
  fileStreams3[uid].end();
100
179
  };
101
180
 
181
+ // async (ssOpts: ScreenshotOptions, testName: string) => {
182
+ // const p = ssOpts.path as string;
183
+ // const dir = path.dirname(p);
184
+ // fs.mkdirSync(dir, {
185
+ // recursive: true,
186
+ // });
187
+ // if (!files[testName]) {
188
+ // files[testName] = new Set();
189
+ // }
190
+ // files[testName].add(ssOpts.path as string);
191
+
192
+ // const sPromise = page.screenshot({
193
+ // ...ssOpts,
194
+ // path: p,
195
+ // });
196
+
197
+ // if (!screenshots[testName]) {
198
+ // screenshots[testName] = [];
199
+ // }
200
+ // screenshots[testName].push(sPromise);
201
+ // // sPromise.then(())
202
+ // await sPromise;
203
+ // return sPromise;
204
+ // // page.evaluate(`window["screenshot done"]`);
205
+ // };
206
+
102
207
  globalThis["customScreenShot"] = async (
103
208
  opts: { path: string },
104
- page: Page
209
+ pageKey: string,
210
+ testName: string
105
211
  ) => {
212
+ const page = (await this.browser.pages()).find(
213
+ /* @ts-ignore:next-line */
214
+ (p) => p.mainFrame()._id === pageKey
215
+ );
216
+
106
217
  const p = opts.path as string;
107
218
  const dir = path.dirname(p);
108
219
  fs.mkdirSync(dir, {
@@ -127,6 +238,31 @@ export class PM_Main extends PM {
127
238
  return sPromise;
128
239
  };
129
240
 
241
+ globalThis["screencast"] = async (
242
+ opts: ScreenshotOptions,
243
+ pageKey: string
244
+ ) => {
245
+ const page = (await this.browser.pages()).find(
246
+ /* @ts-ignore:next-line */
247
+ (p) => p.mainFrame()._id === pageKey
248
+ );
249
+
250
+ const p = opts.path as string;
251
+ const dir = path.dirname(p);
252
+ fs.mkdirSync(dir, {
253
+ recursive: true,
254
+ });
255
+
256
+ const recorder = await page?.screencast({
257
+ ...opts,
258
+ path: p,
259
+ });
260
+
261
+ recorders[opts.path] = recorder;
262
+
263
+ return opts.path;
264
+ };
265
+
130
266
  // globalThis["customclose"] = (p: string, testName: string) => {
131
267
  // if (!files[testName]) {
132
268
  // files[testName] = new Set();
@@ -140,20 +276,33 @@ export class PM_Main extends PM {
140
276
  // };
141
277
  }
142
278
 
279
+ customclose() {
280
+ throw new Error("Method not implemented.");
281
+ }
282
+ waitForSelector(p: string, s: string): any {
283
+ throw new Error("Method not implemented.");
284
+ }
285
+ closePage(p): any {
286
+ throw new Error("Method not implemented.");
287
+ }
288
+ newPage(): CdpPage {
289
+ throw new Error("Method not implemented.");
290
+ }
291
+ goto(p, url: string): any {
292
+ throw new Error("Method not implemented.");
293
+ }
143
294
  $(selector: string): boolean {
144
295
  throw new Error("Method not implemented.");
145
296
  }
146
297
  screencast(opts: object) {
147
298
  throw new Error("Method not implemented.");
148
299
  }
149
- customScreenShot(opts: object) {
300
+ customScreenShot(opts: object, cdpPage?: CdpPage) {
150
301
  throw new Error("Method not implemented.");
151
302
  }
152
-
153
303
  end(accessObject: { uid: number }): boolean {
154
304
  throw new Error("Method not implemented.");
155
305
  }
156
-
157
306
  existsSync(destFolder: string): boolean {
158
307
  return fs.existsSync(destFolder);
159
308
  }
@@ -247,49 +396,85 @@ export class PM_Main extends PM {
247
396
  getAttribute(selector: string, attribute: string) {
248
397
  throw new Error("Method not implemented.");
249
398
  }
250
- isDisabled(selector: string): boolean {
399
+ isDisabled(selector: string): Promise<boolean> {
400
+ throw new Error("Method not implemented.");
401
+ }
402
+ screencastStop(s: string) {
251
403
  throw new Error("Method not implemented.");
252
404
  }
253
405
  ////////////////////////////////////////////////////////////////////////////////
254
406
 
255
- async startPuppeteer(options: any, destfolder: string): Promise<any> {
407
+ async startPuppeteer(
408
+ options: LaunchOptions,
409
+ destfolder: string
410
+ ): Promise<any> {
256
411
  this.browser = (await puppeteer.launch(options)) as any;
257
412
  }
258
413
 
259
- ////////////////////////////////////////////////////////////////////////////////
414
+ // goodbye = () => {
415
+ // this.browser.disconnect().then(() => {
416
+
417
+ // console.log("Goodbye");
418
+ // process.exit();
419
+ // });
420
+ // };
260
421
 
261
422
  shutDown() {
262
- console.log("shutting down...");
263
423
  this.shutdownMode = true;
264
424
  this.checkForShutdown();
265
425
  }
266
426
 
267
427
  checkForShutdown = () => {
268
428
  const anyRunning: boolean =
269
- Object.values(this.registry).filter((x) => x === false).length > 0;
429
+ Object.values(this.bigBoard).filter((x) => x.status === "running")
430
+ .length > 0;
270
431
  if (anyRunning) {
271
432
  } else {
272
433
  this.browser.disconnect().then(() => {
273
- console.log("Goodbye");
434
+ const final = {
435
+ timestamp: Date.now(),
436
+ tests: this.configs.tests.reduce((mm, t) => {
437
+ const bddErrors = fs
438
+ .readFileSync(bddExitCodePather(t[0], t[1]))
439
+ .toString();
440
+ const lintErrors = fs
441
+ .readFileSync(lintExitCodePather(t[0], t[1]))
442
+ .toString();
443
+ const typeErrors = fs
444
+ .readFileSync(tscExitCodePather(t[0], t[1]))
445
+ .toString();
446
+ mm[t[0]] = {
447
+ bddErrors,
448
+ lintErrors,
449
+ typeErrors,
450
+ };
451
+ return mm;
452
+ }, {}),
453
+ };
454
+
455
+ const s = JSON.stringify(final, null, 2);
456
+ fs.writeFileSync("docs/summary.json", s);
457
+ console.log(ansiC.inverse("Goodbye"));
274
458
  process.exit();
275
459
  });
276
460
  }
277
461
  };
278
462
 
279
- register = (src: string) => {
280
- this.registry[src] = false;
463
+ testIsNowRunning = (src: string) => {
464
+ this.bigBoard[src].status = "running";
281
465
  };
282
466
 
283
- deregister = (src: string) => {
284
- this.registry[src] = true;
467
+ testIsNowDone = (src: string) => {
468
+ this.bigBoard[src].status = "waiting";
285
469
  if (this.shutdownMode) {
286
470
  this.checkForShutdown();
287
471
  }
288
472
  };
289
473
 
290
474
  launchNode = async (src: string, dest: string) => {
291
- console.log("launchNode", src);
292
- this.register(src);
475
+ // console.log(ansiC.yellow(`! node, ${src}`));
476
+ console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
477
+ this.testIsNowRunning(src);
293
478
 
294
479
  const destFolder = dest.replace(".mjs", "");
295
480
 
@@ -300,7 +485,7 @@ export class PM_Main extends PM {
300
485
  });
301
486
 
302
487
  if (!testConfig) {
303
- console.error("missing test config");
488
+ console.log(ansiC.inverse("missing test config! Exiting ungracefully!"));
304
489
  process.exit(-1);
305
490
  }
306
491
  const testConfigResource = testConfig[2];
@@ -343,31 +528,31 @@ export class PM_Main extends PM {
343
528
  process.exit(-1);
344
529
  }
345
530
 
346
- const builtfile = dest + ".mjs";
531
+ const builtfile = dest;
347
532
 
348
533
  const webSideCares: Page[] = [];
349
534
 
350
- await Promise.all(
351
- testConfig[3].map(async (sidecar) => {
352
- if (sidecar[1] === "web") {
353
- const s = await this.launchWebSideCar(
354
- sidecar[0],
355
- destinationOfRuntime(sidecar[0], "web", this.configs),
356
- sidecar
357
- );
358
- webSideCares.push(s);
359
- return s;
360
- }
361
-
362
- if (sidecar[1] === "node") {
363
- return this.launchNodeSideCar(
364
- sidecar[0],
365
- destinationOfRuntime(sidecar[0], "node", this.configs),
366
- sidecar
367
- );
368
- }
369
- })
370
- );
535
+ // await Promise.all(
536
+ // testConfig[3].map(async (sidecar) => {
537
+ // if (sidecar[1] === "web") {
538
+ // const s = await this.launchWebSideCar(
539
+ // sidecar[0],
540
+ // destinationOfRuntime(sidecar[0], "web", this.configs),
541
+ // sidecar
542
+ // );
543
+ // webSideCares.push(s);
544
+ // return s;
545
+ // }
546
+
547
+ // if (sidecar[1] === "node") {
548
+ // return this.launchNodeSideCar(
549
+ // sidecar[0],
550
+ // destinationOfRuntime(sidecar[0], "node", this.configs),
551
+ // sidecar
552
+ // );
553
+ // }
554
+ // })
555
+ // );
371
556
 
372
557
  this.server[builtfile] = await import(
373
558
  `${builtfile}?cacheBust=${Date.now()}`
@@ -376,15 +561,18 @@ export class PM_Main extends PM {
376
561
  defaultModule
377
562
  .receiveTestResourceConfig(argz)
378
563
  .then(async ({ features, failed }: IFinalResults) => {
379
- this.receiveFeatures(features, destFolder);
380
- console.log(`${src} completed with ${failed} errors`);
564
+ this.receiveFeatures(features, destFolder, src);
565
+ // console.log(`${src} completed with ${failed} errors`);
566
+ statusMessagePretty(failed, src);
567
+ this.receiveExitCode(src, failed);
381
568
  })
382
569
  .catch((e) => {
383
- console.log(`${src} errored with`, e);
570
+ console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
571
+ // console.log(reset, `${src} errored with`, e);
384
572
  })
385
573
  .finally(() => {
386
574
  webSideCares.forEach((webSideCar) => webSideCar.close());
387
- this.deregister(src);
575
+ this.testIsNowDone(src);
388
576
  });
389
577
  });
390
578
  });
@@ -403,7 +591,9 @@ export class PM_Main extends PM {
403
591
  testConfig: ITestTypes
404
592
  ): Promise<Page> => {
405
593
  const d = dest + ".mjs";
406
- console.log("launchWebSideCar", src, dest, d);
594
+ // console.log(green, "launchWebSideCar", src, dest, d);
595
+ console.log(ansiC.green(ansiC.inverse(`launchWebSideCar ${src}`)));
596
+
407
597
  const destFolder = dest.replace(".mjs", "");
408
598
  // const webArgz = JSON.stringify({
409
599
  // name: dest,
@@ -541,6 +731,7 @@ export class PM_Main extends PM {
541
731
  })
542
732
  .then(async (page) => {
543
733
  await page.goto(`file://${`${dest}.html`}`, {});
734
+
544
735
  res(page);
545
736
  });
546
737
  });
@@ -552,7 +743,8 @@ export class PM_Main extends PM {
552
743
  testConfig: ITestTypes
553
744
  ) => {
554
745
  const d = dest + ".mjs";
555
- console.log("launchNodeSideCar", src, dest, d);
746
+ // console.log(green, "launchNodeSideCar", src, dest, d);
747
+ console.log(ansiC.green(ansiC.inverse(`launchNodeSideCar ${src}`)));
556
748
 
557
749
  const destFolder = dest.replace(".mjs", "");
558
750
 
@@ -633,19 +825,20 @@ export class PM_Main extends PM {
633
825
  }
634
826
  };
635
827
 
636
- launchWeb = (t: string, dest: string, sidecars: ITestTypes[]) => {
637
- console.log("launchWeb", t, dest);
638
- this.register(t);
639
-
640
- sidecars.map((sidecar) => {
641
- if (sidecar[1] === "node") {
642
- return this.launchNodeSideCar(
643
- sidecar[0],
644
- destinationOfRuntime(sidecar[0], "node", this.configs),
645
- sidecar
646
- );
647
- }
648
- });
828
+ launchWeb = (t: string, dest: string) => {
829
+ // console.log(green, "! web", t);
830
+ console.log(ansiC.green(ansiC.inverse(`! web ${t}`)));
831
+ this.testIsNowRunning(t);
832
+
833
+ // sidecars.map((sidecar) => {
834
+ // if (sidecar[1] === "node") {
835
+ // return this.launchNodeSideCar(
836
+ // sidecar[0],
837
+ // destinationOfRuntime(sidecar[0], "node", this.configs),
838
+ // sidecar
839
+ // );
840
+ // }
841
+ // });
649
842
 
650
843
  const destFolder = dest.replace(".mjs", "");
651
844
 
@@ -656,10 +849,12 @@ export class PM_Main extends PM {
656
849
  browserWSEndpoint: this.browser.wsEndpoint(),
657
850
  });
658
851
 
852
+ const d = `${dest}?cacheBust=${Date.now()}`;
853
+
659
854
  const evaluation = `
660
- console.log("importing ${dest}.mjs");
661
- import('${dest}.mjs').then(async (x) => {
662
- console.log("imported", (await x.default));
855
+
856
+ import('${d}').then(async (x) => {
857
+
663
858
  try {
664
859
  return await (await x.default).receiveTestResourceConfig(${webArgz})
665
860
  } catch (e) {
@@ -670,8 +865,8 @@ export class PM_Main extends PM {
670
865
  const fileStreams2: fs.WriteStream[] = [];
671
866
  const doneFileStream2: Promise<any>[] = [];
672
867
 
673
- const stdoutStream = fs.createWriteStream(`${dest}/stdout.log`);
674
- const stderrStream = fs.createWriteStream(`${dest}/stderr.log`);
868
+ const stdoutStream = fs.createWriteStream(`${destFolder}/stdout.log`);
869
+ const stderrStream = fs.createWriteStream(`${destFolder}/stderr.log`);
675
870
 
676
871
  this.browser
677
872
  .newPage()
@@ -848,7 +1043,7 @@ export class PM_Main extends PM {
848
1043
  // });
849
1044
 
850
1045
  page.exposeFunction("page", () => {
851
- return page.mainFrame()._id;
1046
+ return (page.mainFrame() as unknown as { _id: string })._id;
852
1047
  });
853
1048
 
854
1049
  page.exposeFunction("click", (sel) => {
@@ -905,7 +1100,7 @@ export class PM_Main extends PM {
905
1100
  // files[t].add(filepath);
906
1101
 
907
1102
  fs.writeFileSync(
908
- dest + "/manifest.json",
1103
+ destFolder + "/manifest.json",
909
1104
  JSON.stringify(Array.from(files[t]))
910
1105
  );
911
1106
  delete files[t];
@@ -914,7 +1109,7 @@ export class PM_Main extends PM {
914
1109
  delete screenshots[t];
915
1110
  page.close();
916
1111
 
917
- this.deregister(t);
1112
+ this.testIsNowDone(t);
918
1113
  stderrStream.close();
919
1114
  stdoutStream.close();
920
1115
  });
@@ -936,7 +1131,7 @@ export class PM_Main extends PM {
936
1131
 
937
1132
  console.debug(`Error from message ${t}: [${err.message}] `);
938
1133
  stderrStream.write(err.message);
939
- // close();
1134
+ close();
940
1135
  });
941
1136
  page.on("console", (log: ConsoleMessage) => {
942
1137
  // console.debug(`Log from ${t}: [${log.text()}] `);
@@ -948,18 +1143,22 @@ export class PM_Main extends PM {
948
1143
  stdoutStream.write(JSON.stringify(log.location()));
949
1144
  stdoutStream.write(JSON.stringify(log.stackTrace()));
950
1145
  });
951
- await page.goto(`file://${`${dest}.html`}`, {});
1146
+ await page.goto(`file://${`${destFolder}.html`}`, {});
952
1147
 
953
1148
  await page
954
1149
  .evaluate(evaluation)
955
1150
  .then(async ({ failed, features }: IFinalResults) => {
956
- this.receiveFeatures(features, destFolder);
957
- console.log(`${t} completed with ${failed} errors`);
1151
+ this.receiveFeatures(features, destFolder, t);
1152
+ // console.log(`${t} completed with ${failed} errors`);
1153
+ statusMessagePretty(failed, t);
1154
+ this.receiveExitCode(t, failed);
958
1155
  })
959
1156
  .catch((e) => {
960
- console.log(`${t} errored with`, e);
1157
+ // console.log(red, `${t} errored with`, e);
1158
+ console.log(ansiC.red(ansiC.inverse(`${t} errored with: ${e}`)));
961
1159
  })
962
1160
  .finally(() => {
1161
+ // this.testIsNowDone(t);
963
1162
  close();
964
1163
  });
965
1164
 
@@ -967,7 +1166,19 @@ export class PM_Main extends PM {
967
1166
  });
968
1167
  };
969
1168
 
970
- receiveFeatures = (features: string[], destFolder: string) => {
1169
+ receiveFeatures = (
1170
+ features: string[],
1171
+ destFolder: string,
1172
+ srcTest: string
1173
+ ) => {
1174
+ const featureDestination = path.resolve(
1175
+ process.cwd(),
1176
+ "docs",
1177
+ "features",
1178
+ "strings",
1179
+ srcTest.split(".").slice(0, -1).join(".") + ".features.txt"
1180
+ );
1181
+
971
1182
  features
972
1183
  .reduce(async (mm, featureStringKey) => {
973
1184
  const accum = await mm;
@@ -994,71 +1205,58 @@ export class PM_Main extends PM {
994
1205
  }
995
1206
  }
996
1207
 
997
- fs.symlink(u.pathname, newPath, (err) => {
998
- if (err) {
999
- // console.error("Error creating symlink:", err);
1000
- } else {
1001
- // console.log("Symlink created successfully");
1002
- }
1003
- });
1004
- accum.push(newPath);
1208
+ // fs.symlink(u.pathname, newPath, (err) => {
1209
+ // if (err) {
1210
+ // // console.error("Error creating symlink:", err);
1211
+ // } else {
1212
+ // // console.log("Symlink created successfully");
1213
+ // }
1214
+ // });
1215
+ accum.files.push(newPath);
1005
1216
  } else if (u.protocol === "http:" || u.protocol === "https:") {
1006
1217
  const newPath = `${process.cwd()}/docs/features/external${
1007
1218
  u.hostname
1008
1219
  }${u.pathname}`;
1009
1220
  const body = await this.configs.featureIngestor(featureStringKey);
1010
1221
  writeFileAndCreateDir(newPath, body);
1011
- accum.push(newPath);
1222
+ accum.files.push(newPath);
1012
1223
  }
1013
1224
  } else {
1014
- const newPath = `${process.cwd()}/docs/features/plain/${await sha256(
1015
- featureStringKey
1016
- )}`;
1017
- writeFileAndCreateDir(newPath, featureStringKey);
1018
- accum.push(newPath);
1225
+ await fs.promises.mkdir(path.dirname(featureDestination), {
1226
+ recursive: true,
1227
+ });
1228
+
1229
+ accum.strings.push(featureStringKey);
1019
1230
  }
1020
1231
 
1021
1232
  return accum;
1022
- }, Promise.resolve([] as string[]))
1023
- .then((features: string[]) => {
1233
+ }, Promise.resolve({ files: [] as string[], strings: [] as string[] }))
1234
+
1235
+ .then(({ files, strings }: { files: string[]; strings: string[] }) => {
1236
+ // writeFileAndCreateDir(`${featureDestination}`, JSON.stringify(strings));
1237
+
1024
1238
  fs.writeFileSync(
1025
1239
  `${destFolder}/featurePrompt.txt`,
1026
- features
1240
+ files
1027
1241
  .map((f) => {
1028
1242
  return `/read ${f}`;
1029
1243
  })
1030
1244
  .join("\n")
1031
1245
  );
1032
1246
  });
1033
- };
1034
- }
1035
-
1036
- async function writeFileAndCreateDir(filePath, data) {
1037
- const dirPath = path.dirname(filePath);
1038
1247
 
1039
- try {
1040
- await fs.promises.mkdir(dirPath, { recursive: true });
1041
- await fs.promises.writeFile(filePath, data);
1042
- } catch (error) {
1043
- console.error(`Error writing file: ${error}`);
1044
- }
1045
- }
1046
-
1047
- async function sha256(rawData) {
1048
- const data =
1049
- typeof rawData === "object" ? JSON.stringify(rawData) : String(rawData);
1248
+ this.writeBigBoard();
1249
+ };
1050
1250
 
1051
- const msgBuffer = new TextEncoder().encode(data);
1052
- const hashBuffer = await crypto.subtle.digest("SHA-256", msgBuffer);
1053
- const hashArray = Array.from(new Uint8Array(hashBuffer));
1054
- return hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
1055
- }
1251
+ receiveExitCode = (srcTest: string, failures: number) => {
1252
+ this.bigBoard[srcTest].runTimeError = failures;
1253
+ this.writeBigBoard();
1254
+ };
1056
1255
 
1057
- function isValidUrl(string) {
1058
- try {
1059
- new URL(string);
1060
- return true;
1061
- } catch (err) {
1062
- return false;
1063
- }
1256
+ writeBigBoard = () => {
1257
+ fs.writeFileSync(
1258
+ "./docs/bigBoard.json",
1259
+ JSON.stringify(this.bigBoard, null, 2)
1260
+ );
1261
+ };
1064
1262
  }