@oneuptime/common 12.0.12 → 12.0.13

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 (234) hide show
  1. package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +32 -5
  2. package/Models/DatabaseModels/NetworkDevice.ts +64 -0
  3. package/Models/DatabaseModels/StatusPage.ts +59 -0
  4. package/Models/DatabaseModels/StatusPageOidc.ts +2 -0
  5. package/Models/DatabaseModels/WorkspaceProjectAuthToken.ts +19 -2
  6. package/Server/API/AIChatAPI.ts +55 -56
  7. package/Server/API/CommonAPI.ts +89 -0
  8. package/Server/API/MicrosoftTeamsAPI.ts +20 -9
  9. package/Server/API/SlackAPI.ts +13 -10
  10. package/Server/API/StatusPageAPI.ts +2197 -2128
  11. package/Server/API/TelemetryAPI.ts +72 -3
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1787500000000-AddEnableSearchEngineIndexingToStatusPage.ts +30 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1787600000000-AddNetworkDeviceReachabilityColumns.ts +47 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  15. package/Server/Middleware/UserAuthorization.ts +11 -2
  16. package/Server/Services/ApiKeyPermissionService.ts +116 -2
  17. package/Server/Services/DatabaseService.ts +17 -6
  18. package/Server/Services/LogAggregationService.ts +34 -0
  19. package/Server/Services/LogService.ts +21 -0
  20. package/Server/Services/NetworkSiteService.ts +12 -0
  21. package/Server/Services/SpanService.ts +21 -0
  22. package/Server/Services/TraceAggregationService.ts +15 -0
  23. package/Server/Services/WorkspaceNotificationRuleService.ts +172 -220
  24. package/Server/Types/AnalyticsDatabase/ModelPermission.ts +9 -0
  25. package/Server/Types/Database/Permissions/AccessControlPermission.ts +47 -16
  26. package/Server/Utils/APIKey/AccessPermission.ts +16 -40
  27. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +144 -0
  28. package/Server/Utils/LogRedaction.ts +576 -0
  29. package/Server/Utils/Logger.ts +123 -46
  30. package/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.ts +94 -23
  31. package/Server/Utils/Monitor/MonitorResource.ts +29 -9
  32. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +28 -7
  33. package/Server/Utils/SessionReplay/SessionReplayGateCacheStore.ts +56 -10
  34. package/Server/Utils/StartServer.ts +30 -9
  35. package/Server/Utils/StatusPageSearchEngineIndexing.ts +33 -0
  36. package/Server/Utils/Telemetry/ResourceEntityFilter.ts +441 -0
  37. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +488 -46
  38. package/Tests/App/Dashboard/MonitorTypePicker.test.tsx +300 -0
  39. package/Tests/App/StatusPage/StatusPageIndexPageRobotsMeta.test.ts +130 -0
  40. package/Tests/Models/DatabaseModels/DatabaseBaseModelToJSONObjectCache.test.ts +180 -0
  41. package/Tests/Models/StatusPageEnableSearchEngineIndexing.test.ts +157 -0
  42. package/Tests/Server/API/AIChatCancelAndFeedback.test.ts +23 -1
  43. package/Tests/Server/API/AIChatRouteAuthorization.test.ts +785 -0
  44. package/Tests/Server/API/BaseAPIApiKeyAuth.test.ts +21 -8
  45. package/Tests/Server/API/CommonAPIAuthGuard.test.ts +290 -0
  46. package/Tests/Server/API/MicrosoftTeamsManifest.test.ts +7 -1
  47. package/Tests/Server/API/StatusPageOverviewCache.test.ts +474 -0
  48. package/Tests/Server/API/StatusPageSeoSearchEngineIndexing.test.ts +189 -0
  49. package/Tests/Server/Infrastructure/InMemoryTTLCache.test.ts +158 -0
  50. package/Tests/Server/Infrastructure/Postgres/DeviceRoleAndDeclaredLinkParentMigration.test.ts +9 -60
  51. package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +24 -15
  52. package/Tests/Server/Middleware/UserAuthorization.test.ts +79 -0
  53. package/Tests/Server/Services/AddNetworkDeviceReachabilityColumnsMigration.test.ts +332 -0
  54. package/Tests/Server/Services/ApiKeyPermissionService.test.ts +347 -0
  55. package/Tests/Server/Services/DatabaseServiceUpdateDebugLogging.test.ts +282 -0
  56. package/Tests/Server/Services/NetworkSiteService.test.ts +56 -2
  57. package/Tests/Server/Services/TelemetryResourceFacetFilters.test.ts +267 -0
  58. package/Tests/Server/Services/WorkspaceNotificationRuleTestRuleChannels.test.ts +702 -0
  59. package/Tests/Server/Types/Database/Permissions/AccessControlPermission.test.ts +165 -0
  60. package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +48 -36
  61. package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +213 -0
  62. package/Tests/Server/Utils/LogRedaction.test.ts +415 -0
  63. package/Tests/Server/Utils/LoggerCredentialLeak.test.ts +245 -0
  64. package/Tests/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.test.ts +374 -4
  65. package/Tests/Server/Utils/Monitor/MonitorResourceIngestedStepSelection.test.ts +455 -0
  66. package/Tests/Server/Utils/Monitor/NetworkDeviceReachabilityRoundTrip.test.ts +369 -0
  67. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +86 -8
  68. package/Tests/Server/Utils/PrivacyFilterUtil.test.ts +64 -0
  69. package/Tests/Server/Utils/SessionReplay/SessionReplayGateCacheStore.test.ts +207 -0
  70. package/Tests/Server/Utils/StartServerBodyVerify.test.ts +335 -0
  71. package/Tests/Server/Utils/StatusPageSearchEngineIndexing.test.ts +60 -0
  72. package/Tests/Server/Utils/Telemetry/ResourceEntityFilter.test.ts +435 -0
  73. package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelSend.test.ts +607 -62
  74. package/Tests/Server/Utils/Workspace/MicrosoftTeamsInstalledTeamIdSpace.test.ts +778 -0
  75. package/Tests/Server/Utils/Workspace/MicrosoftTeamsTeamInstalls.test.ts +44 -10
  76. package/Tests/Types/API/HostnameFromAuthority.test.ts +164 -0
  77. package/Tests/Types/Database/AccessControl/ColumnAccessControlCache.test.ts +344 -0
  78. package/Tests/Types/Database/DatabasePropertyFindOperator.test.ts +518 -0
  79. package/Tests/Types/Database/TableColumnMetadataCache.test.ts +286 -0
  80. package/Tests/Types/Monitor/MonitorStep.test.ts +100 -0
  81. package/Tests/Types/Monitor/MonitorTypeKeywords.test.ts +360 -0
  82. package/Tests/Types/StatusPage/SearchEngineIndexing.test.ts +86 -0
  83. package/Tests/Types/Telemetry/ResourceEntityFacet.test.ts +254 -0
  84. package/Tests/UI/Components/CardSelect.test.tsx +1021 -0
  85. package/Tests/UI/Components/MasterPage.test.tsx +36 -1
  86. package/Tests/Utils/Monitor/MonitorMetricType.test.ts +66 -1
  87. package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +115 -6
  88. package/Tests/Utils/NetworkDevice/DeviceReachabilityUtil.test.ts +610 -0
  89. package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +114 -45
  90. package/Types/API/Hostname.ts +79 -0
  91. package/Types/Database/AccessControl/ColumnAccessControl.ts +33 -11
  92. package/Types/Database/AccessControl/ColumnBillingAccessControl.ts +33 -11
  93. package/Types/Database/DatabaseProperty.ts +38 -0
  94. package/Types/Database/TableColumn.ts +34 -7
  95. package/Types/Events/Recurring.ts +16 -1
  96. package/Types/Monitor/MonitorStep.ts +13 -1
  97. package/Types/Monitor/MonitorType.ts +345 -40
  98. package/Types/Monitor/SSLMonitor/SslMonitorResponse.ts +43 -0
  99. package/Types/StatusPage/SearchEngineIndexing.ts +61 -0
  100. package/Types/Telemetry/ResourceEntityFacet.ts +211 -0
  101. package/UI/Components/CardSelect/CardSelect.tsx +714 -105
  102. package/UI/Components/EmptyState/EmptyState.tsx +8 -1
  103. package/UI/Components/Footer/Footer.tsx +32 -6
  104. package/UI/Components/Forms/Fields/FormField.tsx +3 -0
  105. package/UI/Components/Forms/Types/Field.ts +8 -0
  106. package/UI/Components/Loader/PageLoader.tsx +29 -8
  107. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +26 -4
  108. package/UI/Components/Markdown.tsx/LazyMarkdownViewer.tsx +17 -1
  109. package/UI/Components/MasterPage/MasterPage.tsx +24 -11
  110. package/Utils/Monitor/MonitorMetricType.ts +16 -1
  111. package/Utils/Monitor/NetworkTopologyUtil.ts +60 -8
  112. package/Utils/NetworkDevice/DeviceReachabilityUtil.ts +262 -0
  113. package/Utils/NetworkSite/SiteStatusRollupUtil.ts +41 -24
  114. package/Utils/Telemetry/CrossSignalScope.ts +75 -4
  115. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +20 -4
  116. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
  117. package/build/dist/Models/DatabaseModels/NetworkDevice.js +66 -0
  118. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  119. package/build/dist/Models/DatabaseModels/StatusPage.js +60 -0
  120. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  121. package/build/dist/Models/DatabaseModels/StatusPageOidc.js +2 -0
  122. package/build/dist/Models/DatabaseModels/StatusPageOidc.js.map +1 -1
  123. package/build/dist/Models/DatabaseModels/WorkspaceProjectAuthToken.js.map +1 -1
  124. package/build/dist/Server/API/AIChatAPI.js +48 -35
  125. package/build/dist/Server/API/AIChatAPI.js.map +1 -1
  126. package/build/dist/Server/API/CommonAPI.js +59 -0
  127. package/build/dist/Server/API/CommonAPI.js.map +1 -1
  128. package/build/dist/Server/API/MicrosoftTeamsAPI.js +20 -6
  129. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  130. package/build/dist/Server/API/SlackAPI.js +13 -10
  131. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  132. package/build/dist/Server/API/StatusPageAPI.js +745 -673
  133. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  134. package/build/dist/Server/API/TelemetryAPI.js +34 -3
  135. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  136. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787500000000-AddEnableSearchEngineIndexingToStatusPage.js +23 -0
  137. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787500000000-AddEnableSearchEngineIndexingToStatusPage.js.map +1 -0
  138. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787600000000-AddNetworkDeviceReachabilityColumns.js +34 -0
  139. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787600000000-AddNetworkDeviceReachabilityColumns.js.map +1 -0
  140. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  141. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  142. package/build/dist/Server/Middleware/UserAuthorization.js +6 -2
  143. package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
  144. package/build/dist/Server/Services/ApiKeyPermissionService.js +90 -1
  145. package/build/dist/Server/Services/ApiKeyPermissionService.js.map +1 -1
  146. package/build/dist/Server/Services/DatabaseService.js +15 -6
  147. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  148. package/build/dist/Server/Services/LogAggregationService.js +2 -0
  149. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  150. package/build/dist/Server/Services/LogService.js +16 -0
  151. package/build/dist/Server/Services/LogService.js.map +1 -1
  152. package/build/dist/Server/Services/NetworkSiteService.js +12 -0
  153. package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
  154. package/build/dist/Server/Services/SpanService.js +16 -0
  155. package/build/dist/Server/Services/SpanService.js.map +1 -1
  156. package/build/dist/Server/Services/TraceAggregationService.js +2 -0
  157. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  158. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +137 -164
  159. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  160. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +9 -0
  161. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
  162. package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js +21 -13
  163. package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js.map +1 -1
  164. package/build/dist/Server/Utils/APIKey/AccessPermission.js +9 -32
  165. package/build/dist/Server/Utils/APIKey/AccessPermission.js.map +1 -1
  166. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +87 -0
  167. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  168. package/build/dist/Server/Utils/LogRedaction.js +449 -0
  169. package/build/dist/Server/Utils/LogRedaction.js.map +1 -0
  170. package/build/dist/Server/Utils/Logger.js +98 -45
  171. package/build/dist/Server/Utils/Logger.js.map +1 -1
  172. package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js +65 -13
  173. package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js.map +1 -1
  174. package/build/dist/Server/Utils/Monitor/MonitorResource.js +20 -3
  175. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  176. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +27 -7
  177. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  178. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCacheStore.js +29 -10
  179. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCacheStore.js.map +1 -1
  180. package/build/dist/Server/Utils/StartServer.js +10 -7
  181. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  182. package/build/dist/Server/Utils/StatusPageSearchEngineIndexing.js +24 -0
  183. package/build/dist/Server/Utils/StatusPageSearchEngineIndexing.js.map +1 -0
  184. package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js +311 -0
  185. package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js.map +1 -0
  186. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +366 -37
  187. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  188. package/build/dist/Types/API/Hostname.js +63 -0
  189. package/build/dist/Types/API/Hostname.js.map +1 -1
  190. package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js +20 -6
  191. package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js.map +1 -1
  192. package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js +20 -6
  193. package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js.map +1 -1
  194. package/build/dist/Types/Database/DatabaseProperty.js +38 -0
  195. package/build/dist/Types/Database/DatabaseProperty.js.map +1 -1
  196. package/build/dist/Types/Database/TableColumn.js +24 -6
  197. package/build/dist/Types/Database/TableColumn.js.map +1 -1
  198. package/build/dist/Types/Events/Recurring.js +13 -1
  199. package/build/dist/Types/Events/Recurring.js.map +1 -1
  200. package/build/dist/Types/Monitor/MonitorStep.js +9 -1
  201. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  202. package/build/dist/Types/Monitor/MonitorType.js +330 -31
  203. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  204. package/build/dist/Types/StatusPage/SearchEngineIndexing.js +55 -0
  205. package/build/dist/Types/StatusPage/SearchEngineIndexing.js.map +1 -0
  206. package/build/dist/Types/Telemetry/ResourceEntityFacet.js +156 -0
  207. package/build/dist/Types/Telemetry/ResourceEntityFacet.js.map +1 -0
  208. package/build/dist/UI/Components/CardSelect/CardSelect.js +360 -40
  209. package/build/dist/UI/Components/CardSelect/CardSelect.js.map +1 -1
  210. package/build/dist/UI/Components/EmptyState/EmptyState.js +1 -1
  211. package/build/dist/UI/Components/EmptyState/EmptyState.js.map +1 -1
  212. package/build/dist/UI/Components/Footer/Footer.js +7 -4
  213. package/build/dist/UI/Components/Footer/Footer.js.map +1 -1
  214. package/build/dist/UI/Components/Forms/Fields/FormField.js +1 -1
  215. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  216. package/build/dist/UI/Components/Loader/PageLoader.js +15 -5
  217. package/build/dist/UI/Components/Loader/PageLoader.js.map +1 -1
  218. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +16 -3
  219. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  220. package/build/dist/UI/Components/Markdown.tsx/LazyMarkdownViewer.js +13 -1
  221. package/build/dist/UI/Components/Markdown.tsx/LazyMarkdownViewer.js.map +1 -1
  222. package/build/dist/UI/Components/MasterPage/MasterPage.js +10 -2
  223. package/build/dist/UI/Components/MasterPage/MasterPage.js.map +1 -1
  224. package/build/dist/Utils/Monitor/MonitorMetricType.js +13 -1
  225. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  226. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +34 -7
  227. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  228. package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js +177 -0
  229. package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js.map +1 -0
  230. package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +23 -27
  231. package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
  232. package/build/dist/Utils/Telemetry/CrossSignalScope.js +44 -4
  233. package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -1
  234. package/package.json +1 -1
