reviewflow 3.6.0 → 3.8.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 (598) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/config/projectConfig.d.ts +2 -0
  3. package/dist/config/projectConfig.d.ts.map +1 -1
  4. package/dist/config/projectConfig.js +17 -0
  5. package/dist/config/projectConfig.js.map +1 -1
  6. package/dist/entities/backfill/backfillProgress.d.ts +7 -0
  7. package/dist/entities/backfill/backfillProgress.d.ts.map +1 -0
  8. package/dist/entities/backfill/backfillProgress.js +2 -0
  9. package/dist/entities/backfill/backfillProgress.js.map +1 -0
  10. package/dist/entities/cleanup/retentionPolicy.valueObject.d.ts +8 -0
  11. package/dist/entities/cleanup/retentionPolicy.valueObject.d.ts.map +1 -0
  12. package/dist/entities/cleanup/retentionPolicy.valueObject.js +21 -0
  13. package/dist/entities/cleanup/retentionPolicy.valueObject.js.map +1 -0
  14. package/dist/entities/diffStats/diffStats.d.ts +6 -0
  15. package/dist/entities/diffStats/diffStats.d.ts.map +1 -0
  16. package/dist/entities/diffStats/diffStats.js +2 -0
  17. package/dist/entities/diffStats/diffStats.js.map +1 -0
  18. package/dist/entities/diffStats/diffStatsFetch.gateway.d.ts +5 -0
  19. package/dist/entities/diffStats/diffStatsFetch.gateway.d.ts.map +1 -0
  20. package/dist/entities/diffStats/diffStatsFetch.gateway.js +2 -0
  21. package/dist/entities/diffStats/diffStatsFetch.gateway.js.map +1 -0
  22. package/dist/entities/insight/aiInsight.d.ts +6 -0
  23. package/dist/entities/insight/aiInsight.d.ts.map +1 -0
  24. package/dist/entities/insight/aiInsight.js +2 -0
  25. package/dist/entities/insight/aiInsight.js.map +1 -0
  26. package/dist/entities/insight/aiInsight.schema.d.ts +55 -0
  27. package/dist/entities/insight/aiInsight.schema.d.ts.map +1 -0
  28. package/dist/entities/insight/aiInsight.schema.js +25 -0
  29. package/dist/entities/insight/aiInsight.schema.js.map +1 -0
  30. package/dist/entities/insight/developerInsight.d.ts +8 -0
  31. package/dist/entities/insight/developerInsight.d.ts.map +1 -0
  32. package/dist/entities/insight/developerInsight.guard.d.ts +221 -0
  33. package/dist/entities/insight/developerInsight.guard.d.ts.map +1 -0
  34. package/dist/entities/insight/developerInsight.guard.js +13 -0
  35. package/dist/entities/insight/developerInsight.guard.js.map +1 -0
  36. package/dist/entities/insight/developerInsight.js +2 -0
  37. package/dist/entities/insight/developerInsight.js.map +1 -0
  38. package/dist/entities/insight/developerInsight.schema.d.ts +157 -0
  39. package/dist/entities/insight/developerInsight.schema.d.ts.map +1 -0
  40. package/dist/entities/insight/developerInsight.schema.js +43 -0
  41. package/dist/entities/insight/developerInsight.schema.js.map +1 -0
  42. package/dist/entities/insight/developerTitle.d.ts +12 -0
  43. package/dist/entities/insight/developerTitle.d.ts.map +1 -0
  44. package/dist/entities/insight/developerTitle.js +11 -0
  45. package/dist/entities/insight/developerTitle.js.map +1 -0
  46. package/dist/entities/insight/insightCategory.d.ts +10 -0
  47. package/dist/entities/insight/insightCategory.d.ts.map +1 -0
  48. package/dist/entities/insight/insightCategory.js +4 -0
  49. package/dist/entities/insight/insightCategory.js.map +1 -0
  50. package/dist/entities/insight/insightTrend.d.ts +9 -0
  51. package/dist/entities/insight/insightTrend.d.ts.map +1 -0
  52. package/dist/entities/insight/insightTrend.js +4 -0
  53. package/dist/entities/insight/insightTrend.js.map +1 -0
  54. package/dist/entities/insight/insights.gateway.d.ts +6 -0
  55. package/dist/entities/insight/insights.gateway.d.ts.map +1 -0
  56. package/dist/entities/insight/insights.gateway.js +2 -0
  57. package/dist/entities/insight/insights.gateway.js.map +1 -0
  58. package/dist/entities/insight/persistedInsightsData.d.ts +5 -0
  59. package/dist/entities/insight/persistedInsightsData.d.ts.map +1 -0
  60. package/dist/entities/insight/persistedInsightsData.guard.d.ts +271 -0
  61. package/dist/entities/insight/persistedInsightsData.guard.d.ts.map +1 -0
  62. package/dist/entities/insight/persistedInsightsData.guard.js +13 -0
  63. package/dist/entities/insight/persistedInsightsData.guard.js.map +1 -0
  64. package/dist/entities/insight/persistedInsightsData.js +2 -0
  65. package/dist/entities/insight/persistedInsightsData.js.map +1 -0
  66. package/dist/entities/insight/persistedInsightsData.schema.d.ts +84 -0
  67. package/dist/entities/insight/persistedInsightsData.schema.d.ts.map +1 -0
  68. package/dist/entities/insight/persistedInsightsData.schema.js +40 -0
  69. package/dist/entities/insight/persistedInsightsData.schema.js.map +1 -0
  70. package/dist/entities/insight/teamInsight.d.ts +5 -0
  71. package/dist/entities/insight/teamInsight.d.ts.map +1 -0
  72. package/dist/entities/insight/teamInsight.guard.d.ts +71 -0
  73. package/dist/entities/insight/teamInsight.guard.d.ts.map +1 -0
  74. package/dist/entities/insight/teamInsight.guard.js +13 -0
  75. package/dist/entities/insight/teamInsight.guard.js.map +1 -0
  76. package/dist/entities/insight/teamInsight.js +2 -0
  77. package/dist/entities/insight/teamInsight.js.map +1 -0
  78. package/dist/entities/insight/teamInsight.schema.d.ts +31 -0
  79. package/dist/entities/insight/teamInsight.schema.d.ts.map +1 -0
  80. package/dist/entities/insight/teamInsight.schema.js +17 -0
  81. package/dist/entities/insight/teamInsight.schema.js.map +1 -0
  82. package/dist/entities/packageVersion/packageVersion.d.ts +21 -0
  83. package/dist/entities/packageVersion/packageVersion.d.ts.map +1 -0
  84. package/dist/entities/packageVersion/packageVersion.gateway.d.ts +4 -0
  85. package/dist/entities/packageVersion/packageVersion.gateway.d.ts.map +1 -0
  86. package/dist/entities/packageVersion/packageVersion.gateway.js +2 -0
  87. package/dist/entities/packageVersion/packageVersion.gateway.js.map +1 -0
  88. package/dist/entities/packageVersion/packageVersion.guard.d.ts +7 -0
  89. package/dist/entities/packageVersion/packageVersion.guard.d.ts.map +1 -0
  90. package/dist/entities/packageVersion/packageVersion.guard.js +13 -0
  91. package/dist/entities/packageVersion/packageVersion.guard.js.map +1 -0
  92. package/dist/entities/packageVersion/packageVersion.js +2 -0
  93. package/dist/entities/packageVersion/packageVersion.js.map +1 -0
  94. package/dist/entities/packageVersion/packageVersion.schema.d.ts +12 -0
  95. package/dist/entities/packageVersion/packageVersion.schema.d.ts.map +1 -0
  96. package/dist/entities/packageVersion/packageVersion.schema.js +11 -0
  97. package/dist/entities/packageVersion/packageVersion.schema.js.map +1 -0
  98. package/dist/entities/packageVersion/selfUpdateCommand.gateway.d.ts +9 -0
  99. package/dist/entities/packageVersion/selfUpdateCommand.gateway.d.ts.map +1 -0
  100. package/dist/entities/packageVersion/selfUpdateCommand.gateway.js +2 -0
  101. package/dist/entities/packageVersion/selfUpdateCommand.gateway.js.map +1 -0
  102. package/dist/entities/packageVersion/versionCache.gateway.d.ts +7 -0
  103. package/dist/entities/packageVersion/versionCache.gateway.d.ts.map +1 -0
  104. package/dist/entities/packageVersion/versionCache.gateway.js +2 -0
  105. package/dist/entities/packageVersion/versionCache.gateway.js.map +1 -0
  106. package/dist/entities/review/reviewFile.gateway.d.ts +18 -0
  107. package/dist/entities/review/reviewFile.gateway.d.ts.map +1 -0
  108. package/dist/entities/review/reviewFile.gateway.js +2 -0
  109. package/dist/entities/review/reviewFile.gateway.js.map +1 -0
  110. package/dist/entities/stats/projectStats.d.ts +39 -0
  111. package/dist/entities/stats/projectStats.d.ts.map +1 -0
  112. package/dist/entities/stats/projectStats.js +2 -0
  113. package/dist/entities/stats/projectStats.js.map +1 -0
  114. package/dist/entities/stats/recalculateBody.guard.d.ts +11 -0
  115. package/dist/entities/stats/recalculateBody.guard.d.ts.map +1 -0
  116. package/dist/entities/stats/recalculateBody.guard.js +9 -0
  117. package/dist/entities/stats/recalculateBody.guard.js.map +1 -0
  118. package/dist/entities/stats/stats.gateway.d.ts +7 -0
  119. package/dist/entities/stats/stats.gateway.d.ts.map +1 -0
  120. package/dist/entities/stats/stats.gateway.js +2 -0
  121. package/dist/entities/stats/stats.gateway.js.map +1 -0
  122. package/dist/entities/tracking/reviewEvent.d.ts +2 -0
  123. package/dist/entities/tracking/reviewEvent.d.ts.map +1 -1
  124. package/dist/entities/tracking/reviewRequestTracking.gateway.d.ts +19 -0
  125. package/dist/entities/tracking/reviewRequestTracking.gateway.d.ts.map +1 -0
  126. package/dist/entities/tracking/reviewRequestTracking.gateway.js +2 -0
  127. package/dist/entities/tracking/reviewRequestTracking.gateway.js.map +1 -0
  128. package/dist/frameworks/claude/claudeInsightsInvoker.d.ts +3 -0
  129. package/dist/frameworks/claude/claudeInsightsInvoker.d.ts.map +1 -0
  130. package/dist/frameworks/claude/claudeInsightsInvoker.js +58 -0
  131. package/dist/frameworks/claude/claudeInsightsInvoker.js.map +1 -0
  132. package/dist/frameworks/claude/claudeInvoker.d.ts.map +1 -1
  133. package/dist/frameworks/claude/claudeInvoker.js +15 -1
  134. package/dist/frameworks/claude/claudeInvoker.js.map +1 -1
  135. package/dist/frameworks/scheduler/cleanupScheduler.d.ts +16 -0
  136. package/dist/frameworks/scheduler/cleanupScheduler.d.ts.map +1 -0
  137. package/dist/frameworks/scheduler/cleanupScheduler.js +35 -0
  138. package/dist/frameworks/scheduler/cleanupScheduler.js.map +1 -0
  139. package/dist/interface-adapters/controllers/http/cleanup.routes.d.ts +16 -0
  140. package/dist/interface-adapters/controllers/http/cleanup.routes.d.ts.map +1 -0
  141. package/dist/interface-adapters/controllers/http/cleanup.routes.js +44 -0
  142. package/dist/interface-adapters/controllers/http/cleanup.routes.js.map +1 -0
  143. package/dist/interface-adapters/controllers/http/health.routes.d.ts +3 -1
  144. package/dist/interface-adapters/controllers/http/health.routes.d.ts.map +1 -1
  145. package/dist/interface-adapters/controllers/http/health.routes.js +5 -1
  146. package/dist/interface-adapters/controllers/http/health.routes.js.map +1 -1
  147. package/dist/interface-adapters/controllers/http/insights.routes.d.ts +20 -0
  148. package/dist/interface-adapters/controllers/http/insights.routes.d.ts.map +1 -0
  149. package/dist/interface-adapters/controllers/http/insights.routes.js +73 -0
  150. package/dist/interface-adapters/controllers/http/insights.routes.js.map +1 -0
  151. package/dist/interface-adapters/controllers/http/mrTrackingAdvanced.routes.d.ts.map +1 -1
  152. package/dist/interface-adapters/controllers/http/mrTrackingAdvanced.routes.js +13 -2
  153. package/dist/interface-adapters/controllers/http/mrTrackingAdvanced.routes.js.map +1 -1
  154. package/dist/interface-adapters/controllers/http/settings.routes.d.ts.map +1 -1
  155. package/dist/interface-adapters/controllers/http/settings.routes.js +3 -0
  156. package/dist/interface-adapters/controllers/http/settings.routes.js.map +1 -1
  157. package/dist/interface-adapters/controllers/http/stats.routes.d.ts +20 -6
  158. package/dist/interface-adapters/controllers/http/stats.routes.d.ts.map +1 -1
  159. package/dist/interface-adapters/controllers/http/stats.routes.js +35 -2
  160. package/dist/interface-adapters/controllers/http/stats.routes.js.map +1 -1
  161. package/dist/interface-adapters/controllers/http/version.routes.d.ts +19 -0
  162. package/dist/interface-adapters/controllers/http/version.routes.d.ts.map +1 -0
  163. package/dist/interface-adapters/controllers/http/version.routes.js +21 -0
  164. package/dist/interface-adapters/controllers/http/version.routes.js.map +1 -0
  165. package/dist/interface-adapters/controllers/webhook/github.controller.d.ts +2 -0
  166. package/dist/interface-adapters/controllers/webhook/github.controller.d.ts.map +1 -1
  167. package/dist/interface-adapters/controllers/webhook/github.controller.js +9 -3
  168. package/dist/interface-adapters/controllers/webhook/github.controller.js.map +1 -1
  169. package/dist/interface-adapters/controllers/webhook/gitlab.controller.d.ts +2 -0
  170. package/dist/interface-adapters/controllers/webhook/gitlab.controller.d.ts.map +1 -1
  171. package/dist/interface-adapters/controllers/webhook/gitlab.controller.js +17 -5
  172. package/dist/interface-adapters/controllers/webhook/gitlab.controller.js.map +1 -1
  173. package/dist/interface-adapters/gateways/diffStatsFetch.github.gateway.d.ts +10 -0
  174. package/dist/interface-adapters/gateways/diffStatsFetch.github.gateway.d.ts.map +1 -0
  175. package/dist/interface-adapters/gateways/diffStatsFetch.github.gateway.js +26 -0
  176. package/dist/interface-adapters/gateways/diffStatsFetch.github.gateway.js.map +1 -0
  177. package/dist/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.d.ts +10 -0
  178. package/dist/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.d.ts.map +1 -0
  179. package/dist/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.js +28 -0
  180. package/dist/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.js.map +1 -0
  181. package/dist/interface-adapters/gateways/fileSystem/insights.fileSystem.d.ts +7 -0
  182. package/dist/interface-adapters/gateways/fileSystem/insights.fileSystem.d.ts.map +1 -0
  183. package/dist/interface-adapters/gateways/fileSystem/insights.fileSystem.js +33 -0
  184. package/dist/interface-adapters/gateways/fileSystem/insights.fileSystem.js.map +1 -0
  185. package/dist/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.d.ts +7 -0
  186. package/dist/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.d.ts.map +1 -0
  187. package/dist/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.js +47 -0
  188. package/dist/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.js.map +1 -0
  189. package/dist/interface-adapters/gateways/fileSystem/stats.fileSystem.d.ts +2 -2
  190. package/dist/interface-adapters/gateways/fileSystem/stats.fileSystem.d.ts.map +1 -1
  191. package/dist/interface-adapters/gateways/packageVersion.npm.gateway.d.ts +7 -0
  192. package/dist/interface-adapters/gateways/packageVersion.npm.gateway.d.ts.map +1 -0
  193. package/dist/interface-adapters/gateways/packageVersion.npm.gateway.js +25 -0
  194. package/dist/interface-adapters/gateways/packageVersion.npm.gateway.js.map +1 -0
  195. package/dist/interface-adapters/gateways/reviewFile.gateway.d.ts +1 -17
  196. package/dist/interface-adapters/gateways/reviewFile.gateway.d.ts.map +1 -1
  197. package/dist/interface-adapters/gateways/reviewLogFile.gateway.d.ts +12 -0
  198. package/dist/interface-adapters/gateways/reviewLogFile.gateway.d.ts.map +1 -0
  199. package/dist/interface-adapters/gateways/reviewLogFile.gateway.js +2 -0
  200. package/dist/interface-adapters/gateways/reviewLogFile.gateway.js.map +1 -0
  201. package/dist/interface-adapters/gateways/reviewRequestTracking.gateway.d.ts +1 -18
  202. package/dist/interface-adapters/gateways/reviewRequestTracking.gateway.d.ts.map +1 -1
  203. package/dist/interface-adapters/gateways/selfUpdate.cli.gateway.d.ts +20 -0
  204. package/dist/interface-adapters/gateways/selfUpdate.cli.gateway.d.ts.map +1 -0
  205. package/dist/interface-adapters/gateways/selfUpdate.cli.gateway.js +58 -0
  206. package/dist/interface-adapters/gateways/selfUpdate.cli.gateway.js.map +1 -0
  207. package/dist/interface-adapters/gateways/stats.gateway.d.ts +1 -6
  208. package/dist/interface-adapters/gateways/stats.gateway.d.ts.map +1 -1
  209. package/dist/interface-adapters/gateways/versionCache.memory.gateway.d.ts +12 -0
  210. package/dist/interface-adapters/gateways/versionCache.memory.gateway.d.ts.map +1 -0
  211. package/dist/interface-adapters/gateways/versionCache.memory.gateway.js +22 -0
  212. package/dist/interface-adapters/gateways/versionCache.memory.gateway.js.map +1 -0
  213. package/dist/interface-adapters/presenters/insights.presenter.d.ts +41 -0
  214. package/dist/interface-adapters/presenters/insights.presenter.d.ts.map +1 -0
  215. package/dist/interface-adapters/presenters/insights.presenter.js +36 -0
  216. package/dist/interface-adapters/presenters/insights.presenter.js.map +1 -0
  217. package/dist/interface-adapters/views/dashboard/index.html +599 -40
  218. package/dist/interface-adapters/views/dashboard/modules/cleanup.d.ts +10 -0
  219. package/dist/interface-adapters/views/dashboard/modules/cleanup.d.ts.map +1 -0
  220. package/dist/interface-adapters/views/dashboard/modules/cleanup.js +45 -0
  221. package/dist/interface-adapters/views/dashboard/modules/cleanup.js.map +1 -0
  222. package/dist/interface-adapters/views/dashboard/modules/collapsibleList.d.ts +13 -0
  223. package/dist/interface-adapters/views/dashboard/modules/collapsibleList.d.ts.map +1 -0
  224. package/dist/interface-adapters/views/dashboard/modules/collapsibleList.js +71 -0
  225. package/dist/interface-adapters/views/dashboard/modules/collapsibleList.js.map +1 -0
  226. package/dist/interface-adapters/views/dashboard/modules/developerSheet.d.ts +14 -0
  227. package/dist/interface-adapters/views/dashboard/modules/developerSheet.d.ts.map +1 -0
  228. package/dist/interface-adapters/views/dashboard/modules/developerSheet.js +359 -0
  229. package/dist/interface-adapters/views/dashboard/modules/developerSheet.js.map +1 -0
  230. package/dist/interface-adapters/views/dashboard/modules/i18n.d.ts.map +1 -1
  231. package/dist/interface-adapters/views/dashboard/modules/i18n.js +296 -0
  232. package/dist/interface-adapters/views/dashboard/modules/i18n.js.map +1 -1
  233. package/dist/interface-adapters/views/dashboard/modules/insightsReport.d.ts +7 -0
  234. package/dist/interface-adapters/views/dashboard/modules/insightsReport.d.ts.map +1 -0
  235. package/dist/interface-adapters/views/dashboard/modules/insightsReport.js +509 -0
  236. package/dist/interface-adapters/views/dashboard/modules/insightsReport.js.map +1 -0
  237. package/dist/interface-adapters/views/dashboard/modules/mrSheet.d.ts +25 -0
  238. package/dist/interface-adapters/views/dashboard/modules/mrSheet.d.ts.map +1 -0
  239. package/dist/interface-adapters/views/dashboard/modules/mrSheet.js +414 -0
  240. package/dist/interface-adapters/views/dashboard/modules/mrSheet.js.map +1 -0
  241. package/dist/interface-adapters/views/dashboard/modules/sharedViewHelpers.d.ts +40 -0
  242. package/dist/interface-adapters/views/dashboard/modules/sharedViewHelpers.d.ts.map +1 -0
  243. package/dist/interface-adapters/views/dashboard/modules/sharedViewHelpers.js +106 -0
  244. package/dist/interface-adapters/views/dashboard/modules/sharedViewHelpers.js.map +1 -0
  245. package/dist/interface-adapters/views/dashboard/modules/statsCharts.d.ts +35 -0
  246. package/dist/interface-adapters/views/dashboard/modules/statsCharts.d.ts.map +1 -0
  247. package/dist/interface-adapters/views/dashboard/modules/statsCharts.js +476 -0
  248. package/dist/interface-adapters/views/dashboard/modules/statsCharts.js.map +1 -0
  249. package/dist/interface-adapters/views/dashboard/modules/teamTab.d.ts +13 -0
  250. package/dist/interface-adapters/views/dashboard/modules/teamTab.d.ts.map +1 -0
  251. package/dist/interface-adapters/views/dashboard/modules/teamTab.js +296 -0
  252. package/dist/interface-adapters/views/dashboard/modules/teamTab.js.map +1 -0
  253. package/dist/interface-adapters/views/dashboard/modules/versionUpdate.d.ts +16 -0
  254. package/dist/interface-adapters/views/dashboard/modules/versionUpdate.d.ts.map +1 -0
  255. package/dist/interface-adapters/views/dashboard/modules/versionUpdate.js +54 -0
  256. package/dist/interface-adapters/views/dashboard/modules/versionUpdate.js.map +1 -0
  257. package/dist/interface-adapters/views/dashboard/styles.css +1906 -0
  258. package/dist/main/dependencies.d.ts +4 -0
  259. package/dist/main/dependencies.d.ts.map +1 -1
  260. package/dist/main/dependencies.js +4 -0
  261. package/dist/main/dependencies.js.map +1 -1
  262. package/dist/main/routes.d.ts.map +1 -1
  263. package/dist/main/routes.js +68 -2
  264. package/dist/main/routes.js.map +1 -1
  265. package/dist/main/server.d.ts.map +1 -1
  266. package/dist/main/server.js +8 -0
  267. package/dist/main/server.js.map +1 -1
  268. package/dist/main/websocket.d.ts +2 -0
  269. package/dist/main/websocket.d.ts.map +1 -1
  270. package/dist/main/websocket.js +13 -0
  271. package/dist/main/websocket.js.map +1 -1
  272. package/dist/services/statsService.d.ts +8 -32
  273. package/dist/services/statsService.d.ts.map +1 -1
  274. package/dist/services/statsService.js +60 -36
  275. package/dist/services/statsService.js.map +1 -1
  276. package/dist/shared/foundation/commandExecutor.d.ts +2 -0
  277. package/dist/shared/foundation/commandExecutor.d.ts.map +1 -0
  278. package/dist/shared/foundation/commandExecutor.js +2 -0
  279. package/dist/shared/foundation/commandExecutor.js.map +1 -0
  280. package/dist/tests/factories/developerInsight.factory.d.ts +6 -0
  281. package/dist/tests/factories/developerInsight.factory.d.ts.map +1 -0
  282. package/dist/tests/factories/developerInsight.factory.js +61 -0
  283. package/dist/tests/factories/developerInsight.factory.js.map +1 -0
  284. package/dist/tests/factories/diffStats.factory.d.ts +5 -0
  285. package/dist/tests/factories/diffStats.factory.d.ts.map +1 -0
  286. package/dist/tests/factories/diffStats.factory.js +11 -0
  287. package/dist/tests/factories/diffStats.factory.js.map +1 -0
  288. package/dist/tests/factories/packageVersion.factory.d.ts +7 -0
  289. package/dist/tests/factories/packageVersion.factory.d.ts.map +1 -0
  290. package/dist/tests/factories/packageVersion.factory.js +18 -0
  291. package/dist/tests/factories/packageVersion.factory.js.map +1 -0
  292. package/dist/tests/factories/persistedInsightsData.factory.d.ts +11 -0
  293. package/dist/tests/factories/persistedInsightsData.factory.d.ts.map +1 -0
  294. package/dist/tests/factories/persistedInsightsData.factory.js +41 -0
  295. package/dist/tests/factories/persistedInsightsData.factory.js.map +1 -0
  296. package/dist/tests/factories/projectStats.factory.d.ts +3 -1
  297. package/dist/tests/factories/projectStats.factory.d.ts.map +1 -1
  298. package/dist/tests/factories/projectStats.factory.js +17 -3
  299. package/dist/tests/factories/projectStats.factory.js.map +1 -1
  300. package/dist/tests/factories/teamInsight.factory.d.ts +6 -0
  301. package/dist/tests/factories/teamInsight.factory.d.ts.map +1 -0
  302. package/dist/tests/factories/teamInsight.factory.js +35 -0
  303. package/dist/tests/factories/teamInsight.factory.js.map +1 -0
  304. package/dist/tests/stubs/diffStatsFetch.stub.d.ts +11 -0
  305. package/dist/tests/stubs/diffStatsFetch.stub.d.ts.map +1 -0
  306. package/dist/tests/stubs/diffStatsFetch.stub.js +19 -0
  307. package/dist/tests/stubs/diffStatsFetch.stub.js.map +1 -0
  308. package/dist/tests/stubs/insights.stub.d.ts +9 -0
  309. package/dist/tests/stubs/insights.stub.d.ts.map +1 -0
  310. package/dist/tests/stubs/insights.stub.js +13 -0
  311. package/dist/tests/stubs/insights.stub.js.map +1 -0
  312. package/dist/tests/stubs/packageVersion.stub.d.ts +7 -0
  313. package/dist/tests/stubs/packageVersion.stub.d.ts.map +1 -0
  314. package/dist/tests/stubs/packageVersion.stub.js +10 -0
  315. package/dist/tests/stubs/packageVersion.stub.js.map +1 -0
  316. package/dist/tests/stubs/reviewFile.stub.d.ts +1 -1
  317. package/dist/tests/stubs/reviewFile.stub.d.ts.map +1 -1
  318. package/dist/tests/stubs/reviewLogFile.stub.d.ts +15 -0
  319. package/dist/tests/stubs/reviewLogFile.stub.d.ts.map +1 -0
  320. package/dist/tests/stubs/reviewLogFile.stub.js +35 -0
  321. package/dist/tests/stubs/reviewLogFile.stub.js.map +1 -0
  322. package/dist/tests/stubs/reviewRequestTracking.stub.d.ts +1 -1
  323. package/dist/tests/stubs/reviewRequestTracking.stub.d.ts.map +1 -1
  324. package/dist/tests/stubs/selfUpdate.stub.d.ts +14 -0
  325. package/dist/tests/stubs/selfUpdate.stub.d.ts.map +1 -0
  326. package/dist/tests/stubs/selfUpdate.stub.js +20 -0
  327. package/dist/tests/stubs/selfUpdate.stub.js.map +1 -0
  328. package/dist/tests/stubs/stats.stub.d.ts +2 -2
  329. package/dist/tests/stubs/stats.stub.d.ts.map +1 -1
  330. package/dist/tests/stubs/versionCache.stub.d.ts +11 -0
  331. package/dist/tests/stubs/versionCache.stub.d.ts.map +1 -0
  332. package/dist/tests/stubs/versionCache.stub.js +18 -0
  333. package/dist/tests/stubs/versionCache.stub.js.map +1 -0
  334. package/dist/tests/units/config/projectConfig.test.js +60 -1
  335. package/dist/tests/units/config/projectConfig.test.js.map +1 -1
  336. package/dist/tests/units/entities/backfill/backfillProgress.test.d.ts +2 -0
  337. package/dist/tests/units/entities/backfill/backfillProgress.test.d.ts.map +1 -0
  338. package/dist/tests/units/entities/backfill/backfillProgress.test.js +40 -0
  339. package/dist/tests/units/entities/backfill/backfillProgress.test.js.map +1 -0
  340. package/dist/tests/units/entities/cleanup/retentionPolicy.valueObject.test.d.ts +2 -0
  341. package/dist/tests/units/entities/cleanup/retentionPolicy.valueObject.test.d.ts.map +1 -0
  342. package/dist/tests/units/entities/cleanup/retentionPolicy.valueObject.test.js +47 -0
  343. package/dist/tests/units/entities/cleanup/retentionPolicy.valueObject.test.js.map +1 -0
  344. package/dist/tests/units/entities/diffStats/diffStats.test.d.ts +2 -0
  345. package/dist/tests/units/entities/diffStats/diffStats.test.d.ts.map +1 -0
  346. package/dist/tests/units/entities/diffStats/diffStats.test.js +27 -0
  347. package/dist/tests/units/entities/diffStats/diffStats.test.js.map +1 -0
  348. package/dist/tests/units/entities/insight/aiInsight.schema.test.d.ts +2 -0
  349. package/dist/tests/units/entities/insight/aiInsight.schema.test.d.ts.map +1 -0
  350. package/dist/tests/units/entities/insight/aiInsight.schema.test.js +123 -0
  351. package/dist/tests/units/entities/insight/aiInsight.schema.test.js.map +1 -0
  352. package/dist/tests/units/entities/insight/developerInsight.schema.test.d.ts +2 -0
  353. package/dist/tests/units/entities/insight/developerInsight.schema.test.d.ts.map +1 -0
  354. package/dist/tests/units/entities/insight/developerInsight.schema.test.js +140 -0
  355. package/dist/tests/units/entities/insight/developerInsight.schema.test.js.map +1 -0
  356. package/dist/tests/units/entities/insight/developerTitle.test.d.ts +2 -0
  357. package/dist/tests/units/entities/insight/developerTitle.test.d.ts.map +1 -0
  358. package/dist/tests/units/entities/insight/developerTitle.test.js +23 -0
  359. package/dist/tests/units/entities/insight/developerTitle.test.js.map +1 -0
  360. package/dist/tests/units/entities/insight/insightCategory.test.d.ts +2 -0
  361. package/dist/tests/units/entities/insight/insightCategory.test.d.ts.map +1 -0
  362. package/dist/tests/units/entities/insight/insightCategory.test.js +16 -0
  363. package/dist/tests/units/entities/insight/insightCategory.test.js.map +1 -0
  364. package/dist/tests/units/entities/insight/insightTrend.test.d.ts +2 -0
  365. package/dist/tests/units/entities/insight/insightTrend.test.d.ts.map +1 -0
  366. package/dist/tests/units/entities/insight/insightTrend.test.js +16 -0
  367. package/dist/tests/units/entities/insight/insightTrend.test.js.map +1 -0
  368. package/dist/tests/units/entities/insight/persistedInsightsData.schema.test.d.ts +2 -0
  369. package/dist/tests/units/entities/insight/persistedInsightsData.schema.test.d.ts.map +1 -0
  370. package/dist/tests/units/entities/insight/persistedInsightsData.schema.test.js +160 -0
  371. package/dist/tests/units/entities/insight/persistedInsightsData.schema.test.js.map +1 -0
  372. package/dist/tests/units/entities/insight/teamInsight.schema.test.d.ts +2 -0
  373. package/dist/tests/units/entities/insight/teamInsight.schema.test.d.ts.map +1 -0
  374. package/dist/tests/units/entities/insight/teamInsight.schema.test.js +57 -0
  375. package/dist/tests/units/entities/insight/teamInsight.schema.test.js.map +1 -0
  376. package/dist/tests/units/entities/packageVersion/packageVersion.test.d.ts +2 -0
  377. package/dist/tests/units/entities/packageVersion/packageVersion.test.d.ts.map +1 -0
  378. package/dist/tests/units/entities/packageVersion/packageVersion.test.js +154 -0
  379. package/dist/tests/units/entities/packageVersion/packageVersion.test.js.map +1 -0
  380. package/dist/tests/units/factories/packageVersion.factory.test.d.ts +2 -0
  381. package/dist/tests/units/factories/packageVersion.factory.test.d.ts.map +1 -0
  382. package/dist/tests/units/factories/packageVersion.factory.test.js +37 -0
  383. package/dist/tests/units/factories/packageVersion.factory.test.js.map +1 -0
  384. package/dist/tests/units/frameworks/scheduler/cleanupScheduler.test.d.ts +2 -0
  385. package/dist/tests/units/frameworks/scheduler/cleanupScheduler.test.d.ts.map +1 -0
  386. package/dist/tests/units/frameworks/scheduler/cleanupScheduler.test.js +74 -0
  387. package/dist/tests/units/frameworks/scheduler/cleanupScheduler.test.js.map +1 -0
  388. package/dist/tests/units/interface-adapters/controllers/http/cleanup.routes.test.d.ts +2 -0
  389. package/dist/tests/units/interface-adapters/controllers/http/cleanup.routes.test.d.ts.map +1 -0
  390. package/dist/tests/units/interface-adapters/controllers/http/cleanup.routes.test.js +62 -0
  391. package/dist/tests/units/interface-adapters/controllers/http/cleanup.routes.test.js.map +1 -0
  392. package/dist/tests/units/interface-adapters/controllers/http/health.routes.test.d.ts +2 -0
  393. package/dist/tests/units/interface-adapters/controllers/http/health.routes.test.d.ts.map +1 -0
  394. package/dist/tests/units/interface-adapters/controllers/http/health.routes.test.js +96 -0
  395. package/dist/tests/units/interface-adapters/controllers/http/health.routes.test.js.map +1 -0
  396. package/dist/tests/units/interface-adapters/controllers/http/insights.routes.test.d.ts +2 -0
  397. package/dist/tests/units/interface-adapters/controllers/http/insights.routes.test.d.ts.map +1 -0
  398. package/dist/tests/units/interface-adapters/controllers/http/insights.routes.test.js +390 -0
  399. package/dist/tests/units/interface-adapters/controllers/http/insights.routes.test.js.map +1 -0
  400. package/dist/tests/units/interface-adapters/controllers/http/settings.routes.test.d.ts +2 -0
  401. package/dist/tests/units/interface-adapters/controllers/http/settings.routes.test.d.ts.map +1 -0
  402. package/dist/tests/units/interface-adapters/controllers/http/settings.routes.test.js +25 -0
  403. package/dist/tests/units/interface-adapters/controllers/http/settings.routes.test.js.map +1 -0
  404. package/dist/tests/units/interface-adapters/controllers/http/statsRecalculate.routes.test.d.ts +2 -0
  405. package/dist/tests/units/interface-adapters/controllers/http/statsRecalculate.routes.test.d.ts.map +1 -0
  406. package/dist/tests/units/interface-adapters/controllers/http/statsRecalculate.routes.test.js +82 -0
  407. package/dist/tests/units/interface-adapters/controllers/http/statsRecalculate.routes.test.js.map +1 -0
  408. package/dist/tests/units/interface-adapters/controllers/http/version.routes.test.d.ts +2 -0
  409. package/dist/tests/units/interface-adapters/controllers/http/version.routes.test.d.ts.map +1 -0
  410. package/dist/tests/units/interface-adapters/controllers/http/version.routes.test.js +108 -0
  411. package/dist/tests/units/interface-adapters/controllers/http/version.routes.test.js.map +1 -0
  412. package/dist/tests/units/interface-adapters/controllers/webhook/github.controller.test.js +3 -0
  413. package/dist/tests/units/interface-adapters/controllers/webhook/github.controller.test.js.map +1 -1
  414. package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js +1 -0
  415. package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js.map +1 -1
  416. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.github.gateway.test.d.ts +2 -0
  417. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.github.gateway.test.d.ts.map +1 -0
  418. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.github.gateway.test.js +63 -0
  419. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.github.gateway.test.js.map +1 -0
  420. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.test.d.ts +2 -0
  421. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.test.d.ts.map +1 -0
  422. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.test.js +94 -0
  423. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.test.js.map +1 -0
  424. package/dist/tests/units/interface-adapters/gateways/insights.gateway.test.d.ts +2 -0
  425. package/dist/tests/units/interface-adapters/gateways/insights.gateway.test.d.ts.map +1 -0
  426. package/dist/tests/units/interface-adapters/gateways/insights.gateway.test.js +117 -0
  427. package/dist/tests/units/interface-adapters/gateways/insights.gateway.test.js.map +1 -0
  428. package/dist/tests/units/interface-adapters/gateways/packageVersion.npm.gateway.test.d.ts +2 -0
  429. package/dist/tests/units/interface-adapters/gateways/packageVersion.npm.gateway.test.d.ts.map +1 -0
  430. package/dist/tests/units/interface-adapters/gateways/packageVersion.npm.gateway.test.js +42 -0
  431. package/dist/tests/units/interface-adapters/gateways/packageVersion.npm.gateway.test.js.map +1 -0
  432. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.fileSystem.test.d.ts +2 -0
  433. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.fileSystem.test.d.ts.map +1 -0
  434. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.fileSystem.test.js +65 -0
  435. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.fileSystem.test.js.map +1 -0
  436. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.gateway.test.d.ts +2 -0
  437. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.gateway.test.d.ts.map +1 -0
  438. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.gateway.test.js +63 -0
  439. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.gateway.test.js.map +1 -0
  440. package/dist/tests/units/interface-adapters/gateways/reviewRequestTracking.gateway.test.js +2 -0
  441. package/dist/tests/units/interface-adapters/gateways/reviewRequestTracking.gateway.test.js.map +1 -1
  442. package/dist/tests/units/interface-adapters/gateways/selfUpdate.cli.gateway.test.d.ts +2 -0
  443. package/dist/tests/units/interface-adapters/gateways/selfUpdate.cli.gateway.test.d.ts.map +1 -0
  444. package/dist/tests/units/interface-adapters/gateways/selfUpdate.cli.gateway.test.js +101 -0
  445. package/dist/tests/units/interface-adapters/gateways/selfUpdate.cli.gateway.test.js.map +1 -0
  446. package/dist/tests/units/interface-adapters/gateways/versionCache.memory.gateway.test.d.ts +2 -0
  447. package/dist/tests/units/interface-adapters/gateways/versionCache.memory.gateway.test.d.ts.map +1 -0
  448. package/dist/tests/units/interface-adapters/gateways/versionCache.memory.gateway.test.js +38 -0
  449. package/dist/tests/units/interface-adapters/gateways/versionCache.memory.gateway.test.js.map +1 -0
  450. package/dist/tests/units/interface-adapters/presenters/insights.presenter.test.d.ts +2 -0
  451. package/dist/tests/units/interface-adapters/presenters/insights.presenter.test.d.ts.map +1 -0
  452. package/dist/tests/units/interface-adapters/presenters/insights.presenter.test.js +194 -0
  453. package/dist/tests/units/interface-adapters/presenters/insights.presenter.test.js.map +1 -0
  454. package/dist/tests/units/interface-adapters/views/dashboard/modules/developerSheet.test.d.ts +2 -0
  455. package/dist/tests/units/interface-adapters/views/dashboard/modules/developerSheet.test.d.ts.map +1 -0
  456. package/dist/tests/units/interface-adapters/views/dashboard/modules/developerSheet.test.js +224 -0
  457. package/dist/tests/units/interface-adapters/views/dashboard/modules/developerSheet.test.js.map +1 -0
  458. package/dist/tests/units/interface-adapters/views/dashboard/modules/i18n.test.js +29 -0
  459. package/dist/tests/units/interface-adapters/views/dashboard/modules/i18n.test.js.map +1 -1
  460. package/dist/tests/units/interface-adapters/views/dashboard/modules/insightsReport.test.d.ts +2 -0
  461. package/dist/tests/units/interface-adapters/views/dashboard/modules/insightsReport.test.d.ts.map +1 -0
  462. package/dist/tests/units/interface-adapters/views/dashboard/modules/insightsReport.test.js +326 -0
  463. package/dist/tests/units/interface-adapters/views/dashboard/modules/insightsReport.test.js.map +1 -0
  464. package/dist/tests/units/interface-adapters/views/dashboard/modules/teamTab.test.d.ts +2 -0
  465. package/dist/tests/units/interface-adapters/views/dashboard/modules/teamTab.test.d.ts.map +1 -0
  466. package/dist/tests/units/interface-adapters/views/dashboard/modules/teamTab.test.js +336 -0
  467. package/dist/tests/units/interface-adapters/views/dashboard/modules/teamTab.test.js.map +1 -0
  468. package/dist/tests/units/services/statsService.addReview.test.d.ts +2 -0
  469. package/dist/tests/units/services/statsService.addReview.test.d.ts.map +1 -0
  470. package/dist/tests/units/services/statsService.addReview.test.js +103 -0
  471. package/dist/tests/units/services/statsService.addReview.test.js.map +1 -0
  472. package/dist/tests/units/services/statsService.diffStats.test.d.ts +2 -0
  473. package/dist/tests/units/services/statsService.diffStats.test.d.ts.map +1 -0
  474. package/dist/tests/units/services/statsService.diffStats.test.js +61 -0
  475. package/dist/tests/units/services/statsService.diffStats.test.js.map +1 -0
  476. package/dist/tests/units/stubs/packageVersion.stub.test.d.ts +2 -0
  477. package/dist/tests/units/stubs/packageVersion.stub.test.d.ts.map +1 -0
  478. package/dist/tests/units/stubs/packageVersion.stub.test.js +20 -0
  479. package/dist/tests/units/stubs/packageVersion.stub.test.js.map +1 -0
  480. package/dist/tests/units/stubs/selfUpdate.stub.test.d.ts +2 -0
  481. package/dist/tests/units/stubs/selfUpdate.stub.test.d.ts.map +1 -0
  482. package/dist/tests/units/stubs/selfUpdate.stub.test.js +30 -0
  483. package/dist/tests/units/stubs/selfUpdate.stub.test.js.map +1 -0
  484. package/dist/tests/units/stubs/versionCache.stub.test.d.ts +2 -0
  485. package/dist/tests/units/stubs/versionCache.stub.test.d.ts.map +1 -0
  486. package/dist/tests/units/stubs/versionCache.stub.test.js +34 -0
  487. package/dist/tests/units/stubs/versionCache.stub.test.js.map +1 -0
  488. package/dist/tests/units/usecases/cleanup/cleanupExpiredReviews.usecase.test.d.ts +2 -0
  489. package/dist/tests/units/usecases/cleanup/cleanupExpiredReviews.usecase.test.d.ts.map +1 -0
  490. package/dist/tests/units/usecases/cleanup/cleanupExpiredReviews.usecase.test.js +83 -0
  491. package/dist/tests/units/usecases/cleanup/cleanupExpiredReviews.usecase.test.js.map +1 -0
  492. package/dist/tests/units/usecases/insights/buildAiInsightsPrompt.test.d.ts +2 -0
  493. package/dist/tests/units/usecases/insights/buildAiInsightsPrompt.test.d.ts.map +1 -0
  494. package/dist/tests/units/usecases/insights/buildAiInsightsPrompt.test.js +172 -0
  495. package/dist/tests/units/usecases/insights/buildAiInsightsPrompt.test.js.map +1 -0
  496. package/dist/tests/units/usecases/insights/computeDeveloperInsights.usecase.test.d.ts +2 -0
  497. package/dist/tests/units/usecases/insights/computeDeveloperInsights.usecase.test.d.ts.map +1 -0
  498. package/dist/tests/units/usecases/insights/computeDeveloperInsights.usecase.test.js +449 -0
  499. package/dist/tests/units/usecases/insights/computeDeveloperInsights.usecase.test.js.map +1 -0
  500. package/dist/tests/units/usecases/insights/computeInsightsWithPersistence.usecase.test.d.ts +2 -0
  501. package/dist/tests/units/usecases/insights/computeInsightsWithPersistence.usecase.test.d.ts.map +1 -0
  502. package/dist/tests/units/usecases/insights/computeInsightsWithPersistence.usecase.test.js +326 -0
  503. package/dist/tests/units/usecases/insights/computeInsightsWithPersistence.usecase.test.js.map +1 -0
  504. package/dist/tests/units/usecases/insights/computeTeamInsights.usecase.test.d.ts +2 -0
  505. package/dist/tests/units/usecases/insights/computeTeamInsights.usecase.test.d.ts.map +1 -0
  506. package/dist/tests/units/usecases/insights/computeTeamInsights.usecase.test.js +172 -0
  507. package/dist/tests/units/usecases/insights/computeTeamInsights.usecase.test.js.map +1 -0
  508. package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.d.ts +2 -0
  509. package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.d.ts.map +1 -0
  510. package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.js +253 -0
  511. package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.js.map +1 -0
  512. package/dist/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.d.ts +2 -0
  513. package/dist/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.d.ts.map +1 -0
  514. package/dist/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.js +160 -0
  515. package/dist/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.js.map +1 -0
  516. package/dist/tests/units/usecases/insights/insightLevelComputation.service.test.d.ts +2 -0
  517. package/dist/tests/units/usecases/insights/insightLevelComputation.service.test.d.ts.map +1 -0
  518. package/dist/tests/units/usecases/insights/insightLevelComputation.service.test.js +125 -0
  519. package/dist/tests/units/usecases/insights/insightLevelComputation.service.test.js.map +1 -0
  520. package/dist/tests/units/usecases/stats/backfillDiffStats.usecase.test.d.ts +2 -0
  521. package/dist/tests/units/usecases/stats/backfillDiffStats.usecase.test.d.ts.map +1 -0
  522. package/dist/tests/units/usecases/stats/backfillDiffStats.usecase.test.js +186 -0
  523. package/dist/tests/units/usecases/stats/backfillDiffStats.usecase.test.js.map +1 -0
  524. package/dist/tests/units/usecases/stats/recalculateProjectStats.usecase.test.d.ts +2 -0
  525. package/dist/tests/units/usecases/stats/recalculateProjectStats.usecase.test.d.ts.map +1 -0
  526. package/dist/tests/units/usecases/stats/recalculateProjectStats.usecase.test.js +130 -0
  527. package/dist/tests/units/usecases/stats/recalculateProjectStats.usecase.test.js.map +1 -0
  528. package/dist/tests/units/usecases/stats/recalculateWithBackfill.usecase.test.d.ts +2 -0
  529. package/dist/tests/units/usecases/stats/recalculateWithBackfill.usecase.test.d.ts.map +1 -0
  530. package/dist/tests/units/usecases/stats/recalculateWithBackfill.usecase.test.js +138 -0
  531. package/dist/tests/units/usecases/stats/recalculateWithBackfill.usecase.test.js.map +1 -0
  532. package/dist/tests/units/usecases/tracking/recordReviewCompletion.usecase.test.js +31 -2
  533. package/dist/tests/units/usecases/tracking/recordReviewCompletion.usecase.test.js.map +1 -1
  534. package/dist/tests/units/usecases/version/checkVersion.usecase.test.d.ts +2 -0
  535. package/dist/tests/units/usecases/version/checkVersion.usecase.test.d.ts.map +1 -0
  536. package/dist/tests/units/usecases/version/checkVersion.usecase.test.js +63 -0
  537. package/dist/tests/units/usecases/version/checkVersion.usecase.test.js.map +1 -0
  538. package/dist/tests/units/usecases/version/triggerSelfUpdate.usecase.test.d.ts +2 -0
  539. package/dist/tests/units/usecases/version/triggerSelfUpdate.usecase.test.d.ts.map +1 -0
  540. package/dist/tests/units/usecases/version/triggerSelfUpdate.usecase.test.js +26 -0
  541. package/dist/tests/units/usecases/version/triggerSelfUpdate.usecase.test.js.map +1 -0
  542. package/dist/usecases/cleanup/cleanupExpiredReviews.usecase.d.ts +13 -0
  543. package/dist/usecases/cleanup/cleanupExpiredReviews.usecase.d.ts.map +1 -0
  544. package/dist/usecases/cleanup/cleanupExpiredReviews.usecase.js +41 -0
  545. package/dist/usecases/cleanup/cleanupExpiredReviews.usecase.js.map +1 -0
  546. package/dist/usecases/insights/buildAiInsightsPrompt.d.ts +12 -0
  547. package/dist/usecases/insights/buildAiInsightsPrompt.d.ts.map +1 -0
  548. package/dist/usecases/insights/buildAiInsightsPrompt.js +220 -0
  549. package/dist/usecases/insights/buildAiInsightsPrompt.js.map +1 -0
  550. package/dist/usecases/insights/computeDeveloperInsights.usecase.d.ts +4 -0
  551. package/dist/usecases/insights/computeDeveloperInsights.usecase.d.ts.map +1 -0
  552. package/dist/usecases/insights/computeDeveloperInsights.usecase.js +226 -0
  553. package/dist/usecases/insights/computeDeveloperInsights.usecase.js.map +1 -0
  554. package/dist/usecases/insights/computeInsightsWithPersistence.usecase.d.ts +12 -0
  555. package/dist/usecases/insights/computeInsightsWithPersistence.usecase.d.ts.map +1 -0
  556. package/dist/usecases/insights/computeInsightsWithPersistence.usecase.js +340 -0
  557. package/dist/usecases/insights/computeInsightsWithPersistence.usecase.js.map +1 -0
  558. package/dist/usecases/insights/computeTeamInsights.usecase.d.ts +4 -0
  559. package/dist/usecases/insights/computeTeamInsights.usecase.d.ts.map +1 -0
  560. package/dist/usecases/insights/computeTeamInsights.usecase.js +111 -0
  561. package/dist/usecases/insights/computeTeamInsights.usecase.js.map +1 -0
  562. package/dist/usecases/insights/generateAiInsights.usecase.d.ts +27 -0
  563. package/dist/usecases/insights/generateAiInsights.usecase.d.ts.map +1 -0
  564. package/dist/usecases/insights/generateAiInsights.usecase.js +65 -0
  565. package/dist/usecases/insights/generateAiInsights.usecase.js.map +1 -0
  566. package/dist/usecases/insights/getInsightsWithAiStatus.usecase.d.ts +18 -0
  567. package/dist/usecases/insights/getInsightsWithAiStatus.usecase.d.ts.map +1 -0
  568. package/dist/usecases/insights/getInsightsWithAiStatus.usecase.js +56 -0
  569. package/dist/usecases/insights/getInsightsWithAiStatus.usecase.js.map +1 -0
  570. package/dist/usecases/insights/insightLevelComputation.service.d.ts +41 -0
  571. package/dist/usecases/insights/insightLevelComputation.service.d.ts.map +1 -0
  572. package/dist/usecases/insights/insightLevelComputation.service.js +313 -0
  573. package/dist/usecases/insights/insightLevelComputation.service.js.map +1 -0
  574. package/dist/usecases/stats/backfillDiffStats.usecase.d.ts +18 -0
  575. package/dist/usecases/stats/backfillDiffStats.usecase.d.ts.map +1 -0
  576. package/dist/usecases/stats/backfillDiffStats.usecase.js +43 -0
  577. package/dist/usecases/stats/backfillDiffStats.usecase.js.map +1 -0
  578. package/dist/usecases/stats/recalculateProjectStats.usecase.d.ts +7 -0
  579. package/dist/usecases/stats/recalculateProjectStats.usecase.d.ts.map +1 -0
  580. package/dist/usecases/stats/recalculateProjectStats.usecase.js +47 -0
  581. package/dist/usecases/stats/recalculateProjectStats.usecase.js.map +1 -0
  582. package/dist/usecases/stats/recalculateWithBackfill.usecase.d.ts +22 -0
  583. package/dist/usecases/stats/recalculateWithBackfill.usecase.d.ts.map +1 -0
  584. package/dist/usecases/stats/recalculateWithBackfill.usecase.js +33 -0
  585. package/dist/usecases/stats/recalculateWithBackfill.usecase.js.map +1 -0
  586. package/dist/usecases/tracking/recordReviewCompletion.usecase.d.ts +2 -0
  587. package/dist/usecases/tracking/recordReviewCompletion.usecase.d.ts.map +1 -1
  588. package/dist/usecases/tracking/recordReviewCompletion.usecase.js +1 -0
  589. package/dist/usecases/tracking/recordReviewCompletion.usecase.js.map +1 -1
  590. package/dist/usecases/version/checkVersion.usecase.d.ts +13 -0
  591. package/dist/usecases/version/checkVersion.usecase.d.ts.map +1 -0
  592. package/dist/usecases/version/checkVersion.usecase.js +20 -0
  593. package/dist/usecases/version/checkVersion.usecase.js.map +1 -0
  594. package/dist/usecases/version/triggerSelfUpdate.usecase.d.ts +7 -0
  595. package/dist/usecases/version/triggerSelfUpdate.usecase.d.ts.map +1 -0
  596. package/dist/usecases/version/triggerSelfUpdate.usecase.js +12 -0
  597. package/dist/usecases/version/triggerSelfUpdate.usecase.js.map +1 -0
  598. package/package.json +1 -1
