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
@@ -1,64 +1,149 @@
1
1
  import { createRequire } from 'module';const require = createRequire(import.meta.url);
2
2
 
3
- // src/Puppeteer.ts
4
- import readline from "readline";
3
+ // src/run.ts
4
+ import ansiC2 from "ansi-colors";
5
+ import { watch } from "fs";
6
+ import path3 from "path";
7
+ import crypto from "node:crypto";
5
8
  import fs2 from "fs";
6
- import watch from "recursive-watch";
9
+ import tsc from "tsc-prog";
10
+ import { ESLint } from "eslint";
11
+ import ts from "typescript";
12
+ import readline from "readline";
7
13
 
8
14
  // src/PM/main.ts
9
15
  import fs from "fs";
10
16
  import path2 from "path";
11
17
  import puppeteer from "puppeteer-core";
12
- import crypto from "crypto";
13
-
14
- // src/PM/index.ts
15
- var PM = class {
16
- };
18
+ import ansiC from "ansi-colors";
17
19
 
18
20
  // src/utils.ts
19
21
  import path from "path";
20
- var destinationOfRuntime = (f, r, configs) => {
21
- return path.normalize(`${configs.buildDir}/${r}/${f}`).split(".").slice(0, -1).join(".");
22
+ var tscPather = (entryPoint, platform) => {
23
+ return path.join(
24
+ "./docs/",
25
+ platform,
26
+ entryPoint.split(".").slice(0, -1).join("."),
27
+ `type_errors.txt`
28
+ );
29
+ };
30
+ var tscExitCodePather = (entryPoint, platform) => {
31
+ return path.join(
32
+ "./docs/",
33
+ platform,
34
+ entryPoint.split(".").slice(0, -1).join("."),
35
+ `type_errors.txt`
36
+ );
37
+ };
38
+ var lintPather = (entryPoint, platform) => {
39
+ return path.join(
40
+ "./docs/",
41
+ platform,
42
+ entryPoint.split(".").slice(0, -1).join("."),
43
+ `lint_errors.json`
44
+ );
45
+ };
46
+ var lintExitCodePather = (entryPoint, platform) => {
47
+ return path.join(
48
+ "./docs/",
49
+ platform,
50
+ entryPoint.split(".").slice(0, -1).join("."),
51
+ `lint_errors.txt`
52
+ );
53
+ };
54
+ var bddExitCodePather = (entryPoint, platform) => {
55
+ return path.join(
56
+ "./docs/",
57
+ platform,
58
+ entryPoint.split(".").slice(0, -1).join("."),
59
+ `bdd_errors.txt`
60
+ );
61
+ };
62
+
63
+ // src/PM/index.ts
64
+ var PM = class {
22
65
  };
23
66
 
24
67
  // src/PM/main.ts
25
68
  var fileStreams3 = [];
26
69
  var fPaths = [];
27
70
  var files = {};
71
+ var recorders = {};
28
72
  var screenshots = {};
73
+ var statusMessagePretty = (failures, test) => {
74
+ if (failures === 0) {
75
+ console.log(ansiC.green(ansiC.inverse(`> ${test} completed successfully`)));
76
+ } else {
77
+ console.log(ansiC.red(ansiC.inverse(`> ${test} failed ${failures} times`)));
78
+ }
79
+ };
80
+ async function writeFileAndCreateDir(filePath, data) {
81
+ const dirPath = path2.dirname(filePath);
82
+ try {
83
+ await fs.promises.mkdir(dirPath, { recursive: true });
84
+ await fs.appendFileSync(filePath, data);
85
+ } catch (error) {
86
+ console.error(`Error writing file: ${error}`);
87
+ }
88
+ }
89
+ function isValidUrl(string) {
90
+ try {
91
+ new URL(string);
92
+ return true;
93
+ } catch (err) {
94
+ return false;
95
+ }
96
+ }
29
97
  var PM_Main = class extends PM {
30
98
  constructor(configs) {
31
99
  super();
32
100
  this.shutdownMode = false;
101
+ this.bigBoard = {};
33
102
  this.checkForShutdown = () => {
34
- const anyRunning = Object.values(this.registry).filter((x) => x === false).length > 0;
103
+ const anyRunning = Object.values(this.bigBoard).filter((x) => x.status === "running").length > 0;
35
104
  if (anyRunning) {
36
105
  } else {
37
106
  this.browser.disconnect().then(() => {
38
- console.log("Goodbye");
107
+ const final = {
108
+ timestamp: Date.now(),
109
+ tests: this.configs.tests.reduce((mm, t) => {
110
+ const bddErrors = fs.readFileSync(bddExitCodePather(t[0], t[1])).toString();
111
+ const lintErrors = fs.readFileSync(lintExitCodePather(t[0], t[1])).toString();
112
+ const typeErrors = fs.readFileSync(tscExitCodePather(t[0], t[1])).toString();
113
+ mm[t[0]] = {
114
+ bddErrors,
115
+ lintErrors,
116
+ typeErrors
117
+ };
118
+ return mm;
119
+ }, {})
120
+ };
121
+ const s = JSON.stringify(final, null, 2);
122
+ fs.writeFileSync("docs/summary.json", s);
123
+ console.log(ansiC.inverse("Goodbye"));
39
124
  process.exit();
40
125
  });
41
126
  }
42
127
  };
43
- this.register = (src) => {
44
- this.registry[src] = false;
128
+ this.testIsNowRunning = (src) => {
129
+ this.bigBoard[src].status = "running";
45
130
  };
46
- this.deregister = (src) => {
47
- this.registry[src] = true;
131
+ this.testIsNowDone = (src) => {
132
+ this.bigBoard[src].status = "waiting";
48
133
  if (this.shutdownMode) {
49
134
  this.checkForShutdown();
50
135
  }
51
136
  };
52
137
  this.launchNode = async (src, dest) => {
53
- console.log("launchNode", src);
54
- this.register(src);
138
+ console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
139
+ this.testIsNowRunning(src);
55
140
  const destFolder = dest.replace(".mjs", "");
56
141
  let argz = "";
57
142
  const testConfig = this.configs.tests.find((t) => {
58
143
  return t[0] === src;
59
144
  });
60
145
  if (!testConfig) {
61
- console.error("missing test config");
146
+ console.log(ansiC.inverse("missing test config! Exiting ungracefully!"));
62
147
  process.exit(-1);
63
148
  }
64
149
  const testConfigResource = testConfig[2];
@@ -96,38 +181,19 @@ var PM_Main = class extends PM {
96
181
  console.error("negative port makes no sense", src);
97
182
  process.exit(-1);
98
183
  }
99
- const builtfile = dest + ".mjs";
184
+ const builtfile = dest;
100
185
  const webSideCares = [];
101
- await Promise.all(
102
- testConfig[3].map(async (sidecar) => {
103
- if (sidecar[1] === "web") {
104
- const s = await this.launchWebSideCar(
105
- sidecar[0],
106
- destinationOfRuntime(sidecar[0], "web", this.configs),
107
- sidecar
108
- );
109
- webSideCares.push(s);
110
- return s;
111
- }
112
- if (sidecar[1] === "node") {
113
- return this.launchNodeSideCar(
114
- sidecar[0],
115
- destinationOfRuntime(sidecar[0], "node", this.configs),
116
- sidecar
117
- );
118
- }
119
- })
120
- );
121
186
  this.server[builtfile] = await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
122
187
  return module.default.then((defaultModule) => {
123
188
  defaultModule.receiveTestResourceConfig(argz).then(async ({ features, failed }) => {
124
- this.receiveFeatures(features, destFolder);
125
- console.log(`${src} completed with ${failed} errors`);
189
+ this.receiveFeatures(features, destFolder, src);
190
+ statusMessagePretty(failed, src);
191
+ this.receiveExitCode(src, failed);
126
192
  }).catch((e) => {
127
- console.log(`${src} errored with`, e);
193
+ console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
128
194
  }).finally(() => {
129
195
  webSideCares.forEach((webSideCar) => webSideCar.close());
130
- this.deregister(src);
196
+ this.testIsNowDone(src);
131
197
  });
132
198
  });
133
199
  });
@@ -139,7 +205,7 @@ var PM_Main = class extends PM {
139
205
  };
140
206
  this.launchWebSideCar = async (src, dest, testConfig) => {
141
207
  const d = dest + ".mjs";
142
- console.log("launchWebSideCar", src, dest, d);
208
+ console.log(ansiC.green(ansiC.inverse(`launchWebSideCar ${src}`)));
143
209
  const destFolder = dest.replace(".mjs", "");
144
210
  const fileStreams2 = [];
145
211
  const doneFileStream2 = [];
@@ -233,7 +299,7 @@ var PM_Main = class extends PM {
233
299
  };
234
300
  this.launchNodeSideCar = async (src, dest, testConfig) => {
235
301
  const d = dest + ".mjs";
236
- console.log("launchNodeSideCar", src, dest, d);
302
+ console.log(ansiC.green(ansiC.inverse(`launchNodeSideCar ${src}`)));
237
303
  const destFolder = dest.replace(".mjs", "");
238
304
  let argz = "";
239
305
  const testConfigResource = testConfig[2];
@@ -284,18 +350,9 @@ var PM_Main = class extends PM {
284
350
  }
285
351
  }
286
352
  };
287
- this.launchWeb = (t, dest, sidecars) => {
288
- console.log("launchWeb", t, dest);
289
- this.register(t);
290
- sidecars.map((sidecar) => {
291
- if (sidecar[1] === "node") {
292
- return this.launchNodeSideCar(
293
- sidecar[0],
294
- destinationOfRuntime(sidecar[0], "node", this.configs),
295
- sidecar
296
- );
297
- }
298
- });
353
+ this.launchWeb = (t, dest) => {
354
+ console.log(ansiC.green(ansiC.inverse(`! web ${t}`)));
355
+ this.testIsNowRunning(t);
299
356
  const destFolder = dest.replace(".mjs", "");
300
357
  const webArgz = JSON.stringify({
301
358
  name: dest,
@@ -303,10 +360,11 @@ var PM_Main = class extends PM {
303
360
  fs: destFolder,
304
361
  browserWSEndpoint: this.browser.wsEndpoint()
305
362
  });
363
+ const d = `${dest}?cacheBust=${Date.now()}`;
306
364
  const evaluation = `
307
- console.log("importing ${dest}.mjs");
308
- import('${dest}.mjs').then(async (x) => {
309
- console.log("imported", (await x.default));
365
+
366
+ import('${d}').then(async (x) => {
367
+
310
368
  try {
311
369
  return await (await x.default).receiveTestResourceConfig(${webArgz})
312
370
  } catch (e) {
@@ -315,8 +373,8 @@ var PM_Main = class extends PM {
315
373
  })`;
316
374
  const fileStreams2 = [];
317
375
  const doneFileStream2 = [];
318
- const stdoutStream = fs.createWriteStream(`${dest}/stdout.log`);
319
- const stderrStream = fs.createWriteStream(`${dest}/stderr.log`);
376
+ const stdoutStream = fs.createWriteStream(`${destFolder}/stdout.log`);
377
+ const stderrStream = fs.createWriteStream(`${destFolder}/stderr.log`);
320
378
  this.browser.newPage().then((page) => {
321
379
  page.exposeFunction(
322
380
  "screencast",
@@ -458,14 +516,14 @@ var PM_Main = class extends PM {
458
516
  files[t] = /* @__PURE__ */ new Set();
459
517
  }
460
518
  fs.writeFileSync(
461
- dest + "/manifest.json",
519
+ destFolder + "/manifest.json",
462
520
  JSON.stringify(Array.from(files[t]))
463
521
  );
464
522
  delete files[t];
465
523
  Promise.all(screenshots[t] || []).then(() => {
466
524
  delete screenshots[t];
467
525
  page.close();
468
- this.deregister(t);
526
+ this.testIsNowDone(t);
469
527
  stderrStream.close();
470
528
  stdoutStream.close();
471
529
  });
@@ -483,25 +541,34 @@ var PM_Main = class extends PM {
483
541
  }
484
542
  console.debug(`Error from message ${t}: [${err.message}] `);
485
543
  stderrStream.write(err.message);
544
+ close();
486
545
  });
487
546
  page.on("console", (log) => {
488
547
  stdoutStream.write(log.text());
489
548
  stdoutStream.write(JSON.stringify(log.location()));
490
549
  stdoutStream.write(JSON.stringify(log.stackTrace()));
491
550
  });
492
- await page.goto(`file://${`${dest}.html`}`, {});
551
+ await page.goto(`file://${`${destFolder}.html`}`, {});
493
552
  await page.evaluate(evaluation).then(async ({ failed, features }) => {
494
- this.receiveFeatures(features, destFolder);
495
- console.log(`${t} completed with ${failed} errors`);
553
+ this.receiveFeatures(features, destFolder, t);
554
+ statusMessagePretty(failed, t);
555
+ this.receiveExitCode(t, failed);
496
556
  }).catch((e) => {
497
- console.log(`${t} errored with`, e);
557
+ console.log(ansiC.red(ansiC.inverse(`${t} errored with: ${e}`)));
498
558
  }).finally(() => {
499
559
  close();
500
560
  });
501
561
  return page;
502
562
  });
503
563
  };
504
- this.receiveFeatures = (features, destFolder) => {
564
+ this.receiveFeatures = (features, destFolder, srcTest) => {
565
+ const featureDestination = path2.resolve(
566
+ process.cwd(),
567
+ "docs",
568
+ "features",
569
+ "strings",
570
+ srcTest.split(".").slice(0, -1).join(".") + ".features.txt"
571
+ );
505
572
  features.reduce(async (mm, featureStringKey) => {
506
573
  const accum = await mm;
507
574
  const isUrl = isValidUrl(featureStringKey);
@@ -519,42 +586,82 @@ var PM_Main = class extends PM {
519
586
  if (error.code !== "ENOENT") {
520
587
  }
521
588
  }
522
- fs.symlink(u.pathname, newPath, (err) => {
523
- if (err) {
524
- } else {
525
- }
526
- });
527
- accum.push(newPath);
589
+ accum.files.push(newPath);
528
590
  } else if (u.protocol === "http:" || u.protocol === "https:") {
529
591
  const newPath = `${process.cwd()}/docs/features/external${u.hostname}${u.pathname}`;
530
592
  const body = await this.configs.featureIngestor(featureStringKey);
531
593
  writeFileAndCreateDir(newPath, body);
532
- accum.push(newPath);
594
+ accum.files.push(newPath);
533
595
  }
534
596
  } else {
535
- const newPath = `${process.cwd()}/docs/features/plain/${await sha256(
536
- featureStringKey
537
- )}`;
538
- writeFileAndCreateDir(newPath, featureStringKey);
539
- accum.push(newPath);
597
+ await fs.promises.mkdir(path2.dirname(featureDestination), {
598
+ recursive: true
599
+ });
600
+ accum.strings.push(featureStringKey);
540
601
  }
541
602
  return accum;
542
- }, Promise.resolve([])).then((features2) => {
603
+ }, Promise.resolve({ files: [], strings: [] })).then(({ files: files2, strings }) => {
543
604
  fs.writeFileSync(
544
605
  `${destFolder}/featurePrompt.txt`,
545
- features2.map((f) => {
606
+ files2.map((f) => {
546
607
  return `/read ${f}`;
547
608
  }).join("\n")
548
609
  );
549
610
  });
611
+ this.writeBigBoard();
612
+ };
613
+ this.receiveExitCode = (srcTest, failures) => {
614
+ this.bigBoard[srcTest].runTimeError = failures;
615
+ this.writeBigBoard();
616
+ };
617
+ this.writeBigBoard = () => {
618
+ fs.writeFileSync(
619
+ "./docs/bigBoard.json",
620
+ JSON.stringify(this.bigBoard, null, 2)
621
+ );
550
622
  };
551
623
  this.server = {};
552
624
  this.configs = configs;
553
625
  this.ports = {};
554
- this.registry = {};
626
+ this.configs.tests.forEach(([t]) => {
627
+ this.bigBoard[t] = {
628
+ status: "?"
629
+ };
630
+ });
555
631
  this.configs.ports.forEach((element) => {
556
632
  this.ports[element] = "true";
557
633
  });
634
+ globalThis["waitForSelector"] = async (pageKey, sel) => {
635
+ const page = (await this.browser.pages()).find(
636
+ /* @ts-ignore:next-line */
637
+ (p) => p.mainFrame()._id === pageKey
638
+ );
639
+ await page?.waitForSelector(sel);
640
+ };
641
+ globalThis["screencastStop"] = async (path4) => {
642
+ return recorders[path4].stop();
643
+ };
644
+ globalThis["closePage"] = async (pageKey) => {
645
+ const page = (await this.browser.pages()).find(
646
+ /* @ts-ignore:next-line */
647
+ (p) => p.mainFrame()._id === pageKey
648
+ );
649
+ return page.close();
650
+ };
651
+ globalThis["goto"] = async (pageKey, url) => {
652
+ const page = (await this.browser.pages()).find(
653
+ /* @ts-ignore:next-line */
654
+ (p) => p.mainFrame()._id === pageKey
655
+ );
656
+ await page?.goto(url);
657
+ return;
658
+ };
659
+ globalThis["newPage"] = () => {
660
+ return this.browser.newPage();
661
+ };
662
+ globalThis["pages"] = () => {
663
+ return this.browser.pages();
664
+ };
558
665
  globalThis["mkdirSync"] = (fp) => {
559
666
  if (!fs.existsSync(fp)) {
560
667
  return fs.mkdirSync(fp, {
@@ -564,8 +671,7 @@ var PM_Main = class extends PM {
564
671
  return false;
565
672
  };
566
673
  globalThis["writeFileSync"] = (filepath, contents, testName) => {
567
- const dir = path2.dirname(filepath);
568
- fs.mkdirSync(dir, {
674
+ fs.mkdirSync(path2.dirname(filepath), {
569
675
  recursive: true
570
676
  });
571
677
  if (!files[testName]) {
@@ -592,7 +698,11 @@ var PM_Main = class extends PM {
592
698
  globalThis["end"] = (uid) => {
593
699
  fileStreams3[uid].end();
594
700
  };
595
- globalThis["customScreenShot"] = async (opts, page) => {
701
+ globalThis["customScreenShot"] = async (opts, pageKey, testName) => {
702
+ const page = (await this.browser.pages()).find(
703
+ /* @ts-ignore:next-line */
704
+ (p2) => p2.mainFrame()._id === pageKey
705
+ );
596
706
  const p = opts.path;
597
707
  const dir = path2.dirname(p);
598
708
  fs.mkdirSync(dir, {
@@ -613,6 +723,38 @@ var PM_Main = class extends PM {
613
723
  await sPromise;
614
724
  return sPromise;
615
725
  };
726
+ globalThis["screencast"] = async (opts, pageKey) => {
727
+ const page = (await this.browser.pages()).find(
728
+ /* @ts-ignore:next-line */
729
+ (p2) => p2.mainFrame()._id === pageKey
730
+ );
731
+ const p = opts.path;
732
+ const dir = path2.dirname(p);
733
+ fs.mkdirSync(dir, {
734
+ recursive: true
735
+ });
736
+ const recorder = await page?.screencast({
737
+ ...opts,
738
+ path: p
739
+ });
740
+ recorders[opts.path] = recorder;
741
+ return opts.path;
742
+ };
743
+ }
744
+ customclose() {
745
+ throw new Error("Method not implemented.");
746
+ }
747
+ waitForSelector(p, s) {
748
+ throw new Error("Method not implemented.");
749
+ }
750
+ closePage(p) {
751
+ throw new Error("Method not implemented.");
752
+ }
753
+ newPage() {
754
+ throw new Error("Method not implemented.");
755
+ }
756
+ goto(p, url) {
757
+ throw new Error("Method not implemented.");
616
758
  }
617
759
  $(selector) {
618
760
  throw new Error("Method not implemented.");
@@ -620,7 +762,7 @@ var PM_Main = class extends PM {
620
762
  screencast(opts) {
621
763
  throw new Error("Method not implemented.");
622
764
  }
623
- customScreenShot(opts) {
765
+ customScreenShot(opts, cdpPage) {
624
766
  throw new Error("Method not implemented.");
625
767
  }
626
768
  end(accessObject) {
@@ -712,65 +854,265 @@ var PM_Main = class extends PM {
712
854
  isDisabled(selector) {
713
855
  throw new Error("Method not implemented.");
714
856
  }
857
+ screencastStop(s) {
858
+ throw new Error("Method not implemented.");
859
+ }
715
860
  ////////////////////////////////////////////////////////////////////////////////
716
861
  async startPuppeteer(options, destfolder) {
717
862
  this.browser = await puppeteer.launch(options);
718
863
  }
719
- ////////////////////////////////////////////////////////////////////////////////
864
+ // goodbye = () => {
865
+ // this.browser.disconnect().then(() => {
866
+ // console.log("Goodbye");
867
+ // process.exit();
868
+ // });
869
+ // };
720
870
  shutDown() {
721
- console.log("shutting down...");
722
871
  this.shutdownMode = true;
723
872
  this.checkForShutdown();
724
873
  }
725
874
  };
726
- async function writeFileAndCreateDir(filePath, data) {
727
- const dirPath = path2.dirname(filePath);
728
- try {
729
- await fs.promises.mkdir(dirPath, { recursive: true });
730
- await fs.promises.writeFile(filePath, data);
731
- } catch (error) {
732
- console.error(`Error writing file: ${error}`);
733
- }
734
- }
735
- async function sha256(rawData) {
736
- const data = typeof rawData === "object" ? JSON.stringify(rawData) : String(rawData);
737
- const msgBuffer = new TextEncoder().encode(data);
738
- const hashBuffer = await crypto.subtle.digest("SHA-256", msgBuffer);
739
- const hashArray = Array.from(new Uint8Array(hashBuffer));
740
- return hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
741
- }
742
- function isValidUrl(string) {
743
- try {
744
- new URL(string);
745
- return true;
746
- } catch (err) {
747
- return false;
748
- }
749
- }
750
875
 
751
- // src/Puppeteer.ts
876
+ // src/run.ts
877
+ console.log(ansiC2.inverse("Press 'x' to shutdown forcefully."));
752
878
  readline.emitKeypressEvents(process.stdin);
753
879
  if (process.stdin.isTTY)
754
880
  process.stdin.setRawMode(true);
755
- var Puppeteer_default = async (partialConfig) => {
881
+ process.stdin.on("keypress", (str, key) => {
882
+ if (key.name === "x") {
883
+ console.log(ansiC2.inverse("Shutting down forcefully..."));
884
+ process.exit(-1);
885
+ }
886
+ });
887
+ async function fileHash(filePath, algorithm = "md5") {
888
+ return new Promise((resolve, reject) => {
889
+ const hash = crypto.createHash(algorithm);
890
+ const fileStream = fs2.createReadStream(filePath);
891
+ fileStream.on("data", (data) => {
892
+ hash.update(data);
893
+ });
894
+ fileStream.on("end", () => {
895
+ const fileHash2 = hash.digest("hex");
896
+ resolve(fileHash2);
897
+ });
898
+ fileStream.on("error", (error) => {
899
+ reject(`Error reading file: ${error.message}`);
900
+ });
901
+ });
902
+ }
903
+ async function filesHash(files2, algorithm = "md5") {
904
+ return new Promise((resolve, reject) => {
905
+ resolve(
906
+ files2.reduce(async (mm, f) => {
907
+ return await mm + await fileHash(f);
908
+ }, Promise.resolve(""))
909
+ );
910
+ });
911
+ }
912
+ var getRunnables = (tests, payload = {
913
+ nodeEntryPoints: {},
914
+ webEntryPoints: {}
915
+ }) => {
916
+ return tests.reduce((pt, cv, cndx, cry) => {
917
+ if (cv[1] === "node") {
918
+ pt.nodeEntryPoints[cv[0]] = path3.resolve(
919
+ `./docs/node/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
920
+ );
921
+ } else if (cv[1] === "web") {
922
+ pt.webEntryPoints[cv[0]] = path3.resolve(
923
+ `./docs/web/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
924
+ );
925
+ }
926
+ if (cv[3].length) {
927
+ getRunnables(cv[3], payload);
928
+ }
929
+ return pt;
930
+ }, payload);
931
+ };
932
+ var changes = {};
933
+ var tscCheck = async ({
934
+ entrypoint,
935
+ addableFiles,
936
+ platform
937
+ }) => {
938
+ console.log(ansiC2.green(ansiC2.inverse(`tsc < ${entrypoint}`)));
939
+ const program = tsc.createProgramFromConfig({
940
+ basePath: process.cwd(),
941
+ // always required, used for relative paths
942
+ configFilePath: "tsconfig.json",
943
+ // config to inherit from (optional)
944
+ compilerOptions: {
945
+ rootDir: "src",
946
+ outDir: tscPather(entrypoint, platform),
947
+ // declaration: true,
948
+ // skipLibCheck: true,
949
+ noEmit: true
950
+ },
951
+ include: addableFiles
952
+ //["src/**/*"],
953
+ // exclude: ["**/*.test.ts", "**/*.spec.ts"],
954
+ });
955
+ const tscPath = tscPather(entrypoint, platform);
956
+ let allDiagnostics = program.getSemanticDiagnostics();
957
+ const d = [];
958
+ allDiagnostics.forEach((diagnostic) => {
959
+ if (diagnostic.file) {
960
+ let { line, character } = ts.getLineAndCharacterOfPosition(
961
+ diagnostic.file,
962
+ diagnostic.start
963
+ );
964
+ let message = ts.flattenDiagnosticMessageText(
965
+ diagnostic.messageText,
966
+ "\n"
967
+ );
968
+ d.push(
969
+ `${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`
970
+ );
971
+ } else {
972
+ d.push(ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"));
973
+ }
974
+ });
975
+ fs2.writeFileSync(tscPath, d.join("\n"));
976
+ fs2.writeFileSync(
977
+ tscExitCodePather(entrypoint, platform),
978
+ d.length.toString()
979
+ );
980
+ };
981
+ var eslint = new ESLint();
982
+ var formatter = await eslint.loadFormatter(
983
+ "./node_modules/testeranto/dist/prebuild/esbuildConfigs/eslint-formatter-testeranto.mjs"
984
+ );
985
+ var eslintCheck = async (entrypoint, platform, addableFiles) => {
986
+ console.log(ansiC2.green(ansiC2.inverse(`eslint < ${entrypoint}`)));
987
+ const results = (await eslint.lintFiles(addableFiles)).filter((r) => r.messages.length).filter((r) => {
988
+ return r.messages[0].ruleId !== null;
989
+ }).map((r) => {
990
+ delete r.source;
991
+ return r;
992
+ });
993
+ fs2.writeFileSync(
994
+ lintPather(entrypoint, platform),
995
+ await formatter.format(results)
996
+ );
997
+ fs2.writeFileSync(
998
+ lintExitCodePather(entrypoint, platform),
999
+ results.length.toString()
1000
+ );
1001
+ };
1002
+ var makePrompt = async (entryPoint, addableFiles, platform) => {
1003
+ const promptPath = path3.join(
1004
+ "./docs/",
1005
+ platform,
1006
+ entryPoint.split(".").slice(0, -1).join("."),
1007
+ `prompt.txt`
1008
+ );
1009
+ const testPaths = path3.join(
1010
+ "./docs/",
1011
+ platform,
1012
+ entryPoint.split(".").slice(0, -1).join("."),
1013
+ `tests.json`
1014
+ );
1015
+ const featuresPath = path3.join(
1016
+ "./docs/",
1017
+ platform,
1018
+ entryPoint.split(".").slice(0, -1).join("."),
1019
+ `featurePrompt.txt`
1020
+ );
1021
+ fs2.writeFileSync(
1022
+ promptPath,
1023
+ `
1024
+ ${addableFiles.map((x) => {
1025
+ return `/add ${x}`;
1026
+ }).join("\n")}
1027
+
1028
+ /read ${lintPather(entryPoint, platform)}
1029
+ /read ${tscPather(entryPoint, platform)}
1030
+ /read ${testPaths}
1031
+
1032
+ /load ${featuresPath}
1033
+
1034
+ /code Fix the failing tests described in ${testPaths}. Correct any type signature errors described in the files ${tscPather(
1035
+ entryPoint,
1036
+ platform
1037
+ )}. Implement any method which throws "Function not implemented. Resolve the lint errors described in ${lintPather(
1038
+ entryPoint,
1039
+ platform
1040
+ )}"
1041
+ `
1042
+ );
1043
+ };
1044
+ var metafileOutputs = async (platform) => {
1045
+ const metafile = JSON.parse(
1046
+ fs2.readFileSync(`docs/${platform}/metafile.json`).toString()
1047
+ ).metafile;
1048
+ if (!metafile)
1049
+ return;
1050
+ const outputs = metafile.outputs;
1051
+ Object.keys(outputs).forEach(async (k) => {
1052
+ const addableFiles = Object.keys(outputs[k].inputs).filter((i) => {
1053
+ if (!fs2.existsSync(i))
1054
+ return false;
1055
+ if (i.startsWith("node_modules"))
1056
+ return false;
1057
+ return true;
1058
+ });
1059
+ const f = `${k.split(".").slice(0, -1).join(".")}/`;
1060
+ if (!fs2.existsSync(f)) {
1061
+ fs2.mkdirSync(f);
1062
+ }
1063
+ const entrypoint = outputs[k].entryPoint;
1064
+ if (entrypoint) {
1065
+ const changeDigest = await filesHash(addableFiles);
1066
+ if (changeDigest === changes[entrypoint]) {
1067
+ } else {
1068
+ changes[entrypoint] = changeDigest;
1069
+ tscCheck({ platform, addableFiles, entrypoint });
1070
+ eslintCheck(entrypoint, platform, addableFiles);
1071
+ makePrompt(entrypoint, addableFiles, platform);
1072
+ }
1073
+ }
1074
+ });
1075
+ };
1076
+ import(process.cwd() + "/" + process.argv[2]).then(async (module) => {
1077
+ const rawConfig = module.default;
756
1078
  const config = {
757
- ...partialConfig,
758
- buildDir: process.cwd() + "/" + partialConfig.outdir
1079
+ ...rawConfig,
1080
+ buildDir: process.cwd() + "/" + rawConfig.outdir
759
1081
  };
760
- fs2.writeFileSync(
761
- `${config.outdir}/testeranto.json`,
762
- JSON.stringify(
763
- {
764
- ...config,
765
- buildDir: process.cwd() + "/" + config.outdir
766
- },
767
- null,
768
- 2
769
- )
1082
+ let mode = config.devMode ? "DEV" : "PROD";
1083
+ const fileHashes = {};
1084
+ let pm = new PM_Main(config);
1085
+ console.log(ansiC2.inverse(`Press 'q' to shutdown gracefully`));
1086
+ process.stdin.on("keypress", (str, key) => {
1087
+ if (key.name === "q") {
1088
+ console.log(
1089
+ ansiC2.inverse("Testeranto-Run is shutting down gracefully...")
1090
+ );
1091
+ mode = "PROD";
1092
+ nodeMetafileWatcher.close();
1093
+ webMetafileWatcher.close();
1094
+ pm.shutDown();
1095
+ }
1096
+ });
1097
+ metafileOutputs("node");
1098
+ const nodeMetafileWatcher = watch(
1099
+ "docs/node/metafile.json",
1100
+ async (e, filename) => {
1101
+ console.log(ansiC2.green(ansiC2.inverse(`< ${e} ${filename} (node)`)));
1102
+ metafileOutputs("node");
1103
+ }
1104
+ );
1105
+ metafileOutputs("web");
1106
+ const webMetafileWatcher = watch(
1107
+ "docs/web/metafile.json",
1108
+ async (e, filename) => {
1109
+ console.log(ansiC2.green(ansiC2.inverse(`< ${e} ${filename} (web)`)));
1110
+ metafileOutputs("web");
1111
+ }
770
1112
  );
771
- const pm = new PM_Main(config);
772
1113
  await pm.startPuppeteer(
773
1114
  {
1115
+ slowMo: 1,
774
1116
  // timeout: 1,
775
1117
  waitForInitialPage: false,
776
1118
  executablePath: (
@@ -814,58 +1156,35 @@ var Puppeteer_default = async (partialConfig) => {
814
1156
  },
815
1157
  "."
816
1158
  );
817
- console.log(
818
- "\n Puppeteer is running. Press 'q' to shutdown softly. Press 'x' to shutdown forcefully.\n"
819
- );
820
- process.stdin.on("keypress", (str, key) => {
821
- if (key.name === "q") {
822
- pm.shutDown();
823
- }
824
- if (key.name === "x") {
825
- process.exit(-1);
826
- }
827
- });
828
- config.tests.forEach(([test, runtime, tr, sidecars]) => {
829
- if (runtime === "node") {
830
- pm.launchNode(test, destinationOfRuntime(test, "node", config));
831
- } else if (runtime === "web") {
832
- pm.launchWeb(test, destinationOfRuntime(test, "web", config), sidecars);
833
- } else {
834
- console.error("runtime makes no sense", runtime);
835
- }
836
- });
837
- if (config.devMode) {
838
- console.log("ready and watching for changes...", config.buildDir);
839
- watch(config.buildDir, (eventType, changedFile) => {
840
- if (changedFile) {
841
- config.tests.forEach(([test, runtime, tr, sidecars]) => {
842
- if (eventType === "change" || eventType === "rename") {
843
- if (changedFile === test.replace("./", "node/").split(".").slice(0, -1).concat("mjs").join(".")) {
844
- pm.launchNode(test, destinationOfRuntime(test, "node", config));
845
- }
846
- if (changedFile === test.replace("./", "web/").split(".").slice(0, -1).concat("mjs").join(".")) {
847
- pm.launchWeb(
848
- test,
849
- destinationOfRuntime(test, "web", config),
850
- sidecars
851
- );
852
- }
1159
+ const { nodeEntryPoints, webEntryPoints } = getRunnables(config.tests);
1160
+ Object.entries(nodeEntryPoints).forEach(
1161
+ ([k, outputFile]) => {
1162
+ pm.launchNode(k, outputFile);
1163
+ try {
1164
+ watch(outputFile, async (e, filename) => {
1165
+ const hash = await fileHash(outputFile);
1166
+ if (fileHashes[k] !== hash) {
1167
+ fileHashes[k] = hash;
1168
+ console.log(ansiC2.green(ansiC2.inverse(`< ${e} ${filename}`)));
1169
+ pm.launchNode(k, outputFile);
853
1170
  }
854
1171
  });
1172
+ } catch (e) {
1173
+ console.error(e);
855
1174
  }
856
- });
857
- } else {
858
- pm.shutDown();
859
- }
860
- };
861
-
862
- // src/run-tests.ts
863
- import process2 from "process";
864
- if (!process2.argv[2]) {
865
- console.log("You didn't pass a config file");
866
- process2.exit(-1);
867
- } else {
868
- import(process2.cwd() + "/" + process2.argv[2]).then((module) => {
869
- Puppeteer_default(module.default);
870
- });
871
- }
1175
+ }
1176
+ );
1177
+ Object.entries(webEntryPoints).forEach(
1178
+ ([k, outputFile]) => {
1179
+ pm.launchWeb(k, outputFile);
1180
+ watch(outputFile, async (e, filename) => {
1181
+ const hash = await fileHash(outputFile);
1182
+ if (fileHashes[k] !== hash) {
1183
+ fileHashes[k] = hash;
1184
+ console.log(ansiC2.green(ansiC2.inverse(`< ${e} ${filename}`)));
1185
+ pm.launchWeb(k, outputFile);
1186
+ }
1187
+ });
1188
+ }
1189
+ );
1190
+ });