@@ -0,0 +1,262 @@
1
+ import OneUptimeDate from "../../Types/Date";
2
+
3
+ /*
4
+ * The one place that decides whether a NetworkDevice is reachable.
5
+ *
6
+ * The rule this replaces was "lastSeenAt within a fixed 15 minutes = up",
7
+ * which conflates two different facts:
8
+ *
9
+ * 1. the device did not answer the probe (the device is down), and
10
+ * 2. the probe has not asked it recently (WE are behind).
11
+ *
12
+ * (2) is not a device outage. A probe hands out at most a bounded number of
13
+ * devices per fetch cycle, so a large fleet's real poll cadence is
14
+ * `fleetSize / claimRate` minutes however short the configured interval is —
15
+ * and a fleet whose cadence exceeds the freshness window paints healthy
16
+ * devices red on the device list, the topology graph and the site rollup,
17
+ * while the device's own Interfaces tab (written by that same successful
18
+ * walk) still reads "Up". A device polled on a 30-minute interval was
19
+ * permanently "Down" for the same reason: it can never satisfy a 15-minute
20
+ * window.
21
+ *
22
+ * So reachability is now the OUTCOME of the most recent poll —
23
+ * NetworkDevice.isReachable, stamped by the walk pipeline on every ingested
24
+ * walk — and freshness is only a backstop for "the polling pipeline itself
25
+ * stopped", measured generously against the device's own interval.
26
+ */
27
+
28
+ export enum NetworkDeviceReachability {
29
+ Up = "Up",
30
+ Down = "Down",
31
+ Pending = "Pending",
32
+ }
33
+
34
+ /*
35
+ * Mirrors the NetworkDevice.pollingIntervalInMinutes column default, and is
36
+ * what a NULL interval (rows written before that column existed) is read as.
37
+ */
38
+ export const DEFAULT_DEVICE_POLLING_INTERVAL_IN_MINUTES: number = 5;
39
+
40
+ /*
41
+ * Consecutive missed polls before a device's last verdict is reported as
42
+ * STALE. Staleness is an annotation on the verdict, never the verdict
43
+ * itself — see getReachability for why turning it into "Down" would both
44
+ * re-create this bug at a longer timescale and put the pill permanently at
45
+ * odds with the summary counts.
46
+ *
47
+ * Deliberately generous: a device that stops answering is marked
48
+ * unreachable by the very next poll, so the only thing this flags is the
49
+ * whole polling pipeline going silent (probe offline, claim loop wedged,
50
+ * walk queue backed up). Ten missed cycles is unambiguous.
51
+ */
52
+ export const DEVICE_MISSED_POLL_ALLOWANCE: number = 10;
53
+
54
+ /*
55
+ * Floor under the window above, so a device on a one-minute interval is not
56
+ * declared out of contact after ten minutes of ordinary scheduling jitter.
57
+ */
58
+ export const DEVICE_MIN_STALE_WINDOW_IN_MINUTES: number = 60;
59
+
60
+ // The columns this util reads. Every caller selects exactly these.
61
+ export interface DeviceReachabilityInput {
62
+ /*
63
+ * Outcome of the most recent poll: true = the device answered, false = the
64
+ * probe could not reach it, null/undefined = never polled, or a row
65
+ * written before this column existed.
66
+ */
67
+ isReachable?: boolean | null | undefined;
68
+ // When the probe last ATTEMPTED a walk, whatever the outcome.
69
+ lastPolledAt?: Date | string | null | undefined;
70
+ // When the device last ANSWERED one.
71
+ lastSeenAt?: Date | string | null | undefined;
72
+ // The device's own schedule; sizes the staleness backstop.
73
+ pollingIntervalInMinutes?: number | null | undefined;
74
+ }
75
+
76
+ export interface DeviceReachabilityResult {
77
+ status: NetworkDeviceReachability;
78
+ /*
79
+ * True when the last poll ATTEMPT is older than the staleness window —
80
+ * i.e. this verdict is being read off data nothing has refreshed for a
81
+ * long time. Strictly independent of `status`: it qualifies the verdict
82
+ * ("and nobody has checked lately") rather than changing it, and either
83
+ * an Up or a Down device can be stale.
84
+ */
85
+ isStale: boolean;
86
+ // The window `isStale` was measured against, so the UI can name it.
87
+ staleWindowInMinutes: number;
88
+ // Latest of lastPolledAt / lastSeenAt; null when neither is set.
89
+ lastContactAt: Date | null;
90
+ }
91
+
92
+ const MS_PER_MINUTE: number = 60 * 1000;
93
+
94
+ export default class DeviceReachabilityUtil {
95
+ /*
96
+ * The device's poll interval as a usable positive number. NULL, zero,
97
+ * negative and non-finite values all fall back to the column default —
98
+ * the same clamp NetworkDeviceService.claimDevicesForPolling applies when
99
+ * it advances nextPollAt, so the window and the schedule agree.
100
+ */
101
+ public static getPollingIntervalInMinutes(
102
+ pollingIntervalInMinutes?: number | null | undefined,
103
+ ): number {
104
+ if (
105
+ typeof pollingIntervalInMinutes !== "number" ||
106
+ !Number.isFinite(pollingIntervalInMinutes) ||
107
+ pollingIntervalInMinutes <= 0
108
+ ) {
109
+ return DEFAULT_DEVICE_POLLING_INTERVAL_IN_MINUTES;
110
+ }
111
+
112
+ return Math.max(pollingIntervalInMinutes, 1);
113
+ }
114
+
115
+ // How long a device may go unpolled before its last verdict goes stale.
116
+ public static getStaleWindowInMinutes(
117
+ pollingIntervalInMinutes?: number | null | undefined,
118
+ ): number {
119
+ const interval: number = DeviceReachabilityUtil.getPollingIntervalInMinutes(
120
+ pollingIntervalInMinutes,
121
+ );
122
+
123
+ return Math.max(
124
+ interval * DEVICE_MISSED_POLL_ALLOWANCE,
125
+ DEVICE_MIN_STALE_WINDOW_IN_MINUTES,
126
+ );
127
+ }
128
+
129
+ public static getReachability(
130
+ device: DeviceReachabilityInput,
131
+ now?: Date | undefined,
132
+ ): DeviceReachabilityResult {
133
+ const currentDate: Date = now || OneUptimeDate.getCurrentDate();
134
+
135
+ const staleWindowInMinutes: number =
136
+ DeviceReachabilityUtil.getStaleWindowInMinutes(
137
+ device.pollingIntervalInMinutes,
138
+ );
139
+
140
+ const lastPolledAt: Date | null = toDate(device.lastPolledAt);
141
+ const lastSeenAt: Date | null = toDate(device.lastSeenAt);
142
+
143
+ /*
144
+ * Newest of the two. lastPolledAt alone would be wrong for rows written
145
+ * before it existed (they only have lastSeenAt), and lastSeenAt alone
146
+ * would call a device that is being polled and failing "out of contact"
147
+ * — it is very much in contact, it is just down.
148
+ */
149
+ const lastContactAt: Date | null = newerOf(lastPolledAt, lastSeenAt);
150
+
151
+ const isStale: boolean = lastContactAt
152
+ ? currentDate.getTime() - lastContactAt.getTime() >
153
+ staleWindowInMinutes * MS_PER_MINUTE
154
+ : false;
155
+
156
+ const result: (
157
+ status: NetworkDeviceReachability,
158
+ ) => DeviceReachabilityResult = (
159
+ status: NetworkDeviceReachability,
160
+ ): DeviceReachabilityResult => {
161
+ return {
162
+ status: status,
163
+ isStale: isStale,
164
+ staleWindowInMinutes: staleWindowInMinutes,
165
+ lastContactAt: lastContactAt,
166
+ };
167
+ };
168
+
169
+ /*
170
+ * The probe asked and got nothing. Authoritative however long ago it
171
+ * was — nothing since has said otherwise.
172
+ */
173
+ if (device.isReachable === false) {
174
+ return result(NetworkDeviceReachability.Down);
175
+ }
176
+
177
+ /*
178
+ * The probe asked and the device answered. The answer stands until a
179
+ * later poll contradicts it.
180
+ *
181
+ * Staleness deliberately does NOT override this. Turning "we have not
182
+ * asked in a while" into "the device is down" is the exact move this
183
+ * whole change exists to undo — doing it again at a longer timescale
184
+ * would just relocate the bug. It is also not expressible as a database
185
+ * filter (the window is per-device, derived from each row's own
186
+ * interval), so a status that depended on it could never agree with the
187
+ * summary counts or the Status filter, which have to run in SQL over
188
+ * `isReachable`. A verdict the list cannot count or filter by is a
189
+ * verdict that contradicts itself on screen.
190
+ *
191
+ * `isStale` still comes back in the result, and the UI shows it as what
192
+ * it is — "nothing has polled this device in N minutes, check its
193
+ * probe" — which is a different and more actionable statement than
194
+ * "this device is down".
195
+ */
196
+ if (device.isReachable === true) {
197
+ return result(NetworkDeviceReachability.Up);
198
+ }
199
+
200
+ /*
201
+ * No recorded outcome. Either the device has genuinely never been polled
202
+ * (Pending), or the row predates the column — in which case lastSeenAt
203
+ * is all we have and freshness is the only rule available. The upgrade
204
+ * migration backfills these, so this is a short-lived path.
205
+ */
206
+ if (!lastSeenAt) {
207
+ /*
208
+ * Polled but never once answered — the probe has been trying and
209
+ * failing, which is Down, not "not set up yet".
210
+ */
211
+ if (lastPolledAt) {
212
+ return result(NetworkDeviceReachability.Down);
213
+ }
214
+
215
+ return result(NetworkDeviceReachability.Pending);
216
+ }
217
+
218
+ return result(
219
+ isStale ? NetworkDeviceReachability.Down : NetworkDeviceReachability.Up,
220
+ );
221
+ }
222
+
223
+ // Shorthand for callers that only render the pill.
224
+ public static getStatus(
225
+ device: DeviceReachabilityInput,
226
+ now?: Date | undefined,
227
+ ): NetworkDeviceReachability {
228
+ return DeviceReachabilityUtil.getReachability(device, now).status;
229
+ }
230
+ }
231
+
232
+ /*
233
+ * Tolerant of everything an API payload can carry in a date column: a Date,
234
+ * an ISO string, the serialized {_type, value} form, null, undefined and the
235
+ * empty string. Anything unparseable reads as "not set" rather than as an
236
+ * Invalid Date that would silently compare false against every window.
237
+ */
238
+ function toDate(value: Date | string | null | undefined): Date | null {
239
+ if (value === null || value === undefined || value === "") {
240
+ return null;
241
+ }
242
+
243
+ const parsed: Date = OneUptimeDate.fromString(value);
244
+
245
+ if (!(parsed instanceof Date) || Number.isNaN(parsed.getTime())) {
246
+ return null;
247
+ }
248
+
249
+ return parsed;
250
+ }
251
+
252
+ function newerOf(first: Date | null, second: Date | null): Date | null {
253
+ if (!first) {
254
+ return second;
255
+ }
256
+
257
+ if (!second) {
258
+ return first;
259
+ }
260
+
261
+ return first.getTime() >= second.getTime() ? first : second;
262
+ }
@@ -1,3 +1,7 @@
1
+ import DeviceReachabilityUtil, {
2
+ NetworkDeviceReachability,
3
+ } from "../NetworkDevice/DeviceReachabilityUtil";
4
+
1
5
  /*
2
6
  * Worst-of health rollup for a NetworkSite's device subtree.
3
7
  *
@@ -16,8 +20,17 @@ export interface DeviceHealthState {
16
20
  currentMonitorStatusId?: string | null | undefined;
17
21
  // Priority of that status row; missing when the row no longer exists.
18
22
  monitorStatusPriority?: number | null | undefined;
19
- // Last SNMP contact; drives the freshness fallback for unmonitored devices.
23
+ /*
24
+ * The SNMP fallback for devices no monitor stamps, resolved by the shared
25
+ * DeviceReachabilityUtil rule: the OUTCOME of the last poll, not the age
26
+ * of the last success. Rolling a site up from freshness alone is what
27
+ * turned "the probe is behind on a 900-device fleet" into a red site card
28
+ * over devices that were all answering.
29
+ */
30
+ isReachable?: boolean | null | undefined;
31
+ lastPolledAt?: Date | null | undefined;
20
32
  lastSeenAt?: Date | null | undefined;
