testeranto 0.200.1 → 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 (373) hide show
  1. package/README.md +26 -1
  2. package/design-editor/DesignEditor.tsx +40 -241
  3. package/dist/common/design-editor/DesignEditor.js +33 -198
  4. package/dist/common/src/App.js +158 -16
  5. package/dist/common/src/PM/PM_WithBuild.js +135 -0
  6. package/dist/common/src/PM/PM_WithEslintAndTsc.js +79 -67
  7. package/dist/common/src/PM/PM_WithGit.js +517 -0
  8. package/dist/common/src/PM/PM_WithProcesses.js +519 -0
  9. package/dist/common/src/PM/PM_WithWebSocket.js +535 -0
  10. package/dist/common/src/PM/base.js +62 -0
  11. package/dist/common/src/PM/main.js +533 -1676
  12. package/dist/common/src/PM/metafileOutputs.js +78 -0
  13. package/dist/common/src/PM/node.js +0 -6
  14. package/dist/common/src/PM/pure.js +0 -8
  15. package/dist/common/src/PM/types.js +1 -0
  16. package/dist/common/src/PM/utils.js +210 -0
  17. package/dist/common/src/PM/web.js +0 -6
  18. package/dist/common/src/ReportServer.js +0 -10
  19. package/dist/common/src/ReportServerLib.js +0 -140
  20. package/dist/common/src/components/pure/AppFrame.js +68 -56
  21. package/dist/common/src/components/pure/ArtifactTree.js +80 -0
  22. package/dist/common/src/components/pure/BuildLogViewer.js +106 -0
  23. package/dist/common/src/components/pure/DebugEnv.js +30 -0
  24. package/dist/common/src/components/pure/FileTree.js +34 -0
  25. package/dist/common/src/components/pure/FileTreeItem.js +29 -0
  26. package/dist/common/src/components/pure/GitHubLoginButton.js +18 -0
  27. package/dist/common/src/components/pure/GitIntegrationView.js +342 -0
  28. package/dist/common/src/components/pure/ProcessManager.js +1 -0
  29. package/dist/common/src/components/pure/ProcessManagerView.js +73 -74
  30. package/dist/common/src/components/pure/ProjectPageView.js +4 -117
  31. package/dist/common/src/components/pure/Settings.js +121 -0
  32. package/dist/common/src/components/pure/Settings.test.js +34 -0
  33. package/dist/common/src/components/pure/SignIn.js +22 -0
  34. package/dist/common/src/components/pure/SingleProcessView.js +166 -213
  35. package/dist/common/src/components/pure/TestPageView.js +113 -368
  36. package/dist/common/src/components/pure/TestPageView_utils.js +117 -0
  37. package/dist/common/src/components/pure/TestTable.js +33 -0
  38. package/dist/common/src/components/pure/ToastNotification.js +14 -0
  39. package/dist/common/src/components/pure/UserProfile.js +27 -0
  40. package/dist/common/src/components/stateful/AuthCallbackPage.js +51 -0
  41. package/dist/common/src/components/stateful/FeaturesReporter.js +2 -1
  42. package/dist/common/src/components/stateful/FileTree.js +58 -39
  43. package/dist/common/src/components/stateful/GitIntegrationPage.js +12 -0
  44. package/dist/common/src/components/stateful/ProcessManagerPage.js +13 -15
  45. package/dist/common/src/components/stateful/ProjectPage.js +6 -5
  46. package/dist/common/src/components/stateful/ProjectsPage.js +17 -19
  47. package/dist/common/src/components/stateful/SingleProcessPage.js +16 -26
  48. package/dist/common/src/components/stateful/TestPage.js +7 -5
  49. package/dist/common/src/hooks/useGitMode.js +21 -0
  50. package/dist/common/src/lib/BaseSuite.test/mock.js +15 -8
  51. package/dist/common/src/lib/BaseSuite.test/test.js +56 -80
  52. package/dist/common/src/lib/Tiposkripto.js +24 -0
  53. package/dist/common/src/lib/Tiposkripto.test/MockTiposkripto.js +154 -10
  54. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +6 -12
  55. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +63 -23
  56. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.specification.js +14 -6
  57. package/dist/common/src/lib/pmProxy.test/specification.js +167 -52
  58. package/dist/common/src/services/FileService.js +505 -0
  59. package/dist/common/src/services/GitHubAuthService.js +184 -0
  60. package/dist/common/src/testeranto.js +38 -97
  61. package/dist/common/src/utils/api.js +12 -8
  62. package/dist/common/src/utils/gitTest.js +27 -0
  63. package/dist/common/src/utils.js +23 -13
  64. package/dist/common/testeranto.config.js +21 -17
  65. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  66. package/dist/module/design-editor/DesignEditor.js +33 -199
  67. package/dist/module/src/App.js +121 -15
  68. package/dist/module/src/PM/PM_WithBuild.js +128 -0
  69. package/dist/module/src/PM/PM_WithEslintAndTsc.js +79 -67
  70. package/dist/module/src/PM/PM_WithGit.js +477 -0
  71. package/dist/module/src/PM/PM_WithProcesses.js +479 -0
  72. package/dist/module/src/PM/PM_WithWebSocket.js +528 -0
  73. package/dist/module/src/PM/base.js +62 -0
  74. package/dist/module/src/PM/main.js +533 -1676
  75. package/dist/module/src/PM/metafileOutputs.js +78 -0
  76. package/dist/module/src/PM/node.js +0 -6
  77. package/dist/module/src/PM/pure.js +0 -8
  78. package/dist/module/src/PM/types.js +1 -1
  79. package/dist/module/src/PM/utils.js +196 -0
  80. package/dist/module/src/PM/web.js +0 -6
  81. package/dist/module/src/ReportServer.js +1 -9
  82. package/dist/module/src/ReportServerLib.js +1 -134
  83. package/dist/module/src/components/pure/AppFrame.js +66 -24
  84. package/dist/module/src/components/pure/ArtifactTree.js +80 -0
  85. package/dist/module/src/components/pure/BuildLogViewer.js +99 -0
  86. package/dist/module/src/components/pure/DebugEnv.js +23 -0
  87. package/dist/module/src/components/pure/FileTree.js +27 -0
  88. package/dist/module/src/components/pure/FileTreeItem.js +22 -0
  89. package/dist/module/src/components/pure/GitHubLoginButton.js +11 -0
  90. package/dist/module/src/components/pure/GitIntegrationView.js +305 -0
  91. package/dist/module/src/components/pure/ProcessManager.js +1 -0
  92. package/dist/module/src/components/pure/ProcessManagerView.js +74 -75
  93. package/dist/module/src/components/pure/ProjectPageView.js +5 -118
  94. package/dist/module/src/components/pure/Settings.js +84 -0
  95. package/dist/module/src/components/pure/Settings.test.js +29 -0
  96. package/dist/module/src/components/pure/SignIn.js +15 -0
  97. package/dist/module/src/components/pure/SingleProcessView.js +130 -214
  98. package/dist/module/src/components/pure/TestPageView.js +97 -352
  99. package/dist/module/src/components/pure/TestPageView_utils.js +109 -0
  100. package/dist/module/src/components/pure/TestTable.js +26 -0
  101. package/dist/module/src/components/pure/ToastNotification.js +7 -0
  102. package/dist/module/src/components/pure/UserProfile.js +20 -0
  103. package/dist/module/src/components/stateful/AuthCallbackPage.js +14 -0
  104. package/dist/module/src/components/stateful/FeaturesReporter.js +2 -1
  105. package/dist/module/src/components/stateful/FileTree.js +59 -33
  106. package/dist/module/src/components/stateful/GitIntegrationPage.js +5 -0
  107. package/dist/module/src/components/stateful/ProcessManagerPage.js +13 -15
  108. package/dist/module/src/components/stateful/ProjectPage.js +6 -5
  109. package/dist/module/src/components/stateful/ProjectsPage.js +16 -18
  110. package/dist/module/src/components/stateful/SingleProcessPage.js +16 -26
  111. package/dist/module/src/components/stateful/TestPage.js +8 -6
  112. package/dist/module/src/hooks/useGitMode.js +17 -0
  113. package/dist/module/src/lib/BaseSuite.test/mock.js +15 -8
  114. package/dist/module/src/lib/BaseSuite.test/test.js +56 -80
  115. package/dist/module/src/lib/Tiposkripto.js +24 -0
  116. package/dist/module/src/lib/Tiposkripto.test/MockTiposkripto.js +154 -10
  117. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +6 -12
  118. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +63 -23
  119. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.specification.js +14 -6
  120. package/dist/module/src/lib/pmProxy.test/specification.js +167 -52
  121. package/dist/module/src/services/FileService.js +468 -0
  122. package/dist/module/src/services/GitHubAuthService.js +180 -0
  123. package/dist/module/src/testeranto.js +38 -97
  124. package/dist/module/src/utils/api.js +10 -7
  125. package/dist/module/src/utils/gitTest.js +23 -0
  126. package/dist/module/src/utils.js +21 -12
  127. package/dist/module/testeranto.config.js +21 -17
  128. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  129. package/dist/prebuild/App.css +94 -121
  130. package/dist/prebuild/App.js +44601 -11225
  131. package/dist/prebuild/testeranto.mjs +3113 -2256
  132. package/dist/types/design-editor/DesignEditor.d.ts +1 -18
  133. package/dist/types/src/App.d.ts +18 -0
  134. package/dist/types/src/PM/PM_WithBuild.d.ts +13 -0
  135. package/dist/types/src/PM/PM_WithEslintAndTsc.d.ts +2 -4
  136. package/dist/types/src/PM/PM_WithGit.d.ts +27 -0
  137. package/dist/types/src/PM/PM_WithProcesses.d.ts +29 -0
  138. package/dist/types/src/PM/PM_WithWebSocket.d.ts +108 -0
  139. package/dist/types/src/PM/base.d.ts +1 -1
  140. package/dist/types/src/PM/index.d.ts +0 -2
  141. package/dist/types/src/PM/main.d.ts +6 -77
  142. package/dist/types/src/PM/metafileOutputs.d.ts +0 -0
  143. package/dist/types/src/PM/node.d.ts +0 -2
  144. package/dist/types/src/PM/pure.d.ts +0 -2
  145. package/dist/types/src/PM/types.d.ts +118 -0
  146. package/dist/types/src/PM/utils.d.ts +35 -0
  147. package/dist/types/src/PM/web.d.ts +0 -2
  148. package/dist/types/src/Pure.d.ts +6 -1
  149. package/dist/types/src/ReportServer.d.ts +0 -1
  150. package/dist/types/src/ReportServerLib.d.ts +0 -1
  151. package/dist/types/src/Types.d.ts +1 -0
  152. package/dist/types/src/components/pure/ArtifactTree.d.ts +0 -0
  153. package/dist/types/src/components/pure/BuildLogViewer.d.ts +7 -0
  154. package/dist/types/src/components/pure/DebugEnv.d.ts +2 -0
  155. package/dist/types/src/components/pure/FileTree.d.ts +6 -0
  156. package/dist/types/src/components/pure/FileTreeItem.d.ts +8 -0
  157. package/dist/types/src/components/pure/GitHubLoginButton.d.ts +8 -0
  158. package/dist/types/src/components/pure/GitIntegrationView.d.ts +1 -0
  159. package/dist/types/src/components/pure/Settings.d.ts +1 -0
  160. package/dist/types/src/components/pure/Settings.test.d.ts +1 -0
  161. package/dist/types/src/components/pure/SignIn.d.ts +1 -0
  162. package/dist/types/src/components/pure/SingleProcessView.d.ts +10 -0
  163. package/dist/types/src/components/pure/TestPageView.d.ts +2 -1
  164. package/dist/types/src/components/pure/TestPageView_utils.d.ts +23 -0
  165. package/dist/types/src/components/pure/TestTable.d.ts +16 -0
  166. package/dist/types/src/components/pure/ToastNotification.d.ts +6 -0
  167. package/dist/types/src/components/pure/UserProfile.d.ts +2 -0
  168. package/dist/types/src/components/stateful/AuthCallbackPage.d.ts +2 -0
  169. package/dist/types/src/components/stateful/FileTree.d.ts +0 -8
  170. package/dist/types/src/components/stateful/GitIntegrationPage.d.ts +1 -0
  171. package/dist/types/src/hooks/useGitMode.d.ts +7 -0
  172. package/dist/types/src/lib/BaseSuite.test/mock.d.ts +2 -2
  173. package/dist/types/src/lib/BaseSuite.test/test.d.ts +4 -3
  174. package/dist/types/src/lib/Tiposkripto.d.ts +2 -0
  175. package/dist/types/src/lib/Tiposkripto.test/MockTiposkripto.d.ts +3 -0
  176. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.types.d.ts +5 -0
  177. package/dist/types/src/lib/index.d.ts +6 -0
  178. package/dist/types/src/services/FileService.d.ts +34 -0
  179. package/dist/types/src/services/GitHubAuthService.d.ts +32 -0
  180. package/dist/types/src/utils/api.d.ts +1 -0
  181. package/dist/types/src/utils/gitTest.d.ts +11 -0
  182. package/dist/types/src/utils.d.ts +3 -3
  183. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  184. package/example/__pycache__/Calculator.cpython-313.pyc +0 -0
  185. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/README.md +187 -0
  186. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_given.go +163 -0
  187. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_suite.go +85 -0
  188. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_then.go +21 -0
  189. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/base_when.go +21 -0
  190. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/golingvu.go +554 -0
  191. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/test_adapter.go +33 -0
  192. package/example/vendor/github.com/adamwong246/testeranto/src/golingvu/types.go +72 -0
  193. package/example/vendor/modules.txt +5 -0
  194. package/git-integration-plan.md +395 -0
  195. package/package.json +26 -14
  196. package/src/App.tsx +169 -18
  197. package/src/PM/PM_WithBuild.ts +171 -0
  198. package/src/PM/PM_WithEslintAndTsc.ts +109 -86
  199. package/src/PM/PM_WithGit.ts +585 -0
  200. package/src/PM/PM_WithProcesses.ts +639 -0
  201. package/src/PM/PM_WithWebSocket.ts +631 -0
  202. package/src/PM/base.ts +63 -1
  203. package/src/PM/index.ts +8 -5
  204. package/src/PM/main.ts +672 -2050
  205. package/src/PM/metafileOutputs.ts +90 -0
  206. package/src/PM/node.ts +18 -18
  207. package/src/PM/pure.ts +5 -13
  208. package/src/PM/types.ts +145 -0
  209. package/src/PM/utils.ts +256 -0
  210. package/src/PM/web.ts +8 -8
  211. package/src/README.md +122 -0
  212. package/src/ReportServer.ts +0 -12
  213. package/src/ReportServerLib.ts +0 -147
  214. package/src/Types.ts +1 -0
  215. package/src/app.scss +14 -164
  216. package/src/components/pure/AppFrame.tsx +237 -71
  217. package/src/components/pure/ArtifactTree.tsx +82 -0
  218. package/src/components/pure/BuildLogViewer.tsx +168 -0
  219. package/src/components/pure/DebugEnv.tsx +30 -0
  220. package/src/components/pure/FileTree.tsx +58 -0
  221. package/src/components/pure/FileTreeItem.tsx +49 -0
  222. package/src/components/pure/GitHubLoginButton.tsx +31 -0
  223. package/src/components/pure/GitIntegrationView.tsx +443 -0
  224. package/src/components/pure/ProcessManager.tsx +6 -5
  225. package/src/components/pure/ProcessManagerView.tsx +162 -166
  226. package/src/components/pure/ProjectPageView.tsx +6 -224
  227. package/src/components/pure/Settings.test.tsx +34 -0
  228. package/src/components/pure/Settings.tsx +163 -0
  229. package/src/components/pure/SignIn.tsx +33 -0
  230. package/src/components/pure/SingleProcessView.tsx +231 -235
  231. package/src/components/pure/TestPageView.test/specification.ts +1 -0
  232. package/src/components/pure/TestPageView.tsx +317 -826
  233. package/src/components/pure/TestPageView_utils.tsx +285 -0
  234. package/src/components/pure/TestTable.tsx +88 -0
  235. package/src/components/pure/ToastNotification.tsx +19 -0
  236. package/src/components/pure/UserProfile.tsx +44 -0
  237. package/src/components/stateful/AuthCallbackPage.tsx +21 -0
  238. package/src/components/stateful/FeaturesReporter.tsx +3 -1
  239. package/src/components/stateful/FileTree.tsx +58 -58
  240. package/src/components/stateful/GitIntegrationPage.tsx +8 -0
  241. package/src/components/stateful/ProcessManagerPage.tsx +13 -17
  242. package/src/components/stateful/ProjectPage.tsx +6 -5
  243. package/src/components/stateful/ProjectsPage.tsx +17 -19
  244. package/src/components/stateful/SVGEditor/CircleForm.tsx +68 -0
  245. package/src/components/stateful/SVGEditor/GroupForm.tsx +56 -0
  246. package/src/components/stateful/SVGEditor/RectForm.tsx +74 -0
  247. package/src/components/stateful/SVGEditor/SVGAttributeField.tsx +29 -0
  248. package/src/components/stateful/SVGEditor/SVGAttributesEditor.tsx +73 -0
  249. package/src/components/stateful/SVGEditor/SVGEditorControls.tsx +45 -0
  250. package/src/components/stateful/SVGEditor/SVGElementForm.tsx +45 -0
  251. package/src/components/stateful/SVGEditor/SVGPreview.tsx +225 -0
  252. package/src/components/stateful/SVGEditor/SVGTextEditor.tsx +166 -0
  253. package/src/components/stateful/SVGEditor/SVGTree.tsx +159 -0
  254. package/src/components/stateful/SVGEditor/SVGTypes.ts +36 -0
  255. package/src/components/stateful/SVGEditor/svg.xsd.xml +3038 -0
  256. package/src/components/stateful/SVGEditorPage.tsx +503 -0
  257. package/src/components/stateful/SingleProcessPage.tsx +18 -31
  258. package/src/components/stateful/TestPage.tsx +25 -22
  259. package/src/golingvu/golingvu.go +38 -2
  260. package/src/hooks/useGitMode.ts +20 -0
  261. package/src/lib/BaseSuite.test/mock.ts +16 -10
  262. package/src/lib/BaseSuite.test/test.ts +144 -103
  263. package/src/lib/Tiposkripto.test/MockTiposkripto.ts +178 -14
  264. package/src/lib/Tiposkripto.test/Tiposkripto.adapter.ts +9 -14
  265. package/src/lib/Tiposkripto.test/Tiposkripto.implementation.ts +78 -38
  266. package/src/lib/Tiposkripto.test/Tiposkripto.specification.ts +51 -9
  267. package/src/lib/Tiposkripto.test/Tiposkripto.types.ts +5 -0
  268. package/src/lib/Tiposkripto.ts +27 -0
  269. package/src/lib/index.ts +7 -0
  270. package/src/lib/pmProxy.test/specification.ts +168 -166
  271. package/src/pitono/PM/__pycache__/python.cpython-313.pyc +0 -0
  272. package/src/pitono/__pycache__/Pitono.cpython-313.pyc +0 -0
  273. package/src/pitono/__pycache__/__init__.cpython-313.pyc +0 -0
  274. package/src/pitono/__pycache__/base_given.cpython-313.pyc +0 -0
  275. package/src/pitono/__pycache__/base_suite.cpython-313.pyc +0 -0
  276. package/src/pitono/__pycache__/base_then.cpython-313.pyc +0 -0
  277. package/src/pitono/__pycache__/base_when.cpython-313.pyc +0 -0
  278. package/src/pitono/__pycache__/core_generator.cpython-313.pyc +0 -0
  279. package/src/pitono/__pycache__/simple_adapter.cpython-313.pyc +0 -0
  280. package/src/pitono/__pycache__/types.cpython-313.pyc +0 -0
  281. package/src/services/FileService.ts +542 -0
  282. package/src/services/GitHubAuthService.ts +240 -0
  283. package/src/testeranto.ts +62 -140
  284. package/src/utils/api.ts +15 -13
  285. package/src/utils/gitTest.ts +29 -0
  286. package/src/utils.ts +21 -12
  287. package/testeranto/App.css +94 -121
  288. package/testeranto/App.js +44601 -11225
  289. package/testeranto/bundles/golang/core/Calculator.golingvu.go +53 -0
  290. package/testeranto/bundles/golang/core/Calculator.golingvu.golingvu.go +53 -0
  291. package/testeranto/bundles/node/core/chunk-RIM6RECA.mjs +1170 -0
  292. package/testeranto/bundles/node/core/chunk-VXVF7WFO.mjs +4321 -0
  293. package/testeranto/bundles/node/core/example/Calculator.test.mjs +503 -0
  294. package/testeranto/bundles/node/core/src/lib/BaseSuite.test/node.test.mjs +94 -1231
  295. package/testeranto/bundles/node/core/src/lib/TipoSkripto.test/TipoSkripto.mjs +574 -0
  296. package/testeranto/bundles/node/core/src/lib/pmProxy.test/index.mjs +482 -0
  297. package/testeranto/bundles/pure/core/chunk-XYOCRDEQ.mjs +1080 -0
  298. package/testeranto/bundles/pure/core/src/Pure.test.mjs +410 -0
  299. package/testeranto/bundles/pure/core/src/lib/BaseSuite.test/pure.test.mjs +93 -1146
  300. package/testeranto/bundles/python/core/Calculator.pitono.test.py +24 -0
  301. package/testeranto/bundles/python/core/test_example.py +24 -0
  302. package/testeranto/bundles/web/core/MPLUSRounded1c-Black-O75GP5JI.ttf +0 -0
  303. package/testeranto/bundles/web/core/MPLUSRounded1c-Bold-R524Q5BH.ttf +0 -0
  304. package/testeranto/bundles/web/core/MPLUSRounded1c-ExtraBold-C6GRMYVT.ttf +0 -0
  305. package/testeranto/bundles/web/core/MPLUSRounded1c-Light-WKN65Y2C.ttf +0 -0
  306. package/testeranto/bundles/web/core/MPLUSRounded1c-Medium-ZC4DWL7C.ttf +0 -0
  307. package/testeranto/bundles/web/core/MPLUSRounded1c-Regular-DT6EKZ3S.ttf +0 -0
  308. package/testeranto/bundles/web/core/MPLUSRounded1c-Thin-YWDNVG6M.ttf +0 -0
  309. package/testeranto/bundles/web/core/chunk-DFRN4SYZ.mjs +2297 -0
  310. package/testeranto/bundles/web/core/chunk-JMDLMADH.mjs +27996 -0
  311. package/testeranto/bundles/web/core/chunk-LQMU5NCG.mjs +3082 -0
  312. package/testeranto/bundles/web/core/chunk-Q5TONB2Z.mjs +6874 -0
  313. package/testeranto/bundles/web/core/src/components/pure/FeaturesReporterView.test/index.mjs +164 -0
  314. package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.css +11697 -0
  315. package/testeranto/bundles/web/core/src/components/pure/ModalContent.test/index.mjs +336 -0
  316. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.css +11697 -0
  317. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.mjs +517 -0
  318. package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.mjs +107 -1134
  319. package/testeranto/metafiles/golang/core.json +3 -3
  320. package/testeranto/metafiles/node/core.json +474 -31
  321. package/testeranto/metafiles/pure/core.json +144 -28
  322. package/testeranto/metafiles/python/core.json +11 -0
  323. package/testeranto/metafiles/web/core.json +15829 -45
  324. package/testeranto/reports/core/config.json +40 -0
  325. package/testeranto/reports/core/src/Pure.test/pure/exit.log +0 -0
  326. package/testeranto/reports/core/src/Pure.test/pure/lint_errors.txt +0 -0
  327. package/testeranto/reports/core/src/Pure.test/pure/prompt.txt +14 -0
  328. package/testeranto/reports/core/src/Pure.test/pure/type_errors.txt +73 -0
  329. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/debug.log +0 -0
  330. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/error.log +91 -0
  331. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/exit.log +1 -0
  332. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/info.log +2 -0
  333. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/tests.json +68 -0
  334. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/warn.log +0 -0
  335. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/debug.log +0 -0
  336. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/error.log +30 -0
  337. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/exit.log +1 -0
  338. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/info.log +2 -0
  339. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/tests.json +88 -0
  340. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/warn.log +0 -0
  341. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/lint_errors.txt +0 -6
  342. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/prompt.txt +0 -11
  343. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/stdout.log +1 -0
  344. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/tests.json +1 -1
  345. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/type_errors.txt +35 -38
  346. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/lint_errors.txt +0 -2
  347. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/prompt.txt +0 -10
  348. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/type_errors.txt +40 -38
  349. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/tests.json +1 -1
  350. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/exit.log +1 -0
  351. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/lint_errors.txt +0 -0
  352. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/message.txt +17 -0
  353. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/prompt.txt +17 -0
  354. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stderr.log +55 -0
  355. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stdout.log +191 -0
  356. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/type_errors.txt +71 -0
  357. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/exit.log +1 -0
  358. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/lint_errors.txt +15 -0
  359. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/message.txt +17 -0
  360. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/prompt.txt +17 -0
  361. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stderr.log +20 -0
  362. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stdout.log +4 -0
  363. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/type_errors.txt +49 -0
  364. package/testeranto/reports/core/summary.json +34 -6
  365. package/testeranto.config.ts +26 -20
  366. package/tsc.log +141 -91
  367. package/tsconfig.json +6 -2
  368. package/dist/types/design-editor/server.d.ts +0 -1
  369. package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.html +0 -15
  370. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/lint_errors.txt +0 -2
  371. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/prompt.txt +0 -25
  372. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/type_errors.txt +0 -56
  373. /package/testeranto/reports/core/src/{lib/BaseSuite.test/web.test/web → Pure.test/pure}/message.txt +0 -0
