testeranto 0.114.1 → 0.125.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 (396) hide show
  1. package/.aider.chat.history.md +97001 -0
  2. package/.aider.conf.yml +5 -0
  3. package/.aider.input.history +9 -0
  4. package/.aider.tags.cache.v3/b7/e6/5be87b62aeaf2bc244ff41c1b61a.val +0 -0
  5. package/.aider.tags.cache.v3/cache.db +0 -0
  6. package/.aider.tags.cache.v3/e3/e6/3501625caf5d5eb171f0d248462e.val +0 -0
  7. package/.aider.tags.cache.v3/ec/c0/161c249c35be853cc40cf11f9267.val +0 -0
  8. package/README.md +15 -1
  9. package/bundle.js +1 -1
  10. package/dist/common/src/Init.js +31 -0
  11. package/dist/common/src/Node.js +49 -0
  12. package/dist/common/src/PM/base.js +230 -0
  13. package/dist/common/src/PM/main.js +1026 -0
  14. package/dist/common/src/PM/node.js +161 -0
  15. package/dist/common/{PM/node.js → src/PM/pure.js} +27 -18
  16. package/dist/common/{PM → src/PM}/web.js +14 -47
  17. package/dist/common/{Node.js → src/Pure.js} +11 -9
  18. package/dist/common/{SubPackages/react/component/web.js → src/SubPackages/react/component/index.js} +5 -4
  19. package/dist/common/src/SubPackages/react/component/node.js +10 -0
  20. package/dist/common/src/SubPackages/react/component/pure.js +10 -0
  21. package/dist/common/{SubPackages/react/jsx → src/SubPackages/react/component}/web.js +2 -2
  22. package/dist/common/src/SubPackages/react/jsx/index.js +64 -0
  23. package/dist/common/src/SubPackages/react/jsx/pure.js +10 -0
  24. package/dist/common/src/SubPackages/react/jsx/web.js +10 -0
  25. package/dist/common/{SubPackages/react-dom/component/web.js → src/SubPackages/react-dom/component/dynamic.js} +8 -14
  26. package/dist/common/src/SubPackages/react-dom/component/node.js +10 -0
  27. package/dist/common/src/SubPackages/react-dom/component/pure.js +10 -0
  28. package/dist/common/src/SubPackages/react-dom/component/static.js +26 -0
  29. package/dist/common/src/SubPackages/react-dom/component/web.js +16 -0
  30. package/dist/common/src/SubPackages/react-dom/jsx/dynamic.js +31 -0
  31. package/dist/common/src/SubPackages/react-dom/jsx/node.js +10 -0
  32. package/dist/common/src/SubPackages/react-dom/jsx/pure.js +10 -0
  33. package/dist/common/src/SubPackages/react-dom/jsx/static.js +59 -0
  34. package/dist/common/src/SubPackages/react-dom/jsx/web.js +16 -0
  35. package/dist/common/src/SubPackages/react-test-renderer/component/index.js +15 -0
  36. package/dist/common/src/SubPackages/react-test-renderer/component/pure.js +8 -0
  37. package/dist/common/src/SubPackages/react-test-renderer/component/test/implementation.js +57 -0
  38. package/dist/common/src/SubPackages/react-test-renderer/component/test/node.js +10 -0
  39. package/dist/common/src/SubPackages/react-test-renderer/component/test/pure.js +10 -0
  40. package/dist/common/src/SubPackages/react-test-renderer/component/test/web.js +10 -0
  41. package/dist/common/src/SubPackages/react-test-renderer/jsx/pure.js +10 -0
  42. package/dist/common/{Web.js → src/Web.js} +1 -4
  43. package/dist/common/src/build.js +223 -0
  44. package/dist/common/{defaultConfig.js → src/defaultConfig.js} +1 -3
  45. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/index.js +1 -1
  46. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.js +7 -3
  47. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/node.js +7 -4
  48. package/dist/common/src/esbuildConfigs/pure.js +41 -0
  49. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/web.js +8 -5
  50. package/dist/common/src/examples/react/component/index.js +33 -0
  51. package/dist/common/src/examples/react/component/test.js +36 -0
  52. package/dist/common/src/init-docs.js +9 -0
  53. package/dist/common/{lib → src/lib}/abstractBase.js +99 -95
  54. package/dist/common/{lib → src/lib}/basebuilder.js +24 -20
  55. package/dist/common/{lib → src/lib}/classBuilder.js +8 -5
  56. package/dist/common/{lib → src/lib}/core.js +10 -60
  57. package/dist/common/{lib → src/lib}/index.js +7 -2
  58. package/dist/common/{run.js → src/run.js} +12 -4
  59. package/dist/common/src/utils.js +65 -0
  60. package/dist/common/testeranto.config.js +41 -0
  61. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  62. package/dist/module/src/Init.js +26 -0
  63. package/dist/module/src/Node.js +42 -0
  64. package/dist/module/src/PM/base.js +223 -0
  65. package/dist/module/src/PM/main.js +986 -0
  66. package/dist/module/src/PM/node.js +154 -0
  67. package/dist/module/{PM/node.js → src/PM/pure.js} +25 -16
  68. package/dist/module/{PM → src/PM}/web.js +14 -47
  69. package/dist/module/src/Project.js +120 -0
  70. package/dist/module/{Node.js → src/Pure.js} +9 -7
  71. package/dist/module/{ReportClient.js → src/ReportClient.js} +1 -1
  72. package/dist/module/{SubPackages/react/component/web.js → src/SubPackages/react/component/index.js} +3 -4
  73. package/dist/module/src/SubPackages/react/component/node.js +5 -0
  74. package/dist/module/src/SubPackages/react/component/pure.js +5 -0
  75. package/dist/module/{SubPackages/react/jsx → src/SubPackages/react/component}/web.js +3 -3
  76. package/dist/module/src/SubPackages/react/jsx/index.js +58 -0
  77. package/dist/module/{SubPackages → src/SubPackages}/react/jsx/node.js +1 -1
  78. package/dist/module/src/SubPackages/react/jsx/pure.js +5 -0
  79. package/dist/module/src/SubPackages/react/jsx/web.js +5 -0
  80. package/dist/module/{SubPackages/react-dom/component/web.js → src/SubPackages/react-dom/component/dynamic.js} +5 -13
  81. package/dist/module/src/SubPackages/react-dom/component/node.js +5 -0
  82. package/dist/module/src/SubPackages/react-dom/component/pure.js +5 -0
  83. package/dist/module/src/SubPackages/react-dom/component/static.js +22 -0
  84. package/dist/module/src/SubPackages/react-dom/component/web.js +11 -0
  85. package/dist/module/{SubPackages/react-dom/jsx/node.js → src/SubPackages/react-dom/jsx/dynamic.js} +3 -7
  86. package/dist/module/src/SubPackages/react-dom/jsx/node.js +5 -0
  87. package/dist/module/src/SubPackages/react-dom/jsx/pure.js +5 -0
  88. package/dist/module/src/SubPackages/react-dom/jsx/static.js +53 -0
  89. package/dist/module/src/SubPackages/react-dom/jsx/web.js +11 -0
  90. package/dist/module/src/SubPackages/react-test-renderer/component/index.js +14 -0
  91. package/dist/module/src/SubPackages/react-test-renderer/component/pure.js +3 -0
  92. package/dist/module/src/SubPackages/react-test-renderer/component/test/implementation.js +54 -0
  93. package/dist/module/src/SubPackages/react-test-renderer/component/test/node.js +5 -0
  94. package/dist/module/src/SubPackages/react-test-renderer/component/test/pure.js +5 -0
  95. package/dist/module/src/SubPackages/react-test-renderer/component/test/web.js +5 -0
  96. package/dist/module/src/SubPackages/react-test-renderer/jsx/pure.js +5 -0
  97. package/dist/module/{TestReport.js → src/TestReport.js} +26 -14
  98. package/dist/module/{Web.js → src/Web.js} +1 -4
  99. package/dist/module/src/build.js +185 -0
  100. package/dist/module/{defaultConfig.js → src/defaultConfig.js} +1 -3
  101. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/index.js +1 -1
  102. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.js +7 -3
  103. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/node.js +7 -4
  104. package/dist/module/src/esbuildConfigs/pure.js +36 -0
  105. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/web.js +8 -5
  106. package/dist/module/src/examples/react/component/index.js +26 -0
  107. package/dist/module/src/examples/react/component/test.js +32 -0
  108. package/dist/module/src/init-docs.js +4 -0
  109. package/dist/module/{lib → src/lib}/abstractBase.js +99 -95
  110. package/dist/module/{lib → src/lib}/basebuilder.js +24 -20
  111. package/dist/module/{lib → src/lib}/classBuilder.js +8 -5
  112. package/dist/module/{lib → src/lib}/core.js +10 -60
  113. package/dist/module/{lib → src/lib}/index.js +7 -2
  114. package/dist/module/{run.js → src/run.js} +12 -4
  115. package/dist/module/src/utils.js +53 -0
  116. package/dist/module/testeranto.config.js +39 -0
  117. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  118. package/dist/prebuild/Project.css +11367 -0
  119. package/dist/prebuild/Project.js +24643 -0
  120. package/dist/prebuild/ReportClient.js +1 -1
  121. package/dist/prebuild/TestReport.js +13 -12
  122. package/dist/prebuild/build.mjs +217 -106
  123. package/dist/prebuild/init-docs.mjs +29 -83
  124. package/dist/prebuild/run.mjs +803 -686
  125. package/dist/tsconfig.tsbuildinfo +1 -1
  126. package/dist/types/src/Init.d.ts +2 -0
  127. package/dist/types/src/Node.d.ts +9 -0
  128. package/dist/types/src/PM/base.d.ts +34 -0
  129. package/dist/types/{PM → src/PM}/index.d.ts +21 -22
  130. package/dist/types/src/PM/main.d.ts +47 -0
  131. package/dist/types/src/PM/node.d.ts +38 -0
  132. package/dist/types/{PM/node.d.ts → src/PM/pure.d.ts} +16 -17
  133. package/dist/types/{PM → src/PM}/web.d.ts +10 -15
  134. package/dist/types/src/Pure.d.ts +9 -0
  135. package/dist/types/src/SubPackages/react/component/index.d.ts +4 -0
  136. package/dist/types/src/SubPackages/react/component/node.d.ts +4 -0
  137. package/dist/types/src/SubPackages/react/component/pure.d.ts +4 -0
  138. package/dist/types/src/SubPackages/react/component/web.d.ts +4 -0
  139. package/dist/types/src/SubPackages/react/jsx/index.d.ts +5 -0
  140. package/dist/types/src/SubPackages/react/jsx/node.d.ts +4 -0
  141. package/dist/types/src/SubPackages/react/jsx/pure.d.ts +4 -0
  142. package/dist/types/src/SubPackages/react/jsx/web.d.ts +4 -0
  143. package/dist/types/src/SubPackages/react-dom/component/dynamic.d.ts +20 -0
  144. package/dist/types/src/SubPackages/react-dom/component/node.d.ts +4 -0
  145. package/dist/types/src/SubPackages/react-dom/component/pure.d.ts +4 -0
  146. package/dist/types/src/SubPackages/react-dom/component/static.d.ts +9 -0
  147. package/dist/types/src/SubPackages/react-dom/component/web.d.ts +4 -0
  148. package/dist/types/src/SubPackages/react-dom/jsx/dynamic.d.ts +5 -0
  149. package/dist/types/src/SubPackages/react-dom/jsx/node.d.ts +4 -0
  150. package/dist/types/src/SubPackages/react-dom/jsx/pure.d.ts +4 -0
  151. package/dist/types/src/SubPackages/react-dom/jsx/static.d.ts +5 -0
  152. package/dist/types/src/SubPackages/react-dom/jsx/web.d.ts +5 -0
  153. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.d.ts +1 -1
  154. package/dist/types/src/SubPackages/react-test-renderer/component/index.d.ts +5 -0
  155. package/dist/types/src/SubPackages/react-test-renderer/component/interface.d.ts +3 -0
  156. package/dist/types/src/SubPackages/react-test-renderer/component/node.d.ts +4 -0
  157. package/dist/types/src/SubPackages/react-test-renderer/component/pure.d.ts +4 -0
  158. package/dist/types/src/SubPackages/react-test-renderer/component/test/implementation.d.ts +4 -0
  159. package/dist/types/src/SubPackages/react-test-renderer/component/test/node.d.ts +3 -0
  160. package/dist/types/src/SubPackages/react-test-renderer/component/test/pure.d.ts +4 -0
  161. package/dist/types/src/SubPackages/react-test-renderer/component/test/web.d.ts +3 -0
  162. package/dist/types/src/SubPackages/react-test-renderer/component/web.d.ts +4 -0
  163. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.d.ts +1 -1
  164. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.d.ts +1 -1
  165. package/dist/types/src/SubPackages/react-test-renderer/jsx/index.d.ts +11 -0
  166. package/dist/types/src/SubPackages/react-test-renderer/jsx/node.d.ts +4 -0
  167. package/dist/types/src/SubPackages/react-test-renderer/jsx/pure.d.ts +4 -0
  168. package/dist/types/src/SubPackages/react-test-renderer/jsx/web.d.ts +4 -0
  169. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.d.ts +1 -1
  170. package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.d.ts +1 -1
  171. package/dist/types/src/Types.d.ts +88 -0
  172. package/dist/types/src/Web.d.ts +9 -0
  173. package/dist/types/src/defaultConfig.d.ts +3 -0
  174. package/dist/types/src/esbuildConfigs/index.d.ts +4 -0
  175. package/dist/types/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.d.ts +2 -1
  176. package/dist/types/src/esbuildConfigs/node.d.ts +4 -0
  177. package/dist/types/src/esbuildConfigs/pure.d.ts +4 -0
  178. package/dist/types/src/esbuildConfigs/web.d.ts +4 -0
  179. package/dist/types/src/examples/react/component/index.d.ts +13 -0
  180. package/dist/types/src/examples/react/component/test.d.ts +17 -0
  181. package/dist/types/{lib → src/lib}/abstractBase.d.ts +47 -34
  182. package/dist/types/{lib → src/lib}/basebuilder.d.ts +7 -9
  183. package/dist/types/src/lib/classBuilder.d.ts +9 -0
  184. package/dist/types/src/lib/core.d.ts +7 -0
  185. package/dist/types/{lib → src/lib}/index.d.ts +14 -36
  186. package/dist/types/src/lib/types.d.ts +15 -0
  187. package/dist/types/src/utils.d.ts +18 -0
  188. package/dist/types/testeranto.config.d.ts +3 -0
  189. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  190. package/eslint.config.mjs +111 -0
  191. package/package.json +33 -12
  192. package/src/Init.ts +29 -75
  193. package/src/Node.ts +42 -46
  194. package/src/PM/base.ts +299 -0
  195. package/src/PM/index.ts +28 -21
  196. package/src/PM/main.ts +569 -819
  197. package/src/PM/node.ts +88 -44
  198. package/src/PM/pure.ts +209 -0
  199. package/src/PM/web.ts +19 -121
  200. package/src/Project.tsx +200 -0
  201. package/src/Pure.ts +69 -0
  202. package/src/ReportClient.tsx +8 -3
  203. package/src/SubPackages/react/component/index.ts +28 -0
  204. package/src/SubPackages/react/component/node.ts +12 -82
  205. package/src/SubPackages/react/component/pure.ts +17 -0
  206. package/src/SubPackages/react/component/web.ts +12 -81
  207. package/src/SubPackages/react/jsx/index.ts +56 -52
  208. package/src/SubPackages/react/jsx/node.ts +12 -29
  209. package/src/SubPackages/react/jsx/pure.ts +23 -0
  210. package/src/SubPackages/react/jsx/web.ts +17 -36
  211. package/src/SubPackages/react-dom/component/dynamic.ts +107 -0
  212. package/src/SubPackages/react-dom/component/node.ts +11 -116
  213. package/src/SubPackages/react-dom/component/pure.ts +17 -0
  214. package/src/SubPackages/react-dom/component/static.ts +41 -0
  215. package/src/SubPackages/react-dom/component/web.ts +7 -113
  216. package/src/SubPackages/react-dom/jsx/dynamic.ts +46 -0
  217. package/src/SubPackages/react-dom/jsx/node.ts +10 -58
  218. package/src/SubPackages/react-dom/jsx/pure.ts +18 -0
  219. package/src/SubPackages/react-dom/jsx/static.ts +87 -0
  220. package/src/SubPackages/react-dom/jsx/web.ts +7 -135
  221. package/src/SubPackages/react-test-renderer/component/index.ts +27 -51
  222. package/src/SubPackages/react-test-renderer/component/interface.ts +7 -5
  223. package/src/SubPackages/react-test-renderer/component/node.ts +7 -25
  224. package/src/SubPackages/react-test-renderer/component/pure.ts +18 -0
  225. package/src/SubPackages/react-test-renderer/component/test/implementation.ts +63 -0
  226. package/src/SubPackages/react-test-renderer/component/test/node.ts +14 -0
  227. package/src/SubPackages/react-test-renderer/component/test/pure.ts +14 -0
  228. package/src/SubPackages/react-test-renderer/component/test/web.ts +14 -0
  229. package/src/SubPackages/react-test-renderer/component/web.ts +7 -23
  230. package/src/SubPackages/react-test-renderer/jsx/index.ts +13 -46
  231. package/src/SubPackages/react-test-renderer/jsx/node.ts +9 -15
  232. package/src/SubPackages/react-test-renderer/jsx/pure.ts +31 -0
  233. package/src/SubPackages/react-test-renderer/jsx/web.ts +9 -14
  234. package/src/TestReport.tsx +37 -19
  235. package/src/Types.ts +114 -140
  236. package/src/Web.ts +13 -48
  237. package/src/build.ts +153 -143
  238. package/src/defaultConfig.ts +3 -5
  239. package/src/esbuildConfigs/index.ts +3 -3
  240. package/src/esbuildConfigs/inputFilesPlugin.ts +9 -7
  241. package/src/esbuildConfigs/node.ts +10 -6
  242. package/src/esbuildConfigs/pure.ts +72 -0
  243. package/src/esbuildConfigs/web.ts +11 -7
  244. package/src/examples/react/component/index.tsx +35 -0
  245. package/src/examples/react/component/test.ts +83 -0
  246. package/src/init-docs.ts +2 -15
  247. package/src/lib/abstractBase.ts +188 -260
  248. package/src/lib/basebuilder.ts +47 -48
  249. package/src/lib/classBuilder.ts +28 -35
  250. package/src/lib/core.ts +35 -102
  251. package/src/lib/index.ts +37 -65
  252. package/src/lib/types.ts +23 -98
  253. package/src/run.ts +18 -5
  254. package/src/utils.ts +73 -40
  255. package/testeranto/Project.css +11367 -0
  256. package/testeranto/Project.js +24643 -0
  257. package/testeranto/ReportClient.css +11367 -0
  258. package/testeranto/ReportClient.js +24641 -0
  259. package/testeranto/TestReport.css +11367 -0
  260. package/testeranto/TestReport.js +27485 -0
  261. package/testeranto/bundles/node/react/metafile.json +627 -0
  262. package/testeranto/bundles/node/react/src/SubPackages/react-test-renderer/component/test/node.mjs +24687 -0
  263. package/testeranto/bundles/pure/react/metafile.json +8 -0
  264. package/testeranto/bundles/pure/react/src/SubPackages/react-test-renderer/component/test/pure.mjs +24625 -0
  265. package/testeranto/bundles/web/react/metafile.json +8 -0
  266. package/testeranto/bundles/web/react/src/SubPackages/react-test-renderer/component/test/web.html +19 -0
  267. package/testeranto/bundles/web/react/src/SubPackages/react-test-renderer/component/test/web.mjs +21290 -0
  268. package/testeranto/index.html +28 -0
  269. package/testeranto/reports/react/config.json +22 -0
  270. package/testeranto/reports/react/index.html +24 -0
  271. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/node/node/console_log.txt +0 -0
  272. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/bdd_errors.txt +1 -0
  273. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/featurePrompt.txt +0 -0
  274. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/lint_errors.json +3381 -0
  275. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/littleBoard.html +20 -0
  276. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/log.txt +40 -0
  277. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/prompt.txt +24 -0
  278. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/tests.json +132 -0
  279. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/pure/pure/type_errors.txt +17 -0
  280. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/bdd_errors.txt +1 -0
  281. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/console_log.txt +1 -0
  282. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/lint_errors.json +2947 -0
  283. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/littleBoard.html +20 -0
  284. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/log.txt +40 -0
  285. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/prompt.txt +23 -0
  286. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/tests.json +132 -0
  287. package/testeranto/reports/react/src/SubPackages/react-test-renderer/component/test/web/web/type_errors.txt +18 -0
  288. package/testeranto/reports/react/summary.json +8 -0
  289. package/testeranto.config.ts +45 -0
  290. package/tsc.log +53 -76
  291. package/type-fix.txt +2 -0
  292. package/dist/common/Init.js +0 -68
  293. package/dist/common/PM/main.js +0 -1176
  294. package/dist/common/SubPackages/react/component/node.js +0 -19
  295. package/dist/common/SubPackages/react/jsx/index.js +0 -21
  296. package/dist/common/SubPackages/react-dom/component/node.js +0 -88
  297. package/dist/common/SubPackages/react-dom/jsx/node.js +0 -39
  298. package/dist/common/SubPackages/react-dom/jsx/web.js +0 -128
  299. package/dist/common/SubPackages/react-test-renderer/component/index.js +0 -2
  300. package/dist/common/build.js +0 -222
  301. package/dist/common/init-docs.js +0 -53
  302. package/dist/common/puppeteerConfiger.js +0 -24
  303. package/dist/common/utils.js +0 -43
  304. package/dist/module/Init.js +0 -63
  305. package/dist/module/PM/main.js +0 -1136
  306. package/dist/module/SubPackages/react/component/node.js +0 -14
  307. package/dist/module/SubPackages/react/jsx/index.js +0 -15
  308. package/dist/module/SubPackages/react-dom/component/node.js +0 -80
  309. package/dist/module/SubPackages/react-dom/jsx/web.js +0 -90
  310. package/dist/module/SubPackages/react-test-renderer/component/index.js +0 -1
  311. package/dist/module/build.js +0 -184
  312. package/dist/module/init-docs.js +0 -15
  313. package/dist/module/puppeteerConfiger.js +0 -19
  314. package/dist/module/utils.js +0 -29
  315. package/dist/types/Init.d.ts +0 -2
  316. package/dist/types/Node.d.ts +0 -12
  317. package/dist/types/PM/main.d.ts +0 -66
  318. package/dist/types/SubPackages/react/component/node.d.ts +0 -7
  319. package/dist/types/SubPackages/react/component/web.d.ts +0 -7
  320. package/dist/types/SubPackages/react/jsx/index.d.ts +0 -12
  321. package/dist/types/SubPackages/react/jsx/node.d.ts +0 -4
  322. package/dist/types/SubPackages/react/jsx/web.d.ts +0 -4
  323. package/dist/types/SubPackages/react-dom/component/node.d.ts +0 -11
  324. package/dist/types/SubPackages/react-dom/component/web.d.ts +0 -20
  325. package/dist/types/SubPackages/react-dom/jsx/node.d.ts +0 -7
  326. package/dist/types/SubPackages/react-dom/jsx/web.d.ts +0 -5
  327. package/dist/types/SubPackages/react-test-renderer/component/index.d.ts +0 -13
  328. package/dist/types/SubPackages/react-test-renderer/component/interface.d.ts +0 -9
  329. package/dist/types/SubPackages/react-test-renderer/component/node.d.ts +0 -4
  330. package/dist/types/SubPackages/react-test-renderer/component/web.d.ts +0 -4
  331. package/dist/types/SubPackages/react-test-renderer/jsx/index.d.ts +0 -16
  332. package/dist/types/SubPackages/react-test-renderer/jsx/node.d.ts +0 -9
  333. package/dist/types/SubPackages/react-test-renderer/jsx/web.d.ts +0 -9
  334. package/dist/types/Types.d.ts +0 -61
  335. package/dist/types/Web.d.ts +0 -9
  336. package/dist/types/defaultConfig.d.ts +0 -3
  337. package/dist/types/esbuildConfigs/index.d.ts +0 -4
  338. package/dist/types/esbuildConfigs/node.d.ts +0 -4
  339. package/dist/types/esbuildConfigs/web.d.ts +0 -4
  340. package/dist/types/lib/classBuilder.d.ts +0 -7
  341. package/dist/types/lib/core.d.ts +0 -7
  342. package/dist/types/lib/types.d.ts +0 -14
  343. package/dist/types/puppeteerConfiger.d.ts +0 -4
  344. package/dist/types/utils.d.ts +0 -15
  345. package/src/puppeteerConfiger.ts +0 -26
  346. /package/dist/common/{PM → src/PM}/index.js +0 -0
  347. /package/dist/common/{ReportServer.js → src/ReportServer.js} +0 -0
  348. /package/dist/common/{SubPackages → src/SubPackages}/react/jsx/node.js +0 -0
  349. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/jsx/index.js +0 -0
  350. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  351. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/interface.js +0 -0
  352. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/node.js +0 -0
  353. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/web.js +0 -0
  354. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.js +0 -0
  355. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.js +0 -0
  356. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.js +0 -0
  357. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.js +0 -0
  358. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.js +0 -0
  359. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  360. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.js +0 -0
  361. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  362. /package/dist/common/{Types.js → src/Types.js} +0 -0
  363. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/eslint-formatter-testeranto.js +0 -0
  364. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/featuresPlugin.js +0 -0
  365. /package/dist/common/{lib → src/lib}/types.js +0 -0
  366. /package/dist/common/{web.html.js → src/web.html.js} +0 -0
  367. /package/dist/module/{Footer.js → src/Footer.js} +0 -0
  368. /package/dist/module/{PM → src/PM}/index.js +0 -0
  369. /package/dist/module/{ReportServer.js → src/ReportServer.js} +0 -0
  370. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/jsx/index.js +0 -0
  371. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  372. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/interface.js +0 -0
  373. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/node.js +0 -0
  374. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/web.js +0 -0
  375. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.js +0 -0
  376. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.js +0 -0
  377. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.js +0 -0
  378. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.js +0 -0
  379. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.js +0 -0
  380. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  381. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.js +0 -0
  382. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  383. /package/dist/module/{Types.js → src/Types.js} +0 -0
  384. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/eslint-formatter-testeranto.js +0 -0
  385. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/featuresPlugin.js +0 -0
  386. /package/dist/module/{lib → src/lib}/types.js +0 -0
  387. /package/dist/module/{web.html.js → src/web.html.js} +0 -0
  388. /package/dist/types/{ReportServer.d.ts → src/ReportServer.d.ts} +0 -0
  389. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/jsx/index.d.ts +0 -0
  390. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.d.ts +0 -0
  391. /package/dist/types/{build.d.ts → src/build.d.ts} +0 -0
  392. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/eslint-formatter-testeranto.d.ts +0 -0
  393. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/featuresPlugin.d.ts +0 -0
  394. /package/dist/types/{init-docs.d.ts → src/init-docs.d.ts} +0 -0
  395. /package/dist/types/{run.d.ts → src/run.d.ts} +0 -0
  396. /package/dist/types/{web.html.d.ts → src/web.html.d.ts} +0 -0
