@testgorilla/tgo-coding-test 0.0.1 → 1.0.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 (354) hide show
  1. package/README.md +49 -2
  2. package/esm2022/index.mjs +12 -0
  3. package/esm2022/lib/components/code-editor/code-editor.component.mjs +335 -0
  4. package/esm2022/lib/components/code-editor/code-editor.service.mjs +72 -0
  5. package/esm2022/lib/components/code-editor/helpers/c-helper.mjs +40 -0
  6. package/esm2022/lib/components/code-editor/helpers/code-editor-helper.base.mjs +11 -0
  7. package/esm2022/lib/components/code-editor/helpers/code-editor-helper.model.mjs +2 -0
  8. package/esm2022/lib/components/code-editor/helpers/cpp-helper.mjs +41 -0
  9. package/esm2022/lib/components/code-editor/helpers/csharp-helper.mjs +42 -0
  10. package/esm2022/lib/components/code-editor/helpers/go-helper.mjs +42 -0
  11. package/esm2022/lib/components/code-editor/helpers/index.mjs +16 -0
  12. package/esm2022/lib/components/code-editor/helpers/java-helper.mjs +42 -0
  13. package/esm2022/lib/components/code-editor/helpers/javascript-helper.mjs +26 -0
  14. package/esm2022/lib/components/code-editor/helpers/kotlin-helper.mjs +42 -0
  15. package/esm2022/lib/components/code-editor/helpers/php-helper.mjs +26 -0
  16. package/esm2022/lib/components/code-editor/helpers/python-helper.mjs +26 -0
  17. package/esm2022/lib/components/code-editor/helpers/r-helper.mjs +26 -0
  18. package/esm2022/lib/components/code-editor/helpers/ruby-helper.mjs +26 -0
  19. package/esm2022/lib/components/code-editor/helpers/scala-helper.mjs +41 -0
  20. package/esm2022/lib/components/code-editor/helpers/sql-helper.mjs +34 -0
  21. package/esm2022/lib/components/code-editor/helpers/swift-helper.mjs +40 -0
  22. package/esm2022/lib/components/code-editor/helpers/typescript-helper.mjs +41 -0
  23. package/esm2022/lib/components/code-editor/models/code-editor.model.mjs +2 -0
  24. package/esm2022/lib/components/code-editor/models/coding-snapshot.model.mjs +2 -0
  25. package/esm2022/lib/components/coding-question/coding-question.component.mjs +126 -0
  26. package/esm2022/lib/components/coding-section/coding-section.component.mjs +188 -0
  27. package/esm2022/lib/components/common/truncated-text/truncated-text.component.mjs +38 -0
  28. package/esm2022/lib/components/configurations/configurations.component.mjs +97 -0
  29. package/esm2022/lib/components/instructions/instructions.component.mjs +139 -0
  30. package/esm2022/lib/components/panel/panel.component.mjs +34 -0
  31. package/esm2022/lib/components/runnable-editor/runnable-editor.component.mjs +169 -0
  32. package/esm2022/lib/components/tests/test-cases/test-cases.component.mjs +198 -0
  33. package/esm2022/lib/components/tests/test-cases-content/test-cases-content.component.mjs +96 -0
  34. package/esm2022/lib/components/tests/test-cases-status/test-cases-status.component.mjs +21 -0
  35. package/esm2022/lib/components/tests/test-results.component.mjs +127 -0
  36. package/esm2022/lib/components/tgo-coding-test/tgo-coding-test.component.mjs +280 -0
  37. package/esm2022/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.mjs +476 -0
  38. package/esm2022/lib/config/index.mjs +2 -0
  39. package/esm2022/lib/config/tgo-coding-test.config.mjs +2 -0
  40. package/esm2022/lib/config/tgo-coding-test.provider.mjs +34 -0
  41. package/esm2022/lib/config/tgo-coding-test.token.mjs +14 -0
  42. package/esm2022/lib/models/auto-saved-data.mjs +2 -0
  43. package/esm2022/lib/models/code-event.mjs +2 -0
  44. package/esm2022/lib/models/coderunner-execution-results.mjs +2 -0
  45. package/esm2022/lib/models/configs.mjs +2 -0
  46. package/esm2022/lib/models/language-change-action.mjs +2 -0
  47. package/esm2022/lib/models/lat-languages.mjs +3 -0
  48. package/esm2022/lib/models/mixpanel-events.mjs +2 -0
  49. package/esm2022/lib/models/mode.mjs +2 -0
  50. package/esm2022/lib/models/paste-data.mjs +2 -0
  51. package/esm2022/lib/models/programming-language.mjs +2 -0
  52. package/esm2022/lib/models/test-cases.mjs +7 -0
  53. package/esm2022/lib/models/theme.mjs +2 -0
  54. package/esm2022/lib/models/translations.mjs +2 -0
  55. package/esm2022/lib/models/view-mode.mjs +8 -0
  56. package/esm2022/lib/pipes/memoize-func.pipe.mjs +39 -0
  57. package/esm2022/lib/services/candidate-coding-test-services/candidature-api.service.mjs +19 -0
  58. package/esm2022/lib/services/candidate-coding-test-services/coderunner-api.service.mjs +58 -0
  59. package/esm2022/lib/services/candidate-coding-test-services/coding-test-tour.service.mjs +89 -0
  60. package/esm2022/lib/services/candidate-coding-test-services/coding-test.service.mjs +490 -0
  61. package/esm2022/lib/services/candidate-coding-test-services/index.mjs +5 -0
  62. package/esm2022/lib/services/coding-test-config.service.mjs +51 -0
  63. package/esm2022/lib/services/configurations.service.mjs +89 -0
  64. package/esm2022/lib/services/lib-coding-test.service.mjs +106 -0
  65. package/esm2022/lib/services/storage.service.mjs +624 -0
  66. package/esm2022/lib/services/test-cases.service.mjs +30 -0
  67. package/esm2022/lib/services/theme.service.mjs +36 -0
  68. package/esm2022/lib/utils/additional-languages/erlang.mjs +103 -0
  69. package/esm2022/lib/utils/resize-element.mjs +13 -0
  70. package/esm2022/lib/utils/time-to-ms.util.mjs +11 -0
  71. package/esm2022/shared/index.mjs +5 -0
  72. package/esm2022/shared/lib/components/audio-animation/audio-animation.component.mjs +114 -0
  73. package/esm2022/shared/lib/components/audio-animation/index.mjs +2 -0
  74. package/esm2022/shared/lib/components/index.mjs +3 -0
  75. package/esm2022/shared/lib/components/vimeo-video/index.mjs +2 -0
  76. package/esm2022/shared/lib/components/vimeo-video/vimeo-video.component.mjs +101 -0
  77. package/esm2022/shared/lib/models/answer.mjs +2 -0
  78. package/esm2022/shared/lib/models/assessment.mjs +2 -0
  79. package/esm2022/shared/lib/models/environment.mjs +2 -0
  80. package/esm2022/shared/lib/models/index.mjs +9 -0
  81. package/esm2022/shared/lib/models/question-component.mjs +2 -0
  82. package/esm2022/shared/lib/models/question.mjs +2 -0
  83. package/esm2022/shared/lib/models/test.mjs +2 -0
  84. package/esm2022/shared/lib/models/translations.mjs +2 -0
  85. package/esm2022/shared/lib/models/window.mjs +2 -0
  86. package/esm2022/shared/lib/services/api/api.service.mjs +97 -0
  87. package/esm2022/shared/lib/services/api/mocked-api.service.mjs +131 -0
  88. package/esm2022/shared/lib/services/environment/environment.service.mjs +13 -0
  89. package/esm2022/shared/lib/services/index.mjs +10 -0
  90. package/esm2022/shared/lib/services/localization/languages.model.mjs +19 -0
  91. package/esm2022/shared/lib/services/localization/transloco-lazy-module-utils.mjs +27 -0
  92. package/esm2022/shared/lib/services/localization/transloco-testing.module.mjs +11 -0
  93. package/esm2022/shared/lib/services/media/media.service.mjs +129 -0
  94. package/esm2022/shared/lib/services/mixpanel/mixpanel.service.mjs +30 -0
  95. package/esm2022/shared/lib/services/theme/theme.service.mjs +24 -0
  96. package/esm2022/shared/test-mocks/assessment-test.mock.mjs +112 -0
  97. package/esm2022/shared/test-mocks/index.mjs +3 -0
  98. package/esm2022/shared/test-mocks/tgo-ui.mock.mjs +39 -0
  99. package/esm2022/testgorilla-tgo-coding-test.mjs +5 -0
  100. package/fesm2022/testgorilla-tgo-coding-test.mjs +4526 -0
  101. package/fesm2022/testgorilla-tgo-coding-test.mjs.map +1 -0
  102. package/{src/index.ts → index.d.ts} +2 -19
  103. package/lib/components/code-editor/code-editor.component.d.ts +54 -0
  104. package/lib/components/code-editor/code-editor.service.d.ts +12 -0
  105. package/lib/components/code-editor/helpers/c-helper.d.ts +11 -0
  106. package/lib/components/code-editor/helpers/code-editor-helper.base.d.ts +8 -0
  107. package/lib/components/code-editor/helpers/code-editor-helper.model.d.ts +62 -0
  108. package/lib/components/code-editor/helpers/cpp-helper.d.ts +11 -0
  109. package/lib/components/code-editor/helpers/csharp-helper.d.ts +12 -0
  110. package/lib/components/code-editor/helpers/go-helper.d.ts +12 -0
  111. package/lib/components/code-editor/helpers/java-helper.d.ts +12 -0
  112. package/lib/components/code-editor/helpers/javascript-helper.d.ts +10 -0
  113. package/lib/components/code-editor/helpers/kotlin-helper.d.ts +12 -0
  114. package/lib/components/code-editor/helpers/php-helper.d.ts +10 -0
  115. package/lib/components/code-editor/helpers/python-helper.d.ts +10 -0
  116. package/lib/components/code-editor/helpers/r-helper.d.ts +10 -0
  117. package/lib/components/code-editor/helpers/ruby-helper.d.ts +10 -0
  118. package/lib/components/code-editor/helpers/scala-helper.d.ts +12 -0
  119. package/lib/components/code-editor/helpers/sql-helper.d.ts +10 -0
  120. package/lib/components/code-editor/helpers/swift-helper.d.ts +11 -0
  121. package/lib/components/code-editor/helpers/typescript-helper.d.ts +11 -0
  122. package/lib/components/code-editor/models/code-editor.model.d.ts +8 -0
  123. package/lib/components/code-editor/models/coding-snapshot.model.d.ts +4 -0
  124. package/lib/components/coding-question/coding-question.component.d.ts +45 -0
  125. package/lib/components/coding-section/coding-section.component.d.ts +52 -0
  126. package/lib/components/common/truncated-text/truncated-text.component.d.ts +13 -0
  127. package/lib/components/configurations/configurations.component.d.ts +40 -0
  128. package/lib/components/instructions/instructions.component.d.ts +48 -0
  129. package/lib/components/panel/panel.component.d.ts +12 -0
  130. package/lib/components/runnable-editor/runnable-editor.component.d.ts +53 -0
  131. package/lib/components/tests/test-cases/test-cases.component.d.ts +46 -0
  132. package/lib/components/tests/test-cases-content/test-cases-content.component.d.ts +26 -0
  133. package/lib/components/tests/test-cases-status/test-cases-status.component.d.ts +9 -0
  134. package/lib/components/tests/test-results.component.d.ts +33 -0
  135. package/lib/components/tgo-coding-test/tgo-coding-test.component.d.ts +69 -0
  136. package/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.d.ts +101 -0
  137. package/{src/lib/config/index.ts → lib/config/index.d.ts} +0 -1
  138. package/lib/config/tgo-coding-test.config.d.ts +24 -0
  139. package/{src/lib/config/tgo-coding-test.provider.ts → lib/config/tgo-coding-test.provider.d.ts} +6 -18
  140. package/lib/config/tgo-coding-test.token.d.ts +9 -0
  141. package/lib/models/auto-saved-data.d.ts +42 -0
  142. package/lib/models/code-event.d.ts +15 -0
  143. package/lib/models/coderunner-execution-results.d.ts +51 -0
  144. package/lib/models/configs.d.ts +15 -0
  145. package/lib/models/language-change-action.d.ts +4 -0
  146. package/lib/models/lat-languages.d.ts +8 -0
  147. package/lib/models/mixpanel-events.d.ts +3 -0
  148. package/lib/models/mode.d.ts +5 -0
  149. package/lib/models/paste-data.d.ts +4 -0
  150. package/lib/models/programming-language.d.ts +8 -0
  151. package/lib/models/test-cases.d.ts +67 -0
  152. package/lib/models/theme.d.ts +4 -0
  153. package/lib/models/translations.d.ts +1 -0
  154. package/lib/models/view-mode.d.ts +6 -0
  155. package/{src/lib/pipes/memoize-func.pipe.ts → lib/pipes/memoize-func.pipe.d.ts} +6 -14
  156. package/lib/services/candidate-coding-test-services/candidature-api.service.d.ts +10 -0
  157. package/lib/services/candidate-coding-test-services/coderunner-api.service.d.ts +18 -0
  158. package/lib/services/candidate-coding-test-services/coding-test-tour.service.d.ts +22 -0
  159. package/lib/services/candidate-coding-test-services/coding-test.service.d.ts +68 -0
  160. package/{src/lib/services/candidate-coding-test-services/index.ts → lib/services/candidate-coding-test-services/index.d.ts} +1 -1
  161. package/lib/services/coding-test-config.service.d.ts +38 -0
  162. package/lib/services/configurations.service.d.ts +37 -0
  163. package/lib/services/lib-coding-test.service.d.ts +69 -0
  164. package/lib/services/storage.service.d.ts +83 -0
  165. package/lib/services/test-cases.service.d.ts +12 -0
  166. package/lib/services/theme.service.d.ts +17 -0
  167. package/lib/utils/additional-languages/erlang.d.ts +37 -0
  168. package/lib/utils/resize-element.d.ts +2 -0
  169. package/lib/utils/time-to-ms.util.d.ts +1 -0
  170. package/package.json +18 -7
  171. package/shared/index.d.ts +4 -0
  172. package/shared/lib/components/audio-animation/audio-animation.component.d.ts +27 -0
  173. package/shared/lib/components/audio-animation/index.d.ts +1 -0
  174. package/shared/lib/components/index.d.ts +2 -0
  175. package/shared/lib/components/vimeo-video/index.d.ts +1 -0
  176. package/shared/lib/components/vimeo-video/vimeo-video.component.d.ts +24 -0
  177. package/shared/lib/models/answer.d.ts +17 -0
  178. package/shared/lib/models/assessment.d.ts +80 -0
  179. package/shared/lib/models/environment.d.ts +1 -0
  180. package/shared/lib/models/index.d.ts +8 -0
  181. package/shared/lib/models/question-component.d.ts +54 -0
  182. package/shared/lib/models/question.d.ts +102 -0
  183. package/shared/lib/models/test.d.ts +81 -0
  184. package/shared/lib/models/translations.d.ts +1 -0
  185. package/shared/lib/models/window.d.ts +6 -0
  186. package/shared/lib/services/api/api.service.d.ts +25 -0
  187. package/shared/lib/services/api/mocked-api.service.d.ts +35 -0
  188. package/shared/lib/services/environment/environment.service.d.ts +6 -0
  189. package/shared/lib/services/index.d.ts +9 -0
  190. package/shared/lib/services/localization/languages.model.d.ts +15 -0
  191. package/shared/lib/services/localization/transloco-lazy-module-utils.d.ts +11 -0
  192. package/shared/lib/services/localization/transloco-testing.module.d.ts +2 -0
  193. package/shared/lib/services/media/media.service.d.ts +29 -0
  194. package/shared/lib/services/mixpanel/mixpanel.service.d.ts +10 -0
  195. package/shared/lib/services/theme/theme.service.d.ts +8 -0
  196. package/shared/test-mocks/assessment-test.mock.d.ts +21 -0
  197. package/shared/test-mocks/index.d.ts +2 -0
  198. package/shared/test-mocks/tgo-ui.mock.d.ts +21 -0
  199. package/.eslintrc.json +0 -45
  200. package/jest.config.ts +0 -21
  201. package/ng-package.json +0 -14
  202. package/project.json +0 -36
  203. package/src/lib/components/.gitkeep +0 -0
  204. package/src/lib/components/code-editor/code-editor.component.html +0 -10
  205. package/src/lib/components/code-editor/code-editor.component.scss +0 -21
  206. package/src/lib/components/code-editor/code-editor.component.spec.ts +0 -136
  207. package/src/lib/components/code-editor/code-editor.component.ts +0 -369
  208. package/src/lib/components/code-editor/code-editor.mocks.ts +0 -28
  209. package/src/lib/components/code-editor/code-editor.service.spec.ts +0 -160
  210. package/src/lib/components/code-editor/code-editor.service.ts +0 -94
  211. package/src/lib/components/code-editor/helpers/c-helper.spec.ts +0 -39
  212. package/src/lib/components/code-editor/helpers/c-helper.ts +0 -51
  213. package/src/lib/components/code-editor/helpers/code-editor-helper.base.spec.ts +0 -30
  214. package/src/lib/components/code-editor/helpers/code-editor-helper.base.ts +0 -16
  215. package/src/lib/components/code-editor/helpers/code-editor-helper.mocks.ts +0 -24
  216. package/src/lib/components/code-editor/helpers/code-editor-helper.model.ts +0 -67
  217. package/src/lib/components/code-editor/helpers/cpp-helper.spec.ts +0 -40
  218. package/src/lib/components/code-editor/helpers/cpp-helper.ts +0 -52
  219. package/src/lib/components/code-editor/helpers/csharp-helper.spec.ts +0 -42
  220. package/src/lib/components/code-editor/helpers/csharp-helper.ts +0 -55
  221. package/src/lib/components/code-editor/helpers/go-helper.spec.ts +0 -41
  222. package/src/lib/components/code-editor/helpers/go-helper.ts +0 -54
  223. package/src/lib/components/code-editor/helpers/java-helper.spec.ts +0 -41
  224. package/src/lib/components/code-editor/helpers/java-helper.ts +0 -54
  225. package/src/lib/components/code-editor/helpers/javascript-helper.spec.ts +0 -39
  226. package/src/lib/components/code-editor/helpers/javascript-helper.ts +0 -32
  227. package/src/lib/components/code-editor/helpers/kotlin-helper.spec.ts +0 -41
  228. package/src/lib/components/code-editor/helpers/kotlin-helper.ts +0 -54
  229. package/src/lib/components/code-editor/helpers/php-helper.spec.ts +0 -39
  230. package/src/lib/components/code-editor/helpers/php-helper.ts +0 -32
  231. package/src/lib/components/code-editor/helpers/python-helper.spec.ts +0 -39
  232. package/src/lib/components/code-editor/helpers/python-helper.ts +0 -32
  233. package/src/lib/components/code-editor/helpers/r-helper.spec.ts +0 -39
  234. package/src/lib/components/code-editor/helpers/r-helper.ts +0 -32
  235. package/src/lib/components/code-editor/helpers/ruby-helper.spec.ts +0 -39
  236. package/src/lib/components/code-editor/helpers/ruby-helper.ts +0 -32
  237. package/src/lib/components/code-editor/helpers/scala-helper.spec.ts +0 -41
  238. package/src/lib/components/code-editor/helpers/scala-helper.ts +0 -53
  239. package/src/lib/components/code-editor/helpers/sql-helper.spec.ts +0 -87
  240. package/src/lib/components/code-editor/helpers/sql-helper.ts +0 -44
  241. package/src/lib/components/code-editor/helpers/swift-helper.spec.ts +0 -40
  242. package/src/lib/components/code-editor/helpers/swift-helper.ts +0 -51
  243. package/src/lib/components/code-editor/helpers/typescript-helper.spec.ts +0 -40
  244. package/src/lib/components/code-editor/helpers/typescript-helper.ts +0 -52
  245. package/src/lib/components/code-editor/models/code-editor.model.ts +0 -9
  246. package/src/lib/components/code-editor/models/coding-snapshot.model.ts +0 -4
  247. package/src/lib/components/coding-question/coding-question.component.html +0 -78
  248. package/src/lib/components/coding-question/coding-question.component.scss +0 -76
  249. package/src/lib/components/coding-question/coding-question.component.spec.ts +0 -85
  250. package/src/lib/components/coding-question/coding-question.component.ts +0 -102
  251. package/src/lib/components/coding-section/coding-section.component.html +0 -82
  252. package/src/lib/components/coding-section/coding-section.component.scss +0 -64
  253. package/src/lib/components/coding-section/coding-section.component.spec.ts +0 -257
  254. package/src/lib/components/coding-section/coding-section.component.ts +0 -187
  255. package/src/lib/components/coding-test.module.ts +0 -124
  256. package/src/lib/components/common/truncated-text/truncated-text.component.html +0 -6
  257. package/src/lib/components/common/truncated-text/truncated-text.component.scss +0 -18
  258. package/src/lib/components/common/truncated-text/truncated-text.component.spec.ts +0 -84
  259. package/src/lib/components/common/truncated-text/truncated-text.component.ts +0 -37
  260. package/src/lib/components/configurations/configurations.component.html +0 -57
  261. package/src/lib/components/configurations/configurations.component.scss +0 -42
  262. package/src/lib/components/configurations/configurations.component.spec.ts +0 -186
  263. package/src/lib/components/configurations/configurations.component.ts +0 -98
  264. package/src/lib/components/instructions/instructions.component.html +0 -41
  265. package/src/lib/components/instructions/instructions.component.scss +0 -167
  266. package/src/lib/components/instructions/instructions.component.spec.ts +0 -106
  267. package/src/lib/components/instructions/instructions.component.ts +0 -138
  268. package/src/lib/components/panel/panel.component.html +0 -19
  269. package/src/lib/components/panel/panel.component.scss +0 -41
  270. package/src/lib/components/panel/panel.component.spec.ts +0 -40
  271. package/src/lib/components/panel/panel.component.ts +0 -34
  272. package/src/lib/components/runnable-editor/runnable-editor.component.html +0 -75
  273. package/src/lib/components/runnable-editor/runnable-editor.component.scss +0 -55
  274. package/src/lib/components/runnable-editor/runnable-editor.component.spec.ts +0 -124
  275. package/src/lib/components/runnable-editor/runnable-editor.component.ts +0 -155
  276. package/src/lib/components/tests/test-cases/test-cases.component.html +0 -135
  277. package/src/lib/components/tests/test-cases/test-cases.component.scss +0 -220
  278. package/src/lib/components/tests/test-cases/test-cases.component.spec.ts +0 -401
  279. package/src/lib/components/tests/test-cases/test-cases.component.ts +0 -205
  280. package/src/lib/components/tests/test-cases-content/test-cases-content.component.html +0 -94
  281. package/src/lib/components/tests/test-cases-content/test-cases-content.component.scss +0 -103
  282. package/src/lib/components/tests/test-cases-content/test-cases-content.component.spec.ts +0 -122
  283. package/src/lib/components/tests/test-cases-content/test-cases-content.component.ts +0 -102
  284. package/src/lib/components/tests/test-cases-status/test-cases-status.component.html +0 -16
  285. package/src/lib/components/tests/test-cases-status/test-cases-status.component.scss +0 -49
  286. package/src/lib/components/tests/test-cases-status/test-cases-status.component.spec.ts +0 -22
  287. package/src/lib/components/tests/test-cases-status/test-cases-status.component.ts +0 -18
  288. package/src/lib/components/tests/test-results.component.html +0 -119
  289. package/src/lib/components/tests/test-results.component.scss +0 -189
  290. package/src/lib/components/tests/test-results.component.spec.ts +0 -140
  291. package/src/lib/components/tests/test-results.component.ts +0 -98
  292. package/src/lib/components/tgo-coding-test/tgo-coding-test.component.html +0 -96
  293. package/src/lib/components/tgo-coding-test/tgo-coding-test.component.scss +0 -6
  294. package/src/lib/components/tgo-coding-test/tgo-coding-test.component.spec.ts +0 -599
  295. package/src/lib/components/tgo-coding-test/tgo-coding-test.component.ts +0 -279
  296. package/src/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.html +0 -36
  297. package/src/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.scss +0 -183
  298. package/src/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.spec.ts +0 -883
  299. package/src/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.ts +0 -575
  300. package/src/lib/config/tgo-coding-test.config.ts +0 -26
  301. package/src/lib/config/tgo-coding-test.token.ts +0 -21
  302. package/src/lib/models/.gitkeep +0 -0
  303. package/src/lib/models/auto-saved-data.ts +0 -51
  304. package/src/lib/models/code-event.ts +0 -17
  305. package/src/lib/models/coderunner-execution-results.ts +0 -58
  306. package/src/lib/models/coding-lib.mocks.ts +0 -246
  307. package/src/lib/models/configs.ts +0 -18
  308. package/src/lib/models/language-change-action.ts +0 -4
  309. package/src/lib/models/lat-languages.ts +0 -12
  310. package/src/lib/models/mixpanel-events.ts +0 -3
  311. package/src/lib/models/mode.ts +0 -5
  312. package/src/lib/models/paste-data.ts +0 -4
  313. package/src/lib/models/programming-language.ts +0 -9
  314. package/src/lib/models/test-cases.ts +0 -74
  315. package/src/lib/models/theme.ts +0 -5
  316. package/src/lib/models/translations.ts +0 -1
  317. package/src/lib/models/view-mode.ts +0 -6
  318. package/src/lib/services/.gitkeep +0 -0
  319. package/src/lib/services/candidate-coding-test-services/candidature-api.service.spec.ts +0 -40
  320. package/src/lib/services/candidate-coding-test-services/candidature-api.service.ts +0 -15
  321. package/src/lib/services/candidate-coding-test-services/coderunner-api.service.spec.ts +0 -134
  322. package/src/lib/services/candidate-coding-test-services/coderunner-api.service.ts +0 -105
  323. package/src/lib/services/candidate-coding-test-services/coding-test-tour.service.spec.ts +0 -161
  324. package/src/lib/services/candidate-coding-test-services/coding-test-tour.service.ts +0 -100
  325. package/src/lib/services/candidate-coding-test-services/coding-test.service.spec.ts +0 -1524
  326. package/src/lib/services/candidate-coding-test-services/coding-test.service.ts +0 -843
  327. package/src/lib/services/coding-test-config.service.ts +0 -48
  328. package/src/lib/services/configurations.service.mocks.ts +0 -77
  329. package/src/lib/services/configurations.service.spec.ts +0 -79
  330. package/src/lib/services/configurations.service.ts +0 -111
  331. package/src/lib/services/index.ts +0 -0
  332. package/src/lib/services/lib-coding-test.service.spec.ts +0 -265
  333. package/src/lib/services/lib-coding-test.service.ts +0 -157
  334. package/src/lib/services/local-storage.service.mocks.ts +0 -22
  335. package/src/lib/services/storage.service.spec.ts +0 -1120
  336. package/src/lib/services/storage.service.ts +0 -729
  337. package/src/lib/services/test-cases.service.spec.ts +0 -53
  338. package/src/lib/services/test-cases.service.ts +0 -29
  339. package/src/lib/services/theme.service.spec.ts +0 -76
  340. package/src/lib/services/theme.service.ts +0 -34
  341. package/src/lib/styles/mixins.scss +0 -86
  342. package/src/lib/styles/styles.scss +0 -112
  343. package/src/lib/styles/variables.scss +0 -105
  344. package/src/lib/utils/.gitkeep +0 -0
  345. package/src/lib/utils/additional-languages/erlang.ts +0 -115
  346. package/src/lib/utils/resize-element.ts +0 -15
  347. package/src/lib/utils/time-to-ms.util.ts +0 -10
  348. package/src/test-setup.ts +0 -1
  349. package/tsconfig.json +0 -16
  350. package/tsconfig.lib.json +0 -12
  351. package/tsconfig.lib.prod.json +0 -9
  352. package/tsconfig.spec.json +0 -13
  353. /package/{src/assets → assets}/i18n/en.json +0 -0
  354. /package/{src/lib/components/code-editor/helpers/index.ts → lib/components/code-editor/helpers/index.d.ts} +0 -0
