testeranto 0.200.0 → 0.202.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 (376) hide show
  1. package/README.md +26 -1
  2. package/bundle.js +3 -2
  3. package/design-editor/DesignEditor.tsx +40 -241
  4. package/dist/common/design-editor/DesignEditor.js +33 -198
  5. package/dist/common/src/App.js +158 -16
  6. package/dist/common/src/PM/PM_WithBuild.js +135 -0
  7. package/dist/common/src/PM/PM_WithEslintAndTsc.js +79 -67
  8. package/dist/common/src/PM/PM_WithGit.js +517 -0
  9. package/dist/common/src/PM/PM_WithProcesses.js +519 -0
  10. package/dist/common/src/PM/PM_WithWebSocket.js +535 -0
  11. package/dist/common/src/PM/base.js +62 -0
  12. package/dist/common/src/PM/main.js +533 -1676
  13. package/dist/common/src/PM/metafileOutputs.js +78 -0
  14. package/dist/common/src/PM/node.js +0 -6
  15. package/dist/common/src/PM/pure.js +0 -8
  16. package/dist/common/src/PM/types.js +1 -0
  17. package/dist/common/src/PM/utils.js +210 -0
  18. package/dist/common/src/PM/web.js +0 -6
  19. package/dist/common/src/ReportServer.js +0 -10
  20. package/dist/common/src/ReportServerLib.js +0 -140
  21. package/dist/common/src/components/pure/AppFrame.js +68 -56
  22. package/dist/common/src/components/pure/ArtifactTree.js +80 -0
  23. package/dist/common/src/components/pure/BuildLogViewer.js +106 -0
  24. package/dist/common/src/components/pure/DebugEnv.js +30 -0
  25. package/dist/common/src/components/pure/FileTree.js +34 -0
  26. package/dist/common/src/components/pure/FileTreeItem.js +29 -0
  27. package/dist/common/src/components/pure/GitHubLoginButton.js +18 -0
  28. package/dist/common/src/components/pure/GitIntegrationView.js +342 -0
  29. package/dist/common/src/components/pure/ProcessManager.js +1 -0
  30. package/dist/common/src/components/pure/ProcessManagerView.js +73 -74
  31. package/dist/common/src/components/pure/ProjectPageView.js +4 -117
  32. package/dist/common/src/components/pure/Settings.js +121 -0
  33. package/dist/common/src/components/pure/Settings.test.js +34 -0
  34. package/dist/common/src/components/pure/SignIn.js +22 -0
  35. package/dist/common/src/components/pure/SingleProcessView.js +166 -213
  36. package/dist/common/src/components/pure/TestPageView.js +113 -368
  37. package/dist/common/src/components/pure/TestPageView_utils.js +117 -0
  38. package/dist/common/src/components/pure/TestTable.js +33 -0
  39. package/dist/common/src/components/pure/ToastNotification.js +14 -0
  40. package/dist/common/src/components/pure/UserProfile.js +27 -0
  41. package/dist/common/src/components/stateful/AuthCallbackPage.js +51 -0
  42. package/dist/common/src/components/stateful/FeaturesReporter.js +2 -1
  43. package/dist/common/src/components/stateful/FileTree.js +58 -39
  44. package/dist/common/src/components/stateful/GitIntegrationPage.js +12 -0
  45. package/dist/common/src/components/stateful/ProcessManagerPage.js +13 -15
  46. package/dist/common/src/components/stateful/ProjectPage.js +6 -5
  47. package/dist/common/src/components/stateful/ProjectsPage.js +17 -19
  48. package/dist/common/src/components/stateful/SingleProcessPage.js +16 -26
  49. package/dist/common/src/components/stateful/TestPage.js +7 -5
  50. package/dist/common/src/hooks/useGitMode.js +21 -0
  51. package/dist/common/src/lib/BaseSuite.test/mock.js +15 -8
  52. package/dist/common/src/lib/BaseSuite.test/test.js +56 -80
  53. package/dist/common/src/lib/Tiposkripto.js +24 -0
  54. package/dist/common/src/lib/Tiposkripto.test/MockTiposkripto.js +154 -10
  55. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +6 -12
  56. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +63 -23
  57. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.specification.js +14 -6
  58. package/dist/common/src/lib/pmProxy.test/specification.js +167 -52
  59. package/dist/common/src/services/FileService.js +505 -0
  60. package/dist/common/src/services/GitHubAuthService.js +184 -0
  61. package/dist/common/src/testeranto.js +38 -97
  62. package/dist/common/src/utils/api.js +12 -8
  63. package/dist/common/src/utils/gitTest.js +27 -0
  64. package/dist/common/src/utils.js +23 -13
  65. package/dist/common/testeranto.config.js +21 -17
  66. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  67. package/dist/module/design-editor/DesignEditor.js +33 -199
  68. package/dist/module/src/App.js +121 -15
  69. package/dist/module/src/PM/PM_WithBuild.js +128 -0
  70. package/dist/module/src/PM/PM_WithEslintAndTsc.js +79 -67
  71. package/dist/module/src/PM/PM_WithGit.js +477 -0
  72. package/dist/module/src/PM/PM_WithProcesses.js +479 -0
  73. package/dist/module/src/PM/PM_WithWebSocket.js +528 -0
  74. package/dist/module/src/PM/base.js +62 -0
  75. package/dist/module/src/PM/main.js +533 -1676
  76. package/dist/module/src/PM/metafileOutputs.js +78 -0
  77. package/dist/module/src/PM/node.js +0 -6
  78. package/dist/module/src/PM/pure.js +0 -8
  79. package/dist/module/src/PM/types.js +1 -1
  80. package/dist/module/src/PM/utils.js +196 -0
  81. package/dist/module/src/PM/web.js +0 -6
  82. package/dist/module/src/ReportServer.js +1 -9
  83. package/dist/module/src/ReportServerLib.js +1 -134
  84. package/dist/module/src/components/pure/AppFrame.js +66 -24
  85. package/dist/module/src/components/pure/ArtifactTree.js +80 -0
  86. package/dist/module/src/components/pure/BuildLogViewer.js +99 -0
  87. package/dist/module/src/components/pure/DebugEnv.js +23 -0
  88. package/dist/module/src/components/pure/FileTree.js +27 -0
  89. package/dist/module/src/components/pure/FileTreeItem.js +22 -0
  90. package/dist/module/src/components/pure/GitHubLoginButton.js +11 -0
  91. package/dist/module/src/components/pure/GitIntegrationView.js +305 -0
  92. package/dist/module/src/components/pure/ProcessManager.js +1 -0
  93. package/dist/module/src/components/pure/ProcessManagerView.js +74 -75
  94. package/dist/module/src/components/pure/ProjectPageView.js +5 -118
  95. package/dist/module/src/components/pure/Settings.js +84 -0
  96. package/dist/module/src/components/pure/Settings.test.js +29 -0
  97. package/dist/module/src/components/pure/SignIn.js +15 -0
  98. package/dist/module/src/components/pure/SingleProcessView.js +130 -214
  99. package/dist/module/src/components/pure/TestPageView.js +97 -352
  100. package/dist/module/src/components/pure/TestPageView_utils.js +109 -0
  101. package/dist/module/src/components/pure/TestTable.js +26 -0
  102. package/dist/module/src/components/pure/ToastNotification.js +7 -0
  103. package/dist/module/src/components/pure/UserProfile.js +20 -0
  104. package/dist/module/src/components/stateful/AuthCallbackPage.js +14 -0
  105. package/dist/module/src/components/stateful/FeaturesReporter.js +2 -1
  106. package/dist/module/src/components/stateful/FileTree.js +59 -33
  107. package/dist/module/src/components/stateful/GitIntegrationPage.js +5 -0
  108. package/dist/module/src/components/stateful/ProcessManagerPage.js +13 -15
  109. package/dist/module/src/components/stateful/ProjectPage.js +6 -5
  110. package/dist/module/src/components/stateful/ProjectsPage.js +16 -18
  111. package/dist/module/src/components/stateful/SingleProcessPage.js +16 -26
  112. package/dist/module/src/components/stateful/TestPage.js +8 -6
  113. package/dist/module/src/hooks/useGitMode.js +17 -0
  114. package/dist/module/src/lib/BaseSuite.test/mock.js +15 -8
  115. package/dist/module/src/lib/BaseSuite.test/test.js +56 -80
  116. package/dist/module/src/lib/Tiposkripto.js +24 -0
  117. package/dist/module/src/lib/Tiposkripto.test/MockTiposkripto.js +154 -10
  118. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +6 -12
  119. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +63 -23
  120. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.specification.js +14 -6
  121. package/dist/module/src/lib/pmProxy.test/specification.js +167 -52
  122. package/dist/module/src/services/FileService.js +468 -0
  123. package/dist/module/src/services/GitHubAuthService.js +180 -0
  124. package/dist/module/src/testeranto.js +38 -97
  125. package/dist/module/src/utils/api.js +10 -7
  126. package/dist/module/src/utils/gitTest.js +23 -0
  127. package/dist/module/src/utils.js +21 -12
  128. package/dist/module/testeranto.config.js +21 -17
  129. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  130. package/dist/prebuild/App.css +94 -121
  131. package/dist/prebuild/App.js +44601 -11225
  132. package/dist/prebuild/testeranto.mjs +4106 -0
  133. package/dist/types/design-editor/DesignEditor.d.ts +1 -18
  134. package/dist/types/src/App.d.ts +18 -0
  135. package/dist/types/src/PM/PM_WithBuild.d.ts +13 -0
  136. package/dist/types/src/PM/PM_WithEslintAndTsc.d.ts +2 -4
  137. package/dist/types/src/PM/PM_WithGit.d.ts +27 -0
  138. package/dist/types/src/PM/PM_WithProcesses.d.ts +29 -0
  139. package/dist/types/src/PM/PM_WithWebSocket.d.ts +108 -0
  140. package/dist/types/src/PM/base.d.ts +1 -1
  141. package/dist/types/src/PM/index.d.ts +0 -2
  142. package/dist/types/src/PM/main.d.ts +6 -77
  143. package/dist/types/src/PM/metafileOutputs.d.ts +0 -0
  144. package/dist/types/src/PM/node.d.ts +0 -2
  145. package/dist/types/src/PM/pure.d.ts +0 -2
  146. package/dist/types/src/PM/types.d.ts +118 -0
  147. package/dist/types/src/PM/utils.d.ts +35 -0
  148. package/dist/types/src/PM/web.d.ts +0 -2
  149. package/dist/types/src/Pure.d.ts +6 -1
  150. package/dist/types/src/ReportServer.d.ts +0 -1
  151. package/dist/types/src/ReportServerLib.d.ts +0 -1
  152. package/dist/types/src/Types.d.ts +1 -0
  153. package/dist/types/src/components/pure/ArtifactTree.d.ts +0 -0
  154. package/dist/types/src/components/pure/BuildLogViewer.d.ts +7 -0
  155. package/dist/types/src/components/pure/DebugEnv.d.ts +2 -0
  156. package/dist/types/src/components/pure/FileTree.d.ts +6 -0
  157. package/dist/types/src/components/pure/FileTreeItem.d.ts +8 -0
  158. package/dist/types/src/components/pure/GitHubLoginButton.d.ts +8 -0
  159. package/dist/types/src/components/pure/GitIntegrationView.d.ts +1 -0
  160. package/dist/types/src/components/pure/Settings.d.ts +1 -0
  161. package/dist/types/src/components/pure/Settings.test.d.ts +1 -0
  162. package/dist/types/src/components/pure/SignIn.d.ts +1 -0
  163. package/dist/types/src/components/pure/SingleProcessView.d.ts +10 -0
  164. package/dist/types/src/components/pure/TestPageView.d.ts +2 -1
  165. package/dist/types/src/components/pure/TestPageView_utils.d.ts +23 -0
  166. package/dist/types/src/components/pure/TestTable.d.ts +16 -0
  167. package/dist/types/src/components/pure/ToastNotification.d.ts +6 -0
  168. package/dist/types/src/components/pure/UserProfile.d.ts +2 -0
  169. package/dist/types/src/components/stateful/AuthCallbackPage.d.ts +2 -0
  170. package/dist/types/src/components/stateful/FileTree.d.ts +0 -8
  171. package/dist/types/src/components/stateful/GitIntegrationPage.d.ts +1 -0
  172. package/dist/types/src/hooks/useGitMode.d.ts +7 -0
  173. package/dist/types/src/lib/BaseSuite.test/mock.d.ts +2 -2
  174. package/dist/types/src/lib/BaseSuite.test/test.d.ts +4 -3
  175. package/dist/types/src/lib/Tiposkripto.d.ts +2 -0
  176. package/dist/types/src/lib/Tiposkripto.test/MockTiposkripto.d.ts +3 -0
  177. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.types.d.ts +5 -0
  178. package/dist/types/src/lib/index.d.ts +6 -0
  179. package/dist/types/src/services/FileService.d.ts +34 -0
  180. package/dist/types/src/services/GitHubAuthService.d.ts +32 -0
  181. package/dist/types/src/utils/api.d.ts +1 -0
  182. package/dist/types/src/utils/gitTest.d.ts +11 -0
  183. package/dist/types/src/utils.d.ts +3 -3
  184. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  185. package/example/__pycache__/Calculator.cpython-313.pyc +0 -0
  186. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/README.md +187 -0
  187. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_given.go +163 -0
  188. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_suite.go +85 -0
  189. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_then.go +21 -0
  190. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_when.go +21 -0
  191. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/golingvu.go +554 -0
  192. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/test_adapter.go +33 -0
  193. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/types.go +72 -0
  194. package/example/vendor/modules.txt +5 -0
  195. package/git-integration-plan.md +395 -0
  196. package/package.json +26 -14
  197. package/src/App.tsx +169 -18
  198. package/src/PM/PM_WithBuild.ts +171 -0
  199. package/src/PM/PM_WithEslintAndTsc.ts +109 -86
  200. package/src/PM/PM_WithGit.ts +585 -0
  201. package/src/PM/PM_WithProcesses.ts +639 -0
  202. package/src/PM/PM_WithWebSocket.ts +631 -0
  203. package/src/PM/base.ts +63 -1
  204. package/src/PM/index.ts +8 -5
  205. package/src/PM/main.ts +672 -2050
  206. package/src/PM/metafileOutputs.ts +90 -0
  207. package/src/PM/node.ts +18 -18
  208. package/src/PM/pure.ts +5 -13
  209. package/src/PM/types.ts +145 -0
  210. package/src/PM/utils.ts +256 -0
  211. package/src/PM/web.ts +8 -8
  212. package/src/README.md +122 -0
  213. package/src/ReportServer.ts +0 -12
  214. package/src/ReportServerLib.ts +0 -147
  215. package/src/Types.ts +1 -0
  216. package/src/app.scss +14 -164
  217. package/src/components/pure/AppFrame.tsx +237 -71
  218. package/src/components/pure/ArtifactTree.tsx +82 -0
  219. package/src/components/pure/BuildLogViewer.tsx +168 -0
  220. package/src/components/pure/DebugEnv.tsx +30 -0
  221. package/src/components/pure/FileTree.tsx +58 -0
  222. package/src/components/pure/FileTreeItem.tsx +49 -0
  223. package/src/components/pure/GitHubLoginButton.tsx +31 -0
  224. package/src/components/pure/GitIntegrationView.tsx +443 -0
  225. package/src/components/pure/ProcessManager.tsx +6 -5
  226. package/src/components/pure/ProcessManagerView.tsx +162 -166
  227. package/src/components/pure/ProjectPageView.tsx +6 -224
  228. package/src/components/pure/Settings.test.tsx +34 -0
  229. package/src/components/pure/Settings.tsx +163 -0
  230. package/src/components/pure/SignIn.tsx +33 -0
  231. package/src/components/pure/SingleProcessView.tsx +231 -235
  232. package/src/components/pure/TestPageView.test/specification.ts +1 -0
  233. package/src/components/pure/TestPageView.tsx +317 -826
  234. package/src/components/pure/TestPageView_utils.tsx +285 -0
  235. package/src/components/pure/TestTable.tsx +88 -0
  236. package/src/components/pure/ToastNotification.tsx +19 -0
  237. package/src/components/pure/UserProfile.tsx +44 -0
  238. package/src/components/stateful/AuthCallbackPage.tsx +21 -0
  239. package/src/components/stateful/FeaturesReporter.tsx +3 -1
  240. package/src/components/stateful/FileTree.tsx +58 -58
  241. package/src/components/stateful/GitIntegrationPage.tsx +8 -0
  242. package/src/components/stateful/ProcessManagerPage.tsx +13 -17
  243. package/src/components/stateful/ProjectPage.tsx +6 -5
  244. package/src/components/stateful/ProjectsPage.tsx +17 -19
  245. package/src/components/stateful/SVGEditor/CircleForm.tsx +68 -0
  246. package/src/components/stateful/SVGEditor/GroupForm.tsx +56 -0
  247. package/src/components/stateful/SVGEditor/RectForm.tsx +74 -0
  248. package/src/components/stateful/SVGEditor/SVGAttributeField.tsx +29 -0
  249. package/src/components/stateful/SVGEditor/SVGAttributesEditor.tsx +73 -0
  250. package/src/components/stateful/SVGEditor/SVGEditorControls.tsx +45 -0
  251. package/src/components/stateful/SVGEditor/SVGElementForm.tsx +45 -0
  252. package/src/components/stateful/SVGEditor/SVGPreview.tsx +225 -0
  253. package/src/components/stateful/SVGEditor/SVGTextEditor.tsx +166 -0
  254. package/src/components/stateful/SVGEditor/SVGTree.tsx +159 -0
  255. package/src/components/stateful/SVGEditor/SVGTypes.ts +36 -0
  256. package/src/components/stateful/SVGEditor/svg.xsd.xml +3038 -0
  257. package/src/components/stateful/SVGEditorPage.tsx +503 -0
  258. package/src/components/stateful/SingleProcessPage.tsx +18 -31
  259. package/src/components/stateful/TestPage.tsx +25 -22
  260. package/src/golingvu/golingvu.go +38 -2
  261. package/src/hooks/useGitMode.ts +20 -0
  262. package/src/lib/BaseSuite.test/mock.ts +16 -10
  263. package/src/lib/BaseSuite.test/test.ts +144 -103
  264. package/src/lib/Tiposkripto.test/MockTiposkripto.ts +178 -14
  265. package/src/lib/Tiposkripto.test/Tiposkripto.adapter.ts +9 -14
  266. package/src/lib/Tiposkripto.test/Tiposkripto.implementation.ts +78 -38
  267. package/src/lib/Tiposkripto.test/Tiposkripto.specification.ts +51 -9
  268. package/src/lib/Tiposkripto.test/Tiposkripto.types.ts +5 -0
  269. package/src/lib/Tiposkripto.ts +27 -0
  270. package/src/lib/index.ts +7 -0
  271. package/src/lib/pmProxy.test/specification.ts +168 -166
  272. package/src/pitono/PM/__pycache__/python.cpython-313.pyc +0 -0
  273. package/src/pitono/__pycache__/Pitono.cpython-313.pyc +0 -0
  274. package/src/pitono/__pycache__/__init__.cpython-313.pyc +0 -0
  275. package/src/pitono/__pycache__/base_given.cpython-313.pyc +0 -0
  276. package/src/pitono/__pycache__/base_suite.cpython-313.pyc +0 -0
  277. package/src/pitono/__pycache__/base_then.cpython-313.pyc +0 -0
  278. package/src/pitono/__pycache__/base_when.cpython-313.pyc +0 -0
  279. package/src/pitono/__pycache__/core_generator.cpython-313.pyc +0 -0
  280. package/src/pitono/__pycache__/simple_adapter.cpython-313.pyc +0 -0
  281. package/src/pitono/__pycache__/types.cpython-313.pyc +0 -0
  282. package/src/services/FileService.ts +542 -0
  283. package/src/services/GitHubAuthService.ts +240 -0
  284. package/src/testeranto.ts +62 -140
  285. package/src/utils/api.ts +15 -13
  286. package/src/utils/gitTest.ts +29 -0
  287. package/src/utils.ts +21 -12
  288. package/testeranto/App.css +94 -121
  289. package/testeranto/App.js +44601 -11225
  290. package/testeranto/bundles/golang/core/Calculator.golingvu.go +53 -0
  291. package/testeranto/bundles/golang/core/Calculator.golingvu.golingvu.go +53 -0
  292. package/testeranto/bundles/node/core/chunk-RIM6RECA.mjs +1170 -0
  293. package/testeranto/bundles/node/core/chunk-VXVF7WFO.mjs +4321 -0
  294. package/testeranto/bundles/node/core/example/Calculator.test.mjs +503 -0
  295. package/testeranto/bundles/node/core/src/lib/BaseSuite.test/node.test.mjs +94 -1231
  296. package/testeranto/bundles/node/core/src/lib/TipoSkripto.test/TipoSkripto.mjs +574 -0
  297. package/testeranto/bundles/node/core/src/lib/pmProxy.test/index.mjs +482 -0
  298. package/testeranto/bundles/pure/core/chunk-XYOCRDEQ.mjs +1080 -0
  299. package/testeranto/bundles/pure/core/src/Pure.test.mjs +410 -0
  300. package/testeranto/bundles/pure/core/src/lib/BaseSuite.test/pure.test.mjs +93 -1146
  301. package/testeranto/bundles/python/core/Calculator.pitono.test.py +24 -0
  302. package/testeranto/bundles/python/core/test_example.py +24 -0
  303. package/testeranto/bundles/web/core/MPLUSRounded1c-Black-O75GP5JI.ttf +0 -0
  304. package/testeranto/bundles/web/core/MPLUSRounded1c-Bold-R524Q5BH.ttf +0 -0
  305. package/testeranto/bundles/web/core/MPLUSRounded1c-ExtraBold-C6GRMYVT.ttf +0 -0
  306. package/testeranto/bundles/web/core/MPLUSRounded1c-Light-WKN65Y2C.ttf +0 -0
  307. package/testeranto/bundles/web/core/MPLUSRounded1c-Medium-ZC4DWL7C.ttf +0 -0
  308. package/testeranto/bundles/web/core/MPLUSRounded1c-Regular-DT6EKZ3S.ttf +0 -0
  309. package/testeranto/bundles/web/core/MPLUSRounded1c-Thin-YWDNVG6M.ttf +0 -0
  310. package/testeranto/bundles/web/core/chunk-DFRN4SYZ.mjs +2297 -0
  311. package/testeranto/bundles/web/core/chunk-JMDLMADH.mjs +27996 -0
  312. package/testeranto/bundles/web/core/chunk-LQMU5NCG.mjs +3082 -0
  313. package/testeranto/bundles/web/core/chunk-Q5TONB2Z.mjs +6874 -0
  314. package/testeranto/bundles/web/core/src/components/pure/FeaturesReporterView.test/index.mjs +164 -0
  315. package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.css +11697 -0
  316. package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.mjs +336 -0
  317. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.css +11697 -0
  318. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.mjs +517 -0
  319. package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.mjs +107 -1134
  320. package/testeranto/metafiles/golang/core.json +3 -3
  321. package/testeranto/metafiles/node/core.json +474 -31
  322. package/testeranto/metafiles/pure/core.json +144 -28
  323. package/testeranto/metafiles/python/core.json +11 -0
  324. package/testeranto/metafiles/web/core.json +15829 -45
  325. package/testeranto/reports/core/config.json +40 -0
  326. package/testeranto/reports/core/src/Pure.test/pure/exit.log +0 -0
  327. package/testeranto/reports/core/src/Pure.test/pure/lint_errors.txt +0 -0
  328. package/testeranto/reports/core/src/Pure.test/pure/prompt.txt +14 -0
  329. package/testeranto/reports/core/src/Pure.test/pure/type_errors.txt +73 -0
  330. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/debug.log +0 -0
  331. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/error.log +91 -0
  332. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/exit.log +1 -0
  333. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/info.log +2 -0
  334. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/tests.json +68 -0
  335. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/warn.log +0 -0
  336. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/debug.log +0 -0
  337. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/error.log +30 -0
  338. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/exit.log +1 -0
  339. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/info.log +2 -0
  340. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/tests.json +88 -0
  341. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/warn.log +0 -0
  342. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/lint_errors.txt +0 -6
  343. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/prompt.txt +0 -11
  344. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/stdout.log +1 -0
  345. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/tests.json +1 -1
  346. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/type_errors.txt +35 -38
  347. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/lint_errors.txt +0 -2
  348. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/prompt.txt +0 -10
  349. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/type_errors.txt +40 -38
  350. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/tests.json +1 -1
  351. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/exit.log +1 -0
  352. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/lint_errors.txt +0 -0
  353. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/message.txt +17 -0
  354. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/prompt.txt +17 -0
  355. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stderr.log +55 -0
  356. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stdout.log +191 -0
  357. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/type_errors.txt +71 -0
  358. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/exit.log +1 -0
  359. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/lint_errors.txt +15 -0
  360. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/message.txt +17 -0
  361. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/prompt.txt +17 -0
  362. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stderr.log +20 -0
  363. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stdout.log +4 -0
  364. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/type_errors.txt +49 -0
  365. package/testeranto/reports/core/summary.json +34 -6
  366. package/testeranto.config.ts +26 -20
  367. package/tsc.log +141 -91
  368. package/tsconfig.json +6 -2
  369. package/dist/prebuild/ReportServer.mjs +0 -227
  370. package/dist/prebuild/mothership/index.mjs +0 -22
  371. package/dist/types/design-editor/server.d.ts +0 -1
  372. package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.html +0 -15
  373. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/lint_errors.txt +0 -2
  374. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/prompt.txt +0 -25
  375. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/type_errors.txt +0 -56
  376. /package/testeranto/reports/core/src/{lib/BaseSuite.test/web.test/web → Pure.test/pure}/message.txt +0 -0