@@ -0,0 +1,476 @@
1
+ import { t } from './i18n.js';
2
+
3
+ const COLORS = {
4
+ textPrimary: '#e8efff',
5
+ textMuted: '#8393b0',
6
+ focus: '#7ad8ff',
7
+ success: '#62d3a8',
8
+ warning: '#f4bc71',
9
+ danger: '#f07f88',
10
+ reviewPoint: '#f59e0b',
11
+ followupPoint: '#3b82f6',
12
+ gridLine: 'rgba(131, 147, 176, 0.1)',
13
+ targetLine: 'rgba(98, 211, 168, 0.5)',
14
+ areaFill: 'rgba(122, 216, 255, 0.08)',
15
+ };
16
+
17
+ /**
18
+ * @param {CanvasRenderingContext2D} context
19
+ * @param {number} cssWidth
20
+ * @param {number} cssHeight
21
+ * @returns {number}
22
+ */
23
+ function setupHiDpiCanvas(context, cssWidth, cssHeight) {
24
+ const dpr = window.devicePixelRatio || 1;
25
+ const canvas = context.canvas;
26
+ canvas.width = cssWidth * dpr;
27
+ canvas.height = cssHeight * dpr;
28
+ canvas.style.width = `${cssWidth}px`;
29
+ canvas.style.height = `${cssHeight}px`;
30
+ context.scale(dpr, dpr);
31
+ return dpr;
32
+ }
33
+
34
+ /**
35
+ * @param {string} canvasId
36
+ * @returns {{ canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, cssWidth: number } | null}
37
+ */
38
+ function getCanvasContext(canvasId) {
39
+ const canvas = document.getElementById(canvasId);
40
+ if (!canvas) return null;
41
+ const ctx = canvas.getContext('2d');
42
+ if (!ctx) return null;
43
+ const cssWidth = canvas.parentElement?.clientWidth
44
+ ? canvas.parentElement.clientWidth - 24
45
+ : 460;
46
+ return { canvas, ctx, cssWidth };
47
+ }
48
+
49
+ /**
50
+ * @param {CanvasRenderingContext2D} ctx
51
+ * @param {string} message
52
+ * @param {number} cssWidth
53
+ * @param {number} cssHeight
54
+ */
55
+ function drawNoDataMessage(ctx, message, cssWidth, cssHeight) {
56
+ ctx.fillStyle = COLORS.textMuted;
57
+ ctx.font = '13px system-ui, -apple-system, sans-serif';
58
+ ctx.textAlign = 'center';
59
+ ctx.textBaseline = 'middle';
60
+ ctx.fillText(message, cssWidth / 2, cssHeight / 2);
61
+ }
62
+
63
+ /**
64
+ * Compute bezier control points for smooth curves between data points
65
+ * @param {Array<{x: number, y: number}>} points
66
+ * @param {number} index
67
+ * @param {number} tension
68
+ * @returns {{cp1x: number, cp1y: number, cp2x: number, cp2y: number}}
69
+ */
70
+ function bezierControlPoints(points, index, tension = 0.3) {
71
+ const previous = points[Math.max(0, index - 1)];
72
+ const current = points[index];
73
+ const next = points[Math.min(points.length - 1, index + 1)];
74
+ const afterNext = points[Math.min(points.length - 1, index + 2)];
75
+
76
+ const cp1x = current.x + (next.x - previous.x) * tension;
77
+ const cp1y = current.y + (next.y - previous.y) * tension;
78
+ const cp2x = next.x - (afterNext.x - current.x) * tension;
79
+ const cp2y = next.y - (afterNext.y - current.y) * tension;
80
+
81
+ return { cp1x, cp1y, cp2x, cp2y };
82
+ }
83
+
84
+ /**
85
+ * Draw a smooth bezier path through points
86
+ * @param {CanvasRenderingContext2D} ctx
87
+ * @param {Array<{x: number, y: number}>} points
88
+ */
89
+ function drawSmoothPath(ctx, points) {
90
+ if (points.length < 2) return;
91
+
92
+ ctx.moveTo(points[0].x, points[0].y);
93
+
94
+ if (points.length === 2) {
95
+ ctx.lineTo(points[1].x, points[1].y);
96
+ return;
97
+ }
98
+
99
+ for (let index = 0; index < points.length - 1; index++) {
100
+ const { cp1x, cp1y, cp2x, cp2y } = bezierControlPoints(points, index);
101
+ ctx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, points[index + 1].x, points[index + 1].y);
102
+ }
103
+ }
104
+
105
+ /**
106
+ * Draw a line chart showing score evolution across reviews
107
+ * @param {string} canvasId
108
+ * @param {Array<{timestamp: string, score: number|null, type?: string}>} reviews
109
+ */
110
+ export function drawScoreTrendChart(canvasId, reviews) {
111
+ const setup = getCanvasContext(canvasId);
112
+ if (!setup) return;
113
+ const { ctx, cssWidth } = setup;
114
+ const cssHeight = 180;
115
+ setupHiDpiCanvas(ctx, cssWidth, cssHeight);
116
+
117
+ const scoredReviews = reviews
118
+ .filter(review => review.score !== null && review.score !== undefined)
119
+ .sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
120
+
121
+ const padding = { top: 20, right: 20, bottom: 30, left: 35 };
122
+ const chartWidth = cssWidth - padding.left - padding.right;
123
+ const chartHeight = cssHeight - padding.top - padding.bottom;
124
+
125
+ if (scoredReviews.length === 0) {
126
+ drawNoDataMessage(ctx, t('stats.noChartData'), cssWidth, cssHeight);
127
+ return;
128
+ }
129
+
130
+ ctx.font = '10px system-ui, -apple-system, sans-serif';
131
+ ctx.textAlign = 'right';
132
+ for (let score = 2; score <= 10; score += 2) {
133
+ const y = padding.top + chartHeight - (score / 10) * chartHeight;
134
+ ctx.beginPath();
135
+ ctx.strokeStyle = COLORS.gridLine;
136
+ ctx.lineWidth = 0.5;
137
+ ctx.moveTo(padding.left, y);
138
+ ctx.lineTo(cssWidth - padding.right, y);
139
+ ctx.stroke();
140
+ ctx.fillStyle = COLORS.textMuted;
141
+ ctx.fillText(String(score), padding.left - 6, y + 3);
142
+ }
143
+
144
+ const targetY = padding.top + chartHeight - (8 / 10) * chartHeight;
145
+ ctx.beginPath();
146
+ ctx.setLineDash([5, 4]);
147
+ ctx.strokeStyle = COLORS.targetLine;
148
+ ctx.lineWidth = 1;
149
+ ctx.moveTo(padding.left, targetY);
150
+ ctx.lineTo(cssWidth - padding.right, targetY);
151
+ ctx.stroke();
152
+ ctx.setLineDash([]);
153
+
154
+ const points = scoredReviews.map((review, index) => {
155
+ const x = scoredReviews.length === 1
156
+ ? padding.left + chartWidth / 2
157
+ : padding.left + (index / (scoredReviews.length - 1)) * chartWidth;
158
+ const y = padding.top + chartHeight - (review.score / 10) * chartHeight;
159
+ return { x, y, review };
160
+ });
161
+
162
+ if (points.length >= 2) {
163
+ const gradient = ctx.createLinearGradient(0, padding.top, 0, cssHeight - padding.bottom);
164
+ gradient.addColorStop(0, 'rgba(122, 216, 255, 0.12)');
165
+ gradient.addColorStop(1, 'rgba(122, 216, 255, 0)');
166
+
167
+ ctx.beginPath();
168
+ ctx.moveTo(points[0].x, cssHeight - padding.bottom);
169
+ drawSmoothPath(ctx, points);
170
+ ctx.lineTo(points[points.length - 1].x, cssHeight - padding.bottom);
171
+ ctx.closePath();
172
+ ctx.fillStyle = gradient;
173
+ ctx.fill();
174
+
175
+ ctx.beginPath();
176
+ drawSmoothPath(ctx, points);
177
+ ctx.strokeStyle = COLORS.focus;
178
+ ctx.lineWidth = 2;
179
+ ctx.lineJoin = 'round';
180
+ ctx.lineCap = 'round';
181
+ ctx.stroke();
182
+ }
183
+
184
+ if (scoredReviews.length >= 5) {
185
+ const windowSize = 5;
186
+ const movingAvgPoints = [];
187
+ for (let index = windowSize - 1; index < scoredReviews.length; index++) {
188
+ let sum = 0;
189
+ for (let offset = 0; offset < windowSize; offset++) {
190
+ sum += scoredReviews[index - offset].score;
191
+ }
192
+ const avgScore = sum / windowSize;
193
+ const x = scoredReviews.length === 1
194
+ ? padding.left + chartWidth / 2
195
+ : padding.left + (index / (scoredReviews.length - 1)) * chartWidth;
196
+ const y = padding.top + chartHeight - (avgScore / 10) * chartHeight;
197
+ movingAvgPoints.push({ x, y });
198
+ }
199
+
200
+ if (movingAvgPoints.length >= 2) {
201
+ ctx.beginPath();
202
+ drawSmoothPath(ctx, movingAvgPoints);
203
+ ctx.strokeStyle = COLORS.success;
204
+ ctx.lineWidth = 1.5;
205
+ ctx.setLineDash([3, 3]);
206
+ ctx.lineJoin = 'round';
207
+ ctx.lineCap = 'round';
208
+ ctx.stroke();
209
+ ctx.setLineDash([]);
210
+ }
211
+ }
212
+
213
+ for (const point of points) {
214
+ const color = point.review.type === 'followup' ? COLORS.followupPoint : COLORS.reviewPoint;
215
+ ctx.beginPath();
216
+ ctx.arc(point.x, point.y, 3.5, 0, Math.PI * 2);
217
+ ctx.fillStyle = color;
218
+ ctx.fill();
219
+ ctx.strokeStyle = COLORS.textPrimary;
220
+ ctx.lineWidth = 1.2;
221
+ ctx.stroke();
222
+ }
223
+
224
+ ctx.fillStyle = COLORS.textMuted;
225
+ ctx.font = '9px system-ui, -apple-system, sans-serif';
226
+ ctx.textAlign = 'center';
227
+ ctx.textBaseline = 'top';
228
+ const maxLabels = Math.min(points.length, 6);
229
+ const labelStep = Math.max(1, Math.floor(points.length / maxLabels));
230
+ for (let labelIndex = 0; labelIndex < points.length; labelIndex += labelStep) {
231
+ const point = points[labelIndex];
232
+ const date = new Date(point.review.timestamp);
233
+ const label = `${date.getDate()}/${date.getMonth() + 1}`;
234
+ ctx.fillText(label, point.x, cssHeight - padding.bottom + 6);
235
+ }
236
+ if (points.length > 1 && (points.length - 1) % labelStep !== 0) {
237
+ const lastPoint = points[points.length - 1];
238
+ const date = new Date(lastPoint.review.timestamp);
239
+ const label = `${date.getDate()}/${date.getMonth() + 1}`;
240
+ ctx.fillText(label, lastPoint.x, cssHeight - padding.bottom + 6);
241
+ }
242
+ }
243
+
244
+ /**
245
+ * Get ISO week number from a date
246
+ * @param {Date} date
247
+ * @returns {number}
248
+ */
249
+ function getIsoWeek(date) {
250
+ const target = new Date(date.valueOf());
251
+ const dayNumber = (date.getDay() + 6) % 7;
252
+ target.setDate(target.getDate() - dayNumber + 3);
253
+ const firstThursday = target.valueOf();
254
+ target.setMonth(0, 1);
255
+ if (target.getDay() !== 4) {
256
+ target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7);
257
+ }
258
+ return 1 + Math.ceil((firstThursday - target.valueOf()) / 604800000);
259
+ }
260
+
261
+ /**
262
+ * Draw a bar chart showing number of reviews per week
263
+ * @param {string} canvasId
264
+ * @param {Array<{timestamp: string}>} reviews
265
+ */
266
+ export function drawReviewActivityChart(canvasId, reviews) {
267
+ const setup = getCanvasContext(canvasId);
268
+ if (!setup) return;
269
+ const { ctx, cssWidth } = setup;
270
+ const cssHeight = 180;
271
+ setupHiDpiCanvas(ctx, cssWidth, cssHeight);
272
+
273
+ if (!reviews || reviews.length === 0) {
274
+ drawNoDataMessage(ctx, t('stats.noChartData'), cssWidth, cssHeight);
275
+ return;
276
+ }
277
+
278
+ const weekCounts = new Map();
279
+ for (const review of reviews) {
280
+ const date = new Date(review.timestamp);
281
+ const year = date.getFullYear();
282
+ const week = getIsoWeek(date);
283
+ const key = `${year}-W${String(week).padStart(2, '0')}`;
284
+ weekCounts.set(key, (weekCounts.get(key) || 0) + 1);
285
+ }
286
+
287
+ const sortedWeeks = Array.from(weekCounts.entries())
288
+ .sort(([a], [b]) => a.localeCompare(b))
289
+ .slice(-12);
290
+
291
+ if (sortedWeeks.length === 0) {
292
+ drawNoDataMessage(ctx, t('stats.noChartData'), cssWidth, cssHeight);
293
+ return;
294
+ }
295
+
296
+ const padding = { top: 20, right: 20, bottom: 30, left: 35 };
297
+ const chartWidth = cssWidth - padding.left - padding.right;
298
+ const chartHeight = cssHeight - padding.top - padding.bottom;
299
+
300
+ const maxCount = Math.max(...sortedWeeks.map(([, count]) => count));
301
+ const yScale = maxCount > 0 ? chartHeight / (maxCount * 1.15) : 1;
302
+
303
+ ctx.font = '10px system-ui, -apple-system, sans-serif';
304
+ ctx.textAlign = 'right';
305
+ ctx.fillStyle = COLORS.textMuted;
306
+ const yTicks = Math.min(maxCount, 5);
307
+ for (let tick = 0; tick <= yTicks; tick++) {
308
+ const value = Math.round((maxCount / yTicks) * tick);
309
+ const y = padding.top + chartHeight - value * yScale;
310
+ ctx.beginPath();
311
+ ctx.strokeStyle = COLORS.gridLine;
312
+ ctx.lineWidth = 0.5;
313
+ ctx.moveTo(padding.left, y);
314
+ ctx.lineTo(cssWidth - padding.right, y);
315
+ ctx.stroke();
316
+ ctx.fillText(String(value), padding.left - 6, y + 3);
317
+ }
318
+
319
+ const barGap = 6;
320
+ const totalBarWidth = chartWidth / sortedWeeks.length;
321
+ const barWidth = Math.max(8, totalBarWidth - barGap);
322
+ const cornerRadius = Math.min(4, barWidth / 3);
323
+
324
+ for (let index = 0; index < sortedWeeks.length; index++) {
325
+ const [weekLabel, count] = sortedWeeks[index];
326
+ const barHeight = count * yScale;
327
+ const x = padding.left + index * totalBarWidth + (totalBarWidth - barWidth) / 2;
328
+ const y = padding.top + chartHeight - barHeight;
329
+
330
+ const gradient = ctx.createLinearGradient(x, y, x, padding.top + chartHeight);
331
+ gradient.addColorStop(0, COLORS.focus);
332
+ gradient.addColorStop(1, 'rgba(122, 216, 255, 0.3)');
333
+
334
+ ctx.beginPath();
335
+ ctx.moveTo(x, padding.top + chartHeight);
336
+ ctx.lineTo(x, y + cornerRadius);
337
+ ctx.arcTo(x, y, x + cornerRadius, y, cornerRadius);
338
+ ctx.arcTo(x + barWidth, y, x + barWidth, y + cornerRadius, cornerRadius);
339
+ ctx.lineTo(x + barWidth, padding.top + chartHeight);
340
+ ctx.closePath();
341
+ ctx.fillStyle = gradient;
342
+ ctx.fill();
343
+
344
+ if (count > 0 && barHeight > 16) {
345
+ ctx.fillStyle = COLORS.textPrimary;
346
+ ctx.font = '10px system-ui, -apple-system, sans-serif';
347
+ ctx.textAlign = 'center';
348
+ ctx.textBaseline = 'bottom';
349
+ ctx.fillText(String(count), x + barWidth / 2, y - 3);
350
+ }
351
+
352
+ const shortLabel = weekLabel.split('-')[1];
353
+ ctx.fillStyle = COLORS.textMuted;
354
+ ctx.font = '9px system-ui, -apple-system, sans-serif';
355
+ ctx.textAlign = 'center';
356
+ ctx.textBaseline = 'top';
357
+ ctx.fillText(shortLabel, x + barWidth / 2, cssHeight - padding.bottom + 6);
358
+ }
359
+ }
360
+
361
+ /**
362
+ * Draw a horizontal bar chart showing score distribution
363
+ * @param {string} canvasId
364
+ * @param {Array<{score: number|null}>} reviews
365
+ */
366
+ export function drawScoreDistributionChart(canvasId, reviews) {
367
+ const setup = getCanvasContext(canvasId);
368
+ if (!setup) return;
369
+ const { ctx, cssWidth } = setup;
370
+ const cssHeight = 120;
371
+ setupHiDpiCanvas(ctx, cssWidth, cssHeight);
372
+
373
+ const scoredReviews = reviews.filter(review => review.score !== null && review.score !== undefined);
374
+
375
+ if (scoredReviews.length === 0) {
376
+ drawNoDataMessage(ctx, t('stats.noChartData'), cssWidth, cssHeight);
377
+ return;
378
+ }
379
+
380
+ const ranges = [
381
+ { label: '0-2', min: 0, max: 2, color: COLORS.danger, count: 0 },
382
+ { label: '2-4', min: 2, max: 4, color: '#e8946a', count: 0 },
383
+ { label: '4-6', min: 4, max: 6, color: COLORS.warning, count: 0 },
384
+ { label: '6-8', min: 6, max: 8, color: '#a5d88e', count: 0 },
385
+ { label: '8-10', min: 8, max: 10, color: COLORS.success, count: 0 },
386
+ ];
387
+
388
+ for (const review of scoredReviews) {
389
+ const score = review.score;
390
+ for (const range of ranges) {
391
+ if ((score >= range.min && score < range.max) || (range.max === 10 && score === 10)) {
392
+ range.count++;
393
+ break;
394
+ }
395
+ }
396
+ }
397
+
398
+ const padding = { top: 8, right: 50, bottom: 8, left: 50 };
399
+ const chartWidth = cssWidth - padding.left - padding.right;
400
+ const chartHeight = cssHeight - padding.top - padding.bottom;
401
+
402
+ const maxCount = Math.max(...ranges.map(range => range.count));
403
+ const barGap = 4;
404
+ const barHeight = Math.min(16, (chartHeight - barGap * (ranges.length - 1)) / ranges.length);
405
+ const totalHeight = ranges.length * barHeight + (ranges.length - 1) * barGap;
406
+ const startY = padding.top + (chartHeight - totalHeight) / 2;
407
+ const cornerRadius = 3;
408
+
409
+ for (let index = 0; index < ranges.length; index++) {
410
+ const range = ranges[index];
411
+ const y = startY + index * (barHeight + barGap);
412
+ const barWidth = maxCount > 0 ? (range.count / maxCount) * chartWidth : 0;
413
+ const actualBarWidth = Math.max(barWidth, range.count > 0 ? 6 : 0);
414
+
415
+ ctx.fillStyle = COLORS.textMuted;
416
+ ctx.font = '10px system-ui, -apple-system, sans-serif';
417
+ ctx.textAlign = 'right';
418
+ ctx.textBaseline = 'middle';
419
+ ctx.fillText(range.label, padding.left - 8, y + barHeight / 2);
420
+
421
+ if (actualBarWidth > 0) {
422
+ ctx.beginPath();
423
+ ctx.roundRect(padding.left, y, actualBarWidth, barHeight, cornerRadius);
424
+ ctx.fillStyle = range.color;
425
+ ctx.fill();
426
+ }
427
+
428
+ ctx.fillStyle = COLORS.textPrimary;
429
+ ctx.font = '10px system-ui, -apple-system, sans-serif';
430
+ ctx.textAlign = 'left';
431
+ ctx.textBaseline = 'middle';
432
+ ctx.fillText(String(range.count), padding.left + actualBarWidth + 6, y + barHeight / 2);
433
+ }
434
+ }
435
+
436
+ /**
437
+ * Animate a counter from 0 to targetValue
438
+ * @param {HTMLElement} element
439
+ * @param {number} targetValue
440
+ * @param {number} duration
441
+ * @param {string} [suffix]
442
+ */
443
+ export function animateCounter(element, targetValue, duration, suffix) {
444
+ const startTime = performance.now();
445
+ const isDecimal = !Number.isInteger(targetValue);
446
+ const displaySuffix = suffix || '';
447
+
448
+ function easeOutExpo(progress) {
449
+ return progress === 1 ? 1 : 1 - 2 ** (-10 * progress);
450
+ }
451
+
452
+ function update(currentTime) {
453
+ const elapsed = currentTime - startTime;
454
+ const progress = Math.min(elapsed / duration, 1);
455
+ const easedProgress = easeOutExpo(progress);
456
+ const currentValue = targetValue * easedProgress;
457
+
458
+ if (isDecimal) {
459
+ element.textContent = currentValue.toFixed(1) + displaySuffix;
460
+ } else {
461
+ element.textContent = Math.round(currentValue) + displaySuffix;
462
+ }
463
+
464
+ if (progress < 1) {
465
+ requestAnimationFrame(update);
466
+ } else {
467
+ if (isDecimal) {
468
+ element.textContent = targetValue.toFixed(1) + displaySuffix;
469
+ } else {
470
+ element.textContent = String(targetValue) + displaySuffix;
471
+ }
472
+ }
473
+ }
474
+
475
+ requestAnimationFrame(update);
476
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statsCharts.js","sourceRoot":"","sources":["../../../../../src/interface-adapters/views/dashboard/modules/statsCharts.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @param {object} insightsData
3
+ * @param {(key: string, params?: Record<string, string|number>) => string} translate
4
+ * @returns {string}
5
+ */
6
+ export function renderTeamTab(insightsData: object, translate: (key: string, params?: Record<string, string | number>) => string): string;
7
+ /**
8
+ * @param {string} projectPath
9
+ * @param {(key: string, params?: Record<string, string|number>) => string} translate
10
+ * @param {string} apiUrl
11
+ */
12
+ export function fetchAndRenderTeamTab(projectPath: string, translate: (key: string, params?: Record<string, string | number>) => string, apiUrl: string): Promise<void>;
13
+ //# sourceMappingURL=teamTab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teamTab.d.ts","sourceRoot":"","sources":["../../../../../src/interface-adapters/views/dashboard/modules/teamTab.js"],"names":[],"mappings":"AA6NA;;;;GAIG;AACH,4CAJW,MAAM,aACN,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAC,MAAM,CAAC,KAAK,MAAM,GAC7D,MAAM,CA2ClB;AAED;;;;GAIG;AACH,mDAJW,MAAM,aACN,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAC,MAAM,CAAC,KAAK,MAAM,UAC/D,MAAM,iBAuBhB"}