@@ -1,575 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import {
3
- Component,
4
- EventEmitter,
5
- HostBinding,
6
- Input,
7
- OnDestroy,
8
- OnInit,
9
- Output,
10
- signal,
11
- ViewEncapsulation,
12
- computed,
13
- inject,
14
- } from '@angular/core';
15
- import { ActivatedRoute, RouterModule } from '@angular/router';
16
- import { translate, TRANSLOCO_SCOPE, TranslocoModule, TranslocoService } from '@ngneat/transloco';
17
- import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
18
- import {
19
- ApplicationTheme,
20
- ConfirmDialogComponent,
21
- DialogComponentModule,
22
- DialogService,
23
- SnackbarComponentModule,
24
- } from '@testgorilla/tgo-ui';
25
- import {
26
- ApiService,
27
- Assessment,
28
- EnvironmentService,
29
- getAvailableLangs,
30
- IAntiCheatingState,
31
- IConfigurationState,
32
- INavigationButtonState,
33
- IQuestionDataContract,
34
- ISubmissionState,
35
- MixpanelService,
36
- Question,
37
- TestResultRead,
38
- ThemeService,
39
- TranslocoLazyModuleUtils,
40
- } from '@testgorilla/tgo-test-shared';
41
- import { GuidedTourModule, GuidedTourService } from 'ngx-guided-tour';
42
- import { interval, Observable, Subscription } from 'rxjs';
43
- import { switchMap, take, tap } from 'rxjs/operators';
44
-
45
- import { CodingTestsResultsModel } from '../../models/coderunner-execution-results';
46
- import { PasteData } from '../../models/paste-data';
47
- import {
48
- ProgrammingLanguage,
49
- ProgrammingLanguageVersioned,
50
- } from '../../models/programming-language';
51
- import { ExampleTestCase, SqlTestCase } from '../../models/test-cases';
52
- import { ROOT_TRANSLATIONS_SCOPE } from '../../models/translations';
53
- import {
54
- CodingTestTourMode,
55
- CodingTestTourService,
56
- CodingTestService,
57
- CandidatureApiService,
58
- CoderunnerApiService,
59
- } from '../../services/candidate-coding-test-services';
60
- import { CodeEditorLanguages } from '../code-editor/helpers/code-editor-helper.model';
61
- import { Modes } from '../../models/mode';
62
- import { Themes } from '../../models/theme';
63
- import { LATLanguages } from '../../models/lat-languages';
64
- import { ViewMode } from '../../models/view-mode';
65
- import { TgoCodingTestComponent } from '../tgo-coding-test/tgo-coding-test.component';
66
- import { LibCodingTestService } from '../../services/lib-coding-test.service';
67
- import { CodingTestConfigService } from '../../services/coding-test-config.service';
68
-
69
- @UntilDestroy()
70
- @Component({
71
- standalone: true,
72
- selector: 'tgo-coding-test-candidate-view',
73
- templateUrl: './tgo-coding-test-candidate-view.component.html',
74
- styleUrls: ['./tgo-coding-test-candidate-view.component.scss'],
75
- encapsulation: ViewEncapsulation.None,
76
- imports: [
77
- TranslocoModule,
78
- DialogComponentModule,
79
- SnackbarComponentModule,
80
- TgoCodingTestComponent,
81
- GuidedTourModule,
82
- CommonModule,
83
- RouterModule,
84
- ],
85
- providers: [
86
- TranslocoLazyModuleUtils.getScopeProvider(
87
- 'tgo-coding-test',
88
- getAvailableLangs(),
89
- ROOT_TRANSLATIONS_SCOPE,
90
- (lang: string) => import(`../../../assets/i18n/${lang}.json`)
91
- ),
92
- EnvironmentService,
93
- CoderunnerApiService,
94
- CodingTestService,
95
- CodingTestTourService,
96
- GuidedTourService,
97
- ThemeService,
98
- CandidatureApiService,
99
- MixpanelService,
100
-
101
- // use MockedApiService for local demo only
102
- // { provide: ApiService, useClass: MockedApiService },
103
- ApiService,
104
- ],
105
- })
106
- export class TgoCodingTestCandidateViewComponent implements OnInit, IQuestionDataContract, OnDestroy {
107
- private readonly dialogService = inject(DialogService);
108
- private readonly translationScope = inject(TRANSLOCO_SCOPE);
109
- private readonly candidatureApiService = inject(CandidatureApiService);
110
- private readonly codingTestTourService = inject(CodingTestTourService);
111
- private readonly libCodingTestService = inject(LibCodingTestService);
112
- private readonly environmentService = inject(EnvironmentService);
113
- private readonly codingTestService = inject(CodingTestService);
114
- private readonly translocoService = inject(TranslocoService);
115
- private readonly themeService = inject(ThemeService);
116
- private readonly apiService = inject(ApiService);
117
- private readonly route = inject(ActivatedRoute);
118
- private readonly codingTestConfigService = inject(CodingTestConfigService);
119
-
120
- @Input() assessment?: Assessment;
121
- @Input({ required: true }) question!: Question;
122
- @Input({ required: true }) test!: TestResultRead;
123
- @Input() expirationObservable?: Observable<void>;
124
- @Input() completeObservable?: Observable<void>;
125
- @Input() isDemo?: boolean;
126
-
127
- @Output() validationStatusChanged = new EventEmitter<any>(); // eslint-disable-line @typescript-eslint/no-explicit-any
128
- @Output() antiCheatingConfigurationChanged = new EventEmitter<IAntiCheatingState | null>();
129
- @Output() fullscreenChanged = new EventEmitter<boolean>();
130
- @Output() themeChanged = new EventEmitter<ApplicationTheme>();
131
- @Output() codingFullscreenChanged = new EventEmitter<boolean>();
132
- @Output() navigationButtonStateChanged = new EventEmitter<INavigationButtonState | null>();
133
- @Output() configurationStateChanged = new EventEmitter<IConfigurationState | null>();
134
- @Output() submissionStateChanged = new EventEmitter<ISubmissionState | null>();
135
- @Output() loadingStateChanged: EventEmitter<boolean> = new EventEmitter<boolean>();
136
-
137
- @HostBinding('class') hostClass = 'micro-question-code';
138
-
139
- private readonly subscription: Subscription = new Subscription();
140
-
141
- initCode = '';
142
- viewModes = ViewMode;
143
- mode: Modes = Modes.Running;
144
- companyColor = this.themeService.getCompanyColor();
145
- initCodesMap = new Map<CodeEditorLanguages, string>();
146
- languages = signal<LATLanguages>([]);
147
- codingLibTranslations = signal<{ [key: string]: string }>({});
148
- rawLanguages: ProgrammingLanguage[] = [];
149
- currentLanguage?: string;
150
- isSQL = false;
151
- isLAT = true;
152
- code = '';
153
- codingTestResults?: CodingTestsResultsModel;
154
- testResultsLoading = computed(() => this.codingTestService.isTestResultsLoading());
155
- exampleTestCases: ExampleTestCase[] = [];
156
- activeGuidedTourId$ = this.codingTestTourService.activeGuidedTourId$;
157
- firstTestRunComplete = false;
158
- canopyUiTheme: ApplicationTheme = 'light';
159
-
160
- private wasTourShown = false;
161
-
162
- ngOnDestroy(): void {
163
- if (!this.test?.is_preview_mode) {
164
- this.antiCheatingConfigurationChanged.emit({
165
- fullscreenTracking: false,
166
- mouseEventTracking: false,
167
- snapshotsTracking: false,
168
- });
169
- }
170
-
171
- this.subscription.unsubscribe();
172
- }
173
-
174
- ngOnInit() {
175
- this.setupState();
176
- this.handleGuidedTour();
177
-
178
- if (!this.test?.is_preview_mode) {
179
- this.antiCheatingConfigurationChanged.emit({
180
- fullscreenTracking: true,
181
- mouseEventTracking: true,
182
- snapshotsTracking: true,
183
- });
184
-
185
- this.setupAutosaveEvent();
186
- }
187
-
188
- const isNextQuestionDisabled = !this.test?.is_preview_mode;
189
-
190
- this.configurationStateChanged.emit({
191
- isSavingQuestionDisabled: isNextQuestionDisabled,
192
- });
193
-
194
- this.navigationButtonStateChanged.emit({
195
- disabled: isNextQuestionDisabled,
196
- });
197
-
198
- this.subscription.add(
199
- this.expirationObservable?.subscribe(() => {
200
- this.clearSavedCode();
201
- if (!this.test?.is_preview_mode) {
202
- this.clearLastLanguageSelected();
203
- this.submitCode();
204
- this.enableNextButton();
205
- }
206
- })
207
- );
208
-
209
- this.subscription.add(
210
- this.completeObservable?.subscribe(() => {
211
- if (!this.test?.is_preview_mode) {
212
- this.openSaveDialog();
213
- } else {
214
- this.clearSavedCode();
215
- }
216
- })
217
- );
218
-
219
- if (!this.isSQL) {
220
- this.loadAvailableLanguages();
221
- this.setTestCases();
222
- } else {
223
- this.setSqlTestCases();
224
- this.setSqlLang();
225
- this.setSqlInitCode();
226
- this.loadingStateChanged.emit(false);
227
- }
228
- this.setListeners();
229
- }
230
-
231
- openSaveDialog(): void {
232
- const dialogRef = this.dialogService.open(ConfirmDialogComponent, {
233
- applicationTheme: this.canopyUiTheme,
234
- size: 'small',
235
- panelClass: '',
236
- extraData: {
237
- title: translate('CODING_QUESTION.MODALS.FINISH_TEST.TITLE') ?? '',
238
- message: translate('CODING_QUESTION.MODALS.FINISH_TEST.MESSAGE') ?? '',
239
- confirmButtonText: translate('CODING_QUESTION.MODALS.FINISH_TEST.SUBMIT') ?? '',
240
- cancelButtonText: translate('CODING_QUESTION.MODALS.FINISH_TEST.CANCEL') ?? '',
241
- color: this.companyColor,
242
- },
243
- });
244
-
245
- dialogRef.afterClosed().subscribe(result => {
246
- if (!result) {
247
- return;
248
- }
249
-
250
- this.clearSavedCode();
251
- this.clearLastLanguageSelected();
252
- this.submitCode();
253
- this.enableNextButton();
254
- });
255
- }
256
-
257
- private clearLastLanguageSelected(): void {
258
- this.libCodingTestService.clearLastLanguageSelected();
259
- }
260
-
261
- private clearSavedCode() {
262
- this.libCodingTestService.triggerClearSavedCode();
263
- }
264
-
265
- private submitCode() {
266
- if (this.code) {
267
- this.submissionStateChanged?.emit({
268
- text: this.code,
269
- language: this.getVersionedLanguage(),
270
- });
271
- }
272
- }
273
-
274
- private getVersionedLanguage(): string | undefined {
275
- const language = this.currentLanguage;
276
-
277
- if (!language) {
278
- return;
279
- }
280
-
281
- if (this.isSQL) {
282
- return ProgrammingLanguageVersioned.SQLite;
283
- }
284
-
285
- return `${language}-${this.libCodingTestService.getVersion()}`;
286
- }
287
-
288
- private enableNextButton(): void {
289
- this.configurationStateChanged.emit({
290
- isSavingQuestionDisabled: false,
291
- });
292
- }
293
-
294
- languageChange(selectedLangName: CodeEditorLanguages) {
295
- const selectedLang = this.rawLanguages.filter(
296
- language => language.name === selectedLangName
297
- )[0];
298
- this.codingTestService.handleLanguageChangeModal(
299
- this.question.id,
300
- selectedLang,
301
- this.canopyUiTheme,
302
- this.companyColor
303
- );
304
- }
305
-
306
- updateCode(code: string): void {
307
- this.code = code;
308
- }
309
-
310
- runTest(): void {
311
- this.codingTestService.runTest(
312
- this.question.id,
313
- this.code,
314
- this.isLAT,
315
- this.isSQL,
316
- false,
317
- !!this.test.is_preview_mode,
318
- this.question.question_id,
319
- this.test.id,
320
- this.test
321
- );
322
-
323
- if (!this.firstTestRunComplete) {
324
- this.navigationButtonStateChanged.emit({
325
- disabled: false,
326
- });
327
-
328
- this.firstTestRunComplete = true;
329
- }
330
- }
331
-
332
- screenshotPaste(event: PasteData): void {
333
- if (event.type !== 'paste') {
334
- return;
335
- }
336
-
337
- this.codingTestService
338
- .sendCopypasteEvent$(this.code, event.data, this.question.id)
339
- .pipe(take(1))
340
- .subscribe();
341
- }
342
-
343
- private setupAutosaveEvent(): void {
344
- this.subscription.add(
345
- interval(5000)
346
- .pipe(
347
- untilDestroyed(this),
348
- switchMap(() => this.codingTestService.sendAutosaveEvent$(this.code, this.question.id))
349
- )
350
- .subscribe()
351
- );
352
- }
353
-
354
- private setupState(): void {
355
- this.setApiParams();
356
- this.setCodingLibTranslations();
357
- this.setIsSQL();
358
- this.setIsLat();
359
- this.setMode();
360
- }
361
-
362
- private setCodingLibTranslations() {
363
- // TRANSLOCO_SCOPE is passed here to make sure that translation scope is resolved by the library
364
- this.translocoService
365
- .selectTranslateObject(`CODING_LIB`, {}, this.translationScope as string)
366
- .pipe(take(1))
367
- .subscribe(translations => {
368
- this.codingLibTranslations.set(translations);
369
- });
370
- }
371
-
372
- private setApiParams(): void {
373
- const invitationUuid = this.route.snapshot.firstChild?.url[0].path || '';
374
- const contentLanguage = this.assessment?.locale ?? 'en';
375
- const apiUrl = this.codingTestConfigService.getApiUrl();
376
-
377
- this.apiService.setParams(invitationUuid, contentLanguage, ROOT_TRANSLATIONS_SCOPE, apiUrl);
378
- }
379
-
380
- private setIsSQL(): void {
381
- this.isSQL = this.question?.context.code_language === 'sql';
382
- this.codingTestService.setIsSQLTest(this.isSQL);
383
- }
384
-
385
- private setSqlInitCode(): void {
386
- this.initCode = this.question?.context.initial_code;
387
- }
388
-
389
- private setSqlLang(): void {
390
- const sqlLanguage = this.question?.context.code_language as CodeEditorLanguages;
391
- this.languages.set([
392
- {
393
- label: 'nonLAT',
394
- value: sqlLanguage,
395
- },
396
- ]);
397
- this.currentLanguage = sqlLanguage;
398
- }
399
-
400
- private setIsLat(): void {
401
- // todo: add response field if possible ?
402
- // this.isLAT = this.test?.is_language_agnostic_test ?? false;
403
- this.isLAT = !this.isSQL;
404
- }
405
-
406
- private setMode(): void {
407
- this.mode = this.test?.is_preview_mode ? Modes.Preview : Modes.Running;
408
- }
409
-
410
- private listenGuidedTourStart(): void {
411
- this.libCodingTestService.startGuidedTour$.pipe(untilDestroyed(this)).subscribe(() => {
412
- const guidedTourMode = this.test?.is_preview_mode
413
- ? CodingTestTourMode.PracticeQuestion
414
- : CodingTestTourMode.RealQuestion;
415
-
416
- this.codingTestTourService.init(guidedTourMode);
417
- });
418
- }
419
-
420
- private handleGuidedTour() {
421
- if (!this.environmentService.isMobile && !this.wasTourShown && this.test?.is_preview_mode) {
422
- const delayForGuidedTour = 1500;
423
- setTimeout(() => {
424
- this.codingTestTourService.init(CodingTestTourMode.PracticeQuestion);
425
- this.wasTourShown = true;
426
- }, delayForGuidedTour);
427
- }
428
- }
429
-
430
- private getAllLanguages(): ProgrammingLanguage[] {
431
- const boilerplates = this.question?.context.boilerplates ?? [];
432
- return boilerplates.map(({ programming_language }) => programming_language);
433
- }
434
-
435
- private loadAvailableLanguages(): void {
436
- this.candidatureApiService
437
- .getAvailableLanguages$()
438
- .pipe(
439
- take(1),
440
- tap(availableLangsIds => {
441
- const languages = this.getAllLanguages();
442
- const areAllLangsAvailable = availableLangsIds.length === 0;
443
-
444
- this.rawLanguages = areAllLangsAvailable
445
- ? languages
446
- : languages.filter(({ id }) => id !== undefined && availableLangsIds.includes(id));
447
- this.languages.set(
448
- this.rawLanguages.map(language => ({
449
- label:
450
- typeof language.name === 'string' && language.name.length > 0
451
- ? language.name.charAt(0).toUpperCase() + language.name.slice(1)
452
- : 'Unknown',
453
- value: language.name as CodeEditorLanguages,
454
- version: language.version,
455
- }))
456
- );
457
- }),
458
- tap(() => {
459
- this.loadingStateChanged.emit(false);
460
- }),
461
- tap(() => {
462
- const boilerplates = this.question?.context.boilerplates ?? [];
463
- boilerplates.forEach(boilerplate => {
464
- if (boilerplate.programming_language.name) {
465
- this.initCodesMap.set(
466
- boilerplate.programming_language.name as CodeEditorLanguages,
467
- boilerplate.code
468
- );
469
- }
470
- });
471
- }),
472
- switchMap(() => this.libCodingTestService.currentLanguage$),
473
- tap((language: CodeEditorLanguages) => {
474
- const currentLang = this.rawLanguages.find(x => x.name === language);
475
- if (currentLang) {
476
- this.codingTestService.setCurrentLanguageLAT(currentLang);
477
- }
478
- const initCode = this.initCodesMap.get(language);
479
- if (initCode) {
480
- this.initCode = initCode;
481
- this.updateCode(this.initCode);
482
- }
483
- })
484
- )
485
- .subscribe(() => {
486
- this.libCodingTestService.setBoilerplateLoadingStatus(false);
487
- });
488
- }
489
-
490
- private listenThemeChange(): void {
491
- this.libCodingTestService.themeChanged$.pipe(untilDestroyed(this)).subscribe(theme => {
492
- this.canopyUiTheme = theme === Themes.Dark ? 'dark' : 'light';
493
- this.themeChanged.emit(this.canopyUiTheme);
494
- });
495
- }
496
-
497
- private listenFullscreenChange(): void {
498
- this.libCodingTestService.isFullscreen$
499
- .pipe(untilDestroyed(this))
500
- .subscribe(isFullscreen => this.fullscreenChanged.emit(isFullscreen));
501
- }
502
-
503
- private listenDeleteCustomTestCases(): void {
504
- this.codingTestService
505
- .listenDeleteCustomTestCases()
506
- .pipe(untilDestroyed(this))
507
- .subscribe(({ index }) => {
508
- this.codingTestService.handleDeleteTestCaseModal(
509
- index,
510
- this.canopyUiTheme,
511
- this.companyColor
512
- );
513
- });
514
- }
515
-
516
- private listenLanguageChange(): void {
517
- this.libCodingTestService.currentLanguage$
518
- .pipe(untilDestroyed(this))
519
- .subscribe((language: CodeEditorLanguages) => {
520
- this.currentLanguage = language;
521
- const code = this.initCodesMap.get(language);
522
- if (code) {
523
- this.initCode = code;
524
- } else {
525
- this.initCode = '';
526
- console.warn(`No initial code found for language: ${language}`);
527
- }
528
- });
529
- }
530
-
531
- private listenResetCode(): void {
532
- this.codingTestService
533
- .listenCodingTestChanges()
534
- .pipe(untilDestroyed(this))
535
- .subscribe(() => {
536
- this.codingTestService.handleResetCodeModal(this.canopyUiTheme, this.companyColor);
537
- });
538
- }
539
-
540
- private listenTestResults(): void {
541
- this.codingTestService.codingTestResults$.pipe(untilDestroyed(this)).subscribe(results => {
542
- this.codingTestResults = results;
543
- });
544
- }
545
-
546
- private setSqlTestCases(): void {
547
- const testCases = this.question?.context?.sql_testcases.map(testCase => ({
548
- ...testCase,
549
- post_sql: testCase.post_sql || '',
550
- initial_sql: this.question?.context?.initial_sql || '',
551
- })) as SqlTestCase[];
552
- this.codingTestService.setSqlTestCases(testCases);
553
- this.exampleTestCases = testCases.map(this.codingTestService.transformToExampleSQLTestCase);
554
- }
555
-
556
- private setTestCases(): void {
557
- this.exampleTestCases = this.question?.context?.testcases?.map(
558
- this.codingTestService.transformToExampleLATtestCase
559
- );
560
- }
561
-
562
- private setListeners(): void {
563
- this.listenGuidedTourStart();
564
- this.listenFullscreenChange();
565
- this.listenThemeChange();
566
- this.listenResetCode();
567
- this.codingTestService.trackConfigChanged(!!this.test?.is_preview_mode);
568
- this.listenTestResults();
569
- if (this.isLAT) {
570
- this.listenDeleteCustomTestCases();
571
- this.listenLanguageChange();
572
- }
573
- }
574
- }
575
-
@@ -1,26 +0,0 @@
1
- /**
2
- * Configuration interface for the TGO Coding Test library.
3
- *
4
- * This interface defines the runtime configuration that must be provided
5
- * by the consuming application. The library does not hold environment
6
- * variables itself; instead, it receives them from the host application
7
- * through dependency injection.
8
- */
9
- export interface TgoCodingTestConfig {
10
- /**
11
- * The base URL for the main API endpoint.
12
- * This is required for the library to communicate with the main API service.
13
- *
14
- * Example: 'https://api-talent-staging.testgorilla.com/api/'
15
- */
16
- apiUrl: string;
17
-
18
- /**
19
- * The base URL for the CodeRunner V2 API endpoint.
20
- * This is required for the library to communicate with the code execution service.
21
- *
22
- * Example: 'https://cr-v2-staging.testgorilla.com'
23
- */
24
- coderunnerV2Endpoint: string;
25
- }
26
-
@@ -1,21 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { TgoCodingTestConfig } from './tgo-coding-test.config';
3
-
4
- /**
5
- * Injection token for the TGO Coding Test library configuration.
6
- *
7
- * This token is used to inject the runtime configuration provided
8
- * by the consuming application into library services.
9
- */
10
- export const TGO_CODING_TEST_CONFIG = new InjectionToken<TgoCodingTestConfig>(
11
- 'TGO_CODING_TEST_CONFIG',
12
- {
13
- providedIn: 'root',
14
- factory: () => {
15
- throw new Error(
16
- 'TGO_CODING_TEST_CONFIG must be provided. Use provideTgoCodingTest() in your app.config.ts or component providers.'
17
- );
18
- },
19
- }
20
- );
21
-
File without changes
@@ -1,51 +0,0 @@
1
- import { CodeEditorLanguages } from '../components/code-editor/helpers/code-editor-helper.model';
2
- import { Config } from './configs';
3
- import { CustomTestCase, ExampleTestCase } from './test-cases';
4
-
5
- export type TestData = {
6
- code: {
7
- [key in CodeEditorLanguages]?: string;
8
- };
9
- testCasesLAT?: (CustomTestCase | ExampleTestCase)[];
10
- lastModified?: number; // timestamp when this entry was last modified
11
- };
12
-
13
- // For v2 schema
14
- export type QuestionData = {
15
- preview?: TestData;
16
- actual?: TestData;
17
- lastModified?: number;
18
- };
19
-
20
- // Version 1 schema - original
21
- export type AutoSavedDataV1 = {
22
- config: Config;
23
- isFullscreen: boolean;
24
- assessments: {
25
- [key: string]: TestData;
26
- };
27
- lastLanguageLAT?: {
28
- value: CodeEditorLanguages;
29
- version: string;
30
- };
31
- };
32
-
33
- // Version 2 schema - separated by questionId
34
- export type AutoSavedDataV2 = {
35
- version: 2;
36
- config: Config;
37
- isFullscreen: boolean;
38
- assessments: {
39
- [assessmentId: string]: {
40
- [questionId: string]: QuestionData;
41
- };
42
- };
43
- lastLanguageLAT?: {
44
- value: CodeEditorLanguages;
45
- version: string;
46
- } | null;
47
- lastModified: number;
48
- };
49
-
50
- // Current version
51
- export type AutoSavedData = AutoSavedDataV2;
@@ -1,17 +0,0 @@
1
- export interface CodeEvent {
2
- language: string;
3
- code: string;
4
- extra_payload: string;
5
- event_type: CodeEventTypeEnum;
6
- attempt_id: string | null;
7
- question_result_id: number;
8
- }
9
-
10
- export interface CodeEventResponse extends CodeEvent {
11
- id: string;
12
- created_at: string;
13
- updated_at: string;
14
- }
15
-
16
- type CodeEventTypeEnum =
17
- 'AUTOSAVE' | 'SWITCH' | 'COPYPASTE' | 'ATTEMPT';