@cccsaurora/howler-ui 2.19.0-dev.1181 → 2.19.0-dev.1260

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 (419) hide show
  1. package/api/analytic/index.d.ts +2 -3
  2. package/api/analytic/index.js +1 -2
  3. package/api/index.d.ts +4 -0
  4. package/api/index.js +10 -2
  5. package/api/search/case.d.ts +4 -0
  6. package/api/search/case.js +8 -0
  7. package/api/search/facet/hit.d.ts +1 -3
  8. package/api/search/facet/index.d.ts +3 -1
  9. package/api/search/index.d.ts +3 -1
  10. package/api/search/index.js +2 -1
  11. package/api/socket/index.d.ts +3 -0
  12. package/api/socket/index.js +6 -0
  13. package/api/socket/viewers.d.ts +2 -0
  14. package/api/socket/viewers.js +8 -0
  15. package/api/socket/viewers.test.js +44 -0
  16. package/api/v2/case/index.d.ts +9 -0
  17. package/api/v2/case/index.js +21 -0
  18. package/api/v2/case/items.d.ts +9 -0
  19. package/api/v2/case/items.js +19 -0
  20. package/api/v2/case/rules.d.ts +6 -0
  21. package/api/v2/case/rules.js +18 -0
  22. package/api/v2/fuzzy.d.ts +17 -0
  23. package/api/v2/fuzzy.js +11 -0
  24. package/api/v2/index.d.ts +5 -0
  25. package/api/v2/index.js +7 -0
  26. package/api/v2/search/facet.d.ts +3 -0
  27. package/api/v2/search/facet.js +12 -0
  28. package/api/v2/search/index.d.ts +6 -0
  29. package/api/v2/search/index.js +24 -0
  30. package/commons/components/leftnav/LeftNavDrawer.js +1 -1
  31. package/components/app/App.js +49 -11
  32. package/components/app/hooks/useMatchers.d.ts +1 -1
  33. package/components/app/hooks/useMatchers.js +23 -11
  34. package/components/app/hooks/useMatchers.test.js +22 -22
  35. package/components/app/hooks/useTitle.js +5 -5
  36. package/components/app/providers/FavouritesProvider.js +2 -2
  37. package/components/app/providers/GridColumnsProvider.js +2 -2
  38. package/components/app/providers/GridColumnsProvider.test.js +3 -3
  39. package/components/app/providers/ModalProvider.d.ts +1 -0
  40. package/components/app/providers/ParameterProvider.d.ts +25 -3
  41. package/components/app/providers/ParameterProvider.js +163 -226
  42. package/components/app/providers/ParameterProvider.test.js +358 -94
  43. package/components/app/providers/RecordProvider.d.ts +23 -0
  44. package/components/app/providers/{HitProvider.js → RecordProvider.js} +46 -42
  45. package/components/app/providers/{HitSearchProvider.d.ts → RecordSearchProvider.d.ts} +6 -6
  46. package/components/app/providers/{HitSearchProvider.js → RecordSearchProvider.js} +13 -19
  47. package/components/app/providers/{HitSearchProvider.test.js → RecordSearchProvider.test.js} +52 -71
  48. package/components/app/providers/SearchResponseProvider.d.ts +4 -4
  49. package/components/app/providers/SearchResponseProvider.js +1 -1
  50. package/components/app/providers/SocketProvider.d.ts +11 -2
  51. package/components/app/providers/SocketProvider.js +18 -5
  52. package/components/app/providers/UserListProvider.js +28 -8
  53. package/components/app/providers/UserListProvider.test.js +150 -0
  54. package/components/elements/ContextMenu.d.ts +56 -0
  55. package/components/elements/ContextMenu.js +109 -0
  56. package/components/elements/ContextMenu.test.d.ts +1 -0
  57. package/components/elements/ContextMenu.test.js +215 -0
  58. package/components/{routes/overviews/OverviewEditor.js → elements/MarkdownEditor.js} +3 -3
  59. package/components/elements/ObjectDetails.d.ts +6 -0
  60. package/components/elements/{hit/HitDetails.js → ObjectDetails.js} +17 -17
  61. package/components/elements/PluginChip.d.ts +1 -1
  62. package/components/elements/PluginChip.js +0 -1
  63. package/components/elements/PluginTypography.d.ts +2 -1
  64. package/components/elements/PluginTypography.js +3 -2
  65. package/components/elements/UserList.d.ts +5 -2
  66. package/components/elements/UserList.js +33 -16
  67. package/components/elements/UserList.test.d.ts +1 -0
  68. package/components/elements/UserList.test.js +122 -0
  69. package/components/elements/addons/lists/TuiListElement.d.ts +1 -1
  70. package/components/elements/addons/lists/TuiListElement.js +0 -1
  71. package/components/elements/addons/search/SearchTotal.js +1 -1
  72. package/components/elements/addons/search/SearchTotal.test.js +2 -2
  73. package/components/elements/addons/search/phrase/Phrase.js +1 -1
  74. package/components/elements/case/CaseCard.d.ts +12 -0
  75. package/components/elements/case/CaseCard.js +43 -0
  76. package/components/elements/case/CasePreview.d.ts +6 -0
  77. package/components/elements/case/CasePreview.js +17 -0
  78. package/components/elements/case/StatusIcon.d.ts +5 -0
  79. package/components/elements/case/StatusIcon.js +13 -0
  80. package/components/elements/display/ChipPopper.d.ts +1 -1
  81. package/components/elements/display/ChipPopper.js +6 -5
  82. package/components/elements/display/Classification.js +1 -1
  83. package/components/elements/display/ClassificationChip.d.ts +14 -0
  84. package/components/elements/display/ClassificationChip.js +36 -0
  85. package/components/elements/display/HowlerCard.js +1 -1
  86. package/components/elements/display/HowlerCard.test.js +5 -9
  87. package/components/elements/display/ItemManager.js +2 -2
  88. package/components/elements/display/Modal.js +2 -0
  89. package/components/elements/display/QueryResultText.d.ts +1 -0
  90. package/components/elements/display/QueryResultText.js +2 -2
  91. package/components/elements/event/EventCard.d.ts +6 -0
  92. package/components/elements/event/EventCard.js +22 -0
  93. package/components/elements/event/EventPreview.d.ts +6 -0
  94. package/components/elements/event/EventPreview.js +12 -0
  95. package/components/elements/hit/HitActions.js +4 -4
  96. package/components/elements/hit/HitBanner.d.ts +1 -0
  97. package/components/elements/hit/HitBanner.js +31 -49
  98. package/components/elements/hit/HitCard.d.ts +4 -0
  99. package/components/elements/hit/HitCard.js +7 -7
  100. package/components/elements/hit/HitLabels.js +2 -2
  101. package/components/elements/hit/HitLabels.test.js +2 -2
  102. package/components/elements/hit/HitOutline.d.ts +1 -0
  103. package/components/elements/hit/HitOutline.js +3 -3
  104. package/components/elements/hit/{HitQuickSearch.d.ts → HitPreview.d.ts} +3 -3
  105. package/components/elements/hit/{HitQuickSearch.js → HitPreview.js} +10 -4
  106. package/components/elements/hit/HitSummary.d.ts +2 -1
  107. package/components/elements/hit/HitSummary.js +6 -5
  108. package/components/elements/hit/aggregate/HitGraph.js +8 -8
  109. package/components/elements/hit/elements/AnalyticLink.d.ts +9 -0
  110. package/components/elements/hit/elements/AnalyticLink.js +22 -0
  111. package/components/elements/hit/elements/{HitUsers.d.ts → Assigned.d.ts} +3 -4
  112. package/components/elements/hit/elements/Assigned.js +36 -0
  113. package/components/elements/hit/elements/Assigned.test.d.ts +1 -0
  114. package/components/elements/hit/elements/Assigned.test.js +65 -0
  115. package/components/elements/hit/grid/AddColumnModal.js +5 -4
  116. package/components/elements/hit/grid/EnhancedCell.d.ts +2 -1
  117. package/components/elements/hit/grid/EnhancedCell.js +2 -2
  118. package/components/elements/hit/grid/{HitRow.d.ts → RecordRow.d.ts} +3 -2
  119. package/components/elements/hit/grid/{HitRow.js → RecordRow.js} +11 -9
  120. package/components/elements/hit/grid/{HitTable.d.ts → RecordTable.d.ts} +5 -4
  121. package/components/elements/hit/grid/{HitTable.js → RecordTable.js} +13 -11
  122. package/components/elements/hit/outlines/DefaultOutline.js +1 -1
  123. package/components/elements/hit/related/RelatedRecords.js +63 -0
  124. package/components/elements/{hit/HitComments.d.ts → record/RecordComments.d.ts} +5 -4
  125. package/components/elements/{hit/HitComments.js → record/RecordComments.js} +29 -28
  126. package/components/elements/{hit/HitContextMenu.d.ts → record/RecordContextMenu.d.ts} +3 -3
  127. package/components/elements/record/RecordContextMenu.js +268 -0
  128. package/components/elements/record/RecordContextMenu.test.d.ts +1 -0
  129. package/components/elements/{hit/HitContextMenu.test.js → record/RecordContextMenu.test.js} +98 -43
  130. package/components/elements/record/RecordRelated.d.ts +7 -0
  131. package/components/elements/record/RecordRelated.js +34 -0
  132. package/components/elements/{hit/HitWorklog.d.ts → record/RecordWorklog.d.ts} +4 -3
  133. package/components/elements/{hit/HitWorklog.js → record/RecordWorklog.js} +15 -13
  134. package/components/elements/search/FuzzySearchBar.d.ts +7 -0
  135. package/components/elements/search/FuzzySearchBar.js +33 -0
  136. package/components/elements/search/FuzzySearchBar.test.d.ts +1 -0
  137. package/components/elements/search/FuzzySearchBar.test.js +87 -0
  138. package/components/elements/view/ViewTitle.d.ts +1 -0
  139. package/components/elements/view/ViewTitle.js +9 -2
  140. package/components/hooks/useHitActions.d.ts +1 -1
  141. package/components/hooks/useHitActions.js +4 -4
  142. package/components/hooks/useMyPreferences.js +10 -1
  143. package/components/hooks/useMySearch.js +2 -2
  144. package/components/hooks/useMySitemap.js +4 -1
  145. package/components/hooks/useMyTheme.js +9 -2
  146. package/components/hooks/{useHitSelection.d.ts → useRecordSelection.d.ts} +2 -2
  147. package/components/hooks/{useHitSelection.js → useRecordSelection.js} +12 -33
  148. package/components/hooks/useRelatedRecords.d.ts +13 -0
  149. package/components/hooks/useRelatedRecords.js +32 -0
  150. package/components/routes/action/edit/ActionEditor.js +2 -2
  151. package/components/routes/action/view/ActionSearch.js +1 -1
  152. package/components/routes/advanced/QueryBuilder.js +4 -27
  153. package/components/routes/advanced/QueryEditor.js +3 -3
  154. package/components/routes/advanced/historyCompletionProvider.js +3 -3
  155. package/components/routes/analytics/AnalyticDetails.js +6 -54
  156. package/components/routes/analytics/AnalyticSearch.js +9 -18
  157. package/components/routes/cases/CaseViewer.d.ts +2 -0
  158. package/components/routes/cases/CaseViewer.js +44 -0
  159. package/components/routes/cases/CaseViewer.test.d.ts +1 -0
  160. package/components/routes/cases/CaseViewer.test.js +133 -0
  161. package/components/routes/cases/Cases.d.ts +2 -0
  162. package/components/routes/cases/Cases.js +140 -0
  163. package/components/routes/cases/constants.d.ts +6 -0
  164. package/components/routes/cases/constants.js +6 -0
  165. package/components/routes/cases/detail/AlertPanel.d.ts +6 -0
  166. package/components/routes/cases/detail/AlertPanel.js +33 -0
  167. package/components/routes/cases/detail/AlertPanel.test.d.ts +1 -0
  168. package/components/routes/cases/detail/AlertPanel.test.js +107 -0
  169. package/components/routes/cases/detail/CaseDashboard.d.ts +7 -0
  170. package/components/routes/cases/detail/CaseDashboard.js +66 -0
  171. package/components/routes/cases/detail/CaseDashboard.test.d.ts +1 -0
  172. package/components/routes/cases/detail/CaseDashboard.test.js +218 -0
  173. package/components/routes/cases/detail/CaseDetails.d.ts +6 -0
  174. package/components/routes/cases/detail/CaseDetails.js +79 -0
  175. package/components/routes/cases/detail/CaseDetails.test.d.ts +1 -0
  176. package/components/routes/cases/detail/CaseDetails.test.js +145 -0
  177. package/components/routes/cases/detail/CaseObservables.d.ts +6 -0
  178. package/components/routes/cases/detail/CaseObservables.js +142 -0
  179. package/components/routes/cases/detail/CaseObservables.test.d.ts +1 -0
  180. package/components/routes/cases/detail/CaseObservables.test.js +169 -0
  181. package/components/routes/cases/detail/CaseOverview.d.ts +7 -0
  182. package/components/routes/cases/detail/CaseOverview.js +43 -0
  183. package/components/routes/cases/detail/CaseRules.d.ts +7 -0
  184. package/components/routes/cases/detail/CaseRules.js +55 -0
  185. package/components/routes/cases/detail/CaseRules.test.d.ts +1 -0
  186. package/components/routes/cases/detail/CaseRules.test.js +238 -0
  187. package/components/routes/cases/detail/CaseSearch.d.ts +3 -0
  188. package/components/routes/cases/detail/CaseSearch.js +78 -0
  189. package/components/routes/cases/detail/CaseSearch.test.d.ts +1 -0
  190. package/components/routes/cases/detail/CaseSearch.test.js +154 -0
  191. package/components/routes/cases/detail/CaseSidebar.d.ts +8 -0
  192. package/components/routes/cases/detail/CaseSidebar.js +147 -0
  193. package/components/routes/cases/detail/CaseSidebar.test.d.ts +1 -0
  194. package/components/routes/cases/detail/CaseSidebar.test.js +155 -0
  195. package/components/routes/cases/detail/CaseTask.d.ts +14 -0
  196. package/components/routes/cases/detail/CaseTask.js +71 -0
  197. package/components/routes/cases/detail/CaseTask.test.d.ts +1 -0
  198. package/components/routes/cases/detail/CaseTask.test.js +143 -0
  199. package/components/routes/cases/detail/CaseTimeline.d.ts +12 -0
  200. package/components/routes/cases/detail/CaseTimeline.js +106 -0
  201. package/components/routes/cases/detail/CaseTimeline.test.d.ts +1 -0
  202. package/components/routes/cases/detail/CaseTimeline.test.js +320 -0
  203. package/components/routes/cases/detail/CreateRuleDialog.d.ts +9 -0
  204. package/components/routes/cases/detail/CreateRuleDialog.js +145 -0
  205. package/components/routes/cases/detail/CreateRuleDialog.test.d.ts +1 -0
  206. package/components/routes/cases/detail/CreateRuleDialog.test.js +284 -0
  207. package/components/routes/cases/detail/ItemPage.d.ts +6 -0
  208. package/components/routes/cases/detail/ItemPage.js +100 -0
  209. package/components/routes/cases/detail/ItemPage.test.d.ts +1 -0
  210. package/components/routes/cases/detail/ItemPage.test.js +238 -0
  211. package/components/routes/cases/detail/MarkdownPage.d.ts +8 -0
  212. package/components/routes/cases/detail/MarkdownPage.js +63 -0
  213. package/components/routes/cases/detail/MarkdownPage.test.d.ts +1 -0
  214. package/components/routes/cases/detail/MarkdownPage.test.js +116 -0
  215. package/components/routes/cases/detail/RelatedCasePanel.d.ts +6 -0
  216. package/components/routes/cases/detail/RelatedCasePanel.js +34 -0
  217. package/components/routes/cases/detail/RelatedCasePanel.test.d.ts +1 -0
  218. package/components/routes/cases/detail/RelatedCasePanel.test.js +115 -0
  219. package/components/routes/cases/detail/TaskPanel.d.ts +7 -0
  220. package/components/routes/cases/detail/TaskPanel.js +95 -0
  221. package/components/routes/cases/detail/TaskPanel.test.d.ts +1 -0
  222. package/components/routes/cases/detail/TaskPanel.test.js +145 -0
  223. package/components/routes/cases/detail/aggregates/CaseAggregate.d.ts +11 -0
  224. package/components/routes/cases/detail/aggregates/CaseAggregate.js +24 -0
  225. package/components/routes/cases/detail/aggregates/SourceAggregate.d.ts +6 -0
  226. package/components/routes/cases/detail/aggregates/SourceAggregate.js +26 -0
  227. package/components/routes/cases/detail/observables/Observable.d.ts +8 -0
  228. package/components/routes/cases/detail/observables/Observable.js +13 -0
  229. package/components/routes/cases/detail/observables/Observable.test.d.ts +1 -0
  230. package/components/routes/cases/detail/observables/Observable.test.js +72 -0
  231. package/components/routes/cases/detail/observables/ObservableTable.d.ts +7 -0
  232. package/components/routes/cases/detail/observables/ObservableTable.js +61 -0
  233. package/components/routes/cases/detail/observables/ObservableTable.test.d.ts +1 -0
  234. package/components/routes/cases/detail/observables/ObservableTable.test.js +85 -0
  235. package/components/routes/cases/detail/sidebar/CaseFolder.d.ts +22 -0
  236. package/components/routes/cases/detail/sidebar/CaseFolder.js +105 -0
  237. package/components/routes/cases/detail/sidebar/CaseFolder.test.d.ts +1 -0
  238. package/components/routes/cases/detail/sidebar/CaseFolder.test.js +98 -0
  239. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.d.ts +32 -0
  240. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.js +99 -0
  241. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.test.d.ts +1 -0
  242. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.test.js +117 -0
  243. package/components/routes/cases/detail/sidebar/FolderEntry.d.ts +25 -0
  244. package/components/routes/cases/detail/sidebar/FolderEntry.js +89 -0
  245. package/components/routes/cases/detail/sidebar/FolderEntry.test.d.ts +1 -0
  246. package/components/routes/cases/detail/sidebar/FolderEntry.test.js +81 -0
  247. package/components/routes/cases/detail/sidebar/RootDropZone.d.ts +5 -0
  248. package/components/routes/cases/detail/sidebar/RootDropZone.js +33 -0
  249. package/components/routes/cases/detail/sidebar/types.d.ts +9 -0
  250. package/components/routes/cases/detail/sidebar/utils.d.ts +10 -0
  251. package/components/routes/cases/detail/sidebar/utils.js +51 -0
  252. package/components/routes/cases/detail/sidebar/utils.test.d.ts +1 -0
  253. package/components/routes/cases/detail/sidebar/utils.test.js +82 -0
  254. package/components/routes/cases/detail/types.d.ts +24 -0
  255. package/components/routes/cases/detail/utils.d.ts +29 -0
  256. package/components/routes/cases/detail/utils.js +114 -0
  257. package/components/routes/cases/detail/utils.test.d.ts +1 -0
  258. package/components/routes/cases/detail/utils.test.js +144 -0
  259. package/components/routes/cases/hooks/useCase.d.ts +13 -0
  260. package/components/routes/cases/hooks/useCase.js +69 -0
  261. package/components/routes/cases/hooks/useCase.test.d.ts +1 -0
  262. package/components/routes/cases/hooks/useCase.test.js +141 -0
  263. package/components/routes/cases/modals/AddRecordToCaseModal.d.ts +7 -0
  264. package/components/routes/cases/modals/AddRecordToCaseModal.js +57 -0
  265. package/components/routes/cases/modals/AddRecordToCaseModal.test.d.ts +1 -0
  266. package/components/routes/cases/modals/AddRecordToCaseModal.test.js +309 -0
  267. package/components/routes/cases/modals/AddToCaseModal.d.ts +9 -0
  268. package/components/routes/cases/modals/AddToCaseModal.js +72 -0
  269. package/components/routes/cases/modals/CaseRecordRow.d.ts +9 -0
  270. package/components/routes/cases/modals/CaseRecordRow.js +14 -0
  271. package/components/routes/cases/modals/CreateCaseModal.d.ts +7 -0
  272. package/components/routes/cases/modals/CreateCaseModal.js +53 -0
  273. package/components/routes/cases/modals/CreateCaseModal.test.d.ts +1 -0
  274. package/components/routes/cases/modals/CreateCaseModal.test.js +319 -0
  275. package/components/routes/cases/modals/RenameItemModal.d.ts +9 -0
  276. package/components/routes/cases/modals/RenameItemModal.js +44 -0
  277. package/components/routes/cases/modals/ResolveModal.d.ts +7 -0
  278. package/components/routes/cases/modals/ResolveModal.js +120 -0
  279. package/components/routes/cases/modals/ResolveModal.test.d.ts +1 -0
  280. package/components/routes/cases/modals/ResolveModal.test.js +520 -0
  281. package/components/routes/cases/modals/hooks.d.ts +7 -0
  282. package/components/routes/cases/modals/hooks.js +40 -0
  283. package/components/routes/cases/modals/types.d.ts +13 -0
  284. package/components/routes/cases/search/CaseAssigneeFilter.d.ts +6 -0
  285. package/components/routes/cases/search/CaseAssigneeFilter.js +33 -0
  286. package/components/routes/cases/search/CaseAssigneeFilter.test.d.ts +1 -0
  287. package/components/routes/cases/search/CaseAssigneeFilter.test.js +127 -0
  288. package/components/routes/cases/search/CaseDateFilter.d.ts +13 -0
  289. package/components/routes/cases/search/CaseDateFilter.js +26 -0
  290. package/components/routes/cases/search/CaseDateFilter.test.d.ts +1 -0
  291. package/components/routes/cases/search/CaseDateFilter.test.js +115 -0
  292. package/components/routes/cases/search/CaseStatusFilter.d.ts +6 -0
  293. package/components/routes/cases/search/CaseStatusFilter.js +13 -0
  294. package/components/routes/cases/search/CaseStatusFilter.test.d.ts +1 -0
  295. package/components/routes/cases/search/CaseStatusFilter.test.js +86 -0
  296. package/components/routes/cases/utils.d.ts +3 -0
  297. package/components/routes/cases/utils.js +21 -0
  298. package/components/routes/dossiers/DossierEditor.js +2 -2
  299. package/components/routes/dossiers/DossierEditor.test.js +1 -1
  300. package/components/routes/events/EventViewer.d.ts +7 -0
  301. package/components/routes/events/EventViewer.js +24 -0
  302. package/components/routes/help/ApiDocumentation.js +1 -1
  303. package/components/routes/help/HitBannerDocumentation.js +1 -0
  304. package/components/routes/help/HitDocumentation.js +1 -3
  305. package/components/routes/help/OverviewDocumentation.d.ts +1 -1
  306. package/components/routes/help/OverviewDocumentation.js +0 -1
  307. package/components/routes/hits/search/InformationPane.d.ts +1 -0
  308. package/components/routes/hits/search/InformationPane.js +51 -64
  309. package/components/routes/hits/search/QuerySettings.js +2 -1
  310. package/components/routes/hits/search/QuerySettings.test.js +14 -9
  311. package/components/routes/hits/search/{HitBrowser.js → RecordBrowser.js} +11 -11
  312. package/components/routes/hits/search/{HitQuery.d.ts → RecordQuery.d.ts} +2 -2
  313. package/components/routes/hits/search/{HitQuery.js → RecordQuery.js} +6 -6
  314. package/components/routes/hits/search/SearchPane.js +24 -46
  315. package/components/routes/hits/search/ViewLink.js +4 -4
  316. package/components/routes/hits/search/ViewLink.test.js +8 -9
  317. package/components/routes/hits/search/grid/RecordGrid.d.ts +3 -0
  318. package/components/routes/hits/search/grid/{HitGrid.js → RecordGrid.js} +15 -15
  319. package/components/routes/hits/search/shared/CustomSpan.test.js +3 -4
  320. package/components/routes/hits/search/shared/IndexPicker.d.ts +8 -0
  321. package/components/routes/hits/search/shared/IndexPicker.js +21 -0
  322. package/components/routes/hits/search/shared/LayoutSettings.js +3 -3
  323. package/components/routes/hits/search/shared/SearchActionMenu.js +3 -9
  324. package/components/routes/hits/view/HitViewer.js +13 -14
  325. package/components/routes/home/ViewCard.js +47 -41
  326. package/components/routes/overviews/OverviewViewer.js +4 -4
  327. package/components/routes/views/ViewComposer.js +49 -23
  328. package/locales/en/translation.json +171 -27
  329. package/locales/fr/translation.json +169 -25
  330. package/models/WithMetadata.d.ts +2 -1
  331. package/models/entities/generated/Analytic.d.ts +0 -3
  332. package/models/entities/generated/ApiType.d.ts +3 -1
  333. package/models/entities/generated/AttachmentsFile.d.ts +12 -0
  334. package/models/entities/generated/Case.d.ts +29 -0
  335. package/models/entities/generated/DestinationOriginal.d.ts +19 -0
  336. package/models/entities/generated/ECSEvent.d.ts +31 -0
  337. package/models/entities/generated/EmailAttachment.d.ts +8 -0
  338. package/models/entities/generated/EmailParent.d.ts +19 -0
  339. package/models/entities/generated/Enrichments.d.ts +7 -0
  340. package/models/entities/generated/EnrichmentsIndicator.d.ts +21 -0
  341. package/models/entities/generated/Event.d.ts +80 -26
  342. package/models/entities/generated/EventCloud.d.ts +20 -0
  343. package/models/entities/generated/EventDestination.d.ts +23 -0
  344. package/models/entities/generated/EventEmail.d.ts +30 -0
  345. package/models/entities/generated/EventFile.d.ts +36 -0
  346. package/models/entities/generated/EventHowler.d.ts +42 -0
  347. package/models/entities/generated/EventHttp.d.ts +11 -0
  348. package/models/entities/generated/EventObserver.d.ts +21 -0
  349. package/models/entities/generated/EventOrganization.d.ts +7 -0
  350. package/models/entities/generated/EventProcess.d.ts +34 -0
  351. package/models/entities/generated/EventSource.d.ts +23 -0
  352. package/models/entities/generated/EventThreat.d.ts +21 -0
  353. package/models/entities/generated/EventTls.d.ts +12 -0
  354. package/models/entities/generated/Hit.d.ts +3 -2
  355. package/models/entities/generated/Howler.d.ts +0 -5
  356. package/models/entities/generated/HttpResponse.d.ts +11 -0
  357. package/models/entities/generated/Item.d.ts +12 -0
  358. package/models/entities/generated/ObserverIngress.d.ts +9 -0
  359. package/models/entities/generated/Rule.d.ts +8 -9
  360. package/models/entities/generated/Task.d.ts +10 -0
  361. package/models/entities/generated/Threat.d.ts +2 -2
  362. package/models/entities/generated/{Enrichment.d.ts → ThreatEnrichment.d.ts} +1 -1
  363. package/models/entities/generated/View.d.ts +1 -0
  364. package/models/socket/CaseUpdate.d.ts +5 -0
  365. package/models/socket/ViewersUpdate.d.ts +4 -0
  366. package/package.json +112 -91
  367. package/plugins/clue/components/ClueTypography.js +2 -2
  368. package/plugins/clue/index.d.ts +1 -1
  369. package/plugins/clue/index.js +0 -1
  370. package/plugins/clue/utils.d.ts +2 -1
  371. package/tests/mocks.d.ts +11 -1
  372. package/tests/mocks.js +12 -7
  373. package/tests/server-handlers.js +11 -1
  374. package/tests/utils.d.ts +4 -0
  375. package/tests/utils.js +21 -0
  376. package/utils/classificationParser.d.ts +195 -0
  377. package/utils/classificationParser.js +680 -0
  378. package/utils/constants.d.ts +4 -3
  379. package/utils/constants.js +6 -0
  380. package/utils/recordFunctions.d.ts +3 -0
  381. package/utils/recordFunctions.js +8 -0
  382. package/utils/recordFunctions.test.d.ts +1 -0
  383. package/utils/{hitFunctions.test.js → recordFunctions.test.js} +1 -1
  384. package/utils/socketUtils.d.ts +14 -0
  385. package/utils/socketUtils.js +17 -1
  386. package/utils/socketUtils.test.js +49 -16
  387. package/utils/typeUtils.d.ts +7 -0
  388. package/utils/typeUtils.js +27 -0
  389. package/utils/viewUtils.js +3 -0
  390. package/api/analytic/rules.d.ts +0 -4
  391. package/api/analytic/rules.js +0 -8
  392. package/components/app/providers/HitProvider.d.ts +0 -22
  393. package/components/elements/display/icons/BundleButton.d.ts +0 -6
  394. package/components/elements/display/icons/BundleButton.js +0 -32
  395. package/components/elements/hit/HitContextMenu.js +0 -239
  396. package/components/elements/hit/HitRelated.d.ts +0 -6
  397. package/components/elements/hit/HitRelated.js +0 -7
  398. package/components/elements/hit/elements/HitUsers.js +0 -33
  399. package/components/routes/advanced/RuleModal.d.ts +0 -7
  400. package/components/routes/advanced/RuleModal.js +0 -83
  401. package/components/routes/analytics/RuleView.d.ts +0 -8
  402. package/components/routes/analytics/RuleView.js +0 -48
  403. package/components/routes/help/BundleDocumentation.d.ts +0 -3
  404. package/components/routes/help/BundleDocumentation.js +0 -12
  405. package/components/routes/help/markdown/en/bundles.md.js +0 -1
  406. package/components/routes/help/markdown/fr/bundles.md.js +0 -1
  407. package/components/routes/hits/search/BundleScroller.d.ts +0 -2
  408. package/components/routes/hits/search/BundleScroller.js +0 -6
  409. package/components/routes/hits/search/grid/HitGrid.d.ts +0 -3
  410. package/components/routes/hits/search/shared/BundleParentMenu.d.ts +0 -6
  411. package/components/routes/hits/search/shared/BundleParentMenu.js +0 -32
  412. package/utils/hitFunctions.d.ts +0 -2
  413. package/utils/hitFunctions.js +0 -8
  414. /package/{components/app/providers/HitSearchProvider.test.d.ts → api/socket/viewers.test.d.ts} +0 -0
  415. /package/components/{elements/hit/HitContextMenu.test.d.ts → app/providers/RecordSearchProvider.test.d.ts} +0 -0
  416. /package/{utils/hitFunctions.test.d.ts → components/app/providers/UserListProvider.test.d.ts} +0 -0
  417. /package/components/{routes/overviews/OverviewEditor.d.ts → elements/MarkdownEditor.d.ts} +0 -0
  418. /package/components/elements/hit/{HitDetails.d.ts → related/RelatedRecords.d.ts} +0 -0
  419. /package/components/routes/hits/search/{HitBrowser.d.ts → RecordBrowser.d.ts} +0 -0