@@ -0,0 +1,1026 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.PM_Main = void 0;
40
+ const node_child_process_1 = require("node:child_process");
41
+ const typescript_1 = __importDefault(require("typescript"));
42
+ const net_1 = __importDefault(require("net"));
43
+ const fs_1 = __importStar(require("fs"));
44
+ const path_1 = __importDefault(require("path"));
45
+ const puppeteer_core_1 = __importDefault(require("puppeteer-core"));
46
+ const ansi_colors_1 = __importDefault(require("ansi-colors"));
47
+ const node_crypto_1 = __importDefault(require("node:crypto"));
48
+ const eslint_1 = require("eslint");
49
+ const tsc_prog_1 = __importDefault(require("tsc-prog"));
50
+ const utils_1 = require("../utils");
51
+ const base_js_1 = require("./base.js");
52
+ const eslint = new eslint_1.ESLint();
53
+ const formatter = await eslint.loadFormatter("./node_modules/testeranto/dist/prebuild/esbuildConfigs/eslint-formatter-testeranto.mjs");
54
+ const changes = {};
55
+ const fileHashes = {};
56
+ const files = {};
57
+ const screenshots = {};
58
+ async function fileHash(filePath, algorithm = "md5") {
59
+ return new Promise((resolve, reject) => {
60
+ const hash = node_crypto_1.default.createHash(algorithm);
61
+ const fileStream = fs_1.default.createReadStream(filePath);
62
+ fileStream.on("data", (data) => {
63
+ hash.update(data);
64
+ });
65
+ fileStream.on("end", () => {
66
+ const fileHash = hash.digest("hex");
67
+ resolve(fileHash);
68
+ });
69
+ fileStream.on("error", (error) => {
70
+ reject(`Error reading file: ${error.message}`);
71
+ });
72
+ });
73
+ }
74
+ const statusMessagePretty = (failures, test) => {
75
+ if (failures === 0) {
76
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`> ${test} completed successfully`)));
77
+ }
78
+ else {
79
+ console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`> ${test} failed ${failures} times`)));
80
+ }
81
+ };
82
+ async function writeFileAndCreateDir(filePath, data) {
83
+ const dirPath = path_1.default.dirname(filePath);
84
+ try {
85
+ await fs_1.default.promises.mkdir(dirPath, { recursive: true });
86
+ await fs_1.default.appendFileSync(filePath, data);
87
+ }
88
+ catch (error) {
89
+ console.error(`Error writing file: ${error}`);
90
+ }
91
+ }
92
+ const filesHash = async (files, algorithm = "md5") => {
93
+ return new Promise((resolve, reject) => {
94
+ resolve(files.reduce(async (mm, f) => {
95
+ return (await mm) + (await fileHash(f));
96
+ }, Promise.resolve("")));
97
+ });
98
+ };
99
+ function isValidUrl(string) {
100
+ try {
101
+ new URL(string);
102
+ return true;
103
+ }
104
+ catch (err) {
105
+ return false;
106
+ }
107
+ }
108
+ // Wait for file to exist, checks every 2 seconds by default
109
+ function pollForFile(path, timeout = 2000) {
110
+ const intervalObj = setInterval(function () {
111
+ const file = path;
112
+ const fileExists = fs_1.default.existsSync(file);
113
+ // console.log("Checking for: ", file);
114
+ // console.log("Exists: ", fileExists);
115
+ if (fileExists) {
116
+ clearInterval(intervalObj);
117
+ }
118
+ }, timeout);
119
+ }
120
+ class PM_Main extends base_js_1.PM_Base {
121
+ constructor(configs, name, mode) {
122
+ super(configs);
123
+ this.bigBoard = {};
124
+ this.getRunnables = (tests, testName, payload = {
125
+ nodeEntryPoints: {},
126
+ webEntryPoints: {},
127
+ importEntryPoints: {},
128
+ }) => {
129
+ return (0, utils_1.getRunnables)(tests, testName, payload);
130
+ };
131
+ this.tscCheck = async ({ entrypoint, addableFiles, platform, }) => {
132
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`tsc < ${entrypoint}`)));
133
+ this.typeCheckIsRunning(entrypoint);
134
+ const program = tsc_prog_1.default.createProgramFromConfig({
135
+ basePath: process.cwd(), // always required, used for relative paths
136
+ configFilePath: "tsconfig.json", // config to inherit from (optional)
137
+ compilerOptions: {
138
+ rootDir: "src",
139
+ outDir: (0, utils_1.tscPather)(entrypoint, platform, this.name),
140
+ // declaration: true,
141
+ // skipLibCheck: true,
142
+ noEmit: true,
143
+ },
144
+ include: addableFiles, //["src/**/*"],
145
+ // exclude: ["node_modules", "../testeranto"],
146
+ // exclude: ["**/*.test.ts", "**/*.spec.ts"],
147
+ });
148
+ const tscPath = (0, utils_1.tscPather)(entrypoint, platform, this.name);
149
+ let allDiagnostics = program.getSemanticDiagnostics();
150
+ const results = [];
151
+ allDiagnostics.forEach((diagnostic) => {
152
+ if (diagnostic.file) {
153
+ let { line, character } = typescript_1.default.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
154
+ let message = typescript_1.default.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
155
+ results.push(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
156
+ }
157
+ else {
158
+ results.push(typescript_1.default.flattenDiagnosticMessageText(diagnostic.messageText, "\n"));
159
+ }
160
+ });
161
+ fs_1.default.writeFileSync(tscPath, results.join("\n"));
162
+ this.typeCheckIsNowDone(entrypoint, results.length);
163
+ };
164
+ this.eslintCheck = async (entrypoint, platform, addableFiles) => {
165
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`eslint < ${entrypoint}`)));
166
+ this.lintIsRunning(entrypoint);
167
+ const results = (await eslint.lintFiles(addableFiles))
168
+ .filter((r) => r.messages.length)
169
+ .filter((r) => {
170
+ return r.messages[0].ruleId !== null;
171
+ })
172
+ .map((r) => {
173
+ delete r.source;
174
+ return r;
175
+ });
176
+ fs_1.default.writeFileSync((0, utils_1.lintPather)(entrypoint, platform, this.name), await formatter.format(results));
177
+ this.lintIsNowDone(entrypoint, results.length);
178
+ };
179
+ this.makePrompt = async (entryPoint, addableFiles, platform) => {
180
+ this.bigBoard[entryPoint].prompt = "?";
181
+ const promptPath = (0, utils_1.promptPather)(entryPoint, platform, this.name);
182
+ const testPaths = path_1.default.join("testeranto", "reports", this.name, platform, entryPoint.split(".").slice(0, -1).join("."), `tests.json`);
183
+ const featuresPath = path_1.default.join("testeranto", "reports", this.name, platform, entryPoint.split(".").slice(0, -1).join("."), `featurePrompt.txt`);
184
+ fs_1.default.writeFileSync(promptPath, `
185
+ ${addableFiles
186
+ .map((x) => {
187
+ return `/add ${x}`;
188
+ })
189
+ .join("\n")}
190
+
191
+ /read ${(0, utils_1.lintPather)(entryPoint, platform, this.name)}
192
+ /read ${(0, utils_1.tscPather)(entryPoint, platform, this.name)}
193
+ /read ${testPaths}
194
+
195
+ /load ${featuresPath}
196
+
197
+ /code Fix the failing tests described in ${testPaths}. Correct any type signature errors described in the files ${(0, utils_1.tscPather)(entryPoint, platform, this.name)}. Implement any method which throws "Function not implemented. Resolve the lint errors described in ${(0, utils_1.lintPather)(entryPoint, platform, this.name)}"
198
+ `);
199
+ this.bigBoard[entryPoint].prompt = `aider --model deepseek/deepseek-chat --load testeranto/${this.name}/reports/${platform}/${entryPoint
200
+ .split(".")
201
+ .slice(0, -1)
202
+ .join(".")}/prompt.txt`;
203
+ this.checkForShutdown();
204
+ };
205
+ this.checkForShutdown = () => {
206
+ this.writeBigBoard();
207
+ if (this.mode === "dev")
208
+ return;
209
+ let inflight = false;
210
+ Object.keys(this.bigBoard).forEach((k) => {
211
+ if (this.bigBoard[k].prompt === "?") {
212
+ console.log(ansi_colors_1.default.blue(ansi_colors_1.default.inverse(`🕕 prompt ${k}`)));
213
+ inflight = true;
214
+ }
215
+ });
216
+ Object.keys(this.bigBoard).forEach((k) => {
217
+ if (this.bigBoard[k].runTimeError === "?") {
218
+ console.log(ansi_colors_1.default.blue(ansi_colors_1.default.inverse(`🕕 runTimeError ${k}`)));
219
+ inflight = true;
220
+ }
221
+ });
222
+ Object.keys(this.bigBoard).forEach((k) => {
223
+ if (this.bigBoard[k].staticErrors === "?") {
224
+ console.log(ansi_colors_1.default.blue(ansi_colors_1.default.inverse(`🕕 staticErrors ${k}`)));
225
+ inflight = true;
226
+ }
227
+ });
228
+ Object.keys(this.bigBoard).forEach((k) => {
229
+ if (this.bigBoard[k].typeErrors === "?") {
230
+ console.log(ansi_colors_1.default.blue(ansi_colors_1.default.inverse(`🕕 typeErrors ${k}`)));
231
+ inflight = true;
232
+ }
233
+ });
234
+ this.writeBigBoard();
235
+ if (!inflight) {
236
+ this.browser.disconnect().then(() => {
237
+ console.log(ansi_colors_1.default.inverse(`${this.name} has been tested. Goodbye.`));
238
+ process.exit();
239
+ });
240
+ }
241
+ };
242
+ this.typeCheckIsRunning = (src) => {
243
+ this.bigBoard[src].typeErrors = "?";
244
+ };
245
+ this.typeCheckIsNowDone = (src, failures) => {
246
+ this.bigBoard[src].typeErrors = failures;
247
+ this.writeBigBoard();
248
+ this.checkForShutdown();
249
+ };
250
+ this.lintIsRunning = (src) => {
251
+ this.bigBoard[src].staticErrors = "?";
252
+ this.writeBigBoard();
253
+ };
254
+ this.lintIsNowDone = (src, failures) => {
255
+ this.bigBoard[src].staticErrors = failures;
256
+ this.writeBigBoard();
257
+ this.checkForShutdown();
258
+ };
259
+ this.bddTestIsRunning = (src) => {
260
+ this.bigBoard[src].runTimeError = "?";
261
+ this.writeBigBoard();
262
+ };
263
+ this.bddTestIsNowDone = (src, failures) => {
264
+ this.bigBoard[src].runTimeError = failures;
265
+ this.writeBigBoard();
266
+ this.checkForShutdown();
267
+ };
268
+ this.launchPure = async (src, dest) => {
269
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`! pure, ${src}`)));
270
+ this.bddTestIsRunning(src);
271
+ const reportDest = `testeranto/reports/${this.name}/${src
272
+ .split(".")
273
+ .slice(0, -1)
274
+ .join(".")}/pure`;
275
+ if (!fs_1.default.existsSync(reportDest)) {
276
+ fs_1.default.mkdirSync(reportDest, { recursive: true });
277
+ }
278
+ const destFolder = dest.replace(".mjs", "");
279
+ let argz = "";
280
+ const testConfig = this.configs.tests.find((t) => {
281
+ return t[0] === src;
282
+ });
283
+ if (!testConfig) {
284
+ console.log(ansi_colors_1.default.inverse("missing test config! Exiting ungracefully!"));
285
+ process.exit(-1);
286
+ }
287
+ const testConfigResource = testConfig[2];
288
+ let portsToUse = [];
289
+ if (testConfigResource.ports === 0) {
290
+ argz = JSON.stringify({
291
+ scheduled: true,
292
+ name: src,
293
+ ports: portsToUse,
294
+ fs: reportDest,
295
+ browserWSEndpoint: this.browser.wsEndpoint(),
296
+ });
297
+ }
298
+ else if (testConfigResource.ports > 0) {
299
+ const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
300
+ if (openPorts.length >= testConfigResource.ports) {
301
+ for (let i = 0; i < testConfigResource.ports; i++) {
302
+ portsToUse.push(openPorts[i][0]);
303
+ this.ports[openPorts[i][0]] = false; // port is now closed
304
+ }
305
+ argz = JSON.stringify({
306
+ scheduled: true,
307
+ name: src,
308
+ ports: portsToUse,
309
+ fs: destFolder,
310
+ browserWSEndpoint: this.browser.wsEndpoint(),
311
+ });
312
+ }
313
+ else {
314
+ this.queue.push(src);
315
+ return;
316
+ }
317
+ }
318
+ else {
319
+ console.error("negative port makes no sense", src);
320
+ process.exit(-1);
321
+ }
322
+ const builtfile = dest;
323
+ const webSideCares = [];
324
+ // fs.writeFileSync(
325
+ // `${reportDest}/stdlog.txt`,
326
+ // "THIS FILE IS AUTO GENERATED. IT IS PURPOSEFULLY LEFT BLANK."
327
+ // );
328
+ // await Promise.all(
329
+ // testConfig[3].map(async (sidecar) => {
330
+ // if (sidecar[1] === "web") {
331
+ // const s = await this.launchWebSideCar(
332
+ // sidecar[0],
333
+ // destinationOfRuntime(sidecar[0], "web", this.configs),
334
+ // sidecar
335
+ // );
336
+ // webSideCares.push(s);
337
+ // return s;
338
+ // }
339
+ // if (sidecar[1] === "node") {
340
+ // return this.launchNodeSideCar(
341
+ // sidecar[0],
342
+ // destinationOfRuntime(sidecar[0], "node", this.configs),
343
+ // sidecar
344
+ // );
345
+ // }
346
+ // })
347
+ // );
348
+ await Promise.resolve(`${`${builtfile}?cacheBust=${Date.now()}`}`).then(s => __importStar(require(s))).then((module) => {
349
+ return module.default.then((defaultModule) => {
350
+ defaultModule
351
+ .receiveTestResourceConfig(argz)
352
+ .then(async (results) => {
353
+ this.receiveFeatures(results.features, destFolder, src, "pure");
354
+ statusMessagePretty(results.fails, src);
355
+ this.bddTestIsNowDone(src, results.fails);
356
+ })
357
+ .catch((e) => {
358
+ console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`${src} errored with: ${e}`)));
359
+ this.bddTestIsNowDone(src, -1);
360
+ })
361
+ .finally(() => {
362
+ webSideCares.forEach((webSideCar) => webSideCar.close());
363
+ });
364
+ });
365
+ });
366
+ // console.log("portsToUse", portsToUse);
367
+ for (let i = 0; i <= portsToUse.length; i++) {
368
+ if (portsToUse[i]) {
369
+ this.ports[portsToUse[i]] = "true"; //port is open again
370
+ }
371
+ }
372
+ };
373
+ this.launchNode = async (src, dest) => {
374
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`! node, ${src}`)));
375
+ this.bddTestIsRunning(src);
376
+ const reportDest = `testeranto/reports/${this.name}/${src
377
+ .split(".")
378
+ .slice(0, -1)
379
+ .join(".")}/node`;
380
+ if (!fs_1.default.existsSync(reportDest)) {
381
+ fs_1.default.mkdirSync(reportDest, { recursive: true });
382
+ }
383
+ const destFolder = dest.replace(".mjs", "");
384
+ let testResources = "";
385
+ const testConfig = this.configs.tests.find((t) => {
386
+ return t[0] === src;
387
+ });
388
+ if (!testConfig) {
389
+ console.log(ansi_colors_1.default.inverse("missing test config! Exiting ungracefully!"));
390
+ process.exit(-1);
391
+ }
392
+ const testConfigResource = testConfig[2];
393
+ let portsToUse = [];
394
+ if (testConfigResource.ports === 0) {
395
+ testResources = JSON.stringify({
396
+ scheduled: true,
397
+ name: src,
398
+ ports: portsToUse,
399
+ fs: reportDest,
400
+ browserWSEndpoint: this.browser.wsEndpoint(),
401
+ });
402
+ }
403
+ else if (testConfigResource.ports > 0) {
404
+ const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
405
+ if (openPorts.length >= testConfigResource.ports) {
406
+ for (let i = 0; i < testConfigResource.ports; i++) {
407
+ portsToUse.push(openPorts[i][0]);
408
+ this.ports[openPorts[i][0]] = false; // port is now closed
409
+ }
410
+ testResources = JSON.stringify({
411
+ scheduled: true,
412
+ name: src,
413
+ ports: portsToUse,
414
+ fs: destFolder,
415
+ browserWSEndpoint: this.browser.wsEndpoint(),
416
+ });
417
+ }
418
+ else {
419
+ this.queue.push(src);
420
+ return;
421
+ }
422
+ }
423
+ else {
424
+ console.error("negative port makes no sense", src);
425
+ process.exit(-1);
426
+ }
427
+ const builtfile = dest;
428
+ // const webSideCares: Page[] = [];
429
+ // await Promise.all(
430
+ // testConfig[3].map(async (sidecar) => {
431
+ // if (sidecar[1] === "web") {
432
+ // const s = await this.launchWebSideCar(
433
+ // sidecar[0],
434
+ // destinationOfRuntime(sidecar[0], "web", this.configs),
435
+ // sidecar
436
+ // );
437
+ // webSideCares.push(s);
438
+ // return s;
439
+ // }
440
+ // if (sidecar[1] === "node") {
441
+ // return this.launchNodeSideCar(
442
+ // sidecar[0],
443
+ // destinationOfRuntime(sidecar[0], "node", this.configs),
444
+ // sidecar
445
+ // );
446
+ // }
447
+ // })
448
+ // );
449
+ // const f = fork(builtfile, [testResources], {
450
+ // silent: true,
451
+ // // detached: true,
452
+ // // stdio: "ignore",
453
+ // });
454
+ let haltReturns = false;
455
+ let buffer = new Buffer("");
456
+ const server = net_1.default.createServer((socket) => {
457
+ socket.on("data", (data) => {
458
+ buffer = Buffer.concat([buffer, data]);
459
+ let messages = [];
460
+ for (let b = 0; b < buffer.length + 1; b++) {
461
+ let c = buffer.slice(0, b);
462
+ let d;
463
+ try {
464
+ d = JSON.parse(c.toString());
465
+ messages.push(d);
466
+ buffer = buffer.slice(b, buffer.length + 1);
467
+ b = 0;
468
+ }
469
+ catch (e) {
470
+ // b++;
471
+ }
472
+ }
473
+ messages.forEach(async (payload) => {
474
+ // set up the "node" listeners
475
+ this.mapping().forEach(async ([command, func]) => {
476
+ if (payload[0] === command) {
477
+ const x = payload.slice(1, -1);
478
+ const r = await this[command](...x);
479
+ if (!haltReturns) {
480
+ child.send(JSON.stringify({
481
+ payload: r,
482
+ key: payload[payload.length - 1],
483
+ }));
484
+ }
485
+ }
486
+ });
487
+ });
488
+ });
489
+ });
490
+ const oStream = fs_1.default.createWriteStream(`${reportDest}/console_log.txt`);
491
+ const child = (0, node_child_process_1.spawn)("node", [builtfile, testResources], {
492
+ stdio: ["pipe", "pipe", "pipe", "ipc"],
493
+ // silent: true
494
+ });
495
+ const p = destFolder + "/pipe";
496
+ server.listen(p, () => {
497
+ var _a, _b;
498
+ (_a = child.stderr) === null || _a === void 0 ? void 0 : _a.on("data", (data) => {
499
+ oStream.write(`stderr data ${data}`);
500
+ });
501
+ (_b = child.stdout) === null || _b === void 0 ? void 0 : _b.on("data", (data) => {
502
+ oStream.write(`stdout data ${data}`);
503
+ });
504
+ child.on("close", (code) => {
505
+ oStream.close();
506
+ server.close();
507
+ if (code === null) {
508
+ this.bddTestIsNowDone(src, -1);
509
+ statusMessagePretty(-1, src);
510
+ }
511
+ else if (code === 0) {
512
+ this.bddTestIsNowDone(src, 0);
513
+ statusMessagePretty(0, src);
514
+ }
515
+ else {
516
+ this.bddTestIsNowDone(src, code);
517
+ statusMessagePretty(code, src);
518
+ }
519
+ // haltReturns = true;
520
+ });
521
+ child.on("exit", (code) => { });
522
+ });
523
+ child.send({ path: p });
524
+ for (let i = 0; i <= portsToUse.length; i++) {
525
+ if (portsToUse[i]) {
526
+ this.ports[portsToUse[i]] = "true"; //port is open again
527
+ }
528
+ }
529
+ };
530
+ this.launchWebSideCar = async (src, dest, testConfig) => {
531
+ const d = dest + ".mjs";
532
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`launchWebSideCar ${src}`)));
533
+ const fileStreams2 = [];
534
+ const doneFileStream2 = [];
535
+ return new Promise((res, rej) => {
536
+ this.browser
537
+ .newPage()
538
+ .then((page) => {
539
+ // page.on("console", (msg) => {
540
+ // console.log("web > ", msg.args(), msg.text());
541
+ // // for (let i = 0; i < msg._args.length; ++i)
542
+ // // console.log(`${i}: ${msg._args[i]}`);
543
+ // });
544
+ page.exposeFunction("custom-screenshot", async (ssOpts, testName) => {
545
+ const p = ssOpts.path;
546
+ const dir = path_1.default.dirname(p);
547
+ fs_1.default.mkdirSync(dir, {
548
+ recursive: true,
549
+ });
550
+ files[testName].add(ssOpts.path);
551
+ const sPromise = page.screenshot(Object.assign(Object.assign({}, ssOpts), { path: p }));
552
+ if (!screenshots[testName]) {
553
+ screenshots[testName] = [];
554
+ }
555
+ screenshots[testName].push(sPromise);
556
+ await sPromise;
557
+ return sPromise;
558
+ });
559
+ page.exposeFunction("writeFileSync", (fp, contents, testName) => {
560
+ const dir = path_1.default.dirname(fp);
561
+ fs_1.default.mkdirSync(dir, {
562
+ recursive: true,
563
+ });
564
+ const p = new Promise(async (res, rej) => {
565
+ fs_1.default.writeFileSync(fp, contents);
566
+ res(fp);
567
+ });
568
+ doneFileStream2.push(p);
569
+ if (!files[testName]) {
570
+ files[testName] = new Set();
571
+ }
572
+ files[testName].add(fp);
573
+ return p;
574
+ });
575
+ page.exposeFunction("existsSync", (fp, contents) => {
576
+ return fs_1.default.existsSync(fp);
577
+ });
578
+ page.exposeFunction("mkdirSync", (fp) => {
579
+ if (!fs_1.default.existsSync(fp)) {
580
+ return fs_1.default.mkdirSync(fp, {
581
+ recursive: true,
582
+ });
583
+ }
584
+ return false;
585
+ });
586
+ page.exposeFunction("createWriteStream", (fp, testName) => {
587
+ const f = fs_1.default.createWriteStream(fp);
588
+ files[testName].add(fp);
589
+ const p = new Promise((res, rej) => {
590
+ res(fp);
591
+ });
592
+ doneFileStream2.push(p);
593
+ f.on("close", async () => {
594
+ await p;
595
+ });
596
+ fileStreams2.push(f);
597
+ return Object.assign(Object.assign({}, JSON.parse(JSON.stringify(f))), { uid: fileStreams2.length - 1 });
598
+ });
599
+ page.exposeFunction("write", async (uid, contents) => {
600
+ return fileStreams2[uid].write(contents);
601
+ });
602
+ page.exposeFunction("end", async (uid) => {
603
+ return fileStreams2[uid].end();
604
+ });
605
+ return page;
606
+ })
607
+ .then(async (page) => {
608
+ await page.goto(`file://${`${dest}.html`}`, {});
609
+ /* @ts-ignore:next-line */
610
+ res(page);
611
+ });
612
+ });
613
+ };
614
+ this.launchNodeSideCar = async (src, dest, testConfig) => {
615
+ const d = dest + ".mjs";
616
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`launchNodeSideCar ${src}`)));
617
+ const destFolder = dest.replace(".mjs", "");
618
+ let argz = "";
619
+ const testConfigResource = testConfig[2];
620
+ let portsToUse = [];
621
+ if (testConfigResource.ports === 0) {
622
+ argz = JSON.stringify({
623
+ scheduled: true,
624
+ name: src,
625
+ ports: portsToUse,
626
+ fs: destFolder,
627
+ browserWSEndpoint: this.browser.wsEndpoint(),
628
+ });
629
+ }
630
+ else if (testConfigResource.ports > 0) {
631
+ const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
632
+ // console.log("openPorts", openPorts);
633
+ if (openPorts.length >= testConfigResource.ports) {
634
+ for (let i = 0; i < testConfigResource.ports; i++) {
635
+ portsToUse.push(openPorts[i][0]);
636
+ this.ports[openPorts[i][0]] = false; // port is now closed
637
+ }
638
+ argz = JSON.stringify({
639
+ scheduled: true,
640
+ name: src,
641
+ // ports: [3333],
642
+ ports: portsToUse,
643
+ fs: ".",
644
+ browserWSEndpoint: this.browser.wsEndpoint(),
645
+ });
646
+ }
647
+ else {
648
+ this.queue.push(src);
649
+ return;
650
+ }
651
+ }
652
+ else {
653
+ console.error("negative port makes no sense", src);
654
+ process.exit(-1);
655
+ }
656
+ const builtfile = dest + ".mjs";
657
+ await Promise.resolve(`${`${builtfile}?cacheBust=${Date.now()}`}`).then(s => __importStar(require(s))).then((module) => {
658
+ return module.default.then((defaultModule) => {
659
+ // console.log("defaultModule", defaultModule);
660
+ const s = new defaultModule();
661
+ s.receiveTestResourceConfig(argz);
662
+ // Object.create(defaultModule);
663
+ // defaultModule
664
+ // .receiveTestResourceConfig(argz)
665
+ // .then((x) => {
666
+ // console.log("then", x);
667
+ // return x;
668
+ // })
669
+ // .catch((e) => {
670
+ // console.log("catch", e);
671
+ // });
672
+ });
673
+ });
674
+ for (let i = 0; i <= portsToUse.length; i++) {
675
+ if (portsToUse[i]) {
676
+ this.ports[portsToUse[i]] = "true"; //port is open again
677
+ }
678
+ }
679
+ };
680
+ this.launchWeb = async (src, dest) => {
681
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`! web ${src}`)));
682
+ this.bddTestIsRunning(src);
683
+ const reportDest = `testeranto/reports/${this.name}/${src
684
+ .split(".")
685
+ .slice(0, -1)
686
+ .join(".")}/web`;
687
+ if (!fs_1.default.existsSync(reportDest)) {
688
+ fs_1.default.mkdirSync(reportDest, { recursive: true });
689
+ }
690
+ const destFolder = dest.replace(".mjs", "");
691
+ const webArgz = JSON.stringify({
692
+ name: dest,
693
+ ports: [].toString(),
694
+ fs: reportDest,
695
+ browserWSEndpoint: this.browser.wsEndpoint(),
696
+ });
697
+ const d = `${dest}?cacheBust=${Date.now()}`;
698
+ const evaluation = `
699
+
700
+ import('${d}').then(async (x) => {
701
+
702
+ try {
703
+ return await (await x.default).receiveTestResourceConfig(${webArgz})
704
+ } catch (e) {
705
+ console.log("fail", e)
706
+ }
707
+ })`;
708
+ const oStream = fs_1.default.createWriteStream(`${reportDest}/console_log.txt`);
709
+ this.browser
710
+ .newPage()
711
+ .then((page) => {
712
+ // set up the "node" listeners
713
+ this.mapping().forEach(async ([command, func]) => {
714
+ page.exposeFunction(command, func);
715
+ });
716
+ return page;
717
+ })
718
+ .then(async (page) => {
719
+ const close = () => {
720
+ if (!files[src]) {
721
+ files[src] = new Set();
722
+ }
723
+ // files[t].add(filepath);
724
+ fs_1.default.writeFileSync(destFolder + "/manifest.json", JSON.stringify(Array.from(files[src])));
725
+ delete files[src];
726
+ Promise.all(screenshots[src] || []).then(() => {
727
+ delete screenshots[src];
728
+ page.close();
729
+ oStream.close();
730
+ });
731
+ };
732
+ page.on("pageerror", (err) => {
733
+ console.debug(`Error from ${src}: [${err.name}] `);
734
+ oStream.write(err.name);
735
+ oStream.write("\n");
736
+ if (err.cause) {
737
+ console.debug(`Error from ${src} cause: [${err.cause}] `);
738
+ oStream.write(err.cause);
739
+ oStream.write("\n");
740
+ }
741
+ if (err.stack) {
742
+ console.debug(`Error from stack ${src}: [${err.stack}] `);
743
+ oStream.write(err.stack);
744
+ oStream.write("\n");
745
+ }
746
+ console.debug(`Error from message ${src}: [${err.message}] `);
747
+ oStream.write(err.message);
748
+ oStream.write("\n");
749
+ this.bddTestIsNowDone(src, -1);
750
+ close();
751
+ });
752
+ page.on("console", (log) => {
753
+ oStream.write(log.text());
754
+ oStream.write(JSON.stringify(log.location()));
755
+ oStream.write(JSON.stringify(log.stackTrace()));
756
+ oStream.write("\n");
757
+ });
758
+ await page.goto(`file://${`${destFolder}.html`}`, {});
759
+ await page
760
+ .evaluate(evaluation)
761
+ .then(async ({ fails, failed, features }) => {
762
+ this.receiveFeatures(features, destFolder, src, "web");
763
+ statusMessagePretty(fails, src);
764
+ this.bddTestIsNowDone(src, fails);
765
+ })
766
+ .catch((e) => {
767
+ console.log(ansi_colors_1.default.red(ansi_colors_1.default.inverse(`${src} errored with: ${e}`)));
768
+ })
769
+ .finally(() => {
770
+ this.bddTestIsNowDone(src, -1);
771
+ close();
772
+ });
773
+ return page;
774
+ });
775
+ };
776
+ this.receiveFeatures = (features, destFolder, srcTest, platform) => {
777
+ const featureDestination = path_1.default.resolve(process.cwd(), "reports", "features", "strings", srcTest.split(".").slice(0, -1).join(".") + ".features.txt");
778
+ features
779
+ .reduce(async (mm, featureStringKey) => {
780
+ const accum = await mm;
781
+ const isUrl = isValidUrl(featureStringKey);
782
+ if (isUrl) {
783
+ const u = new URL(featureStringKey);
784
+ if (u.protocol === "file:") {
785
+ const newPath = `${process.cwd()}/testeranto/features/internal/${path_1.default.relative(process.cwd(), u.pathname)}`;
786
+ await fs_1.default.promises.mkdir(path_1.default.dirname(newPath), { recursive: true });
787
+ try {
788
+ await fs_1.default.unlinkSync(newPath);
789
+ // console.log(`Removed existing link at ${newPath}`);
790
+ }
791
+ catch (error) {
792
+ if (error.code !== "ENOENT") {
793
+ // throw error;
794
+ }
795
+ }
796
+ // fs.symlink(u.pathname, newPath, (err) => {
797
+ // if (err) {
798
+ // // console.error("Error creating symlink:", err);
799
+ // } else {
800
+ // // console.log("Symlink created successfully");
801
+ // }
802
+ // });
803
+ accum.files.push(newPath);
804
+ }
805
+ else if (u.protocol === "http:" || u.protocol === "https:") {
806
+ const newPath = `${process.cwd()}/testeranto/features/external${u.hostname}${u.pathname}`;
807
+ const body = await this.configs.featureIngestor(featureStringKey);
808
+ writeFileAndCreateDir(newPath, body);
809
+ accum.files.push(newPath);
810
+ }
811
+ }
812
+ else {
813
+ await fs_1.default.promises.mkdir(path_1.default.dirname(featureDestination), {
814
+ recursive: true,
815
+ });
816
+ accum.strings.push(featureStringKey);
817
+ }
818
+ return accum;
819
+ }, Promise.resolve({ files: [], strings: [] }))
820
+ .then(({ files, strings }) => {
821
+ fs_1.default.writeFileSync(`testeranto/reports/${this.name}/${srcTest
822
+ .split(".")
823
+ .slice(0, -1)
824
+ .join(".")}/${platform}/featurePrompt.txt`, files
825
+ .map((f) => {
826
+ return `/read ${f}`;
827
+ })
828
+ .join("\n"));
829
+ });
830
+ };
831
+ this.writeBigBoard = () => {
832
+ fs_1.default.writeFileSync(`./testeranto/reports/${this.name}/summary.json`, JSON.stringify(this.bigBoard, null, 2));
833
+ };
834
+ this.name = name;
835
+ this.mode = mode;
836
+ this.ports = {};
837
+ this.configs.tests.forEach(([t]) => {
838
+ this.bigBoard[t] = {
839
+ runTimeError: "?",
840
+ typeErrors: "?",
841
+ staticErrors: "?",
842
+ prompt: "?",
843
+ };
844
+ });
845
+ this.configs.ports.forEach((element) => {
846
+ this.ports[element] = "true"; // set ports as open
847
+ });
848
+ }
849
+ mapping() {
850
+ return [
851
+ ["$", this.$],
852
+ ["click", this.click],
853
+ ["closePage", this.closePage],
854
+ ["createWriteStream", this.createWriteStream],
855
+ ["customclose", this.customclose],
856
+ ["customScreenShot", this.customScreenShot],
857
+ ["end", this.end],
858
+ ["existsSync", this.existsSync],
859
+ ["focusOn", this.focusOn],
860
+ ["getAttribute", this.getAttribute],
861
+ ["getValue", this.getValue],
862
+ ["goto", this.goto],
863
+ ["isDisabled", this.isDisabled],
864
+ ["mkdirSync", this.mkdirSync],
865
+ ["newPage", this.newPage],
866
+ ["page", this.page],
867
+ ["pages", this.pages],
868
+ ["screencast", this.screencast],
869
+ ["screencastStop", this.screencastStop],
870
+ ["typeInto", this.typeInto],
871
+ ["waitForSelector", this.waitForSelector],
872
+ ["write", this.write],
873
+ ["writeFileSync", this.writeFileSync],
874
+ ];
875
+ }
876
+ async start() {
877
+ // set up the "pure" listeners
878
+ this.mapping().forEach(async ([command, func]) => {
879
+ // page.exposeFunction(command, func);
880
+ globalThis[command] = func;
881
+ });
882
+ if (!fs_1.default.existsSync(`testeranto/reports/${this.name}`)) {
883
+ fs_1.default.mkdirSync(`testeranto/reports/${this.name}`);
884
+ }
885
+ // await pollForFile();
886
+ this.browser = (await puppeteer_core_1.default.launch({
887
+ slowMo: 1,
888
+ waitForInitialPage: false,
889
+ executablePath:
890
+ // process.env.CHROMIUM_PATH || "/opt/homebrew/bin/chromium",
891
+ "/opt/homebrew/bin/chromium",
892
+ headless: true,
893
+ dumpio: false,
894
+ devtools: false,
895
+ args: [
896
+ "--allow-file-access-from-files",
897
+ "--allow-insecure-localhost",
898
+ "--allow-running-insecure-content",
899
+ "--auto-open-devtools-for-tabs",
900
+ "--disable-dev-shm-usage",
901
+ "--disable-extensions",
902
+ "--disable-gpu",
903
+ "--disable-setuid-sandbox",
904
+ "--disable-site-isolation-trials",
905
+ "--disable-site-isolation-trials",
906
+ "--disable-web-security",
907
+ "--no-first-run",
908
+ "--no-sandbox",
909
+ "--no-startup-window",
910
+ "--reduce-security-for-testing",
911
+ "--remote-allow-origins=*",
912
+ `--remote-debugging-port=3234`,
913
+ "--unsafely-treat-insecure-origin-as-secure=*",
914
+ // "--disable-features=IsolateOrigins,site-per-process",
915
+ // "--disable-features=IsolateOrigins",
916
+ // "--disk-cache-dir=/dev/null",
917
+ // "--disk-cache-size=1",
918
+ // "--no-zygote",
919
+ // "--remote-allow-origins=ws://localhost:3234",
920
+ // "--single-process",
921
+ // "--start-maximized",
922
+ // "--unsafely-treat-insecure-origin-as-secure",
923
+ // "--unsafely-treat-insecure-origin-as-secure=ws://192.168.0.101:3234",
924
+ ],
925
+ }));
926
+ const { nodeEntryPoints, webEntryPoints, importEntryPoints } = this.getRunnables(this.configs.tests, this.name);
927
+ [
928
+ [
929
+ nodeEntryPoints,
930
+ this.launchNode,
931
+ "node",
932
+ (w) => {
933
+ this.nodeMetafileWatcher = w;
934
+ },
935
+ ],
936
+ [
937
+ webEntryPoints,
938
+ this.launchWeb,
939
+ "web",
940
+ (w) => {
941
+ this.webMetafileWatcher = w;
942
+ },
943
+ ],
944
+ [
945
+ importEntryPoints,
946
+ this.launchPure,
947
+ "pure",
948
+ (w) => {
949
+ this.importMetafileWatcher = w;
950
+ },
951
+ ],
952
+ ].forEach(async ([eps, launcher, runtime, watcher]) => {
953
+ const metafile = `./testeranto/bundles/${runtime}/${this.name}/metafile.json`;
954
+ await pollForFile(metafile);
955
+ Object.entries(eps).forEach(async ([k, outputFile]) => {
956
+ // await pollForFile(outputFile);
957
+ launcher(k, outputFile);
958
+ try {
959
+ (0, fs_1.watch)(outputFile, async (e, filename) => {
960
+ const hash = await fileHash(outputFile);
961
+ if (fileHashes[k] !== hash) {
962
+ fileHashes[k] = hash;
963
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`< ${e} ${filename}`)));
964
+ launcher(k, outputFile);
965
+ }
966
+ });
967
+ }
968
+ catch (e) {
969
+ console.error(e);
970
+ }
971
+ });
972
+ this.metafileOutputs(runtime);
973
+ watcher((0, fs_1.watch)(metafile, async (e, filename) => {
974
+ console.log(ansi_colors_1.default.green(ansi_colors_1.default.inverse(`< ${e} ${filename} (${runtime})`)));
975
+ this.metafileOutputs(runtime);
976
+ }));
977
+ });
978
+ }
979
+ async stop() {
980
+ console.log(ansi_colors_1.default.inverse("Testeranto-Run is shutting down gracefully..."));
981
+ this.mode = "once";
982
+ this.nodeMetafileWatcher.close();
983
+ this.webMetafileWatcher.close();
984
+ this.importMetafileWatcher.close();
985
+ this.checkForShutdown();
986
+ }
987
+ async metafileOutputs(platform) {
988
+ const metafile = JSON.parse(fs_1.default
989
+ .readFileSync(`./testeranto/bundles/${platform}/${this.name}/metafile.json`)
990
+ .toString()).metafile;
991
+ if (!metafile)
992
+ return;
993
+ const outputs = metafile.outputs;
994
+ Object.keys(outputs).forEach(async (k) => {
995
+ const addableFiles = Object.keys(outputs[k].inputs).filter((i) => {
996
+ if (!fs_1.default.existsSync(i))
997
+ return false;
998
+ if (i.startsWith("node_modules"))
999
+ return false;
1000
+ return true;
1001
+ });
1002
+ const f = `${k.split(".").slice(0, -1).join(".")}/`;
1003
+ if (!fs_1.default.existsSync(f)) {
1004
+ fs_1.default.mkdirSync(f);
1005
+ }
1006
+ const entrypoint = outputs[k].entryPoint;
1007
+ if (entrypoint) {
1008
+ const changeDigest = await filesHash(addableFiles);
1009
+ if (changeDigest === changes[entrypoint]) {
1010
+ // skip
1011
+ }
1012
+ else {
1013
+ changes[entrypoint] = changeDigest;
1014
+ this.tscCheck({
1015
+ platform,
1016
+ addableFiles,
1017
+ entrypoint: "./" + entrypoint,
1018
+ });
1019
+ this.eslintCheck("./" + entrypoint, platform, addableFiles);
1020
+ this.makePrompt("./" + entrypoint, addableFiles, platform);
1021
+ }
1022
+ }
1023
+ });
1024
+ }
1025
+ }
1026
+ exports.PM_Main = PM_Main;