@oneuptime/common 11.7.1 → 11.7.3

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 (285) hide show
  1. package/Models/AnalyticsModels/KubernetesCostAllocation.ts +103 -0
  2. package/Models/DatabaseModels/DashboardDomain.ts +1 -0
  3. package/Models/DatabaseModels/Incident.ts +2 -0
  4. package/Models/DatabaseModels/IncidentEpisode.ts +1 -0
  5. package/Models/DatabaseModels/IncidentEpisodePublicNote.ts +1 -0
  6. package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +1 -0
  7. package/Models/DatabaseModels/IncidentPublicNote.ts +1 -0
  8. package/Models/DatabaseModels/IncidentStateTimeline.ts +1 -0
  9. package/Models/DatabaseModels/Monitor.ts +1 -0
  10. package/Models/DatabaseModels/MonitorStatusTimeline.ts +1 -0
  11. package/Models/DatabaseModels/NetworkSite.ts +1 -0
  12. package/Models/DatabaseModels/NetworkSiteStatusTimeline.ts +1 -0
  13. package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +1 -0
  14. package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +2 -0
  15. package/Models/DatabaseModels/Probe.ts +13 -13
  16. package/Models/DatabaseModels/ScheduledMaintenance.ts +1 -0
  17. package/Models/DatabaseModels/ScheduledMaintenancePublicNote.ts +1 -0
  18. package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +1 -0
  19. package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +1 -0
  20. package/Models/DatabaseModels/StatusPage.ts +1 -0
  21. package/Models/DatabaseModels/StatusPageAnnouncement.ts +1 -0
  22. package/Models/DatabaseModels/StatusPageDomain.ts +1 -0
  23. package/Models/DatabaseModels/TableView.ts +40 -0
  24. package/Models/DatabaseModels/WorkspaceNotificationSummary.ts +1 -0
  25. package/Models/DatabaseModels/WorkspaceProjectAuthToken.ts +11 -0
  26. package/Server/API/BaseAPI.ts +17 -1
  27. package/Server/API/CommonAPI.ts +32 -0
  28. package/Server/API/MicrosoftTeamsAPI.ts +99 -2
  29. package/Server/API/ProbeAPI.ts +2 -0
  30. package/Server/API/SlackAPI.ts +62 -0
  31. package/Server/API/StatusPageAPI.ts +157 -192
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1785140242697-AddHotQueryIndexes.ts +89 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1785148065137-AddHotQueryIndexesSecondPass.ts +61 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1785240000000-RepairCrossProjectMonitorStatusReferences.ts +280 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.ts +13 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  37. package/Server/Services/DatabaseService.ts +11 -3
  38. package/Server/Services/MonitorGroupService.ts +145 -0
  39. package/Server/Services/MonitorService.ts +231 -30
  40. package/Server/Services/ProbeService.ts +319 -16
  41. package/Server/Services/StatusPageService.ts +72 -42
  42. package/Server/Services/WorkspaceNotificationRuleService.ts +232 -2
  43. package/Server/Utils/Database/PostgresErrorTranslator.ts +131 -0
  44. package/Server/Utils/Monitor/MonitorResource.ts +88 -35
  45. package/Server/Utils/Monitor/MonitorStatusTimeline.ts +21 -1
  46. package/Server/Utils/Monitor/MonitorStepsProjectValidator.ts +158 -0
  47. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +706 -6
  48. package/Tests/Models/AnalyticsModels/KubernetesCostAllocation.test.ts +16 -0
  49. package/Tests/Models/DatabaseModels/ProbeColumnAccessControl.test.ts +103 -0
  50. package/Tests/Server/API/BaseAPIUpdateNoOp.test.ts +135 -0
  51. package/Tests/Server/API/CommonAPIAuthGuard.test.ts +317 -0
  52. package/Tests/Server/API/MicrosoftTeamsManifest.test.ts +228 -0
  53. package/Tests/Server/API/ProbeAPI.test.ts +6 -0
  54. package/Tests/Server/API/ZZVerifyChatsAuth.test.ts +167 -0
  55. package/Tests/Server/Services/AddHotQueryIndexesMigration.test.ts +255 -0
  56. package/Tests/Server/Services/AddHotQueryIndexesSecondPassMigration.test.ts +258 -0
  57. package/Tests/Server/Services/DatabaseServiceSanitizeUpdateData.test.ts +1 -1
  58. package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +121 -0
  59. package/Tests/Server/Services/HeartbeatWriteFastPathSafety.test.ts +200 -0
  60. package/Tests/Server/Services/HookFreeWriteSafetySecondPass.test.ts +181 -0
  61. package/Tests/Server/Services/MonitorGroupServiceBatchedStatuses.test.ts +513 -0
  62. package/Tests/Server/Services/MonitorResourceProbeAgreementReuse.test.ts +492 -0
  63. package/Tests/Server/Services/MonitorServiceProbeSelection.test.ts +401 -0
  64. package/Tests/Server/Services/MonitorStatusTimelineFastPath.test.ts +453 -0
  65. package/Tests/Server/Services/ProbeAuthKeyCacheAndHeartbeat.test.ts +679 -0
  66. package/Tests/Server/Services/ServiceLevelObjectiveService.test.ts +3 -3
  67. package/Tests/Server/Services/StatusPageDomainResolutionCache.test.ts +245 -0
  68. package/Tests/Server/Services/StatusPageOverviewTimelineWindow.test.ts +283 -0
  69. package/Tests/Server/Services/StatusPageServiceMcp.test.ts +17 -1
  70. package/Tests/Server/Services/StatusPageServiceMonitorGroupBatching.test.ts +331 -0
  71. package/Tests/Server/Services/UserOnCallLogClaimNotificationRule.test.ts +12 -12
  72. package/Tests/Server/Services/WorkspaceNotificationRuleChats.test.ts +1390 -0
  73. package/Tests/Server/Utils/AI/Insights/InsightFixRouting.test.ts +4 -4
  74. package/Tests/Server/Utils/AI/Insights/InsightScanner.test.ts +2 -2
  75. package/Tests/Server/Utils/AI/Insights/InsightStore.test.ts +1 -3
  76. package/Tests/Server/Utils/AI/Insights/InsightStoreHardening.test.ts +1 -3
  77. package/Tests/Server/Utils/AI/Insights/InsightTriage.test.ts +1 -1
  78. package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +5 -5
  79. package/Tests/Server/Utils/Alert/AlertPrivacyFilter.test.ts +187 -0
  80. package/Tests/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.test.ts +170 -0
  81. package/Tests/Server/Utils/Database/PostgresErrorTranslator.test.ts +125 -0
  82. package/Tests/Server/Utils/Incident/IncidentPrivacyFilter.test.ts +264 -0
  83. package/Tests/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.test.ts +175 -0
  84. package/Tests/Server/Utils/Monitor/MonitorStepsProjectValidator.test.ts +181 -0
  85. package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +1 -1
  86. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +2 -2
  87. package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelsList.test.ts +341 -0
  88. package/Tests/Server/Utils/Workspace/MicrosoftTeamsChats.test.ts +2175 -0
  89. package/Tests/Server/Utils/Workspace/SlackChannelsList.test.ts +585 -0
  90. package/Tests/Types/Billing/MeteredPlan.test.ts +46 -0
  91. package/Tests/Types/JSONFunctions.test.ts +103 -1
  92. package/Tests/Types/Workspace/NotificationRules/NotificationRuleCondition.test.ts +219 -1
  93. package/Tests/UI/Components/BulkUpdateForm.test.tsx +174 -0
  94. package/Tests/UI/Components/CardModelDetailEdit.test.tsx +315 -0
  95. package/Tests/UI/Components/ModelDetailSelect.test.tsx +229 -0
  96. package/Tests/UI/Components/ModelTable/BaseModelTableBulkSelectAll.test.tsx +1258 -0
  97. package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +679 -0
  98. package/Tests/UI/Components/ModelTable/ColumnCustomizationModal.test.tsx +572 -0
  99. package/Tests/UI/Components/ModelTable/ColumnPreference.test.ts +1678 -0
  100. package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +1094 -0
  101. package/Tests/UI/Components/ModelTableExportFromColumns.test.ts +153 -0
  102. package/Tests/UI/Components/MonacoLoader.test.ts +67 -0
  103. package/Tests/UI/Components/MonacoRuntime.test.ts +121 -0
  104. package/Tests/UI/Components/TableBulkCsvExport.test.tsx +212 -3
  105. package/Tests/UI/Utils/Project.test.ts +809 -0
  106. package/Tests/UI/Utils/TableColumnsToCsv.test.ts +360 -0
  107. package/Tests/Utils/Alerts/AlertMetricType.test.ts +143 -0
  108. package/Tests/Utils/Dashboard/VariableUrlState.test.ts +219 -0
  109. package/Tests/Utils/Incident/IncidentMetricType.test.ts +174 -0
  110. package/Tests/Utils/Monitor/MonitorProbeSelectionUtil.test.ts +145 -0
  111. package/Tests/Utils/StatusPage/ResourceUptime.test.ts +263 -0
  112. package/Tests/Utils/UserPreferences.test.ts +563 -0
  113. package/Types/JSONFunctions.ts +7 -2
  114. package/Types/Kubernetes/KubernetesCostIngest.ts +37 -1
  115. package/Types/Workspace/NotificationRules/BaseNotificationRule.ts +4 -0
  116. package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +25 -10
  117. package/Types/Workspace/WorkspaceMessagePayload.ts +1 -0
  118. package/UI/Components/BulkUpdate/BulkUpdateForm.tsx +63 -8
  119. package/UI/Components/CodeEditor/CodeEditor.tsx +3 -0
  120. package/UI/Components/CodeEditor/MonacoLoader.ts +36 -0
  121. package/UI/Components/Forms/ModelForm.tsx +41 -18
  122. package/UI/Components/MasterPage/MasterPage.tsx +65 -0
  123. package/UI/Components/ModelDetail/CardModelDetail.tsx +23 -1
  124. package/UI/Components/ModelDetail/ModelDetail.tsx +46 -1
  125. package/UI/Components/ModelTable/BaseModelTable.tsx +687 -34
  126. package/UI/Components/ModelTable/Column.ts +29 -0
  127. package/UI/Components/ModelTable/ColumnCustomizationModal.tsx +420 -0
  128. package/UI/Components/ModelTable/ColumnPreference.ts +482 -0
  129. package/UI/Components/ModelTable/CustomFieldColumns.tsx +326 -0
  130. package/UI/Components/ModelTable/ExportFromColumns.ts +57 -0
  131. package/UI/Components/ModelTable/TableView.tsx +24 -2
  132. package/UI/Components/ModelTable/useCustomFieldColumns.ts +150 -0
  133. package/UI/Components/Navbar/NavBar.tsx +66 -1
  134. package/UI/Components/SideMenu/SideMenu.tsx +24 -4
  135. package/UI/Components/Table/Table.tsx +66 -14
  136. package/UI/Components/Table/TableRow.tsx +180 -175
  137. package/UI/Components/Table/Types/Column.ts +20 -0
  138. package/UI/Utils/Project.ts +214 -18
  139. package/UI/Utils/TableColumnsToCsv.ts +86 -6
  140. package/UI/esbuild-config.js +34 -0
  141. package/Utils/Monitor/MonitorProbeSelectionUtil.ts +72 -0
  142. package/Utils/UserPreferences.ts +53 -0
  143. package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js +86 -0
  144. package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js.map +1 -1
  145. package/build/dist/Models/DatabaseModels/DashboardDomain.js +1 -0
  146. package/build/dist/Models/DatabaseModels/DashboardDomain.js.map +1 -1
  147. package/build/dist/Models/DatabaseModels/Incident.js +2 -0
  148. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  149. package/build/dist/Models/DatabaseModels/IncidentEpisode.js +1 -0
  150. package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -1
  151. package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js +1 -0
  152. package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js.map +1 -1
  153. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +1 -0
  154. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -1
  155. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js +1 -0
  156. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js.map +1 -1
  157. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +1 -0
  158. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
  159. package/build/dist/Models/DatabaseModels/Monitor.js +1 -0
  160. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  161. package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js +1 -0
  162. package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js.map +1 -1
  163. package/build/dist/Models/DatabaseModels/NetworkSite.js +1 -0
  164. package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -1
  165. package/build/dist/Models/DatabaseModels/NetworkSiteStatusTimeline.js +1 -0
  166. package/build/dist/Models/DatabaseModels/NetworkSiteStatusTimeline.js.map +1 -1
  167. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +1 -0
  168. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
  169. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +2 -0
  170. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
  171. package/build/dist/Models/DatabaseModels/Probe.js +13 -13
  172. package/build/dist/Models/DatabaseModels/Probe.js.map +1 -1
  173. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +1 -0
  174. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  175. package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js +1 -0
  176. package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js.map +1 -1
  177. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +1 -0
  178. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
  179. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +1 -0
  180. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
  181. package/build/dist/Models/DatabaseModels/StatusPage.js +1 -0
  182. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  183. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +1 -0
  184. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
  185. package/build/dist/Models/DatabaseModels/StatusPageDomain.js +1 -0
  186. package/build/dist/Models/DatabaseModels/StatusPageDomain.js.map +1 -1
  187. package/build/dist/Models/DatabaseModels/TableView.js +40 -0
  188. package/build/dist/Models/DatabaseModels/TableView.js.map +1 -1
  189. package/build/dist/Models/DatabaseModels/WorkspaceNotificationSummary.js +1 -0
  190. package/build/dist/Models/DatabaseModels/WorkspaceNotificationSummary.js.map +1 -1
  191. package/build/dist/Models/DatabaseModels/WorkspaceProjectAuthToken.js.map +1 -1
  192. package/build/dist/Server/API/BaseAPI.js +12 -1
  193. package/build/dist/Server/API/BaseAPI.js.map +1 -1
  194. package/build/dist/Server/API/CommonAPI.js +21 -0
  195. package/build/dist/Server/API/CommonAPI.js.map +1 -1
  196. package/build/dist/Server/API/MicrosoftTeamsAPI.js +72 -2
  197. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  198. package/build/dist/Server/API/ProbeAPI.js +2 -0
  199. package/build/dist/Server/API/ProbeAPI.js.map +1 -1
  200. package/build/dist/Server/API/SlackAPI.js +44 -0
  201. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  202. package/build/dist/Server/API/StatusPageAPI.js +98 -152
  203. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  204. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785140242697-AddHotQueryIndexes.js +36 -0
  205. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785140242697-AddHotQueryIndexes.js.map +1 -0
  206. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785148065137-AddHotQueryIndexesSecondPass.js +26 -0
  207. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785148065137-AddHotQueryIndexesSecondPass.js.map +1 -0
  208. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785240000000-RepairCrossProjectMonitorStatusReferences.js +254 -0
  209. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785240000000-RepairCrossProjectMonitorStatusReferences.js.map +1 -0
  210. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.js +12 -0
  211. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.js.map +1 -0
  212. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  213. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  214. package/build/dist/Server/Services/DatabaseService.js +10 -2
  215. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  216. package/build/dist/Server/Services/MonitorGroupService.js +118 -0
  217. package/build/dist/Server/Services/MonitorGroupService.js.map +1 -1
  218. package/build/dist/Server/Services/MonitorService.js +198 -24
  219. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  220. package/build/dist/Server/Services/ProbeService.js +238 -9
  221. package/build/dist/Server/Services/ProbeService.js.map +1 -1
  222. package/build/dist/Server/Services/StatusPageService.js +46 -39
  223. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  224. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +178 -3
  225. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  226. package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js +80 -0
  227. package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js.map +1 -0
  228. package/build/dist/Server/Utils/Monitor/MonitorResource.js +67 -29
  229. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  230. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js +31 -14
  231. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js.map +1 -1
  232. package/build/dist/Server/Utils/Monitor/MonitorStepsProjectValidator.js +117 -0
  233. package/build/dist/Server/Utils/Monitor/MonitorStepsProjectValidator.js.map +1 -0
  234. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +549 -7
  235. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  236. package/build/dist/Types/JSONFunctions.js +8 -3
  237. package/build/dist/Types/JSONFunctions.js.map +1 -1
  238. package/build/dist/Types/Kubernetes/KubernetesCostIngest.js.map +1 -1
  239. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +17 -7
  240. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
  241. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js +37 -11
  242. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js.map +1 -1
  243. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +2 -0
  244. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  245. package/build/dist/UI/Components/CodeEditor/MonacoLoader.js +34 -0
  246. package/build/dist/UI/Components/CodeEditor/MonacoLoader.js.map +1 -0
  247. package/build/dist/UI/Components/Forms/ModelForm.js +37 -17
  248. package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
  249. package/build/dist/UI/Components/MasterPage/MasterPage.js +50 -1
  250. package/build/dist/UI/Components/MasterPage/MasterPage.js.map +1 -1
  251. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +22 -1
  252. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
  253. package/build/dist/UI/Components/ModelDetail/ModelDetail.js +31 -1
  254. package/build/dist/UI/Components/ModelDetail/ModelDetail.js.map +1 -1
  255. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +472 -27
  256. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  257. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js +189 -0
  258. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js.map +1 -0
  259. package/build/dist/UI/Components/ModelTable/ColumnPreference.js +258 -0
  260. package/build/dist/UI/Components/ModelTable/ColumnPreference.js.map +1 -0
  261. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js +168 -0
  262. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js.map +1 -0
  263. package/build/dist/UI/Components/ModelTable/ExportFromColumns.js +30 -0
  264. package/build/dist/UI/Components/ModelTable/ExportFromColumns.js.map +1 -0
  265. package/build/dist/UI/Components/ModelTable/TableView.js +13 -2
  266. package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
  267. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js +84 -0
  268. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js.map +1 -0
  269. package/build/dist/UI/Components/Navbar/NavBar.js +39 -1
  270. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  271. package/build/dist/UI/Components/SideMenu/SideMenu.js +15 -5
  272. package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
  273. package/build/dist/UI/Components/Table/Table.js +46 -13
  274. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  275. package/build/dist/UI/Components/Table/TableRow.js +11 -6
  276. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  277. package/build/dist/UI/Utils/Project.js +161 -15
  278. package/build/dist/UI/Utils/Project.js.map +1 -1
  279. package/build/dist/UI/Utils/TableColumnsToCsv.js +67 -6
  280. package/build/dist/UI/Utils/TableColumnsToCsv.js.map +1 -1
  281. package/build/dist/Utils/Monitor/MonitorProbeSelectionUtil.js +52 -0
  282. package/build/dist/Utils/Monitor/MonitorProbeSelectionUtil.js.map +1 -0
  283. package/build/dist/Utils/UserPreferences.js +33 -0
  284. package/build/dist/Utils/UserPreferences.js.map +1 -1
  285. package/package.json +4 -3
