@cccsaurora/howler-ui 2.18.0-dev.704 → 2.18.0-dev.710

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 (251) hide show
  1. package/api/index.d.ts +2 -0
  2. package/api/index.js +4 -2
  3. package/api/search/case.d.ts +4 -0
  4. package/api/search/case.js +8 -0
  5. package/api/search/facet/hit.d.ts +1 -3
  6. package/api/search/facet/index.d.ts +3 -1
  7. package/api/search/index.d.ts +2 -1
  8. package/api/search/index.js +2 -1
  9. package/api/v2/case/index.d.ts +8 -0
  10. package/api/v2/case/index.js +20 -0
  11. package/api/v2/case/items.d.ts +6 -0
  12. package/api/v2/case/items.js +18 -0
  13. package/api/v2/index.d.ts +4 -0
  14. package/api/v2/index.js +6 -0
  15. package/api/v2/search/facet.d.ts +3 -0
  16. package/api/v2/search/facet.js +12 -0
  17. package/api/v2/search/index.d.ts +5 -0
  18. package/api/v2/search/index.js +24 -0
  19. package/commons/components/leftnav/LeftNavDrawer.js +1 -1
  20. package/components/app/App.js +39 -7
  21. package/components/app/hooks/useMatchers.js +2 -2
  22. package/components/app/hooks/useMatchers.test.js +22 -22
  23. package/components/app/hooks/useTitle.js +3 -3
  24. package/components/app/providers/FavouritesProvider.js +2 -2
  25. package/components/app/providers/ModalProvider.d.ts +1 -0
  26. package/components/app/providers/ParameterProvider.d.ts +9 -2
  27. package/components/app/providers/ParameterProvider.js +165 -240
  28. package/components/app/providers/ParameterProvider.test.js +307 -14
  29. package/components/app/providers/RecordProvider.d.ts +23 -0
  30. package/components/app/providers/{HitProvider.js → RecordProvider.js} +41 -41
  31. package/components/app/providers/{HitSearchProvider.d.ts → RecordSearchProvider.d.ts} +6 -6
  32. package/components/app/providers/{HitSearchProvider.js → RecordSearchProvider.js} +12 -17
  33. package/components/app/providers/{HitSearchProvider.test.js → RecordSearchProvider.test.js} +51 -70
  34. package/components/elements/ContextMenu.d.ts +56 -0
  35. package/components/elements/ContextMenu.js +109 -0
  36. package/components/elements/ContextMenu.test.js +215 -0
  37. package/components/{routes/overviews/OverviewEditor.js → elements/MarkdownEditor.js} +3 -3
  38. package/components/elements/ObjectDetails.d.ts +6 -0
  39. package/components/elements/{hit/HitDetails.js → ObjectDetails.js} +17 -17
  40. package/components/elements/PluginTypography.d.ts +2 -1
  41. package/components/elements/PluginTypography.js +3 -2
  42. package/components/elements/UserList.d.ts +5 -2
  43. package/components/elements/UserList.js +14 -5
  44. package/components/elements/addons/search/phrase/Phrase.js +1 -1
  45. package/components/elements/case/CaseCard.d.ts +12 -0
  46. package/components/elements/case/CaseCard.js +42 -0
  47. package/components/elements/case/CasePreview.d.ts +6 -0
  48. package/components/elements/case/CasePreview.js +17 -0
  49. package/components/elements/case/StatusIcon.d.ts +5 -0
  50. package/components/elements/case/StatusIcon.js +13 -0
  51. package/components/elements/display/ChipPopper.d.ts +1 -1
  52. package/components/elements/display/HowlerCard.js +1 -1
  53. package/components/elements/display/Modal.js +2 -0
  54. package/components/elements/hit/HitActions.js +4 -4
  55. package/components/elements/hit/HitBanner.js +28 -48
  56. package/components/elements/hit/HitCard.js +5 -5
  57. package/components/elements/hit/HitLabels.js +2 -2
  58. package/components/elements/hit/{HitQuickSearch.d.ts → HitPreview.d.ts} +3 -3
  59. package/components/elements/hit/{HitQuickSearch.js → HitPreview.js} +10 -4
  60. package/components/elements/hit/HitSummary.d.ts +2 -1
  61. package/components/elements/hit/HitSummary.js +6 -5
  62. package/components/elements/hit/aggregate/HitGraph.js +8 -8
  63. package/components/elements/hit/elements/AnalyticLink.d.ts +8 -0
  64. package/components/elements/hit/elements/AnalyticLink.js +22 -0
  65. package/components/elements/hit/outlines/DefaultOutline.js +1 -1
  66. package/components/elements/hit/related/RelatedRecords.js +63 -0
  67. package/components/elements/observable/ObservableCard.d.ts +6 -0
  68. package/components/elements/observable/ObservableCard.js +22 -0
  69. package/components/elements/observable/ObservablePreview.d.ts +6 -0
  70. package/components/elements/observable/ObservablePreview.js +12 -0
  71. package/components/elements/{hit/HitComments.d.ts → record/RecordComments.d.ts} +5 -4
  72. package/components/elements/{hit/HitComments.js → record/RecordComments.js} +29 -28
  73. package/components/{routes/hits/search/HitContextMenu.d.ts → elements/record/RecordContextMenu.d.ts} +3 -3
  74. package/components/elements/record/RecordContextMenu.js +247 -0
  75. package/components/elements/record/RecordContextMenu.test.d.ts +1 -0
  76. package/components/{routes/hits/search/HitContextMenu.test.js → elements/record/RecordContextMenu.test.js} +94 -39
  77. package/components/elements/record/RecordRelated.d.ts +7 -0
  78. package/components/elements/record/RecordRelated.js +34 -0
  79. package/components/elements/{hit/HitWorklog.d.ts → record/RecordWorklog.d.ts} +4 -3
  80. package/components/elements/{hit/HitWorklog.js → record/RecordWorklog.js} +15 -13
  81. package/components/elements/view/ViewTitle.d.ts +1 -0
  82. package/components/elements/view/ViewTitle.js +9 -2
  83. package/components/hooks/useHitActions.d.ts +1 -1
  84. package/components/hooks/useHitActions.js +4 -4
  85. package/components/hooks/useMyPreferences.js +10 -1
  86. package/components/hooks/useMySearch.js +2 -2
  87. package/components/hooks/useMySitemap.js +4 -1
  88. package/components/hooks/useMyTheme.js +9 -2
  89. package/components/hooks/useParamState.test.js +3 -4
  90. package/components/hooks/{useHitSelection.d.ts → useRecordSelection.d.ts} +2 -2
  91. package/components/hooks/{useHitSelection.js → useRecordSelection.js} +12 -33
  92. package/components/hooks/useRelatedRecords.d.ts +13 -0
  93. package/components/hooks/useRelatedRecords.js +32 -0
  94. package/components/routes/action/edit/ActionEditor.js +2 -2
  95. package/components/routes/action/view/ActionSearch.js +1 -1
  96. package/components/routes/advanced/QueryBuilder.js +1 -1
  97. package/components/routes/advanced/QueryEditor.js +3 -3
  98. package/components/routes/advanced/historyCompletionProvider.js +3 -3
  99. package/components/routes/analytics/AnalyticDetails.js +2 -2
  100. package/components/routes/analytics/AnalyticSearch.js +1 -1
  101. package/components/routes/cases/CaseViewer.d.ts +2 -0
  102. package/components/routes/cases/CaseViewer.js +22 -0
  103. package/components/routes/cases/Cases.d.ts +2 -0
  104. package/components/routes/cases/Cases.js +101 -0
  105. package/components/routes/cases/constants.d.ts +5 -0
  106. package/components/routes/cases/constants.js +5 -0
  107. package/components/routes/cases/detail/AlertPanel.d.ts +6 -0
  108. package/components/routes/cases/detail/AlertPanel.js +33 -0
  109. package/components/routes/cases/detail/CaseAssets.d.ts +11 -0
  110. package/components/routes/cases/detail/CaseAssets.js +104 -0
  111. package/components/routes/cases/detail/CaseAssets.test.d.ts +1 -0
  112. package/components/routes/cases/detail/CaseAssets.test.js +167 -0
  113. package/components/routes/cases/detail/CaseDashboard.d.ts +7 -0
  114. package/components/routes/cases/detail/CaseDashboard.js +54 -0
  115. package/components/routes/cases/detail/CaseDetails.d.ts +6 -0
  116. package/components/routes/cases/detail/CaseDetails.js +61 -0
  117. package/components/routes/cases/detail/CaseOverview.d.ts +7 -0
  118. package/components/routes/cases/detail/CaseOverview.js +43 -0
  119. package/components/routes/cases/detail/CaseSidebar.d.ts +8 -0
  120. package/components/routes/cases/detail/CaseSidebar.js +50 -0
  121. package/components/routes/cases/detail/CaseTask.d.ts +11 -0
  122. package/components/routes/cases/detail/CaseTask.js +57 -0
  123. package/components/routes/cases/detail/CaseTimeline.d.ts +12 -0
  124. package/components/routes/cases/detail/CaseTimeline.js +106 -0
  125. package/components/routes/cases/detail/CaseTimeline.test.d.ts +1 -0
  126. package/components/routes/cases/detail/CaseTimeline.test.js +227 -0
  127. package/components/routes/cases/detail/ItemPage.d.ts +6 -0
  128. package/components/routes/cases/detail/ItemPage.js +99 -0
  129. package/components/routes/cases/detail/RelatedCasePanel.d.ts +6 -0
  130. package/components/routes/cases/detail/RelatedCasePanel.js +31 -0
  131. package/components/routes/cases/detail/TaskPanel.d.ts +7 -0
  132. package/components/routes/cases/detail/TaskPanel.js +52 -0
  133. package/components/routes/cases/detail/aggregates/CaseAggregate.d.ts +12 -0
  134. package/components/routes/cases/detail/aggregates/CaseAggregate.js +19 -0
  135. package/components/routes/cases/detail/aggregates/SourceAggregate.d.ts +6 -0
  136. package/components/routes/cases/detail/aggregates/SourceAggregate.js +30 -0
  137. package/components/routes/cases/detail/assets/Asset.d.ts +14 -0
  138. package/components/routes/cases/detail/assets/Asset.js +12 -0
  139. package/components/routes/cases/detail/assets/Asset.test.d.ts +1 -0
  140. package/components/routes/cases/detail/assets/Asset.test.js +72 -0
  141. package/components/routes/cases/detail/sidebar/CaseFolder.d.ts +14 -0
  142. package/components/routes/cases/detail/sidebar/CaseFolder.js +133 -0
  143. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.d.ts +34 -0
  144. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.js +105 -0
  145. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.test.d.ts +1 -0
  146. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.test.js +351 -0
  147. package/components/routes/cases/detail/sidebar/types.d.ts +3 -0
  148. package/components/routes/cases/detail/sidebar/utils.d.ts +3 -0
  149. package/components/routes/cases/detail/sidebar/utils.js +25 -0
  150. package/components/routes/cases/hooks/useCase.d.ts +13 -0
  151. package/components/routes/cases/hooks/useCase.js +51 -0
  152. package/components/routes/cases/modals/AddToCaseModal.d.ts +7 -0
  153. package/components/routes/cases/modals/AddToCaseModal.js +62 -0
  154. package/components/routes/cases/modals/RenameItemModal.d.ts +9 -0
  155. package/components/routes/cases/modals/RenameItemModal.js +48 -0
  156. package/components/routes/cases/modals/ResolveModal.d.ts +7 -0
  157. package/components/routes/cases/modals/ResolveModal.js +62 -0
  158. package/components/routes/dossiers/DossierEditor.js +2 -2
  159. package/components/routes/dossiers/DossierEditor.test.js +1 -1
  160. package/components/routes/help/ApiDocumentation.js +1 -1
  161. package/components/routes/help/HitBannerDocumentation.js +1 -0
  162. package/components/routes/help/HitDocumentation.js +1 -3
  163. package/components/routes/hits/search/InformationPane.d.ts +1 -0
  164. package/components/routes/hits/search/InformationPane.js +47 -60
  165. package/components/routes/hits/search/LayoutSettings.js +3 -3
  166. package/components/routes/hits/search/QuerySettings.js +2 -1
  167. package/components/routes/hits/search/QuerySettings.test.js +14 -9
  168. package/components/routes/hits/search/{HitBrowser.js → RecordBrowser.js} +9 -9
  169. package/components/routes/hits/search/{HitQuery.d.ts → RecordQuery.d.ts} +2 -2
  170. package/components/routes/hits/search/{HitQuery.js → RecordQuery.js} +6 -6
  171. package/components/routes/hits/search/SearchPane.js +26 -49
  172. package/components/routes/hits/search/ViewLink.js +3 -3
  173. package/components/routes/hits/search/ViewLink.test.js +8 -8
  174. package/components/routes/hits/search/grid/AddColumnModal.js +5 -4
  175. package/components/routes/hits/search/grid/EnhancedCell.d.ts +2 -1
  176. package/components/routes/hits/search/grid/EnhancedCell.js +2 -2
  177. package/components/routes/hits/search/grid/HitGrid.js +20 -18
  178. package/components/routes/hits/search/grid/{HitRow.d.ts → RecordRow.d.ts} +3 -2
  179. package/components/routes/hits/search/grid/{HitRow.js → RecordRow.js} +10 -8
  180. package/components/routes/hits/search/shared/IndexPicker.d.ts +2 -0
  181. package/components/routes/hits/search/shared/IndexPicker.js +20 -0
  182. package/components/routes/hits/view/HitViewer.js +12 -13
  183. package/components/routes/home/ViewCard.js +47 -41
  184. package/components/routes/observables/ObservableViewer.d.ts +7 -0
  185. package/components/routes/observables/ObservableViewer.js +27 -0
  186. package/components/routes/overviews/OverviewViewer.js +2 -2
  187. package/components/routes/views/ViewComposer.js +46 -19
  188. package/locales/en/translation.json +87 -3
  189. package/locales/fr/translation.json +85 -3
  190. package/models/WithMetadata.d.ts +2 -1
  191. package/models/entities/generated/AttachmentsFile.d.ts +12 -0
  192. package/models/entities/generated/Case.d.ts +28 -0
  193. package/models/entities/generated/DestinationOriginal.d.ts +19 -0
  194. package/models/entities/generated/EmailAttachment.d.ts +8 -0
  195. package/models/entities/generated/EmailParent.d.ts +19 -0
  196. package/models/entities/generated/Enrichments.d.ts +7 -0
  197. package/models/entities/generated/EnrichmentsIndicator.d.ts +21 -0
  198. package/models/entities/generated/Hit.d.ts +1 -0
  199. package/models/entities/generated/Howler.d.ts +0 -4
  200. package/models/entities/generated/HttpResponse.d.ts +11 -0
  201. package/models/entities/generated/Item.d.ts +9 -0
  202. package/models/entities/generated/Observable.d.ts +85 -0
  203. package/models/entities/generated/ObservableCloud.d.ts +20 -0
  204. package/models/entities/generated/ObservableDestination.d.ts +23 -0
  205. package/models/entities/generated/ObservableEmail.d.ts +30 -0
  206. package/models/entities/generated/ObservableFile.d.ts +36 -0
  207. package/models/entities/generated/ObservableHowler.d.ts +43 -0
  208. package/models/entities/generated/ObservableHttp.d.ts +11 -0
  209. package/models/entities/generated/ObservableObserver.d.ts +21 -0
  210. package/models/entities/generated/ObservableOrganization.d.ts +7 -0
  211. package/models/entities/generated/ObservableProcess.d.ts +34 -0
  212. package/models/entities/generated/ObservableSource.d.ts +23 -0
  213. package/models/entities/generated/ObservableThreat.d.ts +21 -0
  214. package/models/entities/generated/ObservableTls.d.ts +12 -0
  215. package/models/entities/generated/ObserverIngress.d.ts +9 -0
  216. package/models/entities/generated/Rule.d.ts +2 -10
  217. package/models/entities/generated/Task.d.ts +10 -0
  218. package/models/entities/generated/Threat.d.ts +2 -2
  219. package/models/entities/generated/{Enrichment.d.ts → ThreatEnrichment.d.ts} +1 -1
  220. package/models/entities/generated/View.d.ts +1 -0
  221. package/package.json +18 -1
  222. package/plugins/clue/components/ClueTypography.js +2 -2
  223. package/plugins/clue/utils.d.ts +2 -1
  224. package/tests/server-handlers.js +6 -1
  225. package/tests/utils.d.ts +4 -0
  226. package/tests/utils.js +20 -0
  227. package/utils/constants.d.ts +3 -3
  228. package/utils/hitFunctions.d.ts +2 -1
  229. package/utils/hitFunctions.js +4 -4
  230. package/utils/typeUtils.d.ts +7 -0
  231. package/utils/typeUtils.js +27 -0
  232. package/utils/viewUtils.js +3 -0
  233. package/components/app/providers/HitProvider.d.ts +0 -22
  234. package/components/elements/display/icons/BundleButton.d.ts +0 -6
  235. package/components/elements/display/icons/BundleButton.js +0 -32
  236. package/components/elements/hit/HitRelated.d.ts +0 -6
  237. package/components/elements/hit/HitRelated.js +0 -7
  238. package/components/routes/help/BundleDocumentation.d.ts +0 -3
  239. package/components/routes/help/BundleDocumentation.js +0 -12
  240. package/components/routes/help/markdown/en/bundles.md.js +0 -1
  241. package/components/routes/help/markdown/fr/bundles.md.js +0 -1
  242. package/components/routes/hits/search/BundleParentMenu.d.ts +0 -6
  243. package/components/routes/hits/search/BundleParentMenu.js +0 -32
  244. package/components/routes/hits/search/BundleScroller.d.ts +0 -2
  245. package/components/routes/hits/search/BundleScroller.js +0 -6
  246. package/components/routes/hits/search/HitContextMenu.js +0 -227
  247. /package/components/app/providers/{HitSearchProvider.test.d.ts → RecordSearchProvider.test.d.ts} +0 -0
  248. /package/components/{routes/hits/search/HitContextMenu.test.d.ts → elements/ContextMenu.test.d.ts} +0 -0
  249. /package/components/{routes/overviews/OverviewEditor.d.ts → elements/MarkdownEditor.d.ts} +0 -0
  250. /package/components/elements/hit/{HitDetails.d.ts → related/RelatedRecords.d.ts} +0 -0
  251. /package/components/routes/hits/search/{HitBrowser.d.ts → RecordBrowser.d.ts} +0 -0