@@ -0,0 +1,23 @@
1
+ import type { Event } from '@cccsaurora/howler-ui/models/entities/generated/Event';
2
+ import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
3
+ import type { WithMetadata } from '@cccsaurora/howler-ui/models/WithMetadata';
4
+ import type { FC, PropsWithChildren } from 'react';
5
+ export interface RecordContextType {
6
+ records: {
7
+ [index: string]: Hit | Event;
8
+ };
9
+ selectedRecords: (Hit | Event)[];
10
+ addRecordToSelection: (id: string) => void;
11
+ removeRecordFromSelection: (id: string) => void;
12
+ clearSelectedRecords: (except?: string) => void;
13
+ loadRecords: (hits: (Hit | Event)[]) => void;
14
+ updateRecord: (newHit: Hit | Event) => void;
15
+ getRecord: (id: string, force?: boolean) => Promise<WithMetadata<Hit | Event>>;
16
+ }
17
+ export declare const RecordContext: import("use-context-selector").Context<RecordContextType>;
18
+ /**
19
+ * Central repository for storing individual hit data across the application. Allows efficient retrieval of hits across componenents.
20
+ */
21
+ declare const RecordProvider: FC<PropsWithChildren>;
22
+ export declare const useRecordContextSelector: <Selected>(selector: (value: RecordContextType) => Selected) => Selected;
23
+ export default RecordProvider;
@@ -5,25 +5,25 @@ import { uniq } from 'lodash-es';
5
5
  import { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
6
6
  import { createContext, useContextSelector } from 'use-context-selector';
7
7
  import { SocketContext } from './SocketProvider';
8
- export const HitContext = createContext(null);
8
+ export const RecordContext = createContext(null);
9
9
  /**
10
10
  * Central repository for storing individual hit data across the application. Allows efficient retrieval of hits across componenents.
11
11
  */
12
- const HitProvider = ({ children }) => {
12
+ const RecordProvider = ({ children }) => {
13
13
  const { dispatchApi } = useMyApi();
14
14
  const { addListener, removeListener } = useContext(SocketContext);
15
15
  /**
16
16
  * The most immediate of two levels of caching, this ref stores the raw promises for each hit.
17
17
  * Rapidly updates, good for uses in-context where parallel updates my be occurring, i.e.
18
- * when two cards request the same hit that's missing from the store. Used in getHit for this reason.
18
+ * when two cards request the same hit that's missing from the store. Used in getRecord for this reason.
19
19
  */
20
- const hitRequests = useRef({});
20
+ const recordRequests = useRef({});
21
21
  /**
22
22
  * The "Authoritative" store of hits. Changes here will trigger rerenders, and essentially
23
23
  * caches the result of the above promises. Slower to update, so used outside of the hitcontext
24
24
  * where parallel requests aren't an issue.
25
25
  */
26
- const [hits, setHits] = useState({});
26
+ const [records, setRecords] = useState({});
27
27
  const [selectedHitIds, setSelectedHitIds] = useState([]);
28
28
  // The central location where we propagate any changes from hits made via websockets into the repository. We just save every update,
29
29
  // instead of caching it across many components inconsistently as before.
@@ -31,8 +31,8 @@ const HitProvider = ({ children }) => {
31
31
  if (data.hit) {
32
32
  // eslint-disable-next-line no-console
33
33
  console.debug('Received websocket update for hit', data.hit.howler.id);
34
- hitRequests.current[data.hit.howler.id] = Promise.resolve(data.hit);
35
- setHits(_hits => ({
34
+ recordRequests.current[data.hit.howler.id] = Promise.resolve(data.hit);
35
+ setRecords(_hits => ({
36
36
  ..._hits,
37
37
  [data.hit.howler.id]: {
38
38
  ..._hits[data.hit.howler.id],
@@ -46,68 +46,72 @@ const HitProvider = ({ children }) => {
46
46
  return () => removeListener('hits');
47
47
  }, [addListener, handler, removeListener]);
48
48
  /**
49
- * A method to retrieve a hit from the context. It first checks the hit state,
49
+ * A method to retrieve a record from the context. It first checks the hit state,
50
50
  * then checks for ongoing requests, then finally executes a new request if necessary.
51
51
  */
52
- const getHit = useCallback(async (id, force = false) => {
53
- if (!hitRequests.current[id] || force) {
54
- hitRequests.current[id] = dispatchApi(api.hit.get(id, ['template', 'dossiers', 'analytic', 'overview']));
55
- const newHit = await hitRequests.current[id];
56
- setHits(_hits => ({ ..._hits, [id]: newHit }));
52
+ const getRecord = useCallback(async (id, force = false) => {
53
+ if (!recordRequests.current[id] || force) {
54
+ recordRequests.current[id] = dispatchApi(api.v2.search.post(['hit', 'event'], {
55
+ query: `howler.id:${id}`,
56
+ rows: 1,
57
+ metadata: ['template', 'dossiers', 'analytic', 'overview']
58
+ })).then(result => result.items[0]);
59
+ const newRecord = await recordRequests.current[id];
60
+ setRecords(_records => ({ ..._records, [id]: newRecord }));
57
61
  }
58
- return hitRequests.current[id];
62
+ return recordRequests.current[id];
59
63
  }, [dispatchApi]);
60
64
  /**
61
65
  * Update a hit in the context locally
62
66
  */
63
- const updateHit = useCallback((newHit) => {
64
- hitRequests.current[newHit.howler.id] = Promise.resolve(newHit);
65
- setHits(_hits => ({ ..._hits, [newHit.howler.id]: newHit }));
67
+ const updateRecord = useCallback((newHit) => {
68
+ recordRequests.current[newHit.howler.id] = Promise.resolve(newHit);
69
+ setRecords(_hits => ({ ..._hits, [newHit.howler.id]: newHit }));
66
70
  }, []);
67
71
  /**
68
72
  * Add a large number of hits to the cache. Used for results of searches.
69
73
  */
70
- const loadHits = useCallback((newHits) => {
74
+ const loadRecords = useCallback((newHits) => {
71
75
  const mappedHits = newHits.map(hit => [hit.howler.id, hit]);
72
76
  mappedHits.forEach(([id, hit]) => {
73
- hitRequests.current[id] = Promise.resolve(hit);
77
+ recordRequests.current[id] = Promise.resolve(hit);
74
78
  });
75
- setHits(_hits => ({ ..._hits, ...Object.fromEntries(mappedHits) }));
79
+ setRecords(_hits => ({ ..._hits, ...Object.fromEntries(mappedHits) }));
76
80
  }, []);
77
- const addHitToSelection = useCallback((id) => {
81
+ const addRecordToSelection = useCallback((id) => {
78
82
  setSelectedHitIds(_selected => uniq([..._selected, id]));
79
83
  }, []);
80
- const removeHitFromSelection = useCallback((id) => {
84
+ const removeRecordFromSelection = useCallback((id) => {
81
85
  setSelectedHitIds(_selected => _selected.filter(_id => _id !== id));
82
86
  }, []);
83
- const clearSelectedHits = useCallback((except) => {
87
+ const clearSelectedRecords = useCallback((except) => {
84
88
  setSelectedHitIds(!!except ? [except] : []);
85
89
  }, []);
86
- const selectedHits = useMemo(() => selectedHitIds.map(id => hits[id]).filter(hit => !!hit), [hits, selectedHitIds]);
90
+ const selectedRecords = useMemo(() => selectedHitIds.map(id => records[id]).filter(hit => !!hit), [records, selectedHitIds]);
87
91
  useEffect(() => {
88
92
  selectedHitIds.forEach(id => {
89
- if (!hitRequests.current[id]) {
90
- getHit(id);
93
+ if (!recordRequests.current[id]) {
94
+ getRecord(id);
91
95
  }
92
96
  });
93
- }, [getHit, selectedHitIds]);
97
+ }, [getRecord, selectedHitIds]);
94
98
  useEffect(() => {
95
- Object.entries(hits).forEach(([id, hit]) => {
96
- hitRequests.current[id] = Promise.resolve(hit);
99
+ Object.entries(records).forEach(([id, hit]) => {
100
+ recordRequests.current[id] = Promise.resolve(hit);
97
101
  });
98
- }, [hits]);
99
- return (_jsx(HitContext.Provider, { value: {
100
- hits,
101
- getHit,
102
- updateHit,
103
- selectedHits,
104
- addHitToSelection,
105
- removeHitFromSelection,
106
- clearSelectedHits,
107
- loadHits
102
+ }, [records]);
103
+ return (_jsx(RecordContext.Provider, { value: {
104
+ records,
105
+ getRecord,
106
+ updateRecord,
107
+ selectedRecords,
108
+ addRecordToSelection,
109
+ removeRecordFromSelection,
110
+ clearSelectedRecords,
111
+ loadRecords
108
112
  }, children: children }));
109
113
  };
110
- export const useHitContextSelector = (selector) => {
111
- return useContextSelector(HitContext, selector);
114
+ export const useRecordContextSelector = (selector) => {
115
+ return useContextSelector(RecordContext, selector);
112
116
  };
113
- export default HitProvider;
117
+ export default RecordProvider;
@@ -1,17 +1,17 @@
1
1
  import type { HowlerSearchResponse } from '@cccsaurora/howler-ui/api/search';
2
2
  import { useMyLocalStorageItem } from '@cccsaurora/howler-ui/components/hooks/useMyLocalStorage';
3
+ import type { Event } from '@cccsaurora/howler-ui/models/entities/generated/Event';
3
4
  import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
4
5
  import type { WithMetadata } from '@cccsaurora/howler-ui/models/WithMetadata';
5
6
  import { type Dispatch, type FC, type PropsWithChildren, type SetStateAction } from 'react';
6
7
  export interface QueryEntry {
7
8
  [query: string]: string;
8
9
  }
9
- export interface HitSearchContextType {
10
+ export interface RecordSearchContextType {
10
11
  displayType: 'list' | 'grid';
11
12
  searching: boolean;
12
13
  error: string | null;
13
- response: HowlerSearchResponse<WithMetadata<Hit>> | null;
14
- bundleId: string | null;
14
+ response: HowlerSearchResponse<WithMetadata<Hit | Event>> | null;
15
15
  fzfSearch: boolean;
16
16
  setDisplayType: (type: 'list' | 'grid') => void;
17
17
  setFzfSearch: Dispatch<SetStateAction<boolean>>;
@@ -20,6 +20,6 @@ export interface HitSearchContextType {
20
20
  queryHistory: QueryEntry;
21
21
  setQueryHistory: ReturnType<typeof useMyLocalStorageItem>[1];
22
22
  }
23
- export declare const HitSearchContext: import("use-context-selector").Context<HitSearchContextType>;
24
- declare const HitSearchProvider: FC<PropsWithChildren>;
25
- export default HitSearchProvider;
23
+ export declare const RecordSearchContext: import("use-context-selector").Context<RecordSearchContextType>;
24
+ declare const RecordSearchProvider: FC<PropsWithChildren>;
25
+ export default RecordSearchProvider;
@@ -8,19 +8,18 @@ import { cloneDeep, isNil } from 'lodash-es';
8
8
  import isNull from 'lodash-es/isNull';
9
9
  import isUndefined from 'lodash-es/isUndefined';
10
10
  import { useCallback, useEffect, useMemo, useState } from 'react';
11
- import { useLocation, useParams } from 'react-router-dom';
11
+ import { useLocation } from 'react-router-dom';
12
12
  import { createContext, useContextSelector } from 'use-context-selector';
13
13
  import { DEFAULT_QUERY, StorageKey } from '@cccsaurora/howler-ui/utils/constants';
14
14
  import Throttler from '@cccsaurora/howler-ui/utils/Throttler';
15
15
  import { convertCustomDateRangeToLucene, convertDateToLucene } from '@cccsaurora/howler-ui/utils/utils';
16
- import { HitContext } from './HitProvider';
17
16
  import { ParameterContext } from './ParameterProvider';
17
+ import { RecordContext } from './RecordProvider';
18
18
  import { ViewContext } from './ViewProvider';
19
- export const HitSearchContext = createContext(null);
19
+ export const RecordSearchContext = createContext(null);
20
20
  const THROTTLER = new Throttler(500);
21
- const HitSearchProvider = ({ children }) => {
21
+ const RecordSearchProvider = ({ children }) => {
22
22
  const { get } = useMyLocalStorage();
23
- const routeParams = useParams();
24
23
  const location = useLocation();
25
24
  const { dispatchApi } = useMyApi();
26
25
  const pageCount = useMyLocalStorageItem(StorageKey.PAGE_COUNT, 25)[0];
@@ -33,12 +32,13 @@ const HitSearchProvider = ({ children }) => {
33
32
  const trackTotalHits = useContextSelector(ParameterContext, ctx => ctx.trackTotalHits);
34
33
  const sort = useContextSelector(ParameterContext, ctx => ctx.sort);
35
34
  const span = useContextSelector(ParameterContext, ctx => ctx.span);
35
+ const indexes = useContextSelector(ParameterContext, ctx => ctx.indexes);
36
36
  const allFilters = useContextSelector(ParameterContext, ctx => ctx.filters);
37
37
  const startDate = useContextSelector(ParameterContext, ctx => ctx.startDate);
38
38
  const endDate = useContextSelector(ParameterContext, ctx => ctx.endDate);
39
39
  const views = useContextSelector(ParameterContext, ctx => ctx.views);
40
40
  const addView = useContextSelector(ParameterContext, ctx => ctx.addView);
41
- const loadHits = useContextSelector(HitContext, ctx => ctx.loadHits);
41
+ const loadHits = useContextSelector(RecordContext, ctx => ctx.loadRecords);
42
42
  const [displayType, setDisplayType] = useState(get(StorageKey.DISPLAY_TYPE) ?? 'list');
43
43
  const [searching, setSearching] = useState(false);
44
44
  const [error, setError] = useState(null);
@@ -47,7 +47,6 @@ const HitSearchProvider = ({ children }) => {
47
47
  'howler.id: *': new Date().toISOString()
48
48
  });
49
49
  const [fzfSearch, setFzfSearch] = useState(false);
50
- const bundleId = useMemo(() => (location.pathname.startsWith('/bundles') ? routeParams.id : null), [location.pathname, routeParams.id]);
51
50
  const filters = useMemo(() => allFilters.filter(filter => !filter.endsWith('*')), [allFilters]);
52
51
  // On load check to filter out any queries older than one month
53
52
  useEffect(() => {
@@ -70,11 +69,6 @@ const HitSearchProvider = ({ children }) => {
70
69
  else if (startDate && endDate) {
71
70
  _filters.push(`event.created:${convertCustomDateRangeToLucene(startDate, endDate)}`);
72
71
  }
73
- // Add bundle filter
74
- const bundle = location.pathname.startsWith('/bundles') && routeParams.id;
75
- if (bundle) {
76
- _filters.push(`howler.bundles:${bundle}`);
77
- }
78
72
  // Fetch all view queries
79
73
  if (views.length > 0) {
80
74
  const viewObjects = await getCurrentViews({ views });
@@ -85,7 +79,7 @@ const HitSearchProvider = ({ children }) => {
85
79
  .forEach(viewQuery => _filters.push(viewQuery));
86
80
  }
87
81
  return _filters;
88
- }, [endDate, filters, getCurrentViews, location.pathname, routeParams.id, span, startDate, views]);
82
+ }, [endDate, filters, getCurrentViews, span, startDate, views]);
89
83
  const search = useCallback(async (_query, appendResults) => {
90
84
  THROTTLER.debounce(async () => {
91
85
  if (_query === 'woof!') {
@@ -105,7 +99,7 @@ const HitSearchProvider = ({ children }) => {
105
99
  setSearching(true);
106
100
  setError(null);
107
101
  try {
108
- const _response = await dispatchApi(api.search.hit.post({
102
+ const _response = await dispatchApi(api.v2.search.post(indexes, {
109
103
  offset: appendResults && !isNil(response?.rows) ? response.rows : offset,
110
104
  rows: pageCount,
111
105
  query: _query || DEFAULT_QUERY,
@@ -143,6 +137,7 @@ const HitSearchProvider = ({ children }) => {
143
137
  sort,
144
138
  span,
145
139
  query,
140
+ indexes,
146
141
  setQuery,
147
142
  setQueryHistory,
148
143
  queryHistory,
@@ -160,15 +155,15 @@ const HitSearchProvider = ({ children }) => {
160
155
  if (span?.endsWith('custom') && (!startDate || !endDate)) {
161
156
  return;
162
157
  }
163
- if (views.length > 0 || bundleId || (query && query !== DEFAULT_QUERY) || offset > 0 || filters.length > 0) {
158
+ if (views.length > 0 || (query && query !== DEFAULT_QUERY) || offset > 0 || filters.length > 0) {
164
159
  search(query);
165
160
  }
166
161
  else {
167
162
  setResponse(null);
168
163
  }
169
164
  // eslint-disable-next-line react-hooks/exhaustive-deps
170
- }, [offset, pageCount, sort, span, bundleId, location.pathname, startDate, endDate, filters, query, views]);
171
- return (_jsx(HitSearchContext.Provider, { value: {
165
+ }, [offset, pageCount, sort, span, indexes, location.pathname, startDate, endDate, filters, query, views]);
166
+ return (_jsx(RecordSearchContext.Provider, { value: {
172
167
  displayType,
173
168
  setDisplayType,
174
169
  search,
@@ -176,11 +171,10 @@ const HitSearchProvider = ({ children }) => {
176
171
  getFilters,
177
172
  error,
178
173
  response,
179
- bundleId,
180
174
  setQueryHistory,
181
175
  queryHistory,
182
176
  fzfSearch,
183
177
  setFzfSearch
184
178
  }, children: children }));
185
179
  };
186
- export default HitSearchProvider;
180
+ export default RecordSearchProvider;