@@ -8,22 +8,149 @@ import { SubscriptionStatusUtil, } from "../../Types/Billing/SubscriptionStatus"
8
8
  import Navigation from "./Navigation";
9
9
  import SessionStorage from "./SessionStorage";
10
10
  import Telemetry from "./Telemetry/Telemetry";
11
+ /**
12
+ * Session storage key that pins a browser tab to the project it is showing.
13
+ * Session storage (and not local storage) so two tabs can show two different
14
+ * projects at the same time.
15
+ */
16
+ export const CURRENT_PROJECT_ID_STORAGE_KEY = "current_project_id";
17
+ /**
18
+ * Local storage key that remembers the last project the user opened on this
19
+ * browser. Unlike {@link CURRENT_PROJECT_ID_STORAGE_KEY} this survives closing
20
+ * the tab, which is what makes the dashboard reopen on the project the user
21
+ * left off on instead of always falling back to the first project.
22
+ */
23
+ export const LAST_ACCESSED_PROJECT_ID_STORAGE_KEY = "last_accessed_project_id";
11
24
  export default class ProjectUtil {
25
+ /**
26
+ * The project the user is currently looking at, resolved in priority order:
27
+ *
28
+ * 1. `/dashboard/:projectId/...` in the URL - the page the user actually
29
+ * opened, so a deep link always wins over anything we have cached.
30
+ * 2. `current_project_id` in session storage - keeps this tab on the project
31
+ * it was already showing while the user moves around routes that do not
32
+ * carry a project id (e.g. `/dashboard`).
33
+ * 3. `last_accessed_project_id` in local storage - the project this user last
34
+ * opened on this browser, so closing the tab and coming back to
35
+ * `/dashboard` reopens that project rather than the first one.
36
+ */
12
37
  static getCurrentProjectId() {
13
- // if this is not available in the url, check the session storage
14
- const currentProjectId = SessionStorage.getItem(`current_project_id`);
15
- if (currentProjectId && ObjectID.isValidUUID(currentProjectId)) {
16
- return new ObjectID(currentProjectId);
38
+ const projectIdInUrl = this.getProjectIdFromUrl();
39
+ if (projectIdInUrl) {
40
+ return projectIdInUrl;
17
41
  }
18
- let projectId = Navigation.getFirstParam(2);
19
- if (projectId && projectId.includes(":projectId")) {
20
- projectId = undefined;
42
+ const projectIdInSession = this.toProjectId(SessionStorage.getItem(CURRENT_PROJECT_ID_STORAGE_KEY));
43
+ if (projectIdInSession) {
44
+ return projectIdInSession;
21
45
  }
22
- // Only return the projectId if it's a valid UUID
23
- if (projectId && ObjectID.isValidUUID(projectId)) {
24
- return new ObjectID(projectId);
46
+ return this.getLastAccessedProjectId();
47
+ }
48
+ /**
49
+ * The project id in the current URL, if the user is on a project scoped route
50
+ * like `/dashboard/:projectId/...`. Returns null on routes that carry no
51
+ * project id (`/dashboard`, `/dashboard/welcome`, ...).
52
+ */
53
+ static getProjectIdFromUrl() {
54
+ const projectId = Navigation.getFirstParam(2);
55
+ if (!projectId || projectId.includes(":projectId")) {
56
+ return null;
25
57
  }
26
- return null;
58
+ return this.toProjectId(projectId);
59
+ }
60
+ /**
61
+ * The last project this user opened on this browser. Persisted in local
62
+ * storage so it outlives the tab. It is cleared on logout (which clears all
63
+ * of local storage) and when the project is deleted.
64
+ */
65
+ static getLastAccessedProjectId() {
66
+ return this.toProjectId(LocalStorage.getItem(LAST_ACCESSED_PROJECT_ID_STORAGE_KEY));
67
+ }
68
+ static setLastAccessedProjectId(projectId) {
69
+ const id = this.toProjectId(projectId);
70
+ if (!id) {
71
+ // Never persist junk - an unusable value would only shadow the fallbacks.
72
+ this.clearLastAccessedProjectId();
73
+ return;
74
+ }
75
+ LocalStorage.setItem(LAST_ACCESSED_PROJECT_ID_STORAGE_KEY, id.toString());
76
+ }
77
+ static clearLastAccessedProjectId() {
78
+ LocalStorage.removeItem(LAST_ACCESSED_PROJECT_ID_STORAGE_KEY);
79
+ }
80
+ /**
81
+ * Picks the project the dashboard should load out of the projects the user
82
+ * has access to.
83
+ *
84
+ * Candidates are tried in order - current project (URL / this tab), then the
85
+ * last project opened on this browser, then the first project the user has
86
+ * access to. A candidate that is not in `projects` is skipped, because the
87
+ * user may have left, lost access to, or deleted it since.
88
+ */
89
+ static getProjectToSelect(data) {
90
+ const projects = this.getSelectableProjects(data.projects);
91
+ const candidateIds = [
92
+ data.currentProjectId,
93
+ data.lastAccessedProjectId,
94
+ ];
95
+ for (const candidateId of candidateIds) {
96
+ if (!candidateId) {
97
+ continue;
98
+ }
99
+ const project = projects.find((project) => {
100
+ var _a;
101
+ return ((_a = project._id) === null || _a === void 0 ? void 0 : _a.toString()) === candidateId.toString();
102
+ });
103
+ if (project) {
104
+ return project;
105
+ }
106
+ }
107
+ return projects[0] || null;
108
+ }
109
+ /**
110
+ * {@link getProjectToSelect} with the candidates read off storage / the URL.
111
+ */
112
+ static getProjectToLoad(projects) {
113
+ return this.getProjectToSelect({
114
+ projects: projects,
115
+ currentProjectId: this.getCurrentProjectId(),
116
+ lastAccessedProjectId: this.getLastAccessedProjectId(),
117
+ });
118
+ }
119
+ /**
120
+ * The project the dashboard should switch to now that the list of projects
121
+ * the user has access to has (re)loaded, or null when whatever is already
122
+ * selected should stand.
123
+ *
124
+ * A selection is left alone as long as the user still has access to it -
125
+ * otherwise a project the user just picked (or just created) would be
126
+ * overruled by whatever we happened to have remembered.
127
+ */
128
+ static getProjectToSelectOnProjectsLoaded(data) {
129
+ var _a, _b;
130
+ const projects = this.getSelectableProjects(data.projects);
131
+ if (projects.length === 0) {
132
+ // Nothing to select yet - the list is still loading, or the user has no projects.
133
+ return null;
134
+ }
135
+ const selectedProjectId = (_b = (_a = data.selectedProject) === null || _a === void 0 ? void 0 : _a._id) === null || _b === void 0 ? void 0 : _b.toString();
136
+ const isSelectionStillAccessible = Boolean(selectedProjectId &&
137
+ projects.some((project) => {
138
+ var _a;
139
+ return ((_a = project._id) === null || _a === void 0 ? void 0 : _a.toString()) === selectedProjectId;
140
+ }));
141
+ if (isSelectionStillAccessible) {
142
+ return null;
143
+ }
144
+ return this.getProjectToLoad(projects);
145
+ }
146
+ /**
147
+ * The projects that can actually be opened - a project without an id cannot
148
+ * be navigated to (`/dashboard/undefined`), so it is never a candidate.
149
+ */
150
+ static getSelectableProjects(projects) {
151
+ return (projects || []).filter((project) => {
152
+ return Boolean(project === null || project === void 0 ? void 0 : project._id);
153
+ });
27
154
  }
28
155
  static setIsSubscriptionInactiveOrOverdue(data) {
29
156
  var _a;
@@ -45,10 +172,13 @@ export default class ProjectUtil {
45
172
  static getCurrentProject() {
46
173
  var _a;
47
174
  const currentProjectId = (_a = this.getCurrentProjectId()) === null || _a === void 0 ? void 0 : _a.toString();
48
- if (!LocalStorage.getItem(`project_${currentProjectId}`)) {
175
+ if (!currentProjectId) {
49
176
  return null;
50
177
  }
51
178
  const projectJson = LocalStorage.getItem(`project_${currentProjectId}`);
179
+ if (!projectJson) {
180
+ return null;
181
+ }
52
182
  return BaseModel.fromJSON(projectJson, Project);
53
183
  }
54
184
  static setCurrentProject(project) {
@@ -58,7 +188,9 @@ export default class ProjectUtil {
58
188
  project = BaseModel.toJSON(project, Project);
59
189
  }
60
190
  LocalStorage.setItem(`project_${currentProjectId}`, project);
61
- SessionStorage.setItem(`current_project_id`, currentProjectId);
191
+ SessionStorage.setItem(CURRENT_PROJECT_ID_STORAGE_KEY, currentProjectId);
192
+ // Remember this project for the next time the user opens the dashboard.
193
+ this.setLastAccessedProjectId(currentProjectId);
62
194
  // Keep RUM span context in sync with the project being viewed.
63
195
  if (currentProjectId) {
64
196
  Telemetry.setGlobalAttributes({ projectId: currentProjectId });
@@ -67,8 +199,15 @@ export default class ProjectUtil {
67
199
  static clearCurrentProject() {
68
200
  var _a;
69
201
  const currentProjectId = (_a = this.getCurrentProjectId()) === null || _a === void 0 ? void 0 : _a.toString();
70
- LocalStorage.setItem(`project_${currentProjectId}`, null);
71
- SessionStorage.setItem(`current_project_id`, null);
202
+ if (currentProjectId) {
203
+ LocalStorage.removeItem(`project_${currentProjectId}`);
204
+ }
205
+ SessionStorage.removeItem(CURRENT_PROJECT_ID_STORAGE_KEY);
206
+ /*
207
+ * The project is gone (or the user is leaving it), so it must not be
208
+ * reopened the next time the dashboard loads.
209
+ */
210
+ this.clearLastAccessedProjectId();
72
211
  }
73
212
  static getCurrentPlan() {
74
213
  if (!BILLING_ENABLED) {
@@ -80,5 +219,12 @@ export default class ProjectUtil {
80
219
  }
81
220
  return SubscriptionPlan.getPlanType(project.paymentProviderPlanId, getAllEnvVars());
82
221
  }
222
+ static toProjectId(value) {
223
+ const id = value === null || value === void 0 ? void 0 : value.toString();
224
+ if (id && ObjectID.isValidUUID(id)) {
225
+ return new ObjectID(id);
226
+ }
227
+ return null;
228
+ }
83
229
  }
84
230
  //# sourceMappingURL=Project.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Project.js","sourceRoot":"","sources":["../../../../UI/Utils/Project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Project.js","sourceRoot":"","sources":["../../../../UI/Utils/Project.ts"],"names":[],"mappings":"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"}
@@ -198,27 +198,88 @@ export default class TableColumnsToCsv {
198
198
  }
199
199
  return null;
200
200
  }
201
+ /*
202
+ * The fields a column contributes to the export. A ModelTable column can
203
+ * declare several (a cell that renders hosts + clusters + services in one
204
+ * place), and BaseModelTable forwards all of them as exportKeys; `key`
205
+ * alone is only the first. Falls back to the single key for tables that
206
+ * build their Table columns by hand.
207
+ */
208
+ static getExportKeys(column) {
209
+ if (column.exportKeys && column.exportKeys.length > 0) {
210
+ return column.exportKeys;
211
+ }
212
+ if (column.key === null || column.key === undefined) {
213
+ return [];
214
+ }
215
+ return [String(column.key)];
216
+ }
217
+ /*
218
+ * A column that renders entirely through getElement still has to declare a
219
+ * field so the row gets fetched at all, and the convention for that is
220
+ * `field: { _id: true }` - the "Owners" column on alerts, incidents,
221
+ * monitors and friends. The id is plumbing, not the cell's value, so
222
+ * exporting it writes a raw UUID under a header like "Owners". Treat such a
223
+ * column as presentational and leave it out, the same way a column with no
224
+ * key at all is left out. A column that genuinely shows the id says so with
225
+ * FieldType.ObjectID, and one that wants its rendered content in the file
226
+ * says so with getExportValue.
227
+ */
228
+ static isPlaceholderIdColumn(column) {
229
+ if (!column.getElement) {
230
+ return false;
231
+ }
232
+ if (column.type === FieldType.ObjectID) {
233
+ return false;
234
+ }
235
+ const keys = this.getExportKeys(column);
236
+ return keys.length === 1 && keys[0] === "_id";
237
+ }
201
238
  /*
202
239
  * Columns that can be exported: everything except the Actions column (which
203
- * only holds buttons) and columns without a data key (purely presentational).
240
+ * only holds buttons), columns that opted out, columns without a data key
241
+ * (purely presentational), and placeholder id columns.
204
242
  */
205
243
  static getExportableColumns(columns) {
206
244
  return (columns || []).filter((column) => {
207
245
  if (column.type === FieldType.Actions) {
208
246
  return false;
209
247
  }
210
- if (column.key === null || column.key === undefined) {
248
+ if (column.disableCsvExport) {
249
+ return false;
250
+ }
251
+ // An explicit export value makes even a keyless column exportable.
252
+ if (column.getExportValue) {
253
+ return true;
254
+ }
255
+ if (this.getExportKeys(column).length === 0) {
256
+ return false;
257
+ }
258
+ if (this.isPlaceholderIdColumn(column)) {
211
259
  return false;
212
260
  }
213
261
  return true;
214
262
  });
215
263
  }
216
264
  static getCellValue(item, column) {
217
- if (column.key === null || column.key === undefined) {
218
- return "";
265
+ if (column.getExportValue) {
266
+ return column.getExportValue(item) || "";
267
+ }
268
+ /*
269
+ * Every declared field goes into the one cell, joined the same way a
270
+ * multi-value field is, so a cell that renders several relations exports
271
+ * all of them. Blanks are dropped (only one of the relations is usually
272
+ * set) and repeats are collapsed (the same entity reachable through two
273
+ * of them should not be listed twice).
274
+ */
275
+ const values = [];
276
+ for (const key of this.getExportKeys(column)) {
277
+ const formatted = this.formatValueForCsv(this.getRawValueByPath(item, key), column.type);
278
+ if (formatted.length > 0 && !values.includes(formatted)) {
279
+ values.push(formatted);
280
+ }
219
281
  }
220
- const rawValue = this.getRawValueByPath(item, String(column.key));
221
- return this.formatValueForCsv(rawValue, column.type);
282
+ return values.join("; ");
222
283
  }
223
284
  /*
224
285
  * Builds the full CSV text (header row + one row per item). Fields are
@@ -1 +1 @@
1
- {"version":3,"file":"TableColumnsToCsv.js","sourceRoot":"","sources":["../../../../UI/Utils/TableColumnsToCsv.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,+BAA+B,CAAC;AAEtD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAE7C;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC;;;;OAIG;IACI,MAAM,CAAC,cAAc,CAAC,KAAa;QACxC,MAAM,YAAY,GAChB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YACnB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YACnB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YACpB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEvB,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;QAC1C,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,uBAAuB,CAAC,KAAa;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,SAAS,GAAW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE1C,IACE,SAAS,KAAK,GAAG;YACjB,SAAS,KAAK,GAAG;YACjB,SAAS,KAAK,GAAG;YACjB,SAAS,KAAK,IAAI;YAClB,SAAS,KAAK,IAAI,EAClB,CAAC;YACD,OAAO,IAAI,KAAK,EAAE,CAAC;QACrB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,iBAAiB,CAC7B,IAAO,EACP,IAAY;QAEZ,MAAM,QAAQ,GAAkB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,OAAO,GAAY,IAAI,CAAC;QAE5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEjD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC9C,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,GAAY,EAAE,OAAe;QAC1D,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,MAAM,GAAa,GAA+B,CAAC,OAAO,CAAC,CAAC;QAElE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,cAAc,GAClB,GACD,CAAC,cAAc,CAAC;QAEjB,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC;YAAC,WAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,iBAAiB,CAAC,QAAiB,EAAE,IAAe;QAChE,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,QAAQ;iBACZ,GAAG,CAAC,CAAC,OAAgB,EAAE,EAAE;gBACxB,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,SAAiB,EAAE,EAAE;gBAC5B,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,QAAiB,EAAE,IAAe;QACjE,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzC,KAAK,SAAS,CAAC,QAAQ;gBACrB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1C,KAAK,SAAS,CAAC,OAAO;gBACpB,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YACjC,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxB,MAAM,GAAG,GAAW,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACrC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,OAAO,EAAE,CAAC;gBACZ,CAAC;gBACD,OAAO,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;YAC5B,CAAC;YACD,KAAK,SAAS,CAAC,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC7C;gBACE,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,QAAiB,EAAE,YAAqB;QAChE,IAAI,QAAQ,YAAY,IAAI,EAAE,CAAC;YAC7B,OAAO,aAAa,CAAC,yCAAyC,CAC5D,QAAQ,EACR,YAAY,CACb,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,OAAO,aAAa,CAAC,yCAAyC,CAC5D,QAAQ,EACR,YAAY,CACb,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,QAAiB;QAC7C,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAAW,OAAO,QAAQ,CAAC;QAE1C,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,QAAkB,CAAC;QAC5B,CAAC;QAED,IACE,SAAS,KAAK,QAAQ;YACtB,SAAS,KAAK,SAAS;YACvB,SAAS,KAAK,QAAQ,EACtB,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAkB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAErE,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;gBAC1B,OAAO,YAAY,CAAC;YACtB,CAAC;YAED,MAAM,GAAG,GAA4B,QAAmC,CAAC;YAEzE,KAAK,MAAM,UAAU,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;gBACpD,MAAM,YAAY,GAAY,GAAG,CAAC,UAAU,CAAC,CAAC;gBAE9C,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChE,OAAO,YAAY,CAAC;gBACtB,CAAC;gBAED,IAAI,YAAY,KAAK,IAAI,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;oBAC9D,MAAM,MAAM,GAAkB,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;oBAEnE,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzC,OAAO,MAAM,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;YAAC,WAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,iBAAiB,CAAC,KAAc;QAC7C,MAAM,UAAU,GACd,KACD,aADC,KAAK,uBAAL,KAAK,CACJ,QAAQ,CAAC;QAEZ,IACE,OAAO,UAAU,KAAK,UAAU;YAChC,UAAU,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,EACxC,CAAC;YACD,MAAM,QAAQ,GAAW,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEhD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;gBACnE,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,oBAAoB,CAChC,OAAmB;QAEnB,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAiB,EAAE,EAAE;YAClD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtC,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBACpD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,YAAY,CACxB,IAAO,EACP,MAAiB;QAEjB,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACpD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3E,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,YAAY,CAA0B,IAGnD;QACC,MAAM,aAAa,GAAe,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE1E,MAAM,WAAW,GAA8B,CAAC,KAAa,EAAU,EAAE;YACvE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC;QAEF,MAAM,SAAS,GAAW,aAAa;aACpC,GAAG,CAAC,CAAC,MAAiB,EAAE,EAAE;YACzB,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,MAAM,IAAI,GAAkB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAO,EAAE,EAAE;YAC7D,OAAO,aAAa;iBACjB,GAAG,CAAC,CAAC,MAAiB,EAAE,EAAE;gBACzB,OAAO,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,iBAAiB,CAAC,KAAa;QAC3C,MAAM,SAAS,GACb,CAAC,KAAK,IAAI,OAAO,CAAC;aACf,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;aAChC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;aACvB,WAAW,EAAE,IAAI,OAAO,CAAC;QAE9B,MAAM,SAAS,GAAW,IAAI,IAAI,EAAE;aACjC,WAAW,EAAE;aACb,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;aACrB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhB,OAAO,GAAG,SAAS,WAAW,SAAS,MAAM,CAAC;IAChD,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAuC;QAC/D;;;WAGG;QACH,MAAM,aAAa,GAAW,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;YAC3D,IAAI,EAAE,yBAAyB;SAChC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAW,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,MAAM,GAAsB,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;QAClB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAA0B,IAIvD;QACC,MAAM,GAAG,GAAW,IAAI,CAAC,YAAY,CAAC;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC;YACf,GAAG,EAAE,GAAG;YACR,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;SAC7C,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"TableColumnsToCsv.js","sourceRoot":"","sources":["../../../../UI/Utils/TableColumnsToCsv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /*
2
+ * Which probes a brand-new monitor starts out with.
3
+ *
4
+ * The server applies this same rule in
5
+ * MonitorService.addDefaultProbesToMonitor (as a database query rather than a
6
+ * filter over a list). The create form uses it to pre-select the probe picker,
7
+ * so what the user sees before pressing "Create Monitor" is what they would
8
+ * have got anyway - and can now change.
9
+ */
10
+ export default class MonitorProbeSelectionUtil {
11
+ /*
12
+ * A probe is auto-enabled on new monitors when it opts in with
13
+ * shouldAutoEnableProbeOnNewMonitors - except that global probes are skipped
14
+ * entirely for projects that turned off "add global probes by default".
15
+ */
16
+ static getDefaultSelectedProbeIds(data) {
17
+ const skipGlobalProbes = data.doNotAddGlobalProbesByDefaultOnNewMonitors === true;
18
+ const selected = [];
19
+ for (const probe of data.probes || []) {
20
+ if (!probe || !probe.id) {
21
+ continue;
22
+ }
23
+ if (!probe.shouldAutoEnableProbeOnNewMonitors) {
24
+ continue;
25
+ }
26
+ if (probe.isGlobalProbe && skipGlobalProbes) {
27
+ continue;
28
+ }
29
+ selected.push(probe.id);
30
+ }
31
+ return MonitorProbeSelectionUtil.dedupeProbeIds(selected);
32
+ }
33
+ /*
34
+ * Probe ids reach the server as plain strings and the same probe can be
35
+ * offered by more than one source, so duplicates have to go: MonitorProbe
36
+ * has no unique index and MonitorProbeService rejects the second insert with
37
+ * "Probe is already added to this monitor."
38
+ */
39
+ static dedupeProbeIds(probeIds) {
40
+ const seen = new Set();
41
+ const deduped = [];
42
+ for (const probeId of probeIds || []) {
43
+ if (!probeId || seen.has(probeId)) {
44
+ continue;
45
+ }
46
+ seen.add(probeId);
47
+ deduped.push(probeId);
48
+ }
49
+ return deduped;
50
+ }
51
+ }
52
+ //# sourceMappingURL=MonitorProbeSelectionUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonitorProbeSelectionUtil.js","sourceRoot":"","sources":["../../../../Utils/Monitor/MonitorProbeSelectionUtil.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,CAAC,OAAO,OAAO,yBAAyB;IAC5C;;;;OAIG;IACI,MAAM,CAAC,0BAA0B,CAAC,IAGxC;QACC,MAAM,gBAAgB,GACpB,IAAI,CAAC,0CAA0C,KAAK,IAAI,CAAC;QAE3D,MAAM,QAAQ,GAAkB,EAAE,CAAC;QAEnC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC;gBAC9C,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,aAAa,IAAI,gBAAgB,EAAE,CAAC;gBAC5C,SAAS;YACX,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,yBAAyB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,cAAc,CAAC,QAAuB;QAClD,MAAM,IAAI,GAAgB,IAAI,GAAG,EAAU,CAAC;QAC5C,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,KAAK,MAAM,OAAO,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,SAAS;YACX,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -2,6 +2,7 @@ import LocalStorage from "../UI/Utils/LocalStorage";
2
2
  export var UserPreferenceType;
3
3
  (function (UserPreferenceType) {
4
4
  UserPreferenceType["BaseModelTablePageSize"] = "BaseModelTablePageSize";
5
+ UserPreferenceType["BaseModelTableColumns"] = "BaseModelTableColumns";
5
6
  })(UserPreferenceType || (UserPreferenceType = {}));
6
7
  export default class UserPreferences {
7
8
  static getUserPreferenceByTypeAsNumber(data) {
@@ -16,5 +17,37 @@ export default class UserPreferences {
16
17
  const finalKey = `${userPreferenceType}.${key}`;
17
18
  LocalStorage.setItem(finalKey, value);
18
19
  }
20
+ /*
21
+ * Object-shaped preferences (e.g. a table's column layout). LocalStorage
22
+ * already JSON-serializes objects on the way in and parses them on the way
23
+ * out, so this only has to reject anything that came back as something other
24
+ * than a plain object - a half-written or hand-edited entry must degrade to
25
+ * "no preference" rather than reaching the caller as a string or an array.
26
+ */
27
+ static getUserPreferenceByTypeAsJSON(data) {
28
+ const { key, userPreferenceType } = data;
29
+ const finalKey = `${userPreferenceType}.${key}`;
30
+ let value = null;
31
+ try {
32
+ value = LocalStorage.getItem(finalKey);
33
+ }
34
+ catch (_a) {
35
+ return null;
36
+ }
37
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
38
+ return null;
39
+ }
40
+ return value;
41
+ }
42
+ static saveUserPreferenceByTypeAsJSON(data) {
43
+ const { key, userPreferenceType, value } = data;
44
+ const finalKey = `${userPreferenceType}.${key}`;
45
+ LocalStorage.setItem(finalKey, value);
46
+ }
47
+ static removeUserPreferenceByType(data) {
48
+ const { key, userPreferenceType } = data;
49
+ const finalKey = `${userPreferenceType}.${key}`;
50
+ LocalStorage.removeItem(finalKey);
51
+ }
19
52
  }
20
53
  //# sourceMappingURL=UserPreferences.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserPreferences.js","sourceRoot":"","sources":["../../../Utils/UserPreferences.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAEpD,MAAM,CAAN,IAAY,kBAEX;AAFD,WAAY,kBAAkB;IAC5B,uEAAiD,CAAA;AACnD,CAAC,EAFW,kBAAkB,KAAlB,kBAAkB,QAE7B;AAED,MAAM,CAAC,OAAO,OAAO,eAAe;IAC3B,MAAM,CAAC,+BAA+B,CAAC,IAG7C;QACC,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;QAEzC,MAAM,QAAQ,GAAW,GAAG,kBAAkB,IAAI,GAAG,EAAE,CAAC;QACxD,MAAM,WAAW,GAAkB,YAAY,CAAC,OAAO,CAAC,QAAQ,CAExD,CAAC;QAET,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,uBAAuB;IAChB,MAAM,CAAC,gCAAgC,CAAC,IAI9C;QACC,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEhD,MAAM,QAAQ,GAAW,GAAG,kBAAkB,IAAI,GAAG,EAAE,CAAC;QACxD,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;CACF"}
1
+ {"version":3,"file":"UserPreferences.js","sourceRoot":"","sources":["../../../Utils/UserPreferences.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAGpD,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,uEAAiD,CAAA;IACjD,qEAA+C,CAAA;AACjD,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;AAED,MAAM,CAAC,OAAO,OAAO,eAAe;IAC3B,MAAM,CAAC,+BAA+B,CAAC,IAG7C;QACC,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;QAEzC,MAAM,QAAQ,GAAW,GAAG,kBAAkB,IAAI,GAAG,EAAE,CAAC;QACxD,MAAM,WAAW,GAAkB,YAAY,CAAC,OAAO,CAAC,QAAQ,CAExD,CAAC;QAET,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,uBAAuB;IAChB,MAAM,CAAC,gCAAgC,CAAC,IAI9C;QACC,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEhD,MAAM,QAAQ,GAAW,GAAG,kBAAkB,IAAI,GAAG,EAAE,CAAC;QACxD,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,6BAA6B,CAAC,IAG3C;QACC,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;QAEzC,MAAM,QAAQ,GAAW,GAAG,kBAAkB,IAAI,GAAG,EAAE,CAAC;QAExD,IAAI,KAAK,GAAY,IAAI,CAAC;QAE1B,IAAI,CAAC;YACH,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAmB,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,8BAA8B,CAAC,IAI5C;QACC,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEhD,MAAM,QAAQ,GAAW,GAAG,kBAAkB,IAAI,GAAG,EAAE,CAAC;QACxD,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,0BAA0B,CAAC,IAGxC;QACC,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;QAEzC,MAAM,QAAQ,GAAW,GAAG,kBAAkB,IAAI,GAAG,EAAE,CAAC;QACxD,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneuptime/common",
3
- "version": "11.7.1",
3
+ "version": "11.7.3",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "main": "index.js",
10
10
  "scripts": {
11
- "test": "cd .. && export $(grep -v '^#' config.env | xargs) && cd Common && node --max-old-space-size=6144 node_modules/.bin/jest --runInBand ./Tests --detectOpenHandles",
11
+ "test": "cd .. && export $(grep -v '^#' config.env | xargs) && cd Common && node --max-old-space-size=6144 node_modules/.bin/jest --runInBand ./Tests --detectOpenHandles --forceExit",
12
12
  "test-file": "cd .. && export $(grep -v '^#' config.env | xargs) && cd Common && node node_modules/.bin/jest --runInBand $1 --detectOpenHandles",
13
13
  "coverage": "jest --detectOpenHandles --coverage",
14
14
  "compile": "tsc",
@@ -57,7 +57,7 @@
57
57
  "@clickhouse/client": "^1.10.1",
58
58
  "@elastic/elasticsearch": "^8.12.1",
59
59
  "@hcaptcha/react-hcaptcha": "^1.14.0",
60
- "@monaco-editor/react": "^4.4.6",
60
+ "@monaco-editor/react": "^4.7.0",
61
61
  "@opentelemetry/api": "^1.9.1",
62
62
  "@opentelemetry/api-logs": "^0.219.0",
63
63
  "@opentelemetry/context-zone": "^2.8.0",
@@ -118,6 +118,7 @@
118
118
  "mermaid": "^11.12.2",
119
119
  "moment": "^2.30.1",
120
120
  "moment-timezone": "^0.5.45",
121
+ "monaco-editor": "0.52.2",
121
122
  "multer": "^2.1.1",
122
123
  "node-cron": "^4.0.0",
123
124
  "nodemailer": "^8.0.11",