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,505 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getFileService = void 0;
37
+ // Static Mode Service (Read-only)
38
+ class StaticFileService {
39
+ async readFile(path) {
40
+ const response = await fetch(path);
41
+ if (!response.ok)
42
+ throw new Error(`Failed to read file: ${path}`);
43
+ return await response.text();
44
+ }
45
+ async readDirectory(path) {
46
+ // In static mode, we can't list directories from the client
47
+ // This would need to be provided by a server endpoint
48
+ return [];
49
+ }
50
+ async exists(path) {
51
+ try {
52
+ const response = await fetch(path, { method: "HEAD" });
53
+ return response.ok;
54
+ }
55
+ catch (_a) {
56
+ return false;
57
+ }
58
+ }
59
+ // Write operations are no-ops in static mode
60
+ async writeFile() {
61
+ /* no-op */
62
+ }
63
+ async createDirectory() {
64
+ /* no-op */
65
+ }
66
+ async deleteFile() {
67
+ /* no-op */
68
+ }
69
+ // Git operations are not available in static mode
70
+ async getFileStatus() {
71
+ return { status: "unchanged" };
72
+ }
73
+ async getChanges() {
74
+ return [];
75
+ }
76
+ async commitChanges() {
77
+ throw new Error("Commit not available in static mode");
78
+ }
79
+ async pushChanges() {
80
+ throw new Error("Push not available in static mode");
81
+ }
82
+ async pullChanges() {
83
+ throw new Error("Pull not available in static mode");
84
+ }
85
+ async getCurrentBranch() {
86
+ return "main";
87
+ }
88
+ async getRemoteStatus() {
89
+ return { ahead: 0, behind: 0 };
90
+ }
91
+ }
92
+ // Development Mode Service (Full filesystem access via server)
93
+ class DevelopmentFileService {
94
+ constructor() {
95
+ this.ws = null;
96
+ this.changeCallbacks = [];
97
+ this.statusCallbacks = [];
98
+ this.branchCallbacks = [];
99
+ this.connectWebSocket();
100
+ }
101
+ connectWebSocket() {
102
+ try {
103
+ const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
104
+ const wsUrl = `${protocol}//${window.location.host}/api/git-ws`;
105
+ this.ws = new WebSocket(wsUrl);
106
+ this.ws.onopen = () => {
107
+ var _a;
108
+ console.log('Git WebSocket connected');
109
+ // Request initial state
110
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify({ type: 'get-initial-state' }));
111
+ };
112
+ this.ws.onmessage = (event) => {
113
+ try {
114
+ const data = JSON.parse(event.data);
115
+ switch (data.type) {
116
+ case 'changes':
117
+ this.changeCallbacks.forEach(callback => callback(data.changes));
118
+ break;
119
+ case 'status':
120
+ this.statusCallbacks.forEach(callback => callback(data.status));
121
+ break;
122
+ case 'branch':
123
+ this.branchCallbacks.forEach(callback => callback(data.branch));
124
+ break;
125
+ case 'error':
126
+ console.error('Git WebSocket error:', data.message);
127
+ break;
128
+ }
129
+ }
130
+ catch (error) {
131
+ console.error('Error parsing WebSocket message:', error);
132
+ }
133
+ };
134
+ this.ws.onclose = () => {
135
+ console.log('Git WebSocket disconnected, attempting to reconnect...');
136
+ setTimeout(() => this.connectWebSocket(), 3000);
137
+ };
138
+ this.ws.onerror = (error) => {
139
+ console.error('Git WebSocket error:', error);
140
+ };
141
+ }
142
+ catch (error) {
143
+ console.error('Failed to connect Git WebSocket:', error);
144
+ }
145
+ }
146
+ // Subscribe to real-time changes
147
+ onChanges(callback) {
148
+ this.changeCallbacks.push(callback);
149
+ return () => {
150
+ this.changeCallbacks = this.changeCallbacks.filter(cb => cb !== callback);
151
+ };
152
+ }
153
+ onStatusUpdate(callback) {
154
+ this.statusCallbacks.push(callback);
155
+ return () => {
156
+ this.statusCallbacks = this.statusCallbacks.filter(cb => cb !== callback);
157
+ };
158
+ }
159
+ onBranchUpdate(callback) {
160
+ this.branchCallbacks.push(callback);
161
+ return () => {
162
+ this.branchCallbacks = this.branchCallbacks.filter(cb => cb !== callback);
163
+ };
164
+ }
165
+ async readFile(path) {
166
+ const response = await fetch(`/api/files/read?path=${encodeURIComponent(path)}`);
167
+ if (!response.ok)
168
+ throw new Error(`Failed to read file: ${path}`);
169
+ return await response.text();
170
+ }
171
+ async readDirectory(path) {
172
+ const response = await fetch(`/api/files/list?path=${encodeURIComponent(path)}`);
173
+ if (!response.ok)
174
+ throw new Error(`Failed to list directory: ${path}`);
175
+ return await response.json();
176
+ }
177
+ async exists(path) {
178
+ const response = await fetch(`/api/files/exists?path=${encodeURIComponent(path)}`);
179
+ return response.ok;
180
+ }
181
+ async writeFile(path, content) {
182
+ var _a;
183
+ const response = await fetch("/api/files/write", {
184
+ method: "POST",
185
+ headers: { "Content-Type": "application/json" },
186
+ body: JSON.stringify({ path, content }),
187
+ });
188
+ if (!response.ok)
189
+ throw new Error(`Failed to write file: ${path}`);
190
+ // Notify server to update git status
191
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify({ type: 'file-changed', path }));
192
+ }
193
+ async createDirectory(path) {
194
+ var _a;
195
+ const response = await fetch("/api/files/mkdir", {
196
+ method: "POST",
197
+ headers: { "Content-Type": "application/json" },
198
+ body: JSON.stringify({ path }),
199
+ });
200
+ if (!response.ok)
201
+ throw new Error(`Failed to create directory: ${path}`);
202
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify({ type: 'file-changed', path }));
203
+ }
204
+ async deleteFile(path) {
205
+ var _a;
206
+ const response = await fetch("/api/files/delete", {
207
+ method: "POST",
208
+ headers: { "Content-Type": "application/json" },
209
+ body: JSON.stringify({ path }),
210
+ });
211
+ if (!response.ok)
212
+ throw new Error(`Failed to delete file: ${path}`);
213
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify({ type: 'file-changed', path }));
214
+ }
215
+ async getFileStatus(path) {
216
+ const response = await fetch(`/api/git/status?path=${encodeURIComponent(path)}`);
217
+ if (!response.ok)
218
+ return { status: "unchanged" };
219
+ return await response.json();
220
+ }
221
+ async getChanges() {
222
+ const response = await fetch("/api/git/changes");
223
+ if (!response.ok)
224
+ return [];
225
+ return await response.json();
226
+ }
227
+ async commitChanges(message, description) {
228
+ var _a;
229
+ const response = await fetch("/api/git/commit", {
230
+ method: "POST",
231
+ headers: { "Content-Type": "application/json" },
232
+ body: JSON.stringify({ message, description }),
233
+ });
234
+ if (!response.ok) {
235
+ const error = await response.text();
236
+ throw new Error(`Failed to commit changes: ${error}`);
237
+ }
238
+ // Request updated status after commit
239
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify({ type: 'refresh-status' }));
240
+ }
241
+ async pushChanges() {
242
+ var _a;
243
+ const response = await fetch("/api/git/push", {
244
+ method: "POST",
245
+ });
246
+ if (!response.ok) {
247
+ const error = await response.text();
248
+ throw new Error(`Failed to push changes: ${error}`);
249
+ }
250
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify({ type: 'refresh-status' }));
251
+ }
252
+ async pullChanges() {
253
+ var _a;
254
+ const response = await fetch("/api/git/pull", {
255
+ method: "POST",
256
+ });
257
+ if (!response.ok) {
258
+ const error = await response.text();
259
+ throw new Error(`Failed to pull changes: ${error}`);
260
+ }
261
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify({ type: 'refresh-status' }));
262
+ }
263
+ async getCurrentBranch() {
264
+ const response = await fetch("/api/git/branch");
265
+ if (!response.ok)
266
+ return "main";
267
+ return await response.text();
268
+ }
269
+ async getRemoteStatus() {
270
+ const response = await fetch("/api/git/remote-status");
271
+ if (!response.ok)
272
+ return { ahead: 0, behind: 0 };
273
+ return await response.json();
274
+ }
275
+ }
276
+ // Git Mode Service (isomorphic-git based)
277
+ class GitFileService {
278
+ constructor() {
279
+ this.git = null;
280
+ this.fs = null;
281
+ this.dir = '/testeranto-git';
282
+ }
283
+ async ensureGit() {
284
+ if (!this.git) {
285
+ this.git = await Promise.resolve().then(() => __importStar(require("isomorphic-git")));
286
+ this.fs = await Promise.resolve().then(() => __importStar(require("isomorphic-git/http/web")));
287
+ }
288
+ }
289
+ async ensureBufferPolyfill() {
290
+ if (typeof window !== 'undefined' && !window.Buffer) {
291
+ const buffer = await Promise.resolve().then(() => __importStar(require('buffer')));
292
+ window.Buffer = buffer.Buffer;
293
+ }
294
+ }
295
+ async readFile(path) {
296
+ await this.ensureBufferPolyfill();
297
+ await this.ensureGit();
298
+ try {
299
+ const content = await this.git.readBlob({
300
+ fs: window.fs,
301
+ dir: this.dir,
302
+ oid: await this.git.resolveRef({ fs: window.fs, dir: this.dir, ref: 'HEAD' }),
303
+ filepath: path,
304
+ });
305
+ return new TextDecoder().decode(content.blob);
306
+ }
307
+ catch (error) {
308
+ throw new Error(`Failed to read file: ${path}`);
309
+ }
310
+ }
311
+ async readDirectory(path) {
312
+ await this.ensureBufferPolyfill();
313
+ await this.ensureGit();
314
+ try {
315
+ const files = await this.git.listFiles({
316
+ fs: window.fs,
317
+ dir: this.dir,
318
+ ref: 'HEAD',
319
+ });
320
+ return files.map(name => ({
321
+ name,
322
+ path: name,
323
+ type: name.includes('.') ? 'file' : 'directory',
324
+ }));
325
+ }
326
+ catch (error) {
327
+ return [];
328
+ }
329
+ }
330
+ async exists(path) {
331
+ try {
332
+ await this.readFile(path);
333
+ return true;
334
+ }
335
+ catch (_a) {
336
+ return false;
337
+ }
338
+ }
339
+ async writeFile(path, content) {
340
+ await this.ensureBufferPolyfill();
341
+ await this.ensureGit();
342
+ // In Git mode, files are written to the virtual file system
343
+ // This would need proper implementation with IndexedDB or similar
344
+ console.log('Git mode write:', path);
345
+ }
346
+ async createDirectory(path) {
347
+ // Directories are created automatically when writing files
348
+ console.log('Git mode create directory:', path);
349
+ }
350
+ async deleteFile(path) {
351
+ await this.ensureBufferPolyfill();
352
+ await this.ensureGit();
353
+ // Mark file for deletion in next commit
354
+ console.log('Git mode delete:', path);
355
+ }
356
+ async getFileStatus(path) {
357
+ await this.ensureBufferPolyfill();
358
+ await this.ensureGit();
359
+ try {
360
+ const status = await this.git.status({
361
+ fs: window.fs,
362
+ dir: this.dir,
363
+ filepath: path,
364
+ });
365
+ return { status: status };
366
+ }
367
+ catch (_a) {
368
+ return { status: 'unchanged' };
369
+ }
370
+ }
371
+ async getChanges() {
372
+ await this.ensureBufferPolyfill();
373
+ await this.ensureGit();
374
+ try {
375
+ const statusMatrix = await this.git.statusMatrix({
376
+ fs: window.fs,
377
+ dir: this.dir,
378
+ });
379
+ return statusMatrix.map(([file, head, workdir, stage]) => {
380
+ let status = 'unchanged';
381
+ if (head === 0 && workdir === 2)
382
+ status = 'added';
383
+ else if (head === 1 && workdir === 0)
384
+ status = 'deleted';
385
+ else if (workdir === 2)
386
+ status = 'modified';
387
+ else if (head !== workdir)
388
+ status = 'modified';
389
+ return { path: file, status };
390
+ }).filter(change => change.status !== 'unchanged');
391
+ }
392
+ catch (error) {
393
+ console.warn('Failed to get changes:', error);
394
+ return [];
395
+ }
396
+ }
397
+ async commitChanges(message, description) {
398
+ await this.ensureBufferPolyfill();
399
+ await this.ensureGit();
400
+ try {
401
+ // Stage all changes
402
+ const changes = await this.getChanges();
403
+ for (const change of changes) {
404
+ if (change.status === 'deleted') {
405
+ await this.git.remove({
406
+ fs: window.fs,
407
+ dir: this.dir,
408
+ filepath: change.path,
409
+ });
410
+ }
411
+ else {
412
+ await this.git.add({
413
+ fs: window.fs,
414
+ dir: this.dir,
415
+ filepath: change.path,
416
+ });
417
+ }
418
+ }
419
+ // Commit
420
+ await this.git.commit({
421
+ fs: window.fs,
422
+ dir: this.dir,
423
+ author: { name: 'Testeranto User', email: 'user@testeranto' },
424
+ message: description ? `${message}\n\n${description}` : message,
425
+ });
426
+ }
427
+ catch (error) {
428
+ throw new Error(`Failed to commit changes: ${error instanceof Error ? error.message : 'Unknown error'}`);
429
+ }
430
+ }
431
+ async pushChanges() {
432
+ await this.ensureBufferPolyfill();
433
+ await this.ensureGit();
434
+ try {
435
+ await this.git.push({
436
+ fs: window.fs,
437
+ http: this.fs,
438
+ dir: this.dir,
439
+ remote: 'origin',
440
+ ref: 'main',
441
+ onAuth: () => ({ username: 'token' }),
442
+ });
443
+ }
444
+ catch (error) {
445
+ throw new Error(`Failed to push changes: ${error instanceof Error ? error.message : 'Unknown error'}`);
446
+ }
447
+ }
448
+ async pullChanges() {
449
+ await this.ensureBufferPolyfill();
450
+ await this.ensureGit();
451
+ try {
452
+ await this.git.pull({
453
+ fs: window.fs,
454
+ http: this.fs,
455
+ dir: this.dir,
456
+ remote: 'origin',
457
+ ref: 'main',
458
+ singleBranch: true,
459
+ onAuth: () => ({ username: 'token' }),
460
+ });
461
+ }
462
+ catch (error) {
463
+ throw new Error(`Failed to pull changes: ${error instanceof Error ? error.message : 'Unknown error'}`);
464
+ }
465
+ }
466
+ async getCurrentBranch() {
467
+ await this.ensureBufferPolyfill();
468
+ await this.ensureGit();
469
+ try {
470
+ return await this.git.currentBranch({
471
+ fs: window.fs,
472
+ dir: this.dir,
473
+ }) || 'main';
474
+ }
475
+ catch (_a) {
476
+ return 'main';
477
+ }
478
+ }
479
+ async getRemoteStatus() {
480
+ await this.ensureBufferPolyfill();
481
+ await this.ensureGit();
482
+ try {
483
+ // For now, return mock data
484
+ // In a real implementation, we'd compare local and remote branches
485
+ return { ahead: 0, behind: 0 };
486
+ }
487
+ catch (_a) {
488
+ return { ahead: 0, behind: 0 };
489
+ }
490
+ }
491
+ }
492
+ // Factory function to get the appropriate FileService based on mode
493
+ const getFileService = (mode) => {
494
+ switch (mode) {
495
+ case "static":
496
+ return new StaticFileService();
497
+ case "dev":
498
+ return new DevelopmentFileService();
499
+ case "git":
500
+ return new GitFileService();
501
+ default:
502
+ return new StaticFileService();
503
+ }
504
+ };
505
+ exports.getFileService = getFileService;
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.githubAuthService = exports.GitHubAuthService = void 0;
4
+ class GitHubAuthService {
5
+ static get CLIENT_ID() {
6
+ var _a, _b;
7
+ // Read from the global configuration
8
+ if (typeof window !== "undefined" &&
9
+ ((_b = (_a = window.testerantoConfig) === null || _a === void 0 ? void 0 : _a.githubOAuth) === null || _b === void 0 ? void 0 : _b.clientId)) {
10
+ return window.testerantoConfig.githubOAuth.clientId;
11
+ }
12
+ console.log("GitHub OAuth client ID not found in configuration");
13
+ return undefined;
14
+ }
15
+ constructor() {
16
+ this.accessToken = null;
17
+ this.user = null;
18
+ this.listeners = new Map();
19
+ this.loadStoredAuth();
20
+ }
21
+ on(event, listener) {
22
+ if (!this.listeners.has(event)) {
23
+ this.listeners.set(event, []);
24
+ }
25
+ this.listeners.get(event).push(listener);
26
+ }
27
+ off(event, listener) {
28
+ const eventListeners = this.listeners.get(event);
29
+ if (eventListeners) {
30
+ const index = eventListeners.indexOf(listener);
31
+ if (index > -1) {
32
+ eventListeners.splice(index, 1);
33
+ }
34
+ }
35
+ }
36
+ emit(event, ...args) {
37
+ const eventListeners = this.listeners.get(event);
38
+ if (eventListeners) {
39
+ eventListeners.forEach((listener) => {
40
+ try {
41
+ listener(...args);
42
+ }
43
+ catch (error) {
44
+ console.error(`Error in event listener for ${event}:`, error);
45
+ }
46
+ });
47
+ }
48
+ }
49
+ loadStoredAuth() {
50
+ const token = localStorage.getItem("github_access_token");
51
+ const userStr = localStorage.getItem("github_user");
52
+ if (token) {
53
+ this.accessToken = token;
54
+ }
55
+ if (userStr) {
56
+ this.user = JSON.parse(userStr);
57
+ }
58
+ }
59
+ get isAuthenticated() {
60
+ return !!this.accessToken;
61
+ }
62
+ get userInfo() {
63
+ return this.user;
64
+ }
65
+ get token() {
66
+ return this.accessToken;
67
+ }
68
+ initiateLogin() {
69
+ var _a, _b;
70
+ const clientId = GitHubAuthService.CLIENT_ID;
71
+ console.log("Initiating login with CLIENT_ID:", clientId);
72
+ if (!clientId) {
73
+ console.error("GitHub OAuth client ID is not configured. Please set GITHUB_CLIENT_ID environment variable.");
74
+ // Provide helpful instructions for setup
75
+ const setupInstructions = `
76
+ GitHub authentication is not configured.
77
+
78
+ To set up GitHub OAuth:
79
+
80
+ 1. Go to https://github.com/settings/developers
81
+ 2. Create a new OAuth App
82
+ 3. Set Authorization callback URL to: ${GitHubAuthService.REDIRECT_URI}
83
+ 4. Add GITHUB_CLIENT_ID to your environment variables
84
+ 5. Restart the development server
85
+
86
+ For development, you can create a .env file in the root directory with:
87
+ GITHUB_CLIENT_ID=your_client_id_here
88
+
89
+ Current environment analysis:
90
+ - process.env.GITHUB_CLIENT_ID: ${typeof process !== "undefined"
91
+ ? ((_a = process.env) === null || _a === void 0 ? void 0 : _a.GITHUB_CLIENT_ID) || "undefined"
92
+ : "process undefined"}
93
+ - window.env.GITHUB_CLIENT_ID: ${typeof window !== "undefined"
94
+ ? ((_b = window.env) === null || _b === void 0 ? void 0 : _b.GITHUB_CLIENT_ID) || "undefined"
95
+ : "window undefined"}
96
+ `;
97
+ alert(setupInstructions);
98
+ return;
99
+ }
100
+ const authUrl = `https://github.com/login/oauth/authorize?client_id=${clientId}&redirect_uri=${encodeURIComponent(GitHubAuthService.REDIRECT_URI)}&scope=${encodeURIComponent(GitHubAuthService.SCOPE)}`;
101
+ console.log("Opening auth popup:", authUrl);
102
+ // Open in a popup window
103
+ const width = 600;
104
+ const height = 700;
105
+ const left = (window.screen.width - width) / 2;
106
+ const top = (window.screen.height - height) / 2;
107
+ window.open(authUrl, 'github-auth', `width=${width},height=${height},left=${left},top=${top},resizable=yes,scrollbars=yes,status=yes`);
108
+ }
109
+ async handleCallback(code) {
110
+ try {
111
+ const response = await fetch("/api/auth/github/token", {
112
+ method: "POST",
113
+ headers: {
114
+ "Content-Type": "application/json",
115
+ },
116
+ body: JSON.stringify({ code }),
117
+ });
118
+ if (!response.ok) {
119
+ throw new Error("Failed to exchange code for token");
120
+ }
121
+ const data = await response.json();
122
+ this.accessToken = data.access_token;
123
+ // Store token
124
+ localStorage.setItem("github_access_token", this.accessToken);
125
+ // Get user info
126
+ await this.fetchUserInfo();
127
+ this.emit("authChange", true);
128
+ return true;
129
+ }
130
+ catch (error) {
131
+ console.error("Authentication failed:", error);
132
+ this.logout();
133
+ return false;
134
+ }
135
+ }
136
+ async fetchUserInfo() {
137
+ if (!this.accessToken)
138
+ return;
139
+ try {
140
+ const response = await fetch("https://api.github.com/user", {
141
+ headers: {
142
+ Authorization: `Bearer ${this.accessToken}`,
143
+ Accept: "application/vnd.github.v3+json",
144
+ },
145
+ });
146
+ if (!response.ok) {
147
+ throw new Error("Failed to fetch user info");
148
+ }
149
+ this.user = await response.json();
150
+ localStorage.setItem("github_user", JSON.stringify(this.user));
151
+ }
152
+ catch (error) {
153
+ console.error("Failed to fetch user info:", error);
154
+ }
155
+ }
156
+ logout() {
157
+ this.accessToken = null;
158
+ this.user = null;
159
+ localStorage.removeItem("github_access_token");
160
+ localStorage.removeItem("github_user");
161
+ this.emit("authChange", false);
162
+ }
163
+ isConfigured() {
164
+ const clientId = GitHubAuthService.CLIENT_ID;
165
+ console.log("Checking if configured - CLIENT_ID:", clientId);
166
+ return !!clientId;
167
+ }
168
+ async makeAuthenticatedRequest(url, options = {}) {
169
+ if (!this.accessToken) {
170
+ throw new Error("Not authenticated");
171
+ }
172
+ const headers = Object.assign({ Authorization: `Bearer ${this.accessToken}`, Accept: "application/vnd.github.v3+json" }, options.headers);
173
+ const response = await fetch(url, Object.assign(Object.assign({}, options), { headers }));
174
+ if (response.status === 401) {
175
+ this.logout();
176
+ throw new Error("Authentication expired");
177
+ }
178
+ return response;
179
+ }
180
+ }
181
+ exports.GitHubAuthService = GitHubAuthService;
182
+ GitHubAuthService.REDIRECT_URI = `${window.location.origin}/auth/github/callback`;
183
+ GitHubAuthService.SCOPE = "repo user";
184
+ exports.githubAuthService = new GitHubAuthService();