reviewflow 3.3.1 → 3.5.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 (225) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/cli/formatters/initSummary.d.ts +1 -1
  3. package/dist/cli/formatters/initSummary.d.ts.map +1 -1
  4. package/dist/cli/formatters/initSummary.js +2 -0
  5. package/dist/cli/formatters/initSummary.js.map +1 -1
  6. package/dist/cli/parseCliArgs.d.ts +6 -1
  7. package/dist/cli/parseCliArgs.d.ts.map +1 -1
  8. package/dist/cli/parseCliArgs.js +11 -1
  9. package/dist/cli/parseCliArgs.js.map +1 -1
  10. package/dist/config/projectConfig.d.ts +6 -0
  11. package/dist/config/projectConfig.d.ts.map +1 -1
  12. package/dist/config/projectConfig.js +13 -0
  13. package/dist/config/projectConfig.js.map +1 -1
  14. package/dist/entities/language/language.schema.d.ts +7 -0
  15. package/dist/entities/language/language.schema.d.ts.map +1 -0
  16. package/dist/entities/language/language.schema.js +3 -0
  17. package/dist/entities/language/language.schema.js.map +1 -0
  18. package/dist/entities/mcpSettings/mcpSettings.guard.d.ts +12 -0
  19. package/dist/entities/mcpSettings/mcpSettings.guard.d.ts.map +1 -0
  20. package/dist/entities/mcpSettings/mcpSettings.guard.js +15 -0
  21. package/dist/entities/mcpSettings/mcpSettings.guard.js.map +1 -0
  22. package/dist/entities/mcpSettings/mcpSettings.schema.d.ts +13 -0
  23. package/dist/entities/mcpSettings/mcpSettings.schema.d.ts.map +1 -0
  24. package/dist/entities/mcpSettings/mcpSettings.schema.js +9 -0
  25. package/dist/entities/mcpSettings/mcpSettings.schema.js.map +1 -0
  26. package/dist/frameworks/claude/claudeInvoker.d.ts +1 -1
  27. package/dist/frameworks/claude/claudeInvoker.d.ts.map +1 -1
  28. package/dist/frameworks/claude/claudeInvoker.js +6 -3
  29. package/dist/frameworks/claude/claudeInvoker.js.map +1 -1
  30. package/dist/frameworks/claude/languageDirective.d.ts +3 -0
  31. package/dist/frameworks/claude/languageDirective.d.ts.map +1 -0
  32. package/dist/frameworks/claude/languageDirective.js +9 -0
  33. package/dist/frameworks/claude/languageDirective.js.map +1 -0
  34. package/dist/frameworks/queue/pQueueAdapter.d.ts +2 -0
  35. package/dist/frameworks/queue/pQueueAdapter.d.ts.map +1 -1
  36. package/dist/frameworks/queue/pQueueAdapter.js +1 -1
  37. package/dist/frameworks/queue/pQueueAdapter.js.map +1 -1
  38. package/dist/frameworks/settings/runtimeSettings.d.ts +4 -0
  39. package/dist/frameworks/settings/runtimeSettings.d.ts.map +1 -1
  40. package/dist/frameworks/settings/runtimeSettings.js +8 -1
  41. package/dist/frameworks/settings/runtimeSettings.js.map +1 -1
  42. package/dist/interface-adapters/controllers/http/settings.routes.d.ts.map +1 -1
  43. package/dist/interface-adapters/controllers/http/settings.routes.js +12 -1
  44. package/dist/interface-adapters/controllers/http/settings.routes.js.map +1 -1
  45. package/dist/interface-adapters/controllers/webhook/github.controller.d.ts.map +1 -1
  46. package/dist/interface-adapters/controllers/webhook/github.controller.js +2 -1
  47. package/dist/interface-adapters/controllers/webhook/github.controller.js.map +1 -1
  48. package/dist/interface-adapters/controllers/webhook/gitlab.controller.d.ts.map +1 -1
  49. package/dist/interface-adapters/controllers/webhook/gitlab.controller.js +2 -1
  50. package/dist/interface-adapters/controllers/webhook/gitlab.controller.js.map +1 -1
  51. package/dist/interface-adapters/views/dashboard/index.html +974 -393
  52. package/dist/interface-adapters/views/dashboard/modules/assignee.d.ts +7 -0
  53. package/dist/interface-adapters/views/dashboard/modules/assignee.d.ts.map +1 -0
  54. package/dist/interface-adapters/views/dashboard/modules/assignee.js +47 -0
  55. package/dist/interface-adapters/views/dashboard/modules/assignee.js.map +1 -0
  56. package/dist/interface-adapters/views/dashboard/modules/constants.d.ts +7 -0
  57. package/dist/interface-adapters/views/dashboard/modules/constants.d.ts.map +1 -0
  58. package/dist/interface-adapters/views/dashboard/modules/constants.js +6 -0
  59. package/dist/interface-adapters/views/dashboard/modules/constants.js.map +1 -0
  60. package/dist/interface-adapters/views/dashboard/modules/desktopNotifications.d.ts +23 -0
  61. package/dist/interface-adapters/views/dashboard/modules/desktopNotifications.d.ts.map +1 -0
  62. package/dist/interface-adapters/views/dashboard/modules/desktopNotifications.js +37 -0
  63. package/dist/interface-adapters/views/dashboard/modules/desktopNotifications.js.map +1 -0
  64. package/dist/interface-adapters/views/dashboard/modules/formatting.d.ts +23 -0
  65. package/dist/interface-adapters/views/dashboard/modules/formatting.d.ts.map +1 -0
  66. package/dist/interface-adapters/views/dashboard/modules/formatting.js +57 -0
  67. package/dist/interface-adapters/views/dashboard/modules/formatting.js.map +1 -0
  68. package/dist/interface-adapters/views/dashboard/modules/html.d.ts +16 -0
  69. package/dist/interface-adapters/views/dashboard/modules/html.d.ts.map +1 -0
  70. package/dist/interface-adapters/views/dashboard/modules/html.js +68 -0
  71. package/dist/interface-adapters/views/dashboard/modules/html.js.map +1 -0
  72. package/dist/interface-adapters/views/dashboard/modules/i18n.d.ts +11 -0
  73. package/dist/interface-adapters/views/dashboard/modules/i18n.d.ts.map +1 -0
  74. package/dist/interface-adapters/views/dashboard/modules/i18n.js +500 -0
  75. package/dist/interface-adapters/views/dashboard/modules/i18n.js.map +1 -0
  76. package/dist/interface-adapters/views/dashboard/modules/icons.d.ts +13 -0
  77. package/dist/interface-adapters/views/dashboard/modules/icons.d.ts.map +1 -0
  78. package/dist/interface-adapters/views/dashboard/modules/icons.js +29 -0
  79. package/dist/interface-adapters/views/dashboard/modules/icons.js.map +1 -0
  80. package/dist/interface-adapters/views/dashboard/modules/loading.d.ts +30 -0
  81. package/dist/interface-adapters/views/dashboard/modules/loading.d.ts.map +1 -0
  82. package/dist/interface-adapters/views/dashboard/modules/loading.js +48 -0
  83. package/dist/interface-adapters/views/dashboard/modules/loading.js.map +1 -0
  84. package/dist/interface-adapters/views/dashboard/modules/notifications.d.ts +39 -0
  85. package/dist/interface-adapters/views/dashboard/modules/notifications.d.ts.map +1 -0
  86. package/dist/interface-adapters/views/dashboard/modules/notifications.js +131 -0
  87. package/dist/interface-adapters/views/dashboard/modules/notifications.js.map +1 -0
  88. package/dist/interface-adapters/views/dashboard/modules/priority.d.ts +10 -0
  89. package/dist/interface-adapters/views/dashboard/modules/priority.d.ts.map +1 -0
  90. package/dist/interface-adapters/views/dashboard/modules/priority.js +86 -0
  91. package/dist/interface-adapters/views/dashboard/modules/priority.js.map +1 -0
  92. package/dist/interface-adapters/views/dashboard/modules/quality.d.ts +30 -0
  93. package/dist/interface-adapters/views/dashboard/modules/quality.d.ts.map +1 -0
  94. package/dist/interface-adapters/views/dashboard/modules/quality.js +83 -0
  95. package/dist/interface-adapters/views/dashboard/modules/quality.js.map +1 -0
  96. package/dist/interface-adapters/views/dashboard/modules/queueLanes.d.ts +22 -0
  97. package/dist/interface-adapters/views/dashboard/modules/queueLanes.d.ts.map +1 -0
  98. package/dist/interface-adapters/views/dashboard/modules/queueLanes.js +27 -0
  99. package/dist/interface-adapters/views/dashboard/modules/queueLanes.js.map +1 -0
  100. package/dist/interface-adapters/views/dashboard/modules/sessionMetrics.d.ts +54 -0
  101. package/dist/interface-adapters/views/dashboard/modules/sessionMetrics.d.ts.map +1 -0
  102. package/dist/interface-adapters/views/dashboard/modules/sessionMetrics.js +120 -0
  103. package/dist/interface-adapters/views/dashboard/modules/sessionMetrics.js.map +1 -0
  104. package/dist/interface-adapters/views/dashboard/styles.css +1031 -93
  105. package/dist/main/cli.d.ts +41 -1
  106. package/dist/main/cli.d.ts.map +1 -1
  107. package/dist/main/cli.js +228 -88
  108. package/dist/main/cli.js.map +1 -1
  109. package/dist/tests/factories/reviewJob.factory.d.ts.map +1 -1
  110. package/dist/tests/factories/reviewJob.factory.js +1 -0
  111. package/dist/tests/factories/reviewJob.factory.js.map +1 -1
  112. package/dist/tests/units/cli/parseCliArgs.test.js +14 -0
  113. package/dist/tests/units/cli/parseCliArgs.test.js.map +1 -1
  114. package/dist/tests/units/config/projectConfig.test.d.ts +2 -0
  115. package/dist/tests/units/config/projectConfig.test.d.ts.map +1 -0
  116. package/dist/tests/units/config/projectConfig.test.js +69 -0
  117. package/dist/tests/units/config/projectConfig.test.js.map +1 -0
  118. package/dist/tests/units/entities/language/language.schema.test.d.ts +2 -0
  119. package/dist/tests/units/entities/language/language.schema.test.d.ts.map +1 -0
  120. package/dist/tests/units/entities/language/language.schema.test.js +17 -0
  121. package/dist/tests/units/entities/language/language.schema.test.js.map +1 -0
  122. package/dist/tests/units/entities/mcpSettings/mcpSettings.guard.test.d.ts +2 -0
  123. package/dist/tests/units/entities/mcpSettings/mcpSettings.guard.test.d.ts.map +1 -0
  124. package/dist/tests/units/entities/mcpSettings/mcpSettings.guard.test.js +52 -0
  125. package/dist/tests/units/entities/mcpSettings/mcpSettings.guard.test.js.map +1 -0
  126. package/dist/tests/units/frameworks/claude/languageDirective.test.d.ts +2 -0
  127. package/dist/tests/units/frameworks/claude/languageDirective.test.d.ts.map +1 -0
  128. package/dist/tests/units/frameworks/claude/languageDirective.test.js +13 -0
  129. package/dist/tests/units/frameworks/claude/languageDirective.test.js.map +1 -0
  130. package/dist/tests/units/frameworks/settings/runtimeSettings.test.d.ts +2 -0
  131. package/dist/tests/units/frameworks/settings/runtimeSettings.test.d.ts.map +1 -0
  132. package/dist/tests/units/frameworks/settings/runtimeSettings.test.js +20 -0
  133. package/dist/tests/units/frameworks/settings/runtimeSettings.test.js.map +1 -0
  134. package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js +1 -0
  135. package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js.map +1 -1
  136. package/dist/tests/units/interface-adapters/views/dashboard/modules/assignee.test.d.ts +2 -0
  137. package/dist/tests/units/interface-adapters/views/dashboard/modules/assignee.test.d.ts.map +1 -0
  138. package/dist/tests/units/interface-adapters/views/dashboard/modules/assignee.test.js +35 -0
  139. package/dist/tests/units/interface-adapters/views/dashboard/modules/assignee.test.js.map +1 -0
  140. package/dist/tests/units/interface-adapters/views/dashboard/modules/constants.test.d.ts +2 -0
  141. package/dist/tests/units/interface-adapters/views/dashboard/modules/constants.test.d.ts.map +1 -0
  142. package/dist/tests/units/interface-adapters/views/dashboard/modules/constants.test.js +17 -0
  143. package/dist/tests/units/interface-adapters/views/dashboard/modules/constants.test.js.map +1 -0
  144. package/dist/tests/units/interface-adapters/views/dashboard/modules/desktopNotifications.test.d.ts +2 -0
  145. package/dist/tests/units/interface-adapters/views/dashboard/modules/desktopNotifications.test.d.ts.map +1 -0
  146. package/dist/tests/units/interface-adapters/views/dashboard/modules/desktopNotifications.test.js +54 -0
  147. package/dist/tests/units/interface-adapters/views/dashboard/modules/desktopNotifications.test.js.map +1 -0
  148. package/dist/tests/units/interface-adapters/views/dashboard/modules/formatting.test.d.ts +2 -0
  149. package/dist/tests/units/interface-adapters/views/dashboard/modules/formatting.test.d.ts.map +1 -0
  150. package/dist/tests/units/interface-adapters/views/dashboard/modules/formatting.test.js +95 -0
  151. package/dist/tests/units/interface-adapters/views/dashboard/modules/formatting.test.js.map +1 -0
  152. package/dist/tests/units/interface-adapters/views/dashboard/modules/html.test.d.ts +2 -0
  153. package/dist/tests/units/interface-adapters/views/dashboard/modules/html.test.d.ts.map +1 -0
  154. package/dist/tests/units/interface-adapters/views/dashboard/modules/html.test.js +55 -0
  155. package/dist/tests/units/interface-adapters/views/dashboard/modules/html.test.js.map +1 -0
  156. package/dist/tests/units/interface-adapters/views/dashboard/modules/i18n.test.d.ts +2 -0
  157. package/dist/tests/units/interface-adapters/views/dashboard/modules/i18n.test.d.ts.map +1 -0
  158. package/dist/tests/units/interface-adapters/views/dashboard/modules/i18n.test.js +98 -0
  159. package/dist/tests/units/interface-adapters/views/dashboard/modules/i18n.test.js.map +1 -0
  160. package/dist/tests/units/interface-adapters/views/dashboard/modules/icons.test.d.ts +2 -0
  161. package/dist/tests/units/interface-adapters/views/dashboard/modules/icons.test.d.ts.map +1 -0
  162. package/dist/tests/units/interface-adapters/views/dashboard/modules/icons.test.js +28 -0
  163. package/dist/tests/units/interface-adapters/views/dashboard/modules/icons.test.js.map +1 -0
  164. package/dist/tests/units/interface-adapters/views/dashboard/modules/loading.test.d.ts +2 -0
  165. package/dist/tests/units/interface-adapters/views/dashboard/modules/loading.test.d.ts.map +1 -0
  166. package/dist/tests/units/interface-adapters/views/dashboard/modules/loading.test.js +51 -0
  167. package/dist/tests/units/interface-adapters/views/dashboard/modules/loading.test.js.map +1 -0
  168. package/dist/tests/units/interface-adapters/views/dashboard/modules/notifications.test.d.ts +2 -0
  169. package/dist/tests/units/interface-adapters/views/dashboard/modules/notifications.test.d.ts.map +1 -0
  170. package/dist/tests/units/interface-adapters/views/dashboard/modules/notifications.test.js +43 -0
  171. package/dist/tests/units/interface-adapters/views/dashboard/modules/notifications.test.js.map +1 -0
  172. package/dist/tests/units/interface-adapters/views/dashboard/modules/priority.test.d.ts +2 -0
  173. package/dist/tests/units/interface-adapters/views/dashboard/modules/priority.test.d.ts.map +1 -0
  174. package/dist/tests/units/interface-adapters/views/dashboard/modules/priority.test.js +78 -0
  175. package/dist/tests/units/interface-adapters/views/dashboard/modules/priority.test.js.map +1 -0
  176. package/dist/tests/units/interface-adapters/views/dashboard/modules/quality.test.d.ts +2 -0
  177. package/dist/tests/units/interface-adapters/views/dashboard/modules/quality.test.d.ts.map +1 -0
  178. package/dist/tests/units/interface-adapters/views/dashboard/modules/quality.test.js +87 -0
  179. package/dist/tests/units/interface-adapters/views/dashboard/modules/quality.test.js.map +1 -0
  180. package/dist/tests/units/interface-adapters/views/dashboard/modules/queueLanes.test.d.ts +2 -0
  181. package/dist/tests/units/interface-adapters/views/dashboard/modules/queueLanes.test.d.ts.map +1 -0
  182. package/dist/tests/units/interface-adapters/views/dashboard/modules/queueLanes.test.js +29 -0
  183. package/dist/tests/units/interface-adapters/views/dashboard/modules/queueLanes.test.js.map +1 -0
  184. package/dist/tests/units/interface-adapters/views/dashboard/modules/sessionMetrics.test.d.ts +2 -0
  185. package/dist/tests/units/interface-adapters/views/dashboard/modules/sessionMetrics.test.d.ts.map +1 -0
  186. package/dist/tests/units/interface-adapters/views/dashboard/modules/sessionMetrics.test.js +60 -0
  187. package/dist/tests/units/interface-adapters/views/dashboard/modules/sessionMetrics.test.js.map +1 -0
  188. package/dist/tests/units/main/executeDiscover.test.d.ts +2 -0
  189. package/dist/tests/units/main/executeDiscover.test.d.ts.map +1 -0
  190. package/dist/tests/units/main/executeDiscover.test.js +106 -0
  191. package/dist/tests/units/main/executeDiscover.test.js.map +1 -0
  192. package/dist/tests/units/main/executeInit.test.d.ts +2 -0
  193. package/dist/tests/units/main/executeInit.test.d.ts.map +1 -0
  194. package/dist/tests/units/main/executeInit.test.js +290 -0
  195. package/dist/tests/units/main/executeInit.test.js.map +1 -0
  196. package/dist/tests/units/usecases/cli/addRepositoriesToConfig.usecase.test.d.ts +2 -0
  197. package/dist/tests/units/usecases/cli/addRepositoriesToConfig.usecase.test.d.ts.map +1 -0
  198. package/dist/tests/units/usecases/cli/addRepositoriesToConfig.usecase.test.js +127 -0
  199. package/dist/tests/units/usecases/cli/addRepositoriesToConfig.usecase.test.js.map +1 -0
  200. package/dist/tests/units/usecases/cli/checkInitPrerequisites.test.d.ts +2 -0
  201. package/dist/tests/units/usecases/cli/checkInitPrerequisites.test.d.ts.map +1 -0
  202. package/dist/tests/units/usecases/cli/checkInitPrerequisites.test.js +57 -0
  203. package/dist/tests/units/usecases/cli/checkInitPrerequisites.test.js.map +1 -0
  204. package/dist/tests/units/usecases/cli/configureMcp.usecase.test.js +67 -9
  205. package/dist/tests/units/usecases/cli/configureMcp.usecase.test.js.map +1 -1
  206. package/dist/usecases/cli/addRepositoriesToConfig.usecase.d.ts +27 -0
  207. package/dist/usecases/cli/addRepositoriesToConfig.usecase.d.ts.map +1 -0
  208. package/dist/usecases/cli/addRepositoriesToConfig.usecase.js +34 -0
  209. package/dist/usecases/cli/addRepositoriesToConfig.usecase.js.map +1 -0
  210. package/dist/usecases/cli/checkInitPrerequisites.d.ts +16 -0
  211. package/dist/usecases/cli/checkInitPrerequisites.d.ts.map +1 -0
  212. package/dist/usecases/cli/checkInitPrerequisites.js +23 -0
  213. package/dist/usecases/cli/checkInitPrerequisites.js.map +1 -0
  214. package/dist/usecases/cli/configureMcp.usecase.d.ts +2 -2
  215. package/dist/usecases/cli/configureMcp.usecase.d.ts.map +1 -1
  216. package/dist/usecases/cli/configureMcp.usecase.js +16 -3
  217. package/dist/usecases/cli/configureMcp.usecase.js.map +1 -1
  218. package/dist/usecases/cli/validateConfig.usecase.d.ts +1 -1
  219. package/dist/usecases/cli/validateConfig.usecase.d.ts.map +1 -1
  220. package/dist/usecases/triggerReview.usecase.d.ts +2 -0
  221. package/dist/usecases/triggerReview.usecase.d.ts.map +1 -1
  222. package/dist/usecases/triggerReview.usecase.js +1 -0
  223. package/dist/usecases/triggerReview.usecase.js.map +1 -1
  224. package/package.json +1 -1
  225. package/templates/SETUP.md +23 -8
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param {Record<string, unknown>} review
3
+ * @param {Array<Record<string, unknown>>} trackedMergeRequests
4
+ * @returns {string}
5
+ */
6
+ export function resolveReviewAssigneeDisplay(review: Record<string, unknown>, trackedMergeRequests: Array<Record<string, unknown>>): string;
7
+ //# sourceMappingURL=assignee.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assignee.d.ts","sourceRoot":"","sources":["../../../../../src/interface-adapters/views/dashboard/modules/assignee.js"],"names":[],"mappings":"AA8BA;;;;GAIG;AACH,qDAJW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,wBACvB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC5B,MAAM,CAalB"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @param {unknown} value
3
+ * @returns {string | null}
4
+ */
5
+ function toNonEmptyString(value) {
6
+ return typeof value === 'string' && value.trim().length > 0 ? value : null;
7
+ }
8
+
9
+ /**
10
+ * @param {Record<string, unknown>} review
11
+ * @returns {string | null}
12
+ */
13
+ function getReviewAssigneeDisplay(review) {
14
+ const assignedBy = review.assignedBy;
15
+ if (!assignedBy || typeof assignedBy !== 'object') return null;
16
+
17
+ return toNonEmptyString(assignedBy.displayName) ?? toNonEmptyString(assignedBy.username);
18
+ }
19
+
20
+ /**
21
+ * @param {Record<string, unknown>} mergeRequest
22
+ * @returns {string | null}
23
+ */
24
+ function getMergeRequestAssigneeDisplay(mergeRequest) {
25
+ const assignment = mergeRequest.assignment;
26
+ if (!assignment || typeof assignment !== 'object') return null;
27
+
28
+ return toNonEmptyString(assignment.displayName) ?? toNonEmptyString(assignment.username);
29
+ }
30
+
31
+ /**
32
+ * @param {Record<string, unknown>} review
33
+ * @param {Array<Record<string, unknown>>} trackedMergeRequests
34
+ * @returns {string}
35
+ */
36
+ export function resolveReviewAssigneeDisplay(review, trackedMergeRequests) {
37
+ const reviewAssigneeDisplay = getReviewAssigneeDisplay(review);
38
+ if (reviewAssigneeDisplay) return reviewAssigneeDisplay;
39
+
40
+ if (typeof review.mrNumber !== 'number') return 'unknown';
41
+ const matchingMergeRequest = trackedMergeRequests.find(
42
+ (mergeRequest) => mergeRequest.mrNumber === review.mrNumber,
43
+ );
44
+ if (!matchingMergeRequest) return 'unknown';
45
+
46
+ return getMergeRequestAssigneeDisplay(matchingMergeRequest) ?? 'unknown';
47
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assignee.js","sourceRoot":"","sources":["../../../../../src/interface-adapters/views/dashboard/modules/assignee.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,SAAS,gBAAgB,CAAC,KAAK;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,SAAS,wBAAwB,CAAC,MAAM;IACtC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACrC,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE/D,OAAO,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3F,CAAC;AAED;;;GAGG;AACH,SAAS,8BAA8B,CAAC,YAAY;IAClD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;IAC3C,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE/D,OAAO,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAM,EAAE,oBAAoB;IACvE,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC/D,IAAI,qBAAqB;QAAE,OAAO,qBAAqB,CAAC;IAExD,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,IAAI,CACpD,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAC5D,CAAC;IACF,IAAI,CAAC,oBAAoB;QAAE,OAAO,SAAS,CAAC;IAE5C,OAAO,8BAA8B,CAAC,oBAAoB,CAAC,IAAI,SAAS,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const MAX_RECONNECT_ATTEMPTS: 10;
2
+ export const RECONNECT_DELAY: 3000;
3
+ export const STORAGE_KEY_PROJECTS: "review-flow-projects";
4
+ export const STORAGE_KEY_CURRENT: "review-flow-current-project";
5
+ export const STORAGE_KEY_FOCUS_STRIP_MODE: "review-flow-focus-strip-mode";
6
+ export const QUALITY_TARGET_SCORE: 8;
7
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/interface-adapters/views/dashboard/modules/constants.js"],"names":[],"mappings":"AAAA,qCAAsC,EAAE,CAAC;AACzC,8BAA+B,IAAI,CAAC;AACpC,mCAAoC,sBAAsB,CAAC;AAC3D,kCAAmC,6BAA6B,CAAC;AACjE,2CAA4C,8BAA8B,CAAC;AAC3E,mCAAoC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const MAX_RECONNECT_ATTEMPTS = 10;
2
+ export const RECONNECT_DELAY = 3000;
3
+ export const STORAGE_KEY_PROJECTS = 'review-flow-projects';
4
+ export const STORAGE_KEY_CURRENT = 'review-flow-current-project';
5
+ export const STORAGE_KEY_FOCUS_STRIP_MODE = 'review-flow-focus-strip-mode';
6
+ export const QUALITY_TARGET_SCORE = 8;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/interface-adapters/views/dashboard/modules/constants.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,6BAA6B,CAAC;AACjE,MAAM,CAAC,MAAM,4BAA4B,GAAG,8BAA8B,CAAC;AAC3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @param {{ permission: string, isDocumentHidden: boolean, notifyWhenVisible?: boolean }} options
3
+ * @returns {boolean}
4
+ */
5
+ export function shouldNotifyDesktop(options: {
6
+ permission: string;
7
+ isDocumentHidden: boolean;
8
+ notifyWhenVisible?: boolean;
9
+ }): boolean;
10
+ /**
11
+ * @param {{ kind: string, review: Record<string, unknown> }} notification
12
+ * @param {(key: string, params?: Record<string, string | number>) => string} translate
13
+ * @returns {{ title: string, body: string, tag: string } | null}
14
+ */
15
+ export function getDesktopNotificationPayload(notification: {
16
+ kind: string;
17
+ review: Record<string, unknown>;
18
+ }, translate: (key: string, params?: Record<string, string | number>) => string): {
19
+ title: string;
20
+ body: string;
21
+ tag: string;
22
+ } | null;
23
+ //# sourceMappingURL=desktopNotifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktopNotifications.d.ts","sourceRoot":"","sources":["../../../../../src/interface-adapters/views/dashboard/modules/desktopNotifications.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,6CAHW;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5E,OAAO,CAMnB;AAED;;;;GAIG;AACH,4DAJW;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,aACjD,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,MAAM,GAC/D;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAuB/D"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @param {{ permission: string, isDocumentHidden: boolean, notifyWhenVisible?: boolean }} options
3
+ * @returns {boolean}
4
+ */
5
+ export function shouldNotifyDesktop(options) {
6
+ if (options.permission !== 'granted') return false;
7
+ if (options.notifyWhenVisible === true) return true;
8
+ return options.isDocumentHidden;
9
+ }
10
+
11
+ /**
12
+ * @param {{ kind: string, review: Record<string, unknown> }} notification
13
+ * @param {(key: string, params?: Record<string, string | number>) => string} translate
14
+ * @returns {{ title: string, body: string, tag: string } | null}
15
+ */
16
+ export function getDesktopNotificationPayload(notification, translate) {
17
+ const mrNumber = typeof notification.review.mrNumber === 'number'
18
+ ? String(notification.review.mrNumber)
19
+ : '?';
20
+
21
+ const messageKeyByKind = {
22
+ reviewStarted: 'notify.reviewStarted',
23
+ followupStarted: 'notify.followupStarted',
24
+ reviewCompleted: 'notify.reviewCompleted',
25
+ followupCompleted: 'notify.followupCompleted',
26
+ reviewFailed: 'notify.reviewFailed',
27
+ };
28
+
29
+ const messageKey = messageKeyByKind[notification.kind];
30
+ if (!messageKey) return null;
31
+
32
+ return {
33
+ title: translate('notify.desktopTitle'),
34
+ body: translate(messageKey, { mrNumber }),
35
+ tag: `reviewflow-${notification.kind}-${mrNumber}`,
36
+ };
37
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktopNotifications.js","sourceRoot":"","sources":["../../../../../src/interface-adapters/views/dashboard/modules/desktopNotifications.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAO;IACzC,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,OAAO,CAAC,iBAAiB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,OAAO,CAAC,gBAAgB,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,YAAY,EAAE,SAAS;IACnE,MAAM,QAAQ,GAAG,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAC/D,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtC,CAAC,CAAC,GAAG,CAAC;IAER,MAAM,gBAAgB,GAAG;QACvB,aAAa,EAAE,sBAAsB;QACrC,eAAe,EAAE,wBAAwB;QACzC,eAAe,EAAE,wBAAwB;QACzC,iBAAiB,EAAE,0BAA0B;QAC7C,YAAY,EAAE,qBAAqB;KACpC,CAAC;IAEF,MAAM,UAAU,GAAG,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,qBAAqB,CAAC;QACvC,IAAI,EAAE,SAAS,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC;QACzC,GAAG,EAAE,cAAc,YAAY,CAAC,IAAI,IAAI,QAAQ,EAAE;KACnD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @param {string | null | undefined} dateStr
3
+ * @returns {string}
4
+ */
5
+ export function formatTime(dateStr: string | null | undefined): string;
6
+ /**
7
+ * @param {string | null | undefined} startStr
8
+ * @param {string | null | undefined} endStr
9
+ * @param {number | null | undefined} totalMs
10
+ * @returns {string}
11
+ */
12
+ export function formatDuration(startStr: string | null | undefined, endStr: string | null | undefined, totalMs: number | null | undefined): string;
13
+ /**
14
+ * @param {string} phase
15
+ * @returns {string}
16
+ */
17
+ export function formatPhase(phase: string): string;
18
+ /**
19
+ * @param {number} timestamp
20
+ * @returns {string}
21
+ */
22
+ export function formatLogTime(timestamp: number): string;
23
+ //# sourceMappingURL=formatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../../../../src/interface-adapters/views/dashboard/modules/formatting.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,oCAHW,MAAM,GAAG,IAAI,GAAG,SAAS,GACvB,MAAM,CAYlB;AAED;;;;;GAKG;AACH,yCALW,MAAM,GAAG,IAAI,GAAG,SAAS,UACzB,MAAM,GAAG,IAAI,GAAG,SAAS,WACzB,MAAM,GAAG,IAAI,GAAG,SAAS,GACvB,MAAM,CAgBlB;AAED;;;GAGG;AACH,mCAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;GAGG;AACH,yCAHW,MAAM,GACJ,MAAM,CAMlB"}
@@ -0,0 +1,57 @@
1
+ import { t, getLanguage } from './i18n.js';
2
+
3
+ /**
4
+ * @param {string | null | undefined} dateStr
5
+ * @returns {string}
6
+ */
7
+ export function formatTime(dateStr) {
8
+ if (!dateStr) return '-';
9
+ const date = new Date(dateStr);
10
+ const now = new Date();
11
+ const diff = now - date;
12
+ if (diff < 60000) return t('time.justNow');
13
+ if (diff < 3600000) return t('time.minutesAgo', { minutes: Math.floor(diff / 60000) });
14
+ if (diff < 86400000) return t('time.hoursAgo', { hours: Math.floor(diff / 3600000) });
15
+ const locale = getLanguage() === 'fr' ? 'fr-FR' : 'en-US';
16
+ return date.toLocaleDateString(locale);
17
+ }
18
+
19
+ /**
20
+ * @param {string | null | undefined} startStr
21
+ * @param {string | null | undefined} endStr
22
+ * @param {number | null | undefined} totalMs
23
+ * @returns {string}
24
+ */
25
+ export function formatDuration(startStr, endStr, totalMs) {
26
+ let diff;
27
+ if (totalMs !== undefined && totalMs !== null) {
28
+ diff = Math.floor(totalMs / 1000);
29
+ } else if (startStr) {
30
+ const start = new Date(startStr);
31
+ const end = endStr ? new Date(endStr) : new Date();
32
+ diff = Math.floor((end - start) / 1000);
33
+ } else {
34
+ return '';
35
+ }
36
+ if (diff < 60) return `${diff}s`;
37
+ if (diff < 3600) return `${Math.floor(diff / 60)}m ${diff % 60}s`;
38
+ return `${Math.floor(diff / 3600)}h ${Math.floor((diff % 3600) / 60)}m`;
39
+ }
40
+
41
+ /**
42
+ * @param {string} phase
43
+ * @returns {string}
44
+ */
45
+ export function formatPhase(phase) {
46
+ return t(`phase.${phase}`);
47
+ }
48
+
49
+ /**
50
+ * @param {number} timestamp
51
+ * @returns {string}
52
+ */
53
+ export function formatLogTime(timestamp) {
54
+ const date = new Date(timestamp);
55
+ const locale = getLanguage() === 'fr' ? 'fr-FR' : 'en-US';
56
+ return date.toLocaleTimeString(locale);
57
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../../../../src/interface-adapters/views/dashboard/modules/formatting.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,OAAO;IAChC,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IACxB,IAAI,IAAI,GAAG,KAAK;QAAE,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,IAAI,GAAG,OAAO;QAAE,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IACvF,IAAI,IAAI,GAAG,QAAQ;QAAE,OAAO,CAAC,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO;IACtD,IAAI,IAAI,CAAC;IACT,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9C,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACpC,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACnD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC;IAClE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAK;IAC/B,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAAS;IACrC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @param {string | null | undefined} text
3
+ * @returns {string}
4
+ */
5
+ export function escapeHtml(text: string | null | undefined): string;
6
+ /**
7
+ * @param {string | null | undefined} url
8
+ * @returns {string}
9
+ */
10
+ export function sanitizeHttpUrl(url: string | null | undefined): string;
11
+ /**
12
+ * @param {string} md
13
+ * @returns {string}
14
+ */
15
+ export function markdownToHtml(md: string): string;
16
+ //# sourceMappingURL=html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../../../../src/interface-adapters/views/dashboard/modules/html.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,iCAHW,MAAM,GAAG,IAAI,GAAG,SAAS,GACvB,MAAM,CAUlB;AAED;;;GAGG;AACH,qCAHW,MAAM,GAAG,IAAI,GAAG,SAAS,GACvB,MAAM,CAgBlB;AAED;;;GAGG;AACH,mCAHW,MAAM,GACJ,MAAM,CA+BlB"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @param {string | null | undefined} text
3
+ * @returns {string}
4
+ */
5
+ export function escapeHtml(text) {
6
+ if (!text) return '';
7
+ return text
8
+ .replace(/&/g, '&amp;')
9
+ .replace(/</g, '&lt;')
10
+ .replace(/>/g, '&gt;')
11
+ .replace(/"/g, '&quot;')
12
+ .replace(/'/g, '&#39;');
13
+ }
14
+
15
+ /**
16
+ * @param {string | null | undefined} url
17
+ * @returns {string}
18
+ */
19
+ export function sanitizeHttpUrl(url) {
20
+ if (!url) return '#';
21
+
22
+ try {
23
+ const fallbackOrigin = typeof window !== 'undefined' ? window.location.origin : 'http://localhost';
24
+ const parsedUrl = new URL(url, fallbackOrigin);
25
+ if (parsedUrl.protocol === 'http:' || parsedUrl.protocol === 'https:') {
26
+ return parsedUrl.href;
27
+ }
28
+ } catch {
29
+ return '#';
30
+ }
31
+
32
+ return '#';
33
+ }
34
+
35
+ /**
36
+ * @param {string} md
37
+ * @returns {string}
38
+ */
39
+ export function markdownToHtml(md) {
40
+ const html = md
41
+ .replace(/&/g, '&amp;')
42
+ .replace(/</g, '&lt;')
43
+ .replace(/>/g, '&gt;')
44
+ .replace(/```(\w*)\n([\s\S]*?)```/g, '<pre><code>$2</code></pre>')
45
+ .replace(/`([^`]+)`/g, '<code>$1</code>')
46
+ .replace(/^### (.+)$/gm, '<h3>$1</h3>')
47
+ .replace(/^## (.+)$/gm, '<h2>$1</h2>')
48
+ .replace(/^# (.+)$/gm, '<h1>$1</h1>')
49
+ .replace(/\*\*([^*]+)\*\*/g, '<strong>$1</strong>')
50
+ .replace(/\*([^*]+)\*/g, '<em>$1</em>')
51
+ .replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" target="_blank">$1</a>')
52
+ .replace(/^> (.+)$/gm, '<blockquote>$1</blockquote>')
53
+ .replace(/^- (.+)$/gm, '<li>$1</li>')
54
+ .replace(/^\d+\. (.+)$/gm, '<li>$1</li>')
55
+ .replace(/^---$/gm, '<hr>')
56
+ .replace(/^\|(.+)\|$/gm, (match, content) => {
57
+ const cells = content.split('|').map((/** @type {string} */ c) => c.trim());
58
+ if (cells.every((/** @type {string} */ c) => c.match(/^-+$/))) return '';
59
+ const cellTag = match.includes('---') ? 'th' : 'td';
60
+ return '<tr>' + cells.map((/** @type {string} */ c) => `<${cellTag}>${c}</${cellTag}>`).join('') + '</tr>';
61
+ })
62
+ .replace(/(<tr>[\s\S]*?<\/tr>)+/g, '<table>$&</table>')
63
+ .replace(/(<li>[\s\S]*?<\/li>)+/g, '<ul>$&</ul>')
64
+ .replace(/\n\n/g, '</p><p>')
65
+ .replace(/\n/g, '<br>');
66
+
67
+ return '<p>' + html + '</p>';
68
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../../../../src/interface-adapters/views/dashboard/modules/html.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /** @returns {'en' | 'fr'} */
2
+ export function getLanguage(): "en" | "fr";
3
+ /** @param {'en' | 'fr'} language */
4
+ export function setLanguage(language: "en" | "fr"): void;
5
+ /**
6
+ * @param {string} key
7
+ * @param {Record<string, string | number>} [params]
8
+ * @returns {string}
9
+ */
10
+ export function t(key: string, params?: Record<string, string | number>): string;
11
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../src/interface-adapters/views/dashboard/modules/i18n.js"],"names":[],"mappings":"AA4dA,6BAA6B;AAC7B,+BADc,IAAI,GAAG,IAAI,CAGxB;AAED,oCAAoC;AACpC,sCADY,IAAI,GAAG,IAAI,QAGtB;AAED;;;;GAIG;AACH,uBAJW,MAAM,WACN,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAC7B,MAAM,CAUlB"}