33
+ pollingIntervalInMinutes?: number | null | undefined;
21
34
  }
22
35
 
23
36
  // A project MonitorStatus row a freshness fallback can resolve to.
@@ -27,32 +40,27 @@ export interface RollupStatusOption {
27
40
  }
28
41
 
29
42
  export class SiteStatusRollupUtil {
30
- // A device is considered alive when SNMP data arrived within this window.
31
- public static readonly DEFAULT_FRESHNESS_WINDOW_IN_MINUTES: number = 15;
32
-
33
43
  /*
34
44
  * Returns the winning MonitorStatus id for a set of devices, or null when
35
- * no device contributes anything (empty subtree, or freshness fallbacks
36
- * unavailable because the project has no operational/offline rows) - the
37
- * caller treats null as "leave the site's status untouched".
45
+ * no device contributes anything (empty subtree, or fallbacks unavailable
46
+ * because the project has no operational/offline rows) - the caller
47
+ * treats null as "leave the site's status untouched".
38
48
  *
39
49
  * Per device: a stamped monitor status (with a known priority) wins;
40
- * otherwise lastSeenAt within the freshness window maps to the project's
41
- * isOperationalState row and anything staler (or never seen) maps to the
42
- * isOfflineState row. Priority ties keep the first contributor (stable).
50
+ * otherwise the device's SNMP reachability maps Up to the project's
51
+ * isOperationalState row and Down to its isOfflineState row. A device
52
+ * that has never been polled contributes nothing at all - it is not
53
+ * evidence of an outage, and counting it as one used to pin a site red
54
+ * for as long as it took the first walk to land. Priority ties keep the
55
+ * first contributor (stable).
43
56
  */
44
57
  public static worstStatus(data: {
45
58
  deviceStates: Array<DeviceHealthState>;
46
59
  operationalStatus?: RollupStatusOption | null | undefined;
47
60
  offlineStatus?: RollupStatusOption | null | undefined;
48
61
  now?: Date | undefined;
49
- freshnessWindowInMinutes?: number | undefined;
50
62
  }): string | null {
51
63
  const now: Date = data.now || new Date();
52
- const windowInMinutes: number =
53
- data.freshnessWindowInMinutes ??
54
- SiteStatusRollupUtil.DEFAULT_FRESHNESS_WINDOW_IN_MINUTES;
55
- const windowInMs: number = windowInMinutes * 60 * 1000;
56
64
 
57
65
  let winner: RollupStatusOption | null = null;
58
66
 
@@ -69,16 +77,25 @@ export class SiteStatusRollupUtil {
69
77
  priority: device.monitorStatusPriority,
70
78
  };
71
79
  } else {
72
- const lastSeenAtInMs: number | null = device.lastSeenAt
73
- ? new Date(device.lastSeenAt).getTime()
74
- : null;
75
- const isFresh: boolean =
76
- lastSeenAtInMs !== null &&
77
- now.getTime() - lastSeenAtInMs <= windowInMs;
80
+ const reachability: NetworkDeviceReachability =
81
+ DeviceReachabilityUtil.getStatus(
82
+ {
83
+ isReachable: device.isReachable,
84
+ lastPolledAt: device.lastPolledAt,
85
+ lastSeenAt: device.lastSeenAt,
86
+ pollingIntervalInMinutes: device.pollingIntervalInMinutes,
87
+ },
88
+ now,
89
+ );
90
+
91
+ if (reachability === NetworkDeviceReachability.Pending) {
92
+ continue;
93
+ }
78
94
 
79
- candidate = isFresh
80
- ? data.operationalStatus || null
81
- : data.offlineStatus || null;
95
+ candidate =
96
+ reachability === NetworkDeviceReachability.Up
97
+ ? data.operationalStatus || null
98
+ : data.offlineStatus || null;
82
99
  }
83
100
 
84
101
  if (!candidate) {
@@ -1,4 +1,9 @@
1
1
  import Dictionary from "../../Types/Dictionary";
2
+ import {
3
+ RESOURCE_ENTITY_FACET_KEYS,
4
+ ResourceEntityFacetSelections,
5
+ isResourceEntityFacetKey,
6
+ } from "../../Types/Telemetry/ResourceEntityFacet";
2
7
  import OneUptimeDate from "../../Types/Date";
3
8
  import TimeRange from "../../Types/Time/TimeRange";
4
9
  import MetricExplorerUrl, {
@@ -61,6 +66,16 @@ const WHITESPACE: RegExp = /\s/;
61
66
  export interface TelemetryCrossSignalScope {
62
67
  /** Service ObjectID strings (Log/Span `primaryEntityId` values). */
63
68
  serviceIds?: Array<string> | undefined;
69
+ /**
70
+ * Non-Service resource selections keyed by facet — e.g.
71
+ * `{ kubernetesClusterId: ["<id>"] }`. Deliberately NOT merged into
72
+ * `serviceIds`: a host or cluster id is not a `primaryEntityId` value for
73
+ * telemetry that carries a `service.name`, so it has to reach the target
74
+ * explorer as its own facet and be resolved to the resource's entity key
75
+ * there. Both the logs and the traces `filters` grammar carry arbitrary
76
+ * facet keys, so these survive the trip intact.
77
+ */
78
+ resourceFacetSelections?: ResourceEntityFacetSelections | undefined;
64
79
  /** Exact-match telemetry attribute filters. Keys may contain dots. */
65
80
  attributes?: Dictionary<string> | undefined;
66
81
  traceIds?: Array<string> | undefined;
@@ -165,6 +180,36 @@ function sanitizeAttributeEntries(
165
180
  return entries;
166
181
  }
167
182
 
183
+ /*
184
+ * Drop unknown facet keys and blank ids from a resource selection map. An
185
+ * unknown key would become a filter chip the target explorer cannot compile
186
+ * (it would land as an unknown column predicate), so it is reported as
187
+ * dropped by the callers instead of being emitted.
188
+ */
189
+ function sanitizeResourceFacetSelections(
190
+ selections: ResourceEntityFacetSelections | undefined,
191
+ ): Array<[string, Array<string>]> {
192
+ if (!selections) {
193
+ return [];
194
+ }
195
+
196
+ const entries: Array<[string, Array<string>]> = [];
197
+
198
+ for (const facetKey of RESOURCE_ENTITY_FACET_KEYS) {
199
+ if (!isResourceEntityFacetKey(facetKey)) {
200
+ continue;
201
+ }
202
+
203
+ const values: Array<string> = sanitizeValues(selections[facetKey]);
204
+
205
+ if (values.length > 0) {
206
+ entries.push([facetKey, values]);
207
+ }
208
+ }
209
+
210
+ return entries;
211
+ }
212
+
168
213
  function isValidDate(value: Date | undefined): value is Date {
169
214
  return value instanceof Date && !isNaN(value.getTime());
170
215
  }
@@ -250,6 +295,12 @@ export function toLogsExplorerQueryParams(
250
295
  tuples.push(["primaryEntityId", serviceIds]);
251
296
  }
252
297
 
298
+ for (const [facetKey, values] of sanitizeResourceFacetSelections(
299
+ scope.resourceFacetSelections,
300
+ )) {
301
+ tuples.push([facetKey, values]);
302
+ }
303
+
253
304
  const traceIds: Array<string> = sanitizeValues(scope.traceIds);
254
305
 
255
306
  if (traceIds.length > 0) {
@@ -372,6 +423,19 @@ export function toTracesExplorerQueryParams(
372
423
  filterTuples.push(["primaryEntityId", serviceId]);
373
424
  }
374
425
 
426
+ /*
427
+ * The traces `filters` grammar is one [key, value] pair per chip, so a
428
+ * multi-valued selection fans out into one chip per id — the explorer
429
+ * groups same-key chips back into a single facet selection.
430
+ */
431
+ for (const [facetKey, values] of sanitizeResourceFacetSelections(
432
+ scope.resourceFacetSelections,
433
+ )) {
434
+ for (const value of values) {
435
+ filterTuples.push([facetKey, value]);
436
+ }
437
+ }
438
+
375
439
  for (const [key, value] of sanitizeAttributeEntries(scope.attributes)) {
376
440
  const tokenValue: string | null = isTraceTokenSafeKey(key)
377
441
  ? buildTraceSearchTokenValue(value)
@@ -438,10 +502,11 @@ export function toTracesExplorerQueryParams(
438
502
  * Custom by the absolute params alone — see MetricExplorerUrl). The
439
503
  * optional `metricName` argument names the query.
440
504
  *
441
- * Dropped: serviceIds, traceIds, spanIds, severityTexts — the metric
442
- * explorer's URL grammar has no service / trace / span / severity
443
- * dimension (metrics carry a primaryEntityId column, but the explorer only
444
- * parses metricName + attributes out of `metricQueries`).
505
+ * Dropped: serviceIds, resourceFacetSelections, traceIds, spanIds,
506
+ * severityTexts — the metric explorer's URL grammar has no service /
507
+ * resource / trace / span / severity dimension (metrics carry a
508
+ * primaryEntityId column, but the explorer only parses metricName +
509
+ * attributes out of `metricQueries`).
445
510
  */
446
511
  export function toMetricsExplorerQueryParams(
447
512
  scope: TelemetryCrossSignalScope,
@@ -484,6 +549,12 @@ export function toMetricsExplorerQueryParams(
484
549
  dropped.push("serviceIds");
485
550
  }
486
551
 
552
+ for (const [facetKey] of sanitizeResourceFacetSelections(
553
+ scope.resourceFacetSelections,
554
+ )) {
555
+ dropped.push(facetKey);
556
+ }
557
+
487
558
  if (sanitizeValues(scope.traceIds).length > 0) {
488
559
  dropped.push("traceIds");
489
560
  }
@@ -21,6 +21,22 @@ import JSONFunctions from "../../../Types/JSONFunctions";
21
21
  import ObjectID from "../../../Types/ObjectID";
22
22
  import Text from "../../../Types/Text";
23
23
  import { BaseEntity, CreateDateColumn, DeleteDateColumn, PrimaryGeneratedColumn, UpdateDateColumn, VersionColumn, } from "typeorm";
24
+ /*
25
+ * Metadata-only vanilla instances used by toJSONObject to read table-column
26
+ * metadata. Frozen and never exported, so they can never be mutated or escape
27
+ * this file. _fromJSON must never use this cache — it mutates and returns the
28
+ * instance it constructs.
29
+ */
30
+ const vanillaModelCache = new WeakMap();
31
+ function getVanillaModel(modelType) {
32
+ let vanillaModel = vanillaModelCache.get(modelType);
33
+ if (!vanillaModel) {
34
+ vanillaModel = new modelType();
35
+ Object.freeze(vanillaModel);
36
+ vanillaModelCache.set(modelType, vanillaModel);
37
+ }
38
+ return vanillaModel;
39
+ }
24
40
  export default class DatabaseBaseModel extends BaseEntity {
25
41
  constructor(id) {
26
42
  super();
@@ -81,8 +97,7 @@ export default class DatabaseBaseModel extends BaseEntity {
81
97
  return Boolean(this.allowUserQueryWithoutTenant);
82
98
  }
83
99
  getTableColumnMetadata(columnName) {
84
- const dictionary = getTableColumns(this);
85
- return dictionary[columnName];
100
+ return getTableColumn(this, columnName);
86
101
  }
87
102
  hasColumn(columnName) {
88
103
  return Boolean(getTableColumn(this, columnName));
@@ -95,7 +110,8 @@ export default class DatabaseBaseModel extends BaseEntity {
95
110
  return this.getColumnAccessControlForAllColumns()[columnName] || null;
96
111
  }
97
112
  getColumnAccessControlForAllColumns() {
98
- const dictionary = getColumnAccessControlForAllColumns(this);
113
+ // Copy: the helper's dictionary is cached per class and must stay pristine.
114
+ const dictionary = Object.assign({}, getColumnAccessControlForAllColumns(this));
99
115
  const defaultColumns = [
100
116
  "_id",
101
117
  "createdAt",
@@ -313,7 +329,7 @@ export default class DatabaseBaseModel extends BaseEntity {
313
329
  }
314
330
  static toJSONObject(model, modelType) {
315
331
  const json = {};
316
- const vanillaModel = new modelType();
332
+ const vanillaModel = getVanillaModel(modelType);
317
333
  for (const key of vanillaModel.getTableColumns().columns) {
318
334
  if (model[key] === undefined) {
319
335
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseBaseModel.js","sourceRoot":"","sources":["../../../../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DatabaseBaseModel.js","sourceRoot":"","sources":["../../../../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts"],"names":[],"mappings":"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"}