@@ -1,9 +1,12 @@
1
1
  /* eslint-disable @typescript-eslint/no-unused-vars */
2
- import React, { useState } from 'react';
3
- import { Container, Nav } from 'react-bootstrap';
2
+ import React from 'react';
3
+ import { Container, Nav, OverlayTrigger, Tooltip, Navbar } from 'react-bootstrap';
4
4
  import { NavLink } from 'react-router-dom';
5
5
  import { useLocation } from 'react-router-dom';
6
6
 
7
+ import { useWebSocket, useTutorialMode, useAuth } from '../../App';
8
+ import { UserProfile } from './UserProfile';
9
+
7
10
  type AppFrameProps = {
8
11
  children: React.ReactNode;
9
12
  className?: string;
@@ -15,116 +18,279 @@ type AppFrameProps = {
15
18
 
16
19
  export const AppFrame = ({ children, title, rightContent }: AppFrameProps) => {
17
20
  const location = useLocation();
18
- const [isExpanded, setIsExpanded] = useState(true);
21
+ const { isConnected } = useWebSocket();
22
+ const { tutorialMode } = useTutorialMode();
23
+ const { isAuthenticated, logout } = useAuth();
19
24
 
20
25
  return (
21
- <div className="d-flex min-vh-100" style={{ backgroundColor: '#f8f9fa' }}>
22
- {/* Sidebar */}
26
+ <div className="d-flex min-vh-100" >
27
+ {/* Sidebar - Always 60px wide, full height */}
23
28
  <div
24
- className="bg-light border-end d-flex flex-column"
29
+ className="border-end d-flex flex-column"
25
30
  style={{
26
- width: isExpanded ? '250px' : '60px',
27
- minHeight: '100vh',
28
- transition: 'width 0.3s ease'
31
+ width: '60px',
32
+ height: '100vh',
33
+ position: 'sticky',
34
+ top: 0
29
35
  }}
30
- onMouseEnter={() => setIsExpanded(true)}
31
- onMouseLeave={() => setIsExpanded(false)}
32
36
  >
33
- <div className="p-3 border-bottom d-flex align-items-center justify-content-center">
34
- {isExpanded ? (
35
- <img
36
- src="/logo.svg"
37
- alt="Testeranto Logo"
38
- style={{ width: '128px', height: '128px' }}
39
- />
40
- ) : (
37
+ {/* Logo - Not clickable */}
38
+ {tutorialMode ? (
39
+ <OverlayTrigger
40
+ placement="right"
41
+ overlay={
42
+ <Tooltip id="logo-tooltip">
43
+ Welcome to Testeranto!
44
+ </Tooltip>
45
+ }
46
+ >
47
+ <div className="p-3 border-bottom d-flex align-items-center justify-content-center">
48
+ <img
49
+ src="/logo.svg"
50
+ alt="Testeranto Logo"
51
+ style={{
52
+ width: '40px',
53
+ height: '40px'
54
+ }}
55
+ />
56
+ </div>
57
+ </OverlayTrigger>
58
+ ) : (
59
+ <div className="p-3 border-bottom d-flex align-items-center justify-content-center">
41
60
  <img
42
61
  src="/logo.svg"
43
62
  alt="Testeranto Logo"
44
- style={{ width: '40px', height: '40px' }}
63
+ style={{
64
+ width: '40px',
65
+ height: '40px'
66
+ }}
45
67
  />
46
- )}
47
- </div>
68
+ </div>
69
+ )}
70
+
71
+ {/* Navigation */}
48
72
  <Nav variant="pills" className="flex-column p-2 flex-grow-1">
73
+ {/* Projects Link - Always clickable with hover, tutorial tooltip conditionally */}
49
74
  <Nav.Link
50
75
  as={NavLink}
51
76
  to="/"
52
- className={`${location.pathname === '/' ? 'active' : ''} text-truncate d-flex align-items-center`}
53
- style={{ width: '100%' }}
54
- title="Projects"
77
+ className={`${location.pathname === '/' ? 'active' : ''} d-flex align-items-center justify-content-center`}
78
+ style={{ height: '40px', width: '40px' }}
55
79
  >
56
- <span className="me-2">📁</span>
57
- {isExpanded && 'Projects'}
80
+ {tutorialMode ? (
81
+ <OverlayTrigger
82
+ placement="right"
83
+ overlay={
84
+ <Tooltip id="projects-tooltip">
85
+ Projects
86
+ </Tooltip>
87
+ }
88
+ >
89
+ <span>📁</span>
90
+ </OverlayTrigger>
91
+ ) : (
92
+ <span>📁</span>
93
+ )}
58
94
  </Nav.Link>
59
95
 
60
- {/* temporarily disabled */}
61
- {/* <Nav.Link
96
+ {/* Process Manager Link - Darken if not authenticated or not connected */}
97
+ <Nav.Link
62
98
  as={NavLink}
63
- to="/features-reporter"
64
- className={`${location.pathname === '/features-reporter' ? 'active' : ''} text-truncate d-flex align-items-center`}
65
- style={{ width: '100%' }}
66
- title="Features Reporter"
99
+ to="/processes"
100
+ className={`${location.pathname.startsWith('/processes') ? 'active' : ''} d-flex align-items-center justify-content-center ${!isConnected || !isAuthenticated ? 'text-muted pe-none' : ''}`}
101
+ style={{
102
+ height: '40px',
103
+ width: '40px',
104
+ opacity: isConnected && isAuthenticated ? 1 : 0.6
105
+ }}
106
+ onClick={(e) => {
107
+ if (!isConnected || !isAuthenticated) {
108
+ e.preventDefault();
109
+ }
110
+ }}
67
111
  >
68
- <span className="me-2">📊</span>
69
- {isExpanded && 'Features Reporter'}
112
+ {tutorialMode ? (
113
+ <OverlayTrigger
114
+ placement="right"
115
+ overlay={
116
+ <Tooltip id="processes-tooltip">
117
+ Processes {!isAuthenticated ? '(Sign in required)' : !isConnected ? '(WebSocket disconnected)' : ''}
118
+ </Tooltip>
119
+ }
120
+ >
121
+ <span>📊</span>
122
+ </OverlayTrigger>
123
+ ) : (
124
+ <span>📊</span>
125
+ )}
70
126
  </Nav.Link>
127
+
128
+ {/* Git Integration Link - Darken if not authenticated */}
71
129
  <Nav.Link
72
130
  as={NavLink}
73
- to="/design-editor"
74
- className={`${location.pathname === '/design-editor' ? 'active' : ''} text-truncate d-flex align-items-center`}
75
- style={{ width: '100%' }}
76
- title="Design Editor"
131
+ to="/git"
132
+ className={`${location.pathname === '/git' ? 'active' : ''} d-flex align-items-center justify-content-center ${!isAuthenticated ? 'text-muted pe-none' : ''}`}
133
+ style={{
134
+ height: '40px',
135
+ width: '40px',
136
+ opacity: isAuthenticated ? 1 : 0.6
137
+ }}
138
+ onClick={(e) => {
139
+ if (!isAuthenticated) {
140
+ e.preventDefault();
141
+ }
142
+ }}
77
143
  >
78
- <span className="me-2">🎨</span>
79
- {isExpanded && 'Design Editor'}
144
+ {tutorialMode ? (
145
+ <OverlayTrigger
146
+ placement="right"
147
+ overlay={
148
+ <Tooltip id="git-tooltip">
149
+ Git Integration {!isAuthenticated ? '(Sign in required)' : ''}
150
+ </Tooltip>
151
+ }
152
+ >
153
+ <span>🐙</span>
154
+ </OverlayTrigger>
155
+ ) : (
156
+ <span>🐙</span>
157
+ )}
80
158
  </Nav.Link>
159
+
160
+ <<<<<<< HEAD
161
+
81
162
  <Nav.Link
82
163
  as={NavLink}
83
- to="/text-editor"
84
- className={`${location.pathname === '/text-editor' ? 'active' : ''} text-truncate d-flex align-items-center`}
85
- style={{ width: '100%' }}
86
- title="Text Editor"
87
- >
88
- <span className="me-2">📝</span>
89
- {isExpanded && 'Text Editor'}
90
- </Nav.Link> */}
91
-
164
+ to="/design-editor"
165
+ className={`${location.pathname === '/design-editor' ? 'active' : ''} d-flex align-items-center justify-content-center`}
166
+ =======
167
+ {/* SVG Editor Link - Darken if not authenticated */}
92
168
  <Nav.Link
93
169
  as={NavLink}
94
- to="/processes"
95
- className={`${location.pathname.startsWith('/processes') ? 'active' : ''} text-truncate d-flex align-items-center`}
96
- style={{ width: '100%' }}
97
- title="Process Manager"
170
+ to="/svg-editor"
171
+ className={`${location.pathname === '/svg-editor' ? 'active' : ''} d-flex align-items-center justify-content-center ${!isAuthenticated ? 'text-muted pe-none' : ''}`}
172
+ >>>>>>> 79d08b7b (svg editor)
173
+ style={{
174
+ height: '40px',
175
+ width: '40px',
176
+ opacity: isAuthenticated ? 1 : 0.6
177
+ }}
178
+ onClick={(e) => {
179
+ if (!isAuthenticated) {
180
+ e.preventDefault();
181
+ }
182
+ }}
98
183
  >
99
- <span className="me-2">📊</span>
100
- {isExpanded && 'Process Manager'}
184
+ {tutorialMode ? (
185
+ <OverlayTrigger
186
+ placement="right"
187
+ overlay={
188
+ <<<<<<< HEAD
189
+ <Tooltip id="design-editor-tooltip">
190
+ Canvas editor
191
+ </Tooltip>
192
+ }
193
+ >
194
+ <span>kanvaso</span>
195
+ </OverlayTrigger>
196
+ ) : (
197
+ <span>kanvaso</span>
198
+ )}
199
+ </Nav.Link>
200
+
201
+
202
+ =======
203
+ <Tooltip id="svg-editor-tooltip">
204
+ SVG Editor {!isAuthenticated ? '(Sign in required)' : ''}
205
+ </Tooltip>
206
+ }
207
+ >
208
+ <span>🎨</span>
209
+ </OverlayTrigger>
210
+ ) : (
211
+ <span>🎨</span>
212
+ )}
101
213
  </Nav.Link>