@@ -0,0 +1,517 @@
1
+ import {
2
+ Link,
3
+ MemoryRouter,
4
+ useLocation
5
+ } from "../../../../chunk-DFRN4SYZ.mjs";
6
+ import {
7
+ Alert_default,
8
+ Badge_default,
9
+ Card_default,
10
+ Col_default,
11
+ Container_default,
12
+ ListGroup_default,
13
+ Nav_default,
14
+ Navbar_default,
15
+ Row_default,
16
+ Tab_default,
17
+ Table_default
18
+ } from "../../../../chunk-Q5TONB2Z.mjs";
19
+ import {
20
+ assert,
21
+ require_react,
22
+ web_default
23
+ } from "../../../../chunk-JMDLMADH.mjs";
24
+ import {
25
+ __toESM,
26
+ init_buffer,
27
+ init_dirname,
28
+ init_process
29
+ } from "../../../../chunk-LQMU5NCG.mjs";
30
+
31
+ // src/components/pure/ProjectPageView.test/index.tsx
32
+ init_dirname();
33
+ init_buffer();
34
+ init_process();
35
+
36
+ // src/components/pure/ProjectPageView.test/implementation.tsx
37
+ init_dirname();
38
+ init_buffer();
39
+ init_process();
40
+ var implementation = {
41
+ suites: {
42
+ Default: "Project Page View Tests"
43
+ },
44
+ givens: {
45
+ Default: () => {
46
+ const container = document.createElement("div");
47
+ document.body.appendChild(container);
48
+ return {
49
+ summary: {
50
+ "test-suite-1": {
51
+ testsExist: true,
52
+ runTimeErrors: 0,
53
+ typeErrors: 2,
54
+ staticErrors: 1
55
+ },
56
+ "test-suite-2": {
57
+ testsExist: true,
58
+ runTimeErrors: 1,
59
+ typeErrors: 0,
60
+ staticErrors: 0
61
+ }
62
+ },
63
+ nodeLogs: {
64
+ errors: [],
65
+ warnings: [
66
+ {
67
+ text: "Unused variable",
68
+ location: { file: "src/file1.ts", line: 10 },
69
+ pluginName: "typescript"
70
+ }
71
+ ],
72
+ metafile: {
73
+ inputs: {
74
+ "src/file1.ts": { bytes: 1024 },
75
+ "src/file2.ts": { bytes: 2048 }
76
+ },
77
+ outputs: {
78
+ "dist/file1.js": { bytes: 1536, entryPoint: true },
79
+ "dist/file2.js": { bytes: 2560 }
80
+ }
81
+ }
82
+ },
83
+ webLogs: {
84
+ errors: [],
85
+ warnings: [],
86
+ metafile: {
87
+ inputs: {
88
+ "src/file1.ts": { bytes: 1024 },
89
+ "src/file2.ts": { bytes: 2048 }
90
+ },
91
+ outputs: {
92
+ "dist/file1.js": { bytes: 1536, entryPoint: true },
93
+ "dist/file2.js": { bytes: 2560 }
94
+ }
95
+ }
96
+ },
97
+ pureLogs: {
98
+ errors: [
99
+ {
100
+ text: "Syntax error",
101
+ location: { file: "src/file3.ts", line: 5 },
102
+ pluginName: "typescript"
103
+ }
104
+ ],
105
+ warnings: [],
106
+ metafile: {
107
+ inputs: {
108
+ "src/file3.ts": { bytes: 512 },
109
+ "src/file4.ts": { bytes: 768 }
110
+ },
111
+ outputs: {
112
+ "dist/file3.js": { bytes: 1024, entryPoint: true },
113
+ "dist/file4.js": { bytes: 1280 }
114
+ }
115
+ }
116
+ },
117
+ config: {
118
+ tests: [
119
+ ["test-suite-1", "node"],
120
+ ["test-suite-2", "web"]
121
+ ]
122
+ },
123
+ loading: false,
124
+ error: null,
125
+ projectName: "test-project",
126
+ activeTab: "tests",
127
+ setActiveTab: () => {
128
+ },
129
+ route: "tests",
130
+ setRoute: () => {
131
+ },
132
+ navigate: () => {
133
+ },
134
+ // Add the required properties for ISelection
135
+ htmlElement: container,
136
+ reactElement: null,
137
+ domRoot: null
138
+ };
139
+ },
140
+ WithError: () => {
141
+ const container = document.createElement("div");
142
+ document.body.appendChild(container);
143
+ return {
144
+ summary: null,
145
+ nodeLogs: null,
146
+ webLogs: null,
147
+ pureLogs: null,
148
+ config: { tests: [] },
149
+ loading: false,
150
+ error: "Test error message",
151
+ projectName: "test-project",
152
+ activeTab: "tests",
153
+ setActiveTab: () => {
154
+ },
155
+ route: "tests",
156
+ setRoute: () => {
157
+ },
158
+ navigate: () => {
159
+ },
160
+ // Add the required properties for ISelection
161
+ htmlElement: container,
162
+ reactElement: null,
163
+ domRoot: null
164
+ };
165
+ }
166
+ },
167
+ whens: {},
168
+ thens: {
169
+ hasContainerFluid: () => (state) => {
170
+ const htmlElement = state.htmlElement;
171
+ const container = htmlElement.querySelector(".container-fluid");
172
+ assert.exists(container, "Should have container-fluid div");
173
+ return state;
174
+ },
175
+ hasNavBar: () => (state) => {
176
+ const htmlElement = state.htmlElement;
177
+ const navBar = htmlElement.querySelector("nav.navbar");
178
+ assert.exists(navBar, "Should render NavBar component");
179
+ return state;
180
+ },
181
+ hasNavBarTitle: () => (state) => {
182
+ const htmlElement = state.htmlElement;
183
+ const navBarTitle = htmlElement.querySelector("nav.navbar .navbar-brand")?.textContent;
184
+ assert.isNotEmpty(navBarTitle, "NavBar should have title");
185
+ return state;
186
+ },
187
+ hasTestTable: () => (state) => {
188
+ const htmlElement = state.htmlElement;
189
+ const testTable = htmlElement.querySelector("table");
190
+ assert.exists(testTable, "Should render test table");
191
+ return state;
192
+ },
193
+ rendersTestSuite1: () => (state) => {
194
+ const htmlElement = state.htmlElement;
195
+ const testTable = htmlElement.querySelector("table");
196
+ const testNames = Array.from(testTable.querySelectorAll("tbody tr td:first-child")).map((el) => el.textContent);
197
+ assert.include(testNames, "test-suite-1", "Should render test-suite-1");
198
+ return state;
199
+ },
200
+ rendersTestSuite2: () => (state) => {
201
+ const htmlElement = state.htmlElement;
202
+ const testTable = htmlElement.querySelector("table");
203
+ const testNames = Array.from(testTable.querySelectorAll("tbody tr td:first-child")).map((el) => el.textContent);
204
+ assert.include(testNames, "test-suite-2", "Should render test-suite-2");
205
+ return state;
206
+ },
207
+ unhappyPath: () => (state) => {
208
+ const htmlElement = state.htmlElement;
209
+ const errorAlert = htmlElement.querySelector(".alert-danger");
210
+ assert.exists(errorAlert, "Should show error alert");
211
+ const errorText = errorAlert?.textContent;
212
+ assert.include(errorText, "Test error message", "Should display error message");
213
+ return state;
214
+ },
215
+ takeScreenshot: (name) => async (state, pm) => {
216
+ const p = await pm.page();
217
+ await pm.customScreenShot({ path: name }, p);
218
+ return state;
219
+ }
220
+ }
221
+ };
222
+
223
+ // src/components/pure/ProjectPageView.test/specification.ts
224
+ init_dirname();
225
+ init_buffer();
226
+ init_process();
227
+ var specification = (Suite, Given, When, Then) => {
228
+ return [
229
+ Suite.Default("ProjectPageView Component Tests", {
230
+ basicRender: Given.Default(
231
+ [
232
+ "ProjectPageView should render",
233
+ "It should contain a container-fluid div",
234
+ "It should render the NavBar component",
235
+ "NavBar should display project title",
236
+ "It should render test results table",
237
+ "It should display test-suite-1 results",
238
+ "It should display test-suite-2 results"
239
+ ],
240
+ [],
241
+ [
242
+ Then.hasContainerFluid(),
243
+ Then.hasNavBar(),
244
+ Then.hasNavBarTitle(),
245
+ Then.hasTestTable(),
246
+ Then.rendersTestSuite1(),
247
+ Then.rendersTestSuite2(),
248
+ Then.takeScreenshot("happy-state.png")
249
+ ]
250
+ ),
251
+ errorHandling: Given.WithError(
252
+ [
253
+ "ProjectPageView should handle errors",
254
+ "It should display error messages when present",
255
+ "It should capture screenshots of error state"
256
+ ],
257
+ [],
258
+ [Then.unhappyPath(), Then.takeScreenshot("error-state.png")]
259
+ )
260
+ })
261
+ ];
262
+ };
263
+
264
+ // src/components/pure/ProjectPageView.tsx
265
+ init_dirname();
266
+ init_buffer();
267
+ init_process();
268
+ var import_react5 = __toESM(require_react(), 1);
269
+
270
+ // src/components/pure/TestTable.tsx
271
+ init_dirname();
272
+ init_buffer();
273
+ init_process();
274
+ var import_react2 = __toESM(require_react(), 1);
275
+
276
+ // src/components/TestStatusBadge.tsx
277
+ init_dirname();
278
+ init_buffer();
279
+ init_process();
280
+ var import_react = __toESM(require_react(), 1);
281
+ var TestStatusBadge = (props) => {
282
+ const hasTests = props.testsExist !== false;
283
+ const testCompleted = props.runTimeErrors !== -1;
284
+ const hasRuntimeErrors = props.runTimeErrors > 0;
285
+ let bddStatus;
286
+ if (!hasTests) {
287
+ bddStatus = { text: "\u274C No Tests", variant: "danger" };
288
+ } else if (!testCompleted) {
289
+ bddStatus = { text: "\u274C No Tests", variant: "danger" };
290
+ } else if (hasRuntimeErrors) {
291
+ bddStatus = { text: `\u274C BDD (${props.runTimeErrors})`, variant: "danger" };
292
+ } else {
293
+ bddStatus = { text: "\u2705 BDD", variant: "success" };
294
+ }
295
+ if (props.variant === "compact") {
296
+ console.groupEnd();
297
+ return /* @__PURE__ */ import_react.default.createElement(Badge_default, { bg: bddStatus.variant }, bddStatus.text);
298
+ }
299
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "d-flex gap-2" }, /* @__PURE__ */ import_react.default.createElement(Badge_default, { bg: bddStatus.variant }, bddStatus.text));
300
+ };
301
+
302
+ // src/components/pure/TestTable.tsx
303
+ var TestTable = ({
304
+ testStatuses,
305
+ projectName
306
+ }) => {
307
+ return /* @__PURE__ */ import_react2.default.createElement(Table_default, { striped: true, bordered: true, hover: true }, /* @__PURE__ */ import_react2.default.createElement("thead", null, /* @__PURE__ */ import_react2.default.createElement("tr", null, /* @__PURE__ */ import_react2.default.createElement("th", null, "Test"), /* @__PURE__ */ import_react2.default.createElement("th", null, "Runtime"), /* @__PURE__ */ import_react2.default.createElement("th", null, "Status"), /* @__PURE__ */ import_react2.default.createElement("th", null, "Total Tests"), /* @__PURE__ */ import_react2.default.createElement("th", null, "Type Errors"), /* @__PURE__ */ import_react2.default.createElement("th", null, "Lint Errors"))), /* @__PURE__ */ import_react2.default.createElement("tbody", null, testStatuses.map((test) => /* @__PURE__ */ import_react2.default.createElement("tr", { key: test.testName, "data-testid": `test-row-${test.testName}` }, /* @__PURE__ */ import_react2.default.createElement("td", null, /* @__PURE__ */ import_react2.default.createElement(
308
+ "a",
309
+ {
310
+ href: `#/projects/${projectName}/tests/${encodeURIComponent(
311
+ test.testName
312
+ )}/${test.runTime}`
313
+ },
314
+ test.testName
315
+ )), /* @__PURE__ */ import_react2.default.createElement("td", null, /* @__PURE__ */ import_react2.default.createElement(Badge_default, { bg: "secondary", className: "ms-2" }, test.runTime)), /* @__PURE__ */ import_react2.default.createElement("td", null, /* @__PURE__ */ import_react2.default.createElement(
316
+ TestStatusBadge,
317
+ {
318
+ testName: test.testName,
319
+ testsExist: test.testsExist,
320
+ runTimeErrors: test.runTimeErrors,
321
+ typeErrors: test.typeErrors,
322
+ staticErrors: test.staticErrors
323
+ }
324
+ )), /* @__PURE__ */ import_react2.default.createElement("td", null, test.runTimeTests >= 0 ? test.runTimeTests : "N/A"), /* @__PURE__ */ import_react2.default.createElement("td", null, /* @__PURE__ */ import_react2.default.createElement(
325
+ "a",
326
+ {
327
+ href: `#/projects/${projectName}/tests/${encodeURIComponent(
328
+ test.testName
329
+ )}/${test.runTime}#types`
330
+ },
331
+ test.typeErrors > 0 ? `\u274C ${test.typeErrors}` : "\u2705"
332
+ )), /* @__PURE__ */ import_react2.default.createElement("td", null, /* @__PURE__ */ import_react2.default.createElement(
333
+ "a",
334
+ {
335
+ href: `#/projects/${projectName}/tests/${encodeURIComponent(
336
+ test.testName
337
+ )}/${test.runTime}#lint`
338
+ },
339
+ test.staticErrors > 0 ? `\u274C ${test.staticErrors}` : "\u2705"
340
+ ))))));
341
+ };
342
+
343
+ // src/components/pure/BuildLogViewer.tsx
344
+ init_dirname();
345
+ init_buffer();
346
+ init_process();
347
+ var import_react3 = __toESM(require_react(), 1);
348
+ var BuildLogViewer = ({ logs, runtime }) => {
349
+ if (!logs)
350
+ return /* @__PURE__ */ import_react3.default.createElement(Alert_default, { variant: "info" }, "Loading ", runtime.toLowerCase(), " build logs...");
351
+ const hasErrors = logs.errors?.length > 0;
352
+ const hasWarnings = logs.warnings?.length > 0;
353
+ const [activeTab, setActiveTab] = import_react3.default.useState("summary");
354
+ return /* @__PURE__ */ import_react3.default.createElement("div", null, /* @__PURE__ */ import_react3.default.createElement(Tab_default.Container, { activeKey: activeTab, onSelect: (k) => setActiveTab(k || "summary") }, /* @__PURE__ */ import_react3.default.createElement(Nav_default, { variant: "tabs", className: "mb-3" }, /* @__PURE__ */ import_react3.default.createElement(Nav_default.Item, null, /* @__PURE__ */ import_react3.default.createElement(Nav_default.Link, { eventKey: "summary" }, "Build Summary")), /* @__PURE__ */ import_react3.default.createElement(Nav_default.Item, null, /* @__PURE__ */ import_react3.default.createElement(Nav_default.Link, { eventKey: "warnings" }, hasWarnings ? `\u26A0\uFE0F Warnings (${logs.warnings.length})` : "Warnings")), /* @__PURE__ */ import_react3.default.createElement(Nav_default.Item, null, /* @__PURE__ */ import_react3.default.createElement(Nav_default.Link, { eventKey: "errors" }, hasErrors ? `\u274C Errors (${logs.errors.length})` : "Errors"))), /* @__PURE__ */ import_react3.default.createElement(Tab_default.Content, null, /* @__PURE__ */ import_react3.default.createElement(Tab_default.Pane, { eventKey: "summary" }, /* @__PURE__ */ import_react3.default.createElement(Card_default, null, /* @__PURE__ */ import_react3.default.createElement(Card_default.Header, { className: "d-flex justify-content-between align-items-center" }, /* @__PURE__ */ import_react3.default.createElement("h5", null, "Build Summary"), /* @__PURE__ */ import_react3.default.createElement("div", null, hasErrors && /* @__PURE__ */ import_react3.default.createElement(Badge_default, { bg: "danger", className: "me-2" }, logs.errors.length, " Error", logs.errors.length !== 1 ? "s" : ""), hasWarnings && /* @__PURE__ */ import_react3.default.createElement(Badge_default, { bg: "warning", text: "dark" }, logs.warnings.length, " Warning", logs.warnings.length !== 1 ? "s" : ""), !hasErrors && !hasWarnings && /* @__PURE__ */ import_react3.default.createElement(Badge_default, { bg: "success" }, "Build Successful"))), /* @__PURE__ */ import_react3.default.createElement(Card_default.Body, null, /* @__PURE__ */ import_react3.default.createElement("div", { className: "mb-3" }, /* @__PURE__ */ import_react3.default.createElement("h6", null, "Input Files (", Object.keys(logs.metafile?.inputs || {}).length, ")"), /* @__PURE__ */ import_react3.default.createElement(ListGroup_default, { className: "max-h-200 overflow-auto" }, Object.keys(logs.metafile?.inputs || {}).map((file) => /* @__PURE__ */ import_react3.default.createElement(ListGroup_default.Item, { key: file, className: "py-2" }, /* @__PURE__ */ import_react3.default.createElement("code", null, file), /* @__PURE__ */ import_react3.default.createElement("div", { className: "text-muted small" }, logs.metafile.inputs[file].bytes, " bytes"))))), /* @__PURE__ */ import_react3.default.createElement("div", null, /* @__PURE__ */ import_react3.default.createElement("h6", null, "Output Files (", Object.keys(logs.metafile?.outputs || {}).length, ")"), /* @__PURE__ */ import_react3.default.createElement(ListGroup_default, { className: "max-h-200 overflow-auto" }, Object.keys(logs.metafile?.outputs || {}).map((file) => /* @__PURE__ */ import_react3.default.createElement(ListGroup_default.Item, { key: file, className: "py-2" }, /* @__PURE__ */ import_react3.default.createElement("code", null, file), /* @__PURE__ */ import_react3.default.createElement("div", { className: "text-muted small" }, logs.metafile.outputs[file].bytes, " bytes", logs.metafile.outputs[file].entryPoint && /* @__PURE__ */ import_react3.default.createElement("span", { className: "ms-2 badge bg-info" }, "Entry Point"))))))))), /* @__PURE__ */ import_react3.default.createElement(Tab_default.Pane, { eventKey: "warnings" }, hasWarnings ? /* @__PURE__ */ import_react3.default.createElement(Card_default, { className: "border-warning" }, /* @__PURE__ */ import_react3.default.createElement(Card_default.Header, { className: "bg-warning text-white d-flex justify-content-between align-items-center" }, /* @__PURE__ */ import_react3.default.createElement("span", null, "Build Warnings (", logs.warnings.length, ")"), /* @__PURE__ */ import_react3.default.createElement(Badge_default, { bg: "light", text: "dark" }, (/* @__PURE__ */ new Date()).toLocaleString())), /* @__PURE__ */ import_react3.default.createElement(Card_default.Body, { className: "p-0" }, /* @__PURE__ */ import_react3.default.createElement(ListGroup_default, { variant: "flush" }, logs.warnings.map((warn, i) => /* @__PURE__ */ import_react3.default.createElement(ListGroup_default.Item, { key: i, className: "text-warning" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "d-flex justify-content-between" }, /* @__PURE__ */ import_react3.default.createElement("strong", null, warn.location?.file || "Unknown file", warn.location?.line && `:${warn.location.line}`), /* @__PURE__ */ import_react3.default.createElement("small", { className: "text-muted" }, warn.pluginName ? `[${warn.pluginName}]` : "")), /* @__PURE__ */ import_react3.default.createElement("div", { className: "mt-1" }, /* @__PURE__ */ import_react3.default.createElement("pre", { className: "mb-0 p-2 rounded" }, JSON.stringify(warn)))))))) : /* @__PURE__ */ import_react3.default.createElement(Alert_default, { variant: "info" }, "No warnings found")), /* @__PURE__ */ import_react3.default.createElement(Tab_default.Pane, { eventKey: "errors" }, hasErrors ? /* @__PURE__ */ import_react3.default.createElement(Card_default, { className: "border-danger" }, /* @__PURE__ */ import_react3.default.createElement(Card_default.Header, { className: "bg-danger text-white d-flex justify-content-between align-items-center" }, /* @__PURE__ */ import_react3.default.createElement("span", null, "Build Errors (", logs.errors.length, ")"), /* @__PURE__ */ import_react3.default.createElement(Badge_default, { bg: "light", text: "dark" }, (/* @__PURE__ */ new Date()).toLocaleString())), /* @__PURE__ */ import_react3.default.createElement(Card_default.Body, { className: "p-0" }, /* @__PURE__ */ import_react3.default.createElement(ListGroup_default, { variant: "flush" }, logs.errors.map((err, i) => /* @__PURE__ */ import_react3.default.createElement(ListGroup_default.Item, { key: i, className: "text-danger" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "d-flex justify-content-between" }, /* @__PURE__ */ import_react3.default.createElement("strong", null, err.location?.file || "Unknown file", err.location?.line && `:${err.location.line}`), /* @__PURE__ */ import_react3.default.createElement("small", { className: "text-muted" }, err.pluginName ? `[${err.pluginName}]` : "")), /* @__PURE__ */ import_react3.default.createElement("div", { className: "mt-1" }, /* @__PURE__ */ import_react3.default.createElement("pre", { className: "mb-0 p-2 rounded" }, JSON.stringify(err)))))))) : /* @__PURE__ */ import_react3.default.createElement(Alert_default, { variant: "success" }, /* @__PURE__ */ import_react3.default.createElement("h5", null, "No Errors Found"), /* @__PURE__ */ import_react3.default.createElement("p", { className: "mb-0" }, "The build completed without any errors."))))));
355
+ };
356
+
357
+ // src/components/pure/NavBar.tsx
358
+ init_dirname();
359
+ init_buffer();
360
+ init_process();
361
+ var import_react4 = __toESM(require_react(), 1);
362
+ var NavBar = ({
363
+ title,
364
+ backLink,
365
+ navItems = [],
366
+ rightContent
367
+ }) => {
368
+ const location = useLocation();
369
+ return /* @__PURE__ */ import_react4.default.createElement(
370
+ Navbar_default,
371
+ {
372
+ bg: "light",
373
+ expand: "lg",
374
+ className: "mb-2",
375
+ sticky: "top",
376
+ expanded: false
377
+ },
378
+ /* @__PURE__ */ import_react4.default.createElement(Container_default, { fluid: true }, backLink && /* @__PURE__ */ import_react4.default.createElement(
379
+ Nav_default.Link,
380
+ {
381
+ as: Link,
382
+ to: backLink,
383
+ className: "me-2 fs-3 text-primary",
384
+ style: {
385
+ padding: "0.25rem 0.75rem",
386
+ border: "2px solid var(--bs-primary)",
387
+ borderRadius: "50%",
388
+ display: "inline-flex",
389
+ alignItems: "center",
390
+ justifyContent: "center",
391
+ width: "2.5rem",
392
+ height: "2.5rem"
393
+ },
394
+ title: "Go up one level"
395
+ },
396
+ "\u2191"
397
+ ), /* @__PURE__ */ import_react4.default.createElement(Navbar_default.Brand, { className: backLink ? "ms-2" : "" }, title), /* @__PURE__ */ import_react4.default.createElement(Navbar_default.Toggle, { "aria-controls": "basic-navbar-nav", style: { display: "none" } }), /* @__PURE__ */ import_react4.default.createElement(Navbar_default.Collapse, { id: "basic-navbar-nav" }, navItems.length > 0 && /* @__PURE__ */ import_react4.default.createElement(Nav_default, { className: "me-auto" }, navItems.map((item, i) => {
398
+ const className = [
399
+ item.className,
400
+ item.active ? "text-primary fw-bold border-bottom border-2 border-primary" : "",
401
+ typeof item.label === "string" && item.label.includes("\u274C") ? "text-danger fw-bold" : "",
402
+ typeof item.label === "string" && item.label.includes("\u2705") ? "text-success fw-bold" : "",
403
+ !item.active && typeof item.label !== "string" ? "text-secondary" : ""
404
+ ].filter(Boolean).join(" ");
405
+ return /* @__PURE__ */ import_react4.default.createElement(
406
+ Nav_default.Link,
407
+ {
408
+ key: i,
409
+ as: item.to ? Link : "div",
410
+ to: item.to,
411
+ active: item.active,
412
+ className,
413
+ title: typeof item.label === "string" ? item.label : void 0
414
+ },
415
+ item.icon && /* @__PURE__ */ import_react4.default.createElement("span", { className: "me-2" }, item.icon),
416
+ item.label,
417
+ item.badge && /* @__PURE__ */ import_react4.default.createElement(
418
+ Badge_default,
419
+ {
420
+ bg: item.badge.variant,
421
+ className: "ms-2"
422
+ },
423
+ item.badge.text
424
+ )
425
+ );
426
+ })), rightContent && /* @__PURE__ */ import_react4.default.createElement(Nav_default, null, import_react4.default.Children.map(rightContent, (child) => {
427
+ return child;
428
+ }))))
429
+ );
430
+ };
431
+
432
+ // src/components/pure/ProjectPageView.tsx
433
+ var ProjectPageView = ({
434
+ summary,
435
+ nodeLogs,
436
+ webLogs,
437
+ pureLogs,
438
+ config,
439
+ loading,
440
+ error,
441
+ projectName,
442
+ activeTab,
443
+ setActiveTab
444
+ }) => {
445
+ if (loading)
446
+ return /* @__PURE__ */ import_react5.default.createElement("div", null, "Loading project data...");
447
+ if (error)
448
+ return /* @__PURE__ */ import_react5.default.createElement(Alert_default, { variant: "danger" }, "Error: ", error);
449
+ if (!summary)
450
+ return /* @__PURE__ */ import_react5.default.createElement(Alert_default, { variant: "warning" }, "No data found for project");
451
+ const testStatuses = Object.entries(summary).map(([testName, testData]) => {
452
+ const runTime = config.tests?.find((t) => t[0] === testName)?.[1] || "node";
453
+ return {
454
+ testName,
455
+ testsExist: testData.testsExist !== false,
456
+ runTimeErrors: Number(testData.runTimeErrors) || 0,
457
+ typeErrors: Number(testData.typeErrors) || 0,
458
+ staticErrors: Number(testData.staticErrors) || 0,
459
+ runTimeTests: Number(testData.runTimeTests) || 0,
460
+ runTime
461
+ };
462
+ });
463
+ return /* @__PURE__ */ import_react5.default.createElement(Container_default, { fluid: true }, /* @__PURE__ */ import_react5.default.createElement(
464
+ NavBar,
465
+ {
466
+ title: projectName,
467
+ backLink: "/"
468
+ }
469
+ ), /* @__PURE__ */ import_react5.default.createElement(Row_default, { className: "g-0" }, /* @__PURE__ */ import_react5.default.createElement(Col_default, { sm: 3, className: "border-end" }, /* @__PURE__ */ import_react5.default.createElement(Nav_default, { variant: "pills", className: "flex-column" }, /* @__PURE__ */ import_react5.default.createElement(Nav_default.Item, null, /* @__PURE__ */ import_react5.default.createElement(
470
+ Nav_default.Link,
471
+ {
472
+ active: activeTab === "tests",
473
+ onClick: () => setActiveTab("tests"),
474
+ className: "d-flex flex-column align-items-start"
475
+ },
476
+ /* @__PURE__ */ import_react5.default.createElement("div", { className: "d-flex justify-content-between w-100" }, /* @__PURE__ */ import_react5.default.createElement("span", null, "Tests"), testStatuses.some((t) => t.runTimeErrors > 0) ? /* @__PURE__ */ import_react5.default.createElement(Badge_default, { bg: "danger" }, "\u274C") : testStatuses.some((t) => t.typeErrors > 0 || t.staticErrors > 0) ? /* @__PURE__ */ import_react5.default.createElement(Badge_default, { bg: "warning", text: "dark" }, "\u26A0\uFE0F") : /* @__PURE__ */ import_react5.default.createElement(Badge_default, { bg: "success" }, "\u2713"))
477
+ )), /* @__PURE__ */ import_react5.default.createElement(Nav_default.Item, null, /* @__PURE__ */ import_react5.default.createElement(
478
+ Nav_default.Link,
479
+ {
480
+ active: activeTab === "node",
481
+ onClick: () => setActiveTab("node"),
482
+ className: "d-flex justify-content-between align-items-center"
483
+ },
484
+ "Node build logs",
485
+ nodeLogs?.errors?.length ? /* @__PURE__ */ import_react5.default.createElement(Badge_default, { bg: "danger" }, "\u274C ", nodeLogs.errors.length) : nodeLogs?.warnings?.length ? /* @__PURE__ */ import_react5.default.createElement(Badge_default, { bg: "warning", text: "dark" }, "\u26A0\uFE0F") : null
486
+ )), /* @__PURE__ */ import_react5.default.createElement(Nav_default.Item, null, /* @__PURE__ */ import_react5.default.createElement(
487
+ Nav_default.Link,
488
+ {
489
+ active: activeTab === "web",
490
+ onClick: () => setActiveTab("web"),
491
+ className: "d-flex justify-content-between align-items-center"
492
+ },
493
+ "Web build logs",
494
+ webLogs?.errors?.length ? /* @__PURE__ */ import_react5.default.createElement(Badge_default, { bg: "danger" }, "\u274C ", webLogs.errors.length) : webLogs?.warnings?.length ? /* @__PURE__ */ import_react5.default.createElement(Badge_default, { bg: "warning", text: "dark" }, "\u26A0\uFE0F") : null
495
+ )), /* @__PURE__ */ import_react5.default.createElement(Nav_default.Item, null, /* @__PURE__ */ import_react5.default.createElement(
496
+ Nav_default.Link,
497
+ {
498
+ active: activeTab === "pure",
499
+ onClick: () => setActiveTab("pure"),
500
+ className: "d-flex justify-content-between align-items-center"
501
+ },
502
+ "Pure build logs",
503
+ pureLogs?.errors?.length ? /* @__PURE__ */ import_react5.default.createElement(Badge_default, { bg: "danger" }, "\u274C ", pureLogs.errors.length) : pureLogs?.warnings?.length ? /* @__PURE__ */ import_react5.default.createElement(Badge_default, { bg: "warning", text: "dark" }, "\u26A0\uFE0F") : null
504
+ )))), /* @__PURE__ */ import_react5.default.createElement(Col_default, { sm: 9 }, /* @__PURE__ */ import_react5.default.createElement("div", { className: "p-3" }, activeTab === "tests" ? /* @__PURE__ */ import_react5.default.createElement(TestTable, { testStatuses, projectName }) : activeTab === "node" ? /* @__PURE__ */ import_react5.default.createElement(BuildLogViewer, { logs: nodeLogs, runtime: "Node" }) : activeTab === "web" ? /* @__PURE__ */ import_react5.default.createElement(BuildLogViewer, { logs: webLogs, runtime: "Web" }) : activeTab === "pure" ? /* @__PURE__ */ import_react5.default.createElement(BuildLogViewer, { logs: pureLogs, runtime: "Pure" }) : null))));
505
+ };
506
+
507
+ // src/components/pure/ProjectPageView.test/index.tsx
508
+ var import_react6 = __toESM(require_react(), 1);
509
+ var WrappedProjectPageView = (props) => /* @__PURE__ */ import_react6.default.createElement(MemoryRouter, null, /* @__PURE__ */ import_react6.default.createElement(ProjectPageView, { ...props }, " "));
510
+ var ProjectPageView_default = web_default(
511
+ implementation,
512
+ specification,
513
+ WrappedProjectPageView
514
+ );
515
+ export {
516
+ ProjectPageView_default as default
517
+ };