@@ -0,0 +1,85 @@
1
+ import type { Agent } from './Agent';
2
+ import type { Assemblyline } from './Assemblyline';
3
+ import type { Aws } from './Aws';
4
+ import type { Azure } from './Azure';
5
+ import type { Cbs } from './Cbs';
6
+ import type { Clue } from './Clue';
7
+ import type { Container } from './Container';
8
+ import type { Dns } from './Dns';
9
+ import type { Ecs } from './Ecs';
10
+ import type { Error } from './Error';
11
+ import type { Event } from './Event';
12
+ import type { Faas } from './Faas';
13
+ import type { Gcp } from './Gcp';
14
+ import type { Group } from './Group';
15
+ import type { Host } from './Host';
16
+ import type { Interface } from './Interface';
17
+ import type { Network } from './Network';
18
+ import type { ObservableCloud } from './ObservableCloud';
19
+ import type { ObservableDestination } from './ObservableDestination';
20
+ import type { ObservableEmail } from './ObservableEmail';
21
+ import type { ObservableFile } from './ObservableFile';
22
+ import type { ObservableHowler } from './ObservableHowler';
23
+ import type { ObservableHttp } from './ObservableHttp';
24
+ import type { ObservableObserver } from './ObservableObserver';
25
+ import type { ObservableOrganization } from './ObservableOrganization';
26
+ import type { ObservableProcess } from './ObservableProcess';
27
+ import type { ObservableSource } from './ObservableSource';
28
+ import type { ObservableThreat } from './ObservableThreat';
29
+ import type { ObservableTls } from './ObservableTls';
30
+ import type { Registry } from './Registry';
31
+ import type { Related } from './Related';
32
+ import type { Rule } from './Rule';
33
+ import type { Server } from './Server';
34
+ import type { Url } from './Url';
35
+ import type { User } from './User';
36
+ import type { UserAgent } from './UserAgent';
37
+ import type { Vulnerability } from './Vulnerability';
38
+
39
+ /**
40
+ * NOTE: This is an auto-generated file. Don't edit this manually.
41
+ */
42
+ export interface Observable {
43
+ __index: 'observable';
44
+ agent?: Agent;
45
+ assemblyline?: Assemblyline;
46
+ aws?: Aws;
47
+ azure?: Azure;
48
+ cbs?: Cbs;
49
+ cloud?: ObservableCloud;
50
+ clue?: Clue;
51
+ container?: Container;
52
+ destination?: ObservableDestination;
53
+ dns?: Dns;
54
+ ecs?: Ecs;
55
+ email?: ObservableEmail;
56
+ error?: Error;
57
+ event?: Event;
58
+ faas?: Faas;
59
+ file?: ObservableFile;
60
+ gcp?: Gcp;
61
+ group?: Group;
62
+ host?: Host;
63
+ howler: ObservableHowler;
64
+ http?: ObservableHttp;
65
+ interface?: Interface;
66
+ labels?: { [index: string]: string };
67
+ message?: string;
68
+ network?: Network;
69
+ observer?: ObservableObserver;
70
+ organization?: ObservableOrganization;
71
+ process?: ObservableProcess;
72
+ registry?: Registry;
73
+ related?: Related;
74
+ rule?: Rule;
75
+ server?: Server;
76
+ source?: ObservableSource;
77
+ tags?: string[];
78
+ threat?: ObservableThreat;
79
+ timestamp: string;
80
+ tls?: ObservableTls;
81
+ url?: Url;
82
+ user?: User;
83
+ user_agent?: UserAgent;
84
+ vulnerability?: Vulnerability;
85
+ }
@@ -0,0 +1,20 @@
1
+ import type { CloudAccount } from './CloudAccount';
2
+ import type { Instance } from './Instance';
3
+ import type { Machine } from './Machine';
4
+ import type { Project } from './Project';
5
+ import type { Service } from './Service';
6
+
7
+ /**
8
+ * NOTE: This is an auto-generated file. Don't edit this manually.
9
+ */
10
+ export interface ObservableCloud {
11
+ account?: CloudAccount;
12
+ availability_zone?: string;
13
+ instance?: Instance;
14
+ machine?: Machine;
15
+ project?: Project;
16
+ provider?: string;
17
+ region?: string;
18
+ service?: Service;
19
+ tenant_id?: string;
20
+ }
@@ -0,0 +1,23 @@
1
+ import type { AutonomousSystems } from './AutonomousSystems';
2
+ import type { DestinationOriginal } from './DestinationOriginal';
3
+ import type { Geo } from './Geo';
4
+ import type { Nat } from './Nat';
5
+ import type { User } from './User';
6
+
7
+ /**
8
+ * NOTE: This is an auto-generated file. Don't edit this manually.
9
+ */
10
+ export interface ObservableDestination {
11
+ address?: string;
12
+ autonomous_systems?: AutonomousSystems;
13
+ bytes?: number;
14
+ domain?: string;
15
+ geo?: Geo;
16
+ ip?: string;
17
+ mac?: string;
18
+ nat?: Nat;
19
+ original?: DestinationOriginal;
20
+ packets?: number;
21
+ port?: number;
22
+ user?: User;
23
+ }
@@ -0,0 +1,30 @@
1
+ import type { Bcc } from './Bcc';
2
+ import type { Cc } from './Cc';
3
+ import type { EmailAttachment } from './EmailAttachment';
4
+ import type { EmailParent } from './EmailParent';
5
+ import type { From } from './From';
6
+ import type { ReplyTo } from './ReplyTo';
7
+ import type { Sender } from './Sender';
8
+ import type { To } from './To';
9
+
10
+ /**
11
+ * NOTE: This is an auto-generated file. Don't edit this manually.
12
+ */
13
+ export interface ObservableEmail {
14
+ attachments?: EmailAttachment[];
15
+ bcc?: Bcc;
16
+ cc?: Cc;
17
+ content_type?: string;
18
+ delivery_timestamp?: string;
19
+ direction?: string;
20
+ from?: From;
21
+ local_id?: string;
22
+ message_id?: string;
23
+ origination_timestamp?: string;
24
+ parent?: EmailParent;
25
+ reply_to?: ReplyTo;
26
+ sender?: Sender;
27
+ subject?: string;
28
+ to?: To;
29
+ x_mailer?: string;
30
+ }
@@ -0,0 +1,36 @@
1
+ import type { CodeSignature } from './CodeSignature';
2
+ import type { Elf } from './Elf';
3
+ import type { FileHash } from './FileHash';
4
+ import type { Pe } from './Pe';
5
+
6
+ /**
7
+ * NOTE: This is an auto-generated file. Don't edit this manually.
8
+ */
9
+ export interface ObservableFile {
10
+ accessed?: string;
11
+ attributes?: string[];
12
+ code_signature?: CodeSignature;
13
+ created?: string;
14
+ ctime?: string;
15
+ device?: string;
16
+ directory?: string;
17
+ drive_letter?: string;
18
+ elf?: Elf;
19
+ extension?: string;
20
+ fork_name?: string;
21
+ gid?: string;
22
+ group?: string;
23
+ hash?: FileHash;
24
+ inode?: string;
25
+ mime_type?: string;
26
+ mode?: string;
27
+ mtime?: string;
28
+ name?: string;
29
+ owner?: string;
30
+ path?: string;
31
+ pe?: Pe;
32
+ size?: number;
33
+ target_path?: string;
34
+ type?: string;
35
+ uid?: string;
36
+ }
@@ -0,0 +1,43 @@
1
+ import type { HowlerComment } from './HowlerComment';
2
+ import type { HowlerDossier } from './HowlerDossier';
3
+ import type { Incident } from './Incident';
4
+ import type { Labels } from './Labels';
5
+ import type { Link } from './Link';
6
+ import type { Log } from './Log';
7
+ import type { Outline } from './Outline';
8
+ import type { Votes } from './Votes';
9
+
10
+ /**
11
+ * NOTE: This is an auto-generated file. Don't edit this manually.
12
+ */
13
+ export interface ObservableHowler {
14
+ analytic: string;
15
+ assessment?: string;
16
+ comment?: HowlerComment[];
17
+ confidence?: number;
18
+ data?: string[];
19
+ detection?: string;
20
+ dossier?: HowlerDossier[];
21
+ escalation?: string;
22
+ expiry?: string;
23
+ hash: string;
24
+ id: string;
25
+ incidents?: Incident[];
26
+ labels?: Labels;
27
+ links?: Link[];
28
+ log?: Log[];
29
+ mitigated?: string;
30
+ monitored?: string;
31
+ outline?: Outline;
32
+ rationale?: string;
33
+ related?: string[];
34
+ reliability?: number;
35
+ reported?: string;
36
+ score?: number;
37
+ scrutiny?: string;
38
+ severity?: number;
39
+ status?: string;
40
+ viewers?: string[];
41
+ volume?: number;
42
+ votes?: Votes;
43
+ }
@@ -0,0 +1,11 @@
1
+ import type { HttpResponse } from './HttpResponse';
2
+ import type { Request } from './Request';
3
+
4
+ /**
5
+ * NOTE: This is an auto-generated file. Don't edit this manually.
6
+ */
7
+ export interface ObservableHttp {
8
+ request?: Request;
9
+ response?: HttpResponse;
10
+ version?: string;
11
+ }
@@ -0,0 +1,21 @@
1
+ import type { Egress } from './Egress';
2
+ import type { Interface } from './Interface';
3
+ import type { ObserverIngress } from './ObserverIngress';
4
+
5
+ /**
6
+ * NOTE: This is an auto-generated file. Don't edit this manually.
7
+ */
8
+ export interface ObservableObserver {
9
+ egress?: Egress;
10
+ hostname?: string;
11
+ ingress?: ObserverIngress;
12
+ interface?: Interface;
13
+ ip?: string[];
14
+ mac?: string[];
15
+ name?: string;
16
+ product?: string;
17
+ serial_number?: string;
18
+ type?: string;
19
+ vendor?: string;
20
+ version?: string;
21
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * NOTE: This is an auto-generated file. Don't edit this manually.
3
+ */
4
+ export interface ObservableOrganization {
5
+ id?: string;
6
+ name?: string;
7
+ }
@@ -0,0 +1,34 @@
1
+ import type { CodeSignature } from './CodeSignature';
2
+ import type { EntryMeta } from './EntryMeta';
3
+ import type { Pe } from './Pe';
4
+ import type { ProcessHash } from './ProcessHash';
5
+ import type { ProcessParent } from './ProcessParent';
6
+ import type { ProcessUser } from './ProcessUser';
7
+
8
+ /**
9
+ * NOTE: This is an auto-generated file. Don't edit this manually.
10
+ */
11
+ export interface ObservableProcess {
12
+ args?: string[];
13
+ args_count?: number;
14
+ code_signature?: CodeSignature;
15
+ command_line?: string;
16
+ end?: string;
17
+ entity_id?: string;
18
+ entry_meta?: EntryMeta;
19
+ env_vars?: { [index: string]: string };
20
+ executable?: string;
21
+ exit_code?: number;
22
+ hash?: ProcessHash;
23
+ interactive?: boolean;
24
+ name?: string;
25
+ parent?: ProcessParent;
26
+ pe?: Pe;
27
+ pid?: number;
28
+ same_as_process?: boolean;
29
+ start?: string;
30
+ title?: string;
31
+ uptime?: number;
32
+ user?: ProcessUser;
33
+ working_directory?: string;
34
+ }
@@ -0,0 +1,23 @@
1
+ import type { AutonomousSystems } from './AutonomousSystems';
2
+ import type { Geo } from './Geo';
3
+ import type { Nat } from './Nat';
4
+ import type { SourceOriginal } from './SourceOriginal';
5
+ import type { User } from './User';
6
+
7
+ /**
8
+ * NOTE: This is an auto-generated file. Don't edit this manually.
9
+ */
10
+ export interface ObservableSource {
11
+ address?: string;
12
+ autonomous_systems?: AutonomousSystems;
13
+ bytes?: number;
14
+ domain?: string;
15
+ geo?: Geo;
16
+ ip?: string;
17
+ mac?: string;
18
+ nat?: Nat;
19
+ original?: SourceOriginal;
20
+ packets?: number;
21
+ port?: number;
22
+ user?: User;
23
+ }
@@ -0,0 +1,21 @@
1
+ import type { Feed } from './Feed';
2
+ import type { Software } from './Software';
3
+ import type { ThreatEnrichment } from './ThreatEnrichment';
4
+ import type { ThreatGroup } from './ThreatGroup';
5
+ import type { ThreatIndicator } from './ThreatIndicator';
6
+ import type { ThreatTactic } from './ThreatTactic';
7
+ import type { ThreatTechnique } from './ThreatTechnique';
8
+
9
+ /**
10
+ * NOTE: This is an auto-generated file. Don't edit this manually.
11
+ */
12
+ export interface ObservableThreat {
13
+ enrichments?: ThreatEnrichment[];
14
+ feed?: Feed;
15
+ framework?: string;
16
+ group?: ThreatGroup;
17
+ indicator?: ThreatIndicator;
18
+ software?: Software;
19
+ tactic?: ThreatTactic;
20
+ technique?: ThreatTechnique;
21
+ }
@@ -0,0 +1,12 @@
1
+ import type { Client } from './Client';
2
+ import type { TlsServer } from './TlsServer';
3
+
4
+ /**
5
+ * NOTE: This is an auto-generated file. Don't edit this manually.
6
+ */
7
+ export interface ObservableTls {
8
+ client?: Client;
9
+ server?: TlsServer;
10
+ version?: string;
11
+ version_protocol?: string;
12
+ }
@@ -0,0 +1,9 @@
1
+ import type { Interface } from './Interface';
2
+
3
+ /**
4
+ * NOTE: This is an auto-generated file. Don't edit this manually.
5
+ */
6
+ export interface ObserverIngress {
7
+ interface?: Interface;
8
+ zone?: string;
9
+ }
@@ -2,14 +2,6 @@
2
2
  * NOTE: This is an auto-generated file. Don't edit this manually.
3
3
  */
4
4
  export interface Rule {
5
- author?: string;
6
- category?: string;
7
- description?: string;
8
- id?: string;
9
- license?: string;
10
- name?: string;
11
- reference?: string;
12
- ruleset?: string;
13
- uuid?: string;
14
- version?: string;
5
+ destination?: string;
6
+ query?: string;
15
7
  }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * NOTE: This is an auto-generated file. Don't edit this manually.
3
+ */
4
+ export interface Task {
5
+ assignment?: string;
6
+ complete?: boolean;
7
+ id?: string;
8
+ path?: string;
9
+ summary?: string;
10
+ }
@@ -1,6 +1,6 @@
1
- import type { Enrichment } from './Enrichment';
2
1
  import type { Feed } from './Feed';
3
2
  import type { Software } from './Software';
3
+ import type { ThreatEnrichment } from './ThreatEnrichment';
4
4
  import type { ThreatGroup } from './ThreatGroup';
5
5
  import type { ThreatIndicator } from './ThreatIndicator';
6
6
  import type { ThreatTactic } from './ThreatTactic';
@@ -10,7 +10,7 @@ import type { ThreatTechnique } from './ThreatTechnique';
10
10
  * NOTE: This is an auto-generated file. Don't edit this manually.
11
11
  */
12
12
  export interface Threat {
13
- enrichments?: Enrichment[];
13
+ enrichments?: ThreatEnrichment[];
14
14
  feed?: Feed;
15
15
  framework?: string;
16
16
  group?: ThreatGroup;
@@ -4,7 +4,7 @@ import type { Matched } from './Matched';
4
4
  /**
5
5
  * NOTE: This is an auto-generated file. Don't edit this manually.
6
6
  */
7
- export interface Enrichment {
7
+ export interface ThreatEnrichment {
8
8
  indicator?: Indicator;
9
9
  matched?: Matched;
10
10
  }
@@ -12,4 +12,5 @@ export interface View {
12
12
  title?: string;
13
13
  type?: string;
14
14
  view_id?: string;
15
+ indexes?: string[];
15
16
  }
package/package.json CHANGED
@@ -101,7 +101,7 @@
101
101
  "internal-slot": "1.0.7"
102
102
  },
103
103
  "type": "module",
104
- "version": "2.18.0-dev.704",
104
+ "version": "2.18.0-dev.710",
105
105
  "exports": {
106
106
  "./i18n": "./i18n.js",
107
107
  "./index.css": "./index.css",
@@ -131,7 +131,9 @@
131
131
  "./components/routes/advanced/*": "./components/routes/advanced/*.js",
132
132
  "./components/routes/templates/*": "./components/routes/templates/*.js",
133
133
  "./components/routes/analytics/*": "./components/routes/analytics/*.js",
134
+ "./components/routes/observables/*": "./components/routes/observables/*.js",
134
135
  "./components/routes/help/*": "./components/routes/help/*.js",
136
+ "./components/routes/cases/*": "./components/routes/cases/*.js",
135
137
  "./components/routes/overviews/*": "./components/routes/overviews/*.js",
136
138
  "./components/routes/home/*": "./components/routes/home/*.js",
137
139
  "./components/routes/home": "./components/routes/home/index.js",
@@ -150,14 +152,23 @@
150
152
  "./components/routes/help/components/*": "./components/routes/help/components/*.js",
151
153
  "./components/routes/help/markdown/fr/*.md": "./components/routes/help/markdown/fr/*.md.js",
152
154
  "./components/routes/help/markdown/en/*.md": "./components/routes/help/markdown/en/*.md.js",
155
+ "./components/routes/cases/modals/*": "./components/routes/cases/modals/*.js",
156
+ "./components/routes/cases/hooks/*": "./components/routes/cases/hooks/*.js",
157
+ "./components/routes/cases/detail/*": "./components/routes/cases/detail/*.js",
158
+ "./components/routes/cases/detail/sidebar/*": "./components/routes/cases/detail/sidebar/*.js",
159
+ "./components/routes/cases/detail/assets/*": "./components/routes/cases/detail/assets/*.js",
160
+ "./components/routes/cases/detail/aggregates/*": "./components/routes/cases/detail/aggregates/*.js",
153
161
  "./components/routes/overviews/template/*": "./components/routes/overviews/template/*.js",
154
162
  "./components/app/hooks/*": "./components/app/hooks/*.js",
155
163
  "./components/app/drawers/*": "./components/app/drawers/*.js",
156
164
  "./components/app/providers/*": "./components/app/providers/*.js",
157
165
  "./components/elements/view/*": "./components/elements/view/*.js",
158
166
  "./components/elements/addons/*": "./components/elements/addons/*.js",
167
+ "./components/elements/record/*": "./components/elements/record/*.js",
168
+ "./components/elements/case/*": "./components/elements/case/*.js",
159
169
  "./components/elements/display/*": "./components/elements/display/*.js",
160
170
  "./components/elements/hit/*": "./components/elements/hit/*.js",
171
+ "./components/elements/observable/*": "./components/elements/observable/*.js",
161
172
  "./components/elements/addons/search/*": "./components/elements/addons/search/*.js",
162
173
  "./components/elements/addons/lists/*": "./components/elements/addons/lists/*.js",
163
174
  "./components/elements/addons/lists": "./components/elements/addons/lists/index.js",
@@ -219,6 +230,8 @@
219
230
  "./commons/components/utils/hooks/*": "./commons/components/utils/hooks/*.js",
220
231
  "./api/action/*": "./api/action/*.js",
221
232
  "./api/action": "./api/action/index.js",
233
+ "./api/v2/*": "./api/v2/*.js",
234
+ "./api/v2": "./api/v2/index.js",
222
235
  "./api/view/*": "./api/view/*.js",
223
236
  "./api/view": "./api/view/index.js",
224
237
  "./api/notebook/*": "./api/notebook/*.js",
@@ -241,6 +254,10 @@
241
254
  "./api/search": "./api/search/index.js",
242
255
  "./api/template/*": "./api/template/*.js",
243
256
  "./api/template": "./api/template/index.js",
257
+ "./api/v2/case/*": "./api/v2/case/*.js",
258
+ "./api/v2/case": "./api/v2/case/index.js",
259
+ "./api/v2/search/*": "./api/v2/search/*.js",
260
+ "./api/v2/search": "./api/v2/search/index.js",
244
261
  "./api/analytic/notebooks/*": "./api/analytic/notebooks/*.js",
245
262
  "./api/analytic/notebooks": "./api/analytic/notebooks/index.js",
246
263
  "./api/analytic/comments/*": "./api/analytic/comments/*.js",
@@ -3,8 +3,8 @@ import EnrichedTypography from '@cccsaurora/clue-ui/components/EnrichedTypograph
3
3
  import { Typography } from '@mui/material';
4
4
  import { memo } from 'react';
5
5
  import { useType } from '../utils';
6
- const ClueTypography = ({ children, value, context, field, hit, ...props }) => {
7
- const type = useType(hit, field, value);
6
+ const ClueTypography = ({ children, value, context, field, obj, ...props }) => {
7
+ const type = useType(obj, field, value);
8
8
  if (!type) {
9
9
  return _jsx(Typography, { ...props, children: children ?? value });
10
10
  }
@@ -1,2 +1,3 @@
1
1
  import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
2
- export declare const useType: (hit?: Hit, field?: string, value?: string) => any;
2
+ import type { Observable } from '@cccsaurora/howler-ui/models/entities/generated/Observable';
3
+ export declare const useType: (hit?: Hit | Observable, field?: string, value?: string) => any;
@@ -30,7 +30,12 @@ export const MOCK_RESPONSES = {
30
30
  total: 1,
31
31
  rows: 1
32
32
  },
33
- '/api/v1/analytic': [createMockAnalytic()]
33
+ '/api/v1/analytic': [createMockAnalytic()],
34
+ '/api/v2/search/hit,observable': {
35
+ items: [],
36
+ total: 0,
37
+ rows: 0
38
+ }
34
39
  };
35
40
  const handlers = [
36
41
  ...Object.entries(MOCK_RESPONSES).map(([path, data]) => http.all(path, async () => HttpResponse.json({ api_response: data }))),
package/tests/utils.d.ts CHANGED
@@ -1,16 +1,20 @@
1
1
  import type { Action } from '@cccsaurora/howler-ui/models/entities/generated/Action';
2
2
  import type { Analytic } from '@cccsaurora/howler-ui/models/entities/generated/Analytic';
3
+ import type { Case } from '@cccsaurora/howler-ui/models/entities/generated/Case';
3
4
  import type { Dossier } from '@cccsaurora/howler-ui/models/entities/generated/Dossier';
4
5
  import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
6
+ import type { Observable } from '@cccsaurora/howler-ui/models/entities/generated/Observable';
5
7
  import type { Template } from '@cccsaurora/howler-ui/models/entities/generated/Template';
6
8
  import type { View } from '@cccsaurora/howler-ui/models/entities/generated/View';
7
9
  type RecursivePartial<T> = {
8
10
  [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends object | undefined ? RecursivePartial<T[P]> : T[P];
9
11
  };
10
12
  export declare const createMockHit: (overrides?: RecursivePartial<Hit>) => Hit;
13
+ export declare const createMockObservable: (overrides?: RecursivePartial<Observable>) => Observable;
11
14
  export declare const createMockAnalytic: (overrides?: Partial<Analytic>) => Analytic;
12
15
  export declare const createMockTemplate: (overrides?: Partial<Template>) => Template;
13
16
  export declare const createMockAction: (overrides?: Partial<Action>) => Action;
14
17
  export declare const createMockView: (overrides?: Partial<View>) => View;
18
+ export declare const createMockCase: (overrides?: Partial<Case>) => Case;
15
19
  export declare const createMockDossier: (overrides?: Partial<Dossier>) => Dossier;
16
20
  export {};
package/tests/utils.js CHANGED
@@ -1,5 +1,7 @@
1
1
  // Mock data factories
2
2
  export const createMockHit = (overrides) => ({
3
+ ...overrides,
4
+ __index: 'hit',
3
5
  howler: {
4
6
  id: 'test-hit-1',
5
7
  analytic: 'test-analytic',
@@ -14,6 +16,17 @@ export const createMockHit = (overrides) => ({
14
16
  ...overrides?.event
15
17
  }
16
18
  });
19
+ export const createMockObservable = (overrides) => ({
20
+ ...overrides,
21
+ __index: 'observable',
22
+ howler: {
23
+ id: 'test-observable-1',
24
+ analytic: 'test-analytic',
25
+ detection: 'Test Detection',
26
+ hash: '',
27
+ ...overrides?.howler
28
+ }
29
+ });
17
30
  export const createMockAnalytic = (overrides) => ({
18
31
  analytic_id: 'test-analytic-id',
19
32
  name: 'test-analytic',
@@ -52,6 +65,13 @@ export const createMockView = (overrides) => ({
52
65
  },
53
66
  ...overrides
54
67
  });
68
+ export const createMockCase = (overrides) => ({
69
+ case_id: 'test-case-id',
70
+ title: 'Test Case',
71
+ summary: 'Test case summary',
72
+ items: [],
73
+ ...overrides
74
+ });
55
75
  // Helper function to create mock dossiers
56
76
  export const createMockDossier = (overrides) => ({
57
77
  dossier_id: 'test-dossier-id',
@@ -5,9 +5,9 @@ export declare const VERSION: any;
5
5
  export declare const MY_LOCAL_STORAGE_PREFIX = "howler.ui";
6
6
  export declare const MY_SESSION_STORAGE_PREFIX = "howler.ui.cache";
7
7
  export declare const ESCALATION_COLORS: {
8
- alert: string;
9
- evidence: string;
10
- hit: string;
8
+ alert: "warning";
9
+ evidence: "error";
10
+ hit: "primary";
11
11
  };
12
12
  export declare const STATUS_COLORS: {
13
13
  open: string;
@@ -1,2 +1,3 @@
1
1
  import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
2
- export declare const getUserList: (hit: Hit) => Set<string>;
2
+ import type { Observable } from '@cccsaurora/howler-ui/models/entities/generated/Observable';
3
+ export declare const getUserList: (record: Hit | Observable) => Set<string>;
@@ -1,8 +1,8 @@
1
- export const getUserList = (hit) => {
1
+ export const getUserList = (record) => {
2
2
  const ids = new Set();
3
- if (hit) {
4
- hit.howler?.log?.forEach(l => ids.add(l.user));
5
- hit.howler?.comment?.forEach(c => ids.add(c.user), ids);
3
+ if (record) {
4
+ record.howler?.log?.forEach(l => ids.add(l.user));
5
+ record.howler?.comment?.forEach(c => ids.add(c.user), ids);
6
6
  }
7
7
  return ids;
8
8
  };
@@ -0,0 +1,7 @@
1
+ import type { Case } from '@cccsaurora/howler-ui/models/entities/generated/Case';
2
+ import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
3
+ import type { Observable } from '@cccsaurora/howler-ui/models/entities/generated/Observable';
4
+ import type { WithMetadata } from '@cccsaurora/howler-ui/models/WithMetadata';
5
+ export declare const isHit: (obj: WithMetadata<any>) => obj is Hit;
6
+ export declare const isCase: (obj: WithMetadata<any>) => obj is Case;
7
+ export declare const isObservable: (obj: WithMetadata<any>) => obj is Observable;