214
+
215
+ >>>>>>> 79d08b7b (svg editor)
216
+ {/* Settings Link - Always accessible */}
102
217
  <Nav.Link
103
218
  as={NavLink}
104
219
  to="/settings"
105
- className={`${location.pathname === '/settings' ? 'active' : ''} text-truncate d-flex align-items-center`}
106
- style={{ width: '100%' }}
107
- title="Settings"
220
+ className={`${location.pathname === '/settings' ? 'active' : ''} d-flex align-items-center justify-content-center`}
221
+ style={{ height: '40px', width: '40px' }}
108
222
  >
109
- <span className="me-2">⚙️</span>
110
- {isExpanded && 'Settings'}
223
+ {tutorialMode ? (
224
+ <OverlayTrigger
225
+ placement="right"
226
+ overlay={
227
+ <Tooltip id="settings-tooltip">
228
+ Settings
229
+ </Tooltip>
230
+ }
231
+ >
232
+ <span>⚙️</span>
233
+ </OverlayTrigger>
234
+ ) : (
235
+ <span>⚙️</span>
236
+ )}
111
237
  </Nav.Link>
238
+
112
239
  </Nav>
113
240
 
114
- <div className="p-3 border-top text-center mt-auto">
115
- {isExpanded ? (
116
- <small className="text-muted">
241
+ {/* WebSocket Status Indicator - Always show normal tooltip */}
242
+ <OverlayTrigger
243
+ placement="right"
244
+ overlay={
245
+ <Tooltip id="status-tooltip">
246
+ {isConnected ? 'Dev mode - Full access' : 'Static mode - Read only'}
247
+ </Tooltip>
248
+ }
249
+ >
250
+ <div className="p-2 border-top d-flex align-items-center justify-content-center">
251
+ <span
252
+ className={`badge rounded-circle d-flex align-items-center justify-content-center`}
253
+ style={{
254
+ backgroundColor: isConnected ? '#198754' : '#6c757d',
255
+ width: '20px',
256
+ height: '20px',
257
+ fontSize: '12px'
258
+ }}
259
+ >
260
+ {isConnected ? '🟢' : '🔴'}
261
+ </span>
262
+ </div>
263
+ </OverlayTrigger>
264
+
265
+ {/* Footer - Always show normal tooltip */}
266
+ <OverlayTrigger
267
+ placement="right"
268
+ overlay={
269
+ <Tooltip id="footer-tooltip">
117
270
  made with ❤️ and <a href="https://www.npmjs.com/package/testeranto">testeranto</a>
118
- </small>
119
- ) : (
120
- <small className="text-muted">❤️</small>
121
- )}
122
- </div>
271
+ </Tooltip>
272
+ }
273
+ >
274
+ <div className="p-3 border-top text-center mt-auto">
275
+ <span className="text-muted">❤️</span>
276
+ </div>
277
+ </OverlayTrigger>
123
278
  </div>
124
279
 
125
- <div className="flex-grow-1 d-flex flex-column">
280
+ {/* Main Content */}
281
+ <div className="flex-grow-1 d-flex flex-column" style={{ minHeight: '100vh' }}>
282
+ {/* Top Navigation Bar */}
283
+ {/* <Navbar className="border-bottom">
284
+ <Container fluid>
285
+ <Navbar.Brand>{title || 'Testeranto'}</Navbar.Brand>
286
+ <Navbar.Collapse className="justify-content-end">
287
+ <UserProfile />
288
+ </Navbar.Collapse>
289
+ </Container>
290
+ </Navbar> */}
291
+
126
292
  <main className="flex-grow-1 p-4" style={{ overflow: 'auto' }}>
127
- <Container fluid className="h-100">
293
+ <Container fluid style={{ height: '100%' }}>
128
294
  {children}
129
295
  </Container>
130
296
  </main>
@@ -0,0 +1,82 @@
1
+ // export const ArtifactTree = ({
2
+ // treeData,
3
+ // projectName,
4
+ // testName,
5
+ // runtime,
6
+ // onSelect,
7
+ // level = 0,
8
+ // basePath = ''
9
+ // }: {
10
+ // treeData: Record<string, any>;
11
+ // projectName: string;
12
+ // testName: string;
13
+ // runtime: string;
14
+ // onSelect: (path: string) => void;
15
+ // level?: number;
16
+ // basePath?: string;
17
+ // }) => {
18
+ // const [expanded, setExpanded] = useState<Record<string, boolean>>({});
19
+
20
+ // const toggleExpand = (path: string) => {
21
+ // setExpanded(prev => ({ ...prev, [path]: !prev[path] }));
22
+ // };
23
+
24
+ // return (
25
+ // <ul className="list-unstyled" style={{ paddingLeft: `${level * 16}px` }}>
26
+ // {Object.entries(treeData).map(([name, node]) => {
27
+ // const fullPath = basePath ? `${basePath}/${name}` : name;
28
+ // const isExpanded = expanded[fullPath];
29
+
30
+ // if (node.__isFile) {
31
+ // return (
32
+ // <li key={fullPath} className="py-1">
33
+ // <a
34
+ // href={`reports/${projectName}/${testName
35
+ // .split('.')
36
+ // .slice(0, -1)
37
+ // .join('.')}/${runtime}/${node.path}`}
38
+ // target="_blank"
39
+ // rel="noopener noreferrer"
40
+ // className="text-decoration-none"
41
+ // onClick={(e) => {
42
+ // e.preventDefault();
43
+ // onSelect(node.path);
44
+ // }}
45
+ // >
46
+ // <i className="bi bi-file-earmark-text me-2"></i>
47
+ // {name}
48
+ // </a>
49
+ // </li>
50
+ // );
51
+ // } else {
52
+ // return (
53
+ // <li key={fullPath} className="py-1">
54
+ // <div className="d-flex align-items-center">
55
+ // <button
56
+ // className="btn btn-link text-start p-0 text-decoration-none me-1"
57
+ // onClick={() => toggleExpand(fullPath)}
58
+ // >
59
+ // <i
60
+ // className={`bi ${isExpanded ? 'bi-folder2-open' : 'bi-folder'} me-2`}
61
+ // ></i>
62
+ // {name}
63
+ // </button>
64
+ // </div>
65
+ // {isExpanded && (
66
+ // <ArtifactTree
67
+ // treeData={node}
68
+ // projectName={projectName}
69
+ // testName={testName}
70
+ // runtime={runtime}
71
+ // onSelect={onSelect}
72
+ // level={level + 1}
73
+ // basePath={fullPath}
74
+ // />
75
+ // )}
76
+ // </li>
77
+ // );
78
+ // }
79
+ // })}
80
+ // </ul>
81
+ // );
82
+ // };
@@ -0,0 +1,168 @@
1
+ import React from 'react';
2
+ import { Tab, Alert, Badge, Nav, Card, ListGroup } from 'react-bootstrap';
3
+
4
+ interface BuildLogViewerProps {
5
+ logs: any;
6
+ runtime: string;
7
+ }
8
+
9
+ export const BuildLogViewer: React.FC<BuildLogViewerProps> = ({ logs, runtime }) => {
10
+ if (!logs) return <Alert variant="info">Loading {runtime.toLowerCase()} build logs...</Alert>;
11
+
12
+ const hasErrors = logs.errors?.length > 0;
13
+ const hasWarnings = logs.warnings?.length > 0;
14
+ const [activeTab, setActiveTab] = React.useState('summary');
15
+
16
+ return (
17
+ <div>
18
+ <Tab.Container activeKey={activeTab} onSelect={(k) => setActiveTab(k || 'summary')}>
19
+ <Nav variant="tabs" className="mb-3">
20
+ <Nav.Item>
21
+ <Nav.Link eventKey="summary">Build Summary</Nav.Link>
22
+ </Nav.Item>
23
+ <Nav.Item>
24
+ <Nav.Link eventKey="warnings">
25
+ {hasWarnings ? `⚠️ Warnings (${logs.warnings.length})` : 'Warnings'}
26
+ </Nav.Link>
27
+ </Nav.Item>
28
+ <Nav.Item>
29
+ <Nav.Link eventKey="errors">
30
+ {hasErrors ? `❌ Errors (${logs.errors.length})` : 'Errors'}
31
+ </Nav.Link>
32
+ </Nav.Item>
33
+ </Nav>
34
+
35
+ <Tab.Content>
36
+ <Tab.Pane eventKey="summary">
37
+ <Card>
38
+ <Card.Header className="d-flex justify-content-between align-items-center">
39
+ <h5>Build Summary</h5>
40
+ <div>
41
+ {hasErrors && (
42
+ <Badge bg="danger" className="me-2">
43
+ {logs.errors.length} Error{logs.errors.length !== 1 ? 's' : ''}
44
+ </Badge>
45
+ )}
46
+ {hasWarnings && (
47
+ <Badge bg="warning" text="dark">
48
+ {logs.warnings.length} Warning{logs.warnings.length !== 1 ? 's' : ''}
49
+ </Badge>
50
+ )}
51
+ {!hasErrors && !hasWarnings && (
52
+ <Badge bg="success">Build Successful</Badge>
53
+ )}
54
+ </div>
55
+ </Card.Header>
56
+ <Card.Body>
57
+ <div className="mb-3">
58
+ <h6>Input Files ({Object.keys(logs.metafile?.inputs || {}).length})</h6>
59
+ <ListGroup className="max-h-200 overflow-auto">
60
+ {Object.keys(logs.metafile?.inputs || {}).map((file) => (
61
+ <ListGroup.Item key={file} className="py-2">
62
+ <code>{file}</code>
63
+ <div className="text-muted small">
64
+ {logs.metafile.inputs[file].bytes} bytes
65
+ </div>
66
+ </ListGroup.Item>
67
+ ))}
68
+ </ListGroup>
69
+ </div>
70
+ <div>
71
+ <h6>Output Files ({Object.keys(logs.metafile?.outputs || {}).length})</h6>
72
+ <ListGroup className="max-h-200 overflow-auto">
73
+ {Object.keys(logs.metafile?.outputs || {}).map((file) => (
74
+ <ListGroup.Item key={file} className="py-2">
75
+ <code>{file}</code>
76
+ <div className="text-muted small">
77
+ {logs.metafile.outputs[file].bytes} bytes
78
+ {logs.metafile.outputs[file].entryPoint && (
79
+ <span className="ms-2 badge bg-info">Entry Point</span>
80
+ )}
81
+ </div>
82
+ </ListGroup.Item>
83
+ ))}
84
+ </ListGroup>
85
+ </div>
86
+ </Card.Body>
87
+ </Card>
88
+ </Tab.Pane>
89
+ <Tab.Pane eventKey="warnings">
90
+ {hasWarnings ? (
91
+ <Card className="border-warning">
92
+ <Card.Header className="bg-warning text-white d-flex justify-content-between align-items-center">
93
+ <span>Build Warnings ({logs.warnings.length})</span>
94
+ <Badge bg="light" text="dark">
95
+ {new Date().toLocaleString()}
96
+ </Badge>
97
+ </Card.Header>
98
+ <Card.Body className="p-0">
99
+ <ListGroup variant="flush">
100
+ {logs.warnings.map((warn: any, i: number) => (
101
+ <ListGroup.Item key={i} className="text-warning">
102
+ <div className="d-flex justify-content-between">
103
+ <strong>
104
+ {warn.location?.file || 'Unknown file'}
105
+ {warn.location?.line && `:${warn.location.line}`}
106
+ </strong>
107
+ <small className="text-muted">
108
+ {warn.pluginName ? `[${warn.pluginName}]` : ''}
109
+ </small>
110
+ </div>
111
+ <div className="mt-1">
112
+ <pre className="mb-0 p-2 rounded">
113
+ {JSON.stringify(warn)}
114
+ </pre>
115
+ </div>
116
+ </ListGroup.Item>
117
+ ))}
118
+ </ListGroup>
119
+ </Card.Body>
120
+ </Card>
121
+ ) : (
122
+ <Alert variant="info">No warnings found</Alert>
123
+ )}
124
+ </Tab.Pane>
125
+ <Tab.Pane eventKey="errors">
126
+ {hasErrors ? (
127
+ <Card className="border-danger">
128
+ <Card.Header className="bg-danger text-white d-flex justify-content-between align-items-center">
129
+ <span>Build Errors ({logs.errors.length})</span>
130
+ <Badge bg="light" text="dark">
131
+ {new Date().toLocaleString()}
132
+ </Badge>
133
+ </Card.Header>
134
+ <Card.Body className="p-0">
135
+ <ListGroup variant="flush">
136
+ {logs.errors.map((err: any, i: number) => (
137
+ <ListGroup.Item key={i} className="text-danger">
138
+ <div className="d-flex justify-content-between">
139
+ <strong>
140
+ {err.location?.file || 'Unknown file'}
141
+ {err.location?.line && `:${err.location.line}`}
142
+ </strong>
143
+ <small className="text-muted">
144
+ {err.pluginName ? `[${err.pluginName}]` : ''}
145
+ </small>
146
+ </div>
147
+ <div className="mt-1">
148
+ <pre className="mb-0 p-2 rounded">
149
+ {JSON.stringify(err)}
150
+ </pre>
151
+ </div>
152
+ </ListGroup.Item>
153
+ ))}
154
+ </ListGroup>
155
+ </Card.Body>
156
+ </Card>
157
+ ) : (
158
+ <Alert variant="success">
159
+ <h5>No Errors Found</h5>
160
+ <p className="mb-0">The build completed without any errors.</p>
161
+ </Alert>
162
+ )}
163
+ </Tab.Pane>
164
+ </Tab.Content>
165
+ </Tab.Container>
166
+ </div>
167
+ );
168
+ };
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import { Card, CardBody } from 'react-bootstrap';
3
+
4
+ export const DebugEnv: React.FC = () => {
5
+ if (process.env.NODE_ENV === 'production') {
6
+ return null;
7
+ }
8
+
9
+ const envInfo = {
10
+ nodeEnv: process.env.NODE_ENV,
11
+ clientId: process.env.GITHUB_CLIENT_ID,
12
+ allProcessEnv: Object.keys(process.env)
13
+ .filter(key => key.startsWith('REACT_APP_'))
14
+ .reduce((obj, key) => {
15
+ obj[key] = process.env[key];
16
+ return obj;
17
+ }, {} as Record<string, string | undefined>),
18
+ windowEnv: typeof window !== 'undefined' ? (window as any).env : 'window not defined',
19
+ location: typeof window !== 'undefined' ? window.location : 'window not defined'
20
+ };
21
+
22
+ return (
23
+ <Card className="mt-3">
24
+ <CardBody>
25
+ <h6>Environment Debug (Development Only)</h6>
26
+ <pre>{JSON.stringify(envInfo, null, 2)}</pre>
27
+ </CardBody>
28
+ </Card>
29
+ );
30
+ };