@oneuptime/common 12.0.5 → 12.0.6

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 (528) hide show
  1. package/Models/DatabaseModels/AIRun.ts +33 -0
  2. package/Models/DatabaseModels/DataSource.ts +744 -0
  3. package/Models/DatabaseModels/Index.ts +3 -0
  4. package/Models/DatabaseModels/ProjectCallSMSConfig.ts +10 -2
  5. package/Models/DatabaseModels/User.ts +2 -0
  6. package/Models/DatabaseModels/UserOnCallLog.ts +2 -0
  7. package/Models/DatabaseModels/UserOnCallLogTimeline.ts +2 -0
  8. package/Models/DatabaseModels/UserSession.ts +2 -0
  9. package/Models/DatabaseModels/UserTotpAuth.ts +6 -4
  10. package/Models/DatabaseModels/UserWebAuthn.ts +5 -3
  11. package/Server/API/AIInsightAPI.ts +47 -4
  12. package/Server/API/AIInvestigationAPI.ts +25 -0
  13. package/Server/API/DashboardAPI.ts +176 -492
  14. package/Server/API/DataSourceAPI.ts +268 -0
  15. package/Server/API/StatusPageAPI.ts +11 -1
  16. package/Server/API/UserAPI.ts +119 -0
  17. package/Server/Infrastructure/ClickhouseConfig.ts +59 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/1786303472848-AddDataSourceTable.ts +39 -0
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/1786600000000-AddInvestigationAnalysisTldr.ts +24 -0
  20. package/Server/Infrastructure/Postgres/SchemaMigrations/1786700000000-DropProjectCallSMSConfigCredentialUniques.ts +76 -0
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  22. package/Server/Infrastructure/Queue.ts +26 -0
  23. package/Server/Infrastructure/QueueWorker.ts +17 -0
  24. package/Server/Middleware/TelemetryIngest.ts +8 -3
  25. package/Server/Services/AIInsightService.ts +132 -12
  26. package/Server/Services/AIRunService.ts +34 -0
  27. package/Server/Services/AIService.ts +17 -2
  28. package/Server/Services/AlertService.ts +38 -32
  29. package/Server/Services/AnalyticsDatabaseService.ts +8 -4
  30. package/Server/Services/DataSourceService.ts +200 -0
  31. package/Server/Services/HostService.ts +92 -0
  32. package/Server/Services/IncidentService.ts +45 -0
  33. package/Server/Services/Index.ts +2 -0
  34. package/Server/Services/MonitorService.ts +49 -0
  35. package/Server/Services/MonitorStatusService.ts +166 -0
  36. package/Server/Services/OpenTelemetryIngestService.ts +255 -184
  37. package/Server/Services/RumSessionPinService.ts +7 -21
  38. package/Server/Services/StatusPageSubscriberService.ts +13 -0
  39. package/Server/Services/UserService.ts +280 -9
  40. package/Server/Static/Vendor/README.md +62 -0
  41. package/Server/Static/Vendor/fonts/InterVariable.woff2 +0 -0
  42. package/Server/Static/Vendor/highlight/highlight.min.js +1244 -0
  43. package/Server/Static/Vendor/highlight/languages/apache.min.js +15 -0
  44. package/Server/Static/Vendor/highlight/languages/bash.min.js +21 -0
  45. package/Server/Static/Vendor/highlight/languages/c.min.js +41 -0
  46. package/Server/Static/Vendor/highlight/languages/cpp.min.js +47 -0
  47. package/Server/Static/Vendor/highlight/languages/csharp.min.js +49 -0
  48. package/Server/Static/Vendor/highlight/languages/css.min.js +31 -0
  49. package/Server/Static/Vendor/highlight/languages/diff.min.js +9 -0
  50. package/Server/Static/Vendor/highlight/languages/dns.min.js +11 -0
  51. package/Server/Static/Vendor/highlight/languages/dockerfile.min.js +8 -0
  52. package/Server/Static/Vendor/highlight/languages/go.min.js +20 -0
  53. package/Server/Static/Vendor/highlight/languages/graphql.min.js +12 -0
  54. package/Server/Static/Vendor/highlight/languages/http.min.js +14 -0
  55. package/Server/Static/Vendor/highlight/languages/ini.min.js +15 -0
  56. package/Server/Static/Vendor/highlight/languages/java.min.js +38 -0
  57. package/Server/Static/Vendor/highlight/languages/javascript.min.js +81 -0
  58. package/Server/Static/Vendor/highlight/languages/json.min.js +8 -0
  59. package/Server/Static/Vendor/highlight/languages/kotlin.min.js +46 -0
  60. package/Server/Static/Vendor/highlight/languages/lua.min.js +15 -0
  61. package/Server/Static/Vendor/highlight/languages/makefile.min.js +14 -0
  62. package/Server/Static/Vendor/highlight/languages/nginx.min.js +21 -0
  63. package/Server/Static/Vendor/highlight/languages/perl.min.js +41 -0
  64. package/Server/Static/Vendor/highlight/languages/php.min.js +59 -0
  65. package/Server/Static/Vendor/highlight/languages/powershell.min.js +39 -0
  66. package/Server/Static/Vendor/highlight/languages/python.min.js +42 -0
  67. package/Server/Static/Vendor/highlight/languages/r.min.js +26 -0
  68. package/Server/Static/Vendor/highlight/languages/ruby.min.js +54 -0
  69. package/Server/Static/Vendor/highlight/languages/rust.min.js +27 -0
  70. package/Server/Static/Vendor/highlight/languages/scala.min.js +28 -0
  71. package/Server/Static/Vendor/highlight/languages/sql.min.js +21 -0
  72. package/Server/Static/Vendor/highlight/languages/swift.min.js +68 -0
  73. package/Server/Static/Vendor/highlight/languages/typescript.min.js +99 -0
  74. package/Server/Static/Vendor/highlight/languages/xml.min.js +29 -0
  75. package/Server/Static/Vendor/highlight/languages/yaml.min.js +28 -0
  76. package/Server/Static/Vendor/highlight/styles/github-dark.min.css +10 -0
  77. package/Server/Static/Vendor/highlight/styles/vs2015.min.css +1 -0
  78. package/Server/Static/Vendor/tailwind/tailwind-3.4.5.js +21028 -0
  79. package/Server/Types/Database/Permissions/BasePermission.ts +7 -0
  80. package/Server/Types/Database/Permissions/DeletePermission.ts +2 -0
  81. package/Server/Types/Database/Permissions/ReadPermission.ts +3 -0
  82. package/Server/Types/Database/Permissions/TenantPermission.ts +101 -16
  83. package/Server/Utils/AI/CodeFix/FixRunBudget.ts +2 -2
  84. package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +90 -11
  85. package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +1 -0
  86. package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +1 -0
  87. package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionIdentity.ts +125 -0
  88. package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +25 -15
  89. package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +256 -57
  90. package/Server/Utils/AI/SRE/Insights/InsightStore.ts +76 -18
  91. package/Server/Utils/AI/SRE/InvestigationTldr.ts +352 -0
  92. package/Server/Utils/AnalyticsDatabase/InsertDedupContext.ts +7 -2
  93. package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +1793 -0
  94. package/Server/Utils/Dashboard/PublicDashboardViewConfig.ts +65 -0
  95. package/Server/Utils/DataSource/ConnectorRegistry.ts +53 -0
  96. package/Server/Utils/DataSource/Connectors/ClickHouseConnector.ts +338 -0
  97. package/Server/Utils/DataSource/Connectors/ElasticsearchConnector.ts +717 -0
  98. package/Server/Utils/DataSource/Connectors/LokiConnector.ts +606 -0
  99. package/Server/Utils/DataSource/Connectors/MySqlConnector.ts +307 -0
  100. package/Server/Utils/DataSource/Connectors/PostgresConnector.ts +260 -0
  101. package/Server/Utils/DataSource/Connectors/PrometheusConnector.ts +555 -0
  102. package/Server/Utils/DataSource/Connectors/RestApiConnector.ts +597 -0
  103. package/Server/Utils/DataSource/Connectors/SqlServerConnector.ts +318 -0
  104. package/Server/Utils/DataSource/EgressGuard.ts +446 -0
  105. package/Server/Utils/DataSource/HttpFetch.ts +221 -0
  106. package/Server/Utils/DataSource/SqlQueryGuard.ts +383 -0
  107. package/Server/Utils/DataSource/SqlResultShaper.ts +372 -0
  108. package/Server/Utils/DataSource/Types.ts +93 -0
  109. package/Server/Utils/Database/PostgresErrorTranslator.ts +172 -17
  110. package/Server/Utils/InProcessMemo.ts +141 -0
  111. package/Server/Utils/InstanceHealth/TelemetryIngestion.ts +628 -0
  112. package/Server/Utils/Monitor/MonitorMetricUtil.ts +58 -0
  113. package/Server/Utils/Monitor/MonitorResource.ts +14 -0
  114. package/Server/Utils/Response.ts +12 -1
  115. package/Server/Utils/SSRFProtection.ts +237 -0
  116. package/Server/Utils/StartServer.ts +8 -0
  117. package/Server/Utils/StatusPageSubscriberWebhook.ts +30 -0
  118. package/Server/Utils/Telemetry/CaptureSpan.ts +30 -18
  119. package/Server/Utils/Telemetry/IngestionTimestamp.ts +75 -0
  120. package/Server/Utils/Telemetry/ResourceHeartbeat.ts +99 -7
  121. package/Server/Utils/Telemetry/Telemetry.ts +112 -1
  122. package/Server/Utils/Telemetry.ts +104 -3
  123. package/Server/Utils/VendorAssets.ts +165 -0
  124. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +28 -5
  125. package/Server/Utils/Workspace/Slack/Slack.ts +5 -0
  126. package/Server/Views/Partials/Head.ejs +21 -7
  127. package/Tests/App/AdminDashboard/AdminProjectsIdFilter.test.tsx +207 -0
  128. package/Tests/App/AdminDashboard/AdminUsersIdFilter.test.tsx +216 -0
  129. package/Tests/App/Dashboard/AIInsightViewActions.test.tsx +422 -0
  130. package/Tests/App/Dashboard/AddWidgetModal.test.tsx +10 -3
  131. package/Tests/App/Dashboard/AlertsSideMenu.test.tsx +387 -0
  132. package/Tests/App/Dashboard/ChatActivityFeed.test.tsx +199 -0
  133. package/Tests/App/Dashboard/DataSourceChartSyntheticConfig.test.tsx +736 -0
  134. package/Tests/App/Dashboard/DataSourceQueryEditor.test.tsx +868 -0
  135. package/Tests/App/Dashboard/DataSourceWidgetCatalog.test.ts +440 -0
  136. package/Tests/App/Dashboard/DataSourceWidgetFetching.test.tsx +2109 -0
  137. package/Tests/App/Dashboard/DataSourceWidgetViews.test.tsx +726 -0
  138. package/Tests/App/Dashboard/IncidentsSideMenu.test.tsx +447 -0
  139. package/Tests/App/Dashboard/InvestigationPanel.test.tsx +514 -3
  140. package/Tests/App/Dashboard/ProductMenuBreadcrumbs.test.tsx +391 -0
  141. package/Tests/App/Dashboard/ScheduledMaintenanceSideMenu.test.tsx +326 -0
  142. package/Tests/App/Dashboard/SideMenuHarness.tsx +187 -0
  143. package/Tests/App/Dashboard/WidgetCatalog.test.ts +6 -1
  144. package/Tests/App/StatusPage/StatusPageResourceExplorer.test.tsx +1858 -0
  145. package/Tests/Models/DatabaseModels/DataSourceModelSecrets.test.ts +70 -0
  146. package/Tests/Server/API/AIInvestigationAPI.test.ts +187 -0
  147. package/Tests/Server/API/DashboardPublicDataSourceStrip.test.ts +686 -0
  148. package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +585 -823
  149. package/Tests/Server/API/DataSourceAPIRoutes.test.ts +486 -0
  150. package/Tests/Server/API/StatusPageSubscriberOwnership.test.ts +291 -0
  151. package/Tests/Server/API/UserAuthenticationAPI.test.ts +641 -0
  152. package/Tests/Server/Infrastructure/ClickhouseKeepAliveOptions.test.ts +441 -0
  153. package/Tests/Server/Middleware/TelemetryIngestTokenLog.test.ts +140 -0
  154. package/Tests/Server/Services/AIInsightService.test.ts +266 -11
  155. package/Tests/Server/Services/AIRunAnalysisTldrPersistence.test.ts +160 -0
  156. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +4 -0
  157. package/Tests/Server/Services/AlertMetricResourceAttributes.test.ts +352 -0
  158. package/Tests/Server/Services/DataSourceServiceSettings.test.ts +244 -0
  159. package/Tests/Server/Services/HostServiceFindOrCreateMemo.test.ts +397 -0
  160. package/Tests/Server/Services/HostServiceUpdateLastSeen.test.ts +41 -2
  161. package/Tests/Server/Services/IncidentMetricResourceAttributes.test.ts +408 -0
  162. package/Tests/Server/Services/MonitorStatusServiceDeleteReferenceCleanup.test.ts +351 -0
  163. package/Tests/Server/Services/MonitorStatusServiceValidation.test.ts +171 -0
  164. package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +398 -0
  165. package/Tests/Server/Services/OpenTelemetryServiceResolutionCache.test.ts +19 -0
  166. package/Tests/Server/Services/ProjectCallSMSConfigCredentialUniqueness.test.ts +305 -0
  167. package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +36 -1
  168. package/Tests/Server/Services/RumSessionPinUniqueViolationRecovery.test.ts +163 -0
  169. package/Tests/Server/Services/UserAuthenticationService.test.ts +973 -0
  170. package/Tests/Server/Types/Database/ObjectIdColumnQuery.test.ts +262 -0
  171. package/Tests/Server/Types/Database/Permissions/TenantPermission.test.ts +358 -0
  172. package/Tests/Server/Utils/AI/FixRunBudget.test.ts +2 -2
  173. package/Tests/Server/Utils/AI/Insights/ExceptionSpikeDetector.test.ts +6 -1
  174. package/Tests/Server/Utils/AI/Insights/InsightStore.test.ts +121 -4
  175. package/Tests/Server/Utils/AI/Insights/NewExceptionDetector.test.ts +361 -10
  176. package/Tests/Server/Utils/AI/InvestigationSettlement.test.ts +292 -0
  177. package/Tests/Server/Utils/AI/InvestigationTldr.test.ts +623 -0
  178. package/Tests/Server/Utils/AI/InvestigationTldrWiring.test.ts +98 -0
  179. package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +857 -0
  180. package/Tests/Server/Utils/Dashboard/PublicDashboardViewConfig.test.ts +480 -0
  181. package/Tests/Server/Utils/DataSource/ClickHouseConnector.test.ts +759 -0
  182. package/Tests/Server/Utils/DataSource/ConnectorRegistry.test.ts +37 -0
  183. package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +645 -0
  184. package/Tests/Server/Utils/DataSource/ElasticsearchConnector.test.ts +1206 -0
  185. package/Tests/Server/Utils/DataSource/HttpFetch.test.ts +616 -0
  186. package/Tests/Server/Utils/DataSource/LokiConnector.test.ts +970 -0
  187. package/Tests/Server/Utils/DataSource/MySqlConnector.test.ts +935 -0
  188. package/Tests/Server/Utils/DataSource/PostgresConnector.test.ts +854 -0
  189. package/Tests/Server/Utils/DataSource/PrometheusConnector.test.ts +881 -0
  190. package/Tests/Server/Utils/DataSource/RestApiConnector.test.ts +1020 -0
  191. package/Tests/Server/Utils/DataSource/SqlQueryGuard.test.ts +425 -0
  192. package/Tests/Server/Utils/DataSource/SqlResultShaper.test.ts +555 -0
  193. package/Tests/Server/Utils/DataSource/SqlServerConnector.test.ts +934 -0
  194. package/Tests/Server/Utils/Database/PostgresErrorTranslator.test.ts +228 -7
  195. package/Tests/Server/Utils/InProcessMemo.test.ts +292 -0
  196. package/Tests/Server/Utils/InstanceHealth/TelemetryIngestion.test.ts +960 -0
  197. package/Tests/Server/Utils/MicrosoftTeamsWebhookUrlValidation.test.ts +103 -0
  198. package/Tests/Server/Utils/Monitor/MonitorMetricResourceAttributes.test.ts +336 -0
  199. package/Tests/Server/Utils/OfflineAssetHygiene.test.ts +521 -0
  200. package/Tests/Server/Utils/ResponseRenderAnalytics.test.ts +143 -0
  201. package/Tests/Server/Utils/SSRFProtection.test.ts +193 -0
  202. package/Tests/Server/Utils/StatusPageSubscriberWebhook.test.ts +101 -0
  203. package/Tests/Server/Utils/TailwindBuildCopy.test.ts +225 -0
  204. package/Tests/Server/Utils/Telemetry/ResourceHeartbeatL1Memo.test.ts +355 -0
  205. package/Tests/Server/Utils/Telemetry/TelemetryFanInWriter.test.ts +128 -0
  206. package/Tests/Server/Utils/Telemetry/TelemetryUtilAttributeKeys.test.ts +381 -0
  207. package/Tests/Server/Utils/Telemetry.test.ts +87 -0
  208. package/Tests/Server/Utils/VendorAssetIntegrity.test.ts +343 -0
  209. package/Tests/Server/Utils/VendorAssets.test.ts +671 -0
  210. package/Tests/Server/Views/OfflineRender.test.ts +297 -0
  211. package/Tests/Types/Dashboard/DataSourceComponentTypes.test.ts +618 -0
  212. package/Tests/Types/DateClickhouseFormat.test.ts +192 -0
  213. package/Tests/Types/Password.test.ts +363 -0
  214. package/Tests/UI/Components/ConfirmModal.test.tsx +7 -0
  215. package/Tests/UI/Components/ErrorBoundary.test.tsx +53 -0
  216. package/Tests/UI/Components/Modal.test.tsx +281 -1
  217. package/Tests/UI/Components/ObjectIdFilterPipeline.test.tsx +396 -0
  218. package/Tests/UI/Components/StatusPage/ResourceGroupNavigator.test.tsx +1147 -0
  219. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +116 -1
  220. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +2 -0
  221. package/Tests/Utils/Analytics.test.ts +23 -0
  222. package/Tests/Utils/Dashboard/Components/DashboardDataSourceComponents.test.ts +640 -0
  223. package/Tests/Utils/DataSource/DataSourceQueryText.test.ts +138 -0
  224. package/Tests/Utils/DataSource/DataSourceValueReducer.test.ts +526 -0
  225. package/Tests/Utils/Metrics/MetricResourceAttributeUtil.test.ts +691 -0
  226. package/Tests/Utils/StatusPage/GroupHierarchyView.test.ts +1452 -0
  227. package/Tests/Utils/StatusPage/ResourceExplorer.test.ts +931 -0
  228. package/Tests/Utils/Telemetry/CaptureSpanExportGating.test.ts +288 -0
  229. package/Tests/Utils/Telemetry/IngestionTimestamp.test.ts +170 -0
  230. package/Types/AI/AIInsightEvidence.ts +6 -0
  231. package/Types/Analytics/RevenueEvent.ts +31 -0
  232. package/Types/Dashboard/DashboardComponentType.ts +31 -0
  233. package/Types/Dashboard/DashboardComponents/DashboardDataSourceChartComponent.ts +27 -0
  234. package/Types/Dashboard/DashboardComponents/DashboardDataSourceGaugeComponent.ts +32 -0
  235. package/Types/Dashboard/DashboardComponents/DashboardDataSourceTableComponent.ts +30 -0
  236. package/Types/Dashboard/DashboardComponents/DashboardDataSourceValueComponent.ts +55 -0
  237. package/Types/DataSource/DataSourceLimits.ts +62 -0
  238. package/Types/DataSource/DataSourceQueryConfig.ts +41 -0
  239. package/Types/DataSource/DataSourceTableResult.ts +38 -0
  240. package/Types/DataSource/DataSourceType.ts +213 -0
  241. package/Types/Date.ts +43 -3
  242. package/Types/Password.ts +64 -0
  243. package/Types/Permission.ts +46 -0
  244. package/Types/UserAuthenticationStatus.ts +34 -0
  245. package/UI/Components/Button/Button.tsx +1 -1
  246. package/UI/Components/ErrorBoundary.tsx +459 -108
  247. package/UI/Components/Icon/Icon.tsx +10 -9
  248. package/UI/Components/Modal/ConfirmModal.tsx +6 -1
  249. package/UI/Components/Modal/Modal.tsx +267 -35
  250. package/UI/Components/Modal/ModalFooter.tsx +6 -1
  251. package/UI/Components/MoreMenu/MoreMenu.tsx +19 -4
  252. package/UI/Components/MoreMenu/MoreMenuItem.tsx +6 -1
  253. package/UI/Components/StatusPage/ResourceGrid.tsx +314 -0
  254. package/UI/Components/StatusPage/ResourceGroupNavigator.tsx +808 -0
  255. package/UI/Components/StatusPage/ResourceList.tsx +570 -0
  256. package/UI/Styles/Theme.css +18 -0
  257. package/UI/Utils/API/RequestOptions.ts +7 -0
  258. package/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.ts +1 -0
  259. package/UI/Utils/ModelAPI/ModelAPI.ts +1 -0
  260. package/UI/Utils/TestDataSource.ts +61 -0
  261. package/UI/esbuild-config.js +45 -0
  262. package/Utils/Analytics.ts +15 -0
  263. package/Utils/Dashboard/Components/DashboardDataSourceChartComponent.ts +88 -0
  264. package/Utils/Dashboard/Components/DashboardDataSourceGaugeComponent.ts +123 -0
  265. package/Utils/Dashboard/Components/DashboardDataSourceShared.ts +16 -0
  266. package/Utils/Dashboard/Components/DashboardDataSourceTableComponent.ts +72 -0
  267. package/Utils/Dashboard/Components/DashboardDataSourceValueComponent.ts +126 -0
  268. package/Utils/Dashboard/Components/Index.ts +28 -0
  269. package/Utils/DataSource/DataSourceQueryText.ts +94 -0
  270. package/Utils/DataSource/DataSourceValueReducer.ts +156 -0
  271. package/Utils/Metrics/MetricResourceAttributeUtil.ts +380 -0
  272. package/Utils/NetworkDiscovery/ScanTargetUtil.ts +8 -6
  273. package/Utils/StatusPage/GroupHierarchyView.ts +931 -0
  274. package/Utils/StatusPage/ResourceExplorer.ts +853 -0
  275. package/build/dist/Models/DatabaseModels/AIRun.js +34 -0
  276. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  277. package/build/dist/Models/DatabaseModels/DataSource.js +774 -0
  278. package/build/dist/Models/DatabaseModels/DataSource.js.map +1 -0
  279. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  280. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  281. package/build/dist/Models/DatabaseModels/ProjectCallSMSConfig.js +14 -4
  282. package/build/dist/Models/DatabaseModels/ProjectCallSMSConfig.js.map +1 -1
  283. package/build/dist/Models/DatabaseModels/User.js +2 -0
  284. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  285. package/build/dist/Models/DatabaseModels/UserOnCallLog.js +2 -0
  286. package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
  287. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +2 -0
  288. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
  289. package/build/dist/Models/DatabaseModels/UserSession.js +2 -0
  290. package/build/dist/Models/DatabaseModels/UserSession.js.map +1 -1
  291. package/build/dist/Models/DatabaseModels/UserTotpAuth.js +6 -4
  292. package/build/dist/Models/DatabaseModels/UserTotpAuth.js.map +1 -1
  293. package/build/dist/Models/DatabaseModels/UserWebAuthn.js +5 -3
  294. package/build/dist/Models/DatabaseModels/UserWebAuthn.js.map +1 -1
  295. package/build/dist/Server/API/AIInsightAPI.js +34 -4
  296. package/build/dist/Server/API/AIInsightAPI.js.map +1 -1
  297. package/build/dist/Server/API/AIInvestigationAPI.js +23 -0
  298. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  299. package/build/dist/Server/API/DashboardAPI.js +119 -433
  300. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  301. package/build/dist/Server/API/DataSourceAPI.js +173 -0
  302. package/build/dist/Server/API/DataSourceAPI.js.map +1 -0
  303. package/build/dist/Server/API/StatusPageAPI.js +11 -1
  304. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  305. package/build/dist/Server/API/UserAPI.js +94 -2
  306. package/build/dist/Server/API/UserAPI.js.map +1 -1
  307. package/build/dist/Server/Infrastructure/ClickhouseConfig.js +49 -0
  308. package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
  309. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786303472848-AddDataSourceTable.js +20 -0
  310. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786303472848-AddDataSourceTable.js.map +1 -0
  311. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786600000000-AddInvestigationAnalysisTldr.js +19 -0
  312. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786600000000-AddInvestigationAnalysisTldr.js.map +1 -0
  313. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786700000000-DropProjectCallSMSConfigCredentialUniques.js +64 -0
  314. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786700000000-DropProjectCallSMSConfigCredentialUniques.js.map +1 -0
  315. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  316. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  317. package/build/dist/Server/Infrastructure/Queue.js +27 -0
  318. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  319. package/build/dist/Server/Infrastructure/QueueWorker.js +13 -0
  320. package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
  321. package/build/dist/Server/Middleware/TelemetryIngest.js +8 -3
  322. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  323. package/build/dist/Server/Services/AIInsightService.js +110 -10
  324. package/build/dist/Server/Services/AIInsightService.js.map +1 -1
  325. package/build/dist/Server/Services/AIRunService.js +34 -0
  326. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  327. package/build/dist/Server/Services/AIService.js +16 -2
  328. package/build/dist/Server/Services/AIService.js.map +1 -1
  329. package/build/dist/Server/Services/AlertService.js +28 -35
  330. package/build/dist/Server/Services/AlertService.js.map +1 -1
  331. package/build/dist/Server/Services/AnalyticsDatabaseService.js +8 -4
  332. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  333. package/build/dist/Server/Services/DataSourceService.js +159 -0
  334. package/build/dist/Server/Services/DataSourceService.js.map +1 -0
  335. package/build/dist/Server/Services/HostService.js +74 -0
  336. package/build/dist/Server/Services/HostService.js.map +1 -1
  337. package/build/dist/Server/Services/IncidentService.js +35 -24
  338. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  339. package/build/dist/Server/Services/Index.js +2 -0
  340. package/build/dist/Server/Services/Index.js.map +1 -1
  341. package/build/dist/Server/Services/MonitorService.js +45 -0
  342. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  343. package/build/dist/Server/Services/MonitorStatusService.js +129 -0
  344. package/build/dist/Server/Services/MonitorStatusService.js.map +1 -1
  345. package/build/dist/Server/Services/OpenTelemetryIngestService.js +222 -159
  346. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  347. package/build/dist/Server/Services/RumSessionPinService.js +7 -15
  348. package/build/dist/Server/Services/RumSessionPinService.js.map +1 -1
  349. package/build/dist/Server/Services/StatusPageSubscriberService.js +10 -0
  350. package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
  351. package/build/dist/Server/Services/UserService.js +241 -10
  352. package/build/dist/Server/Services/UserService.js.map +1 -1
  353. package/build/dist/Server/Types/Database/Permissions/BasePermission.js +6 -0
  354. package/build/dist/Server/Types/Database/Permissions/BasePermission.js.map +1 -1
  355. package/build/dist/Server/Types/Database/Permissions/DeletePermission.js +1 -0
  356. package/build/dist/Server/Types/Database/Permissions/DeletePermission.js.map +1 -1
  357. package/build/dist/Server/Types/Database/Permissions/ReadPermission.js +2 -0
  358. package/build/dist/Server/Types/Database/Permissions/ReadPermission.js.map +1 -1
  359. package/build/dist/Server/Types/Database/Permissions/TenantPermission.js +68 -12
  360. package/build/dist/Server/Types/Database/Permissions/TenantPermission.js.map +1 -1
  361. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +2 -2
  362. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -1
  363. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +68 -8
  364. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
  365. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +1 -0
  366. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
  367. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +1 -0
  368. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
  369. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionIdentity.js +97 -0
  370. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionIdentity.js.map +1 -0
  371. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +17 -15
  372. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -1
  373. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +178 -54
  374. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -1
  375. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js +65 -16
  376. package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js.map +1 -1
  377. package/build/dist/Server/Utils/AI/SRE/InvestigationTldr.js +303 -0
  378. package/build/dist/Server/Utils/AI/SRE/InvestigationTldr.js.map +1 -0
  379. package/build/dist/Server/Utils/AnalyticsDatabase/InsertDedupContext.js.map +1 -1
  380. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +1261 -0
  381. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -0
  382. package/build/dist/Server/Utils/Dashboard/PublicDashboardViewConfig.js +47 -0
  383. package/build/dist/Server/Utils/Dashboard/PublicDashboardViewConfig.js.map +1 -0
  384. package/build/dist/Server/Utils/DataSource/ConnectorRegistry.js +42 -0
  385. package/build/dist/Server/Utils/DataSource/ConnectorRegistry.js.map +1 -0
  386. package/build/dist/Server/Utils/DataSource/Connectors/ClickHouseConnector.js +187 -0
  387. package/build/dist/Server/Utils/DataSource/Connectors/ClickHouseConnector.js.map +1 -0
  388. package/build/dist/Server/Utils/DataSource/Connectors/ElasticsearchConnector.js +493 -0
  389. package/build/dist/Server/Utils/DataSource/Connectors/ElasticsearchConnector.js.map +1 -0
  390. package/build/dist/Server/Utils/DataSource/Connectors/LokiConnector.js +399 -0
  391. package/build/dist/Server/Utils/DataSource/Connectors/LokiConnector.js.map +1 -0
  392. package/build/dist/Server/Utils/DataSource/Connectors/MySqlConnector.js +195 -0
  393. package/build/dist/Server/Utils/DataSource/Connectors/MySqlConnector.js.map +1 -0
  394. package/build/dist/Server/Utils/DataSource/Connectors/PostgresConnector.js +149 -0
  395. package/build/dist/Server/Utils/DataSource/Connectors/PostgresConnector.js.map +1 -0
  396. package/build/dist/Server/Utils/DataSource/Connectors/PrometheusConnector.js +362 -0
  397. package/build/dist/Server/Utils/DataSource/Connectors/PrometheusConnector.js.map +1 -0
  398. package/build/dist/Server/Utils/DataSource/Connectors/RestApiConnector.js +342 -0
  399. package/build/dist/Server/Utils/DataSource/Connectors/RestApiConnector.js.map +1 -0
  400. package/build/dist/Server/Utils/DataSource/Connectors/SqlServerConnector.js +186 -0
  401. package/build/dist/Server/Utils/DataSource/Connectors/SqlServerConnector.js.map +1 -0
  402. package/build/dist/Server/Utils/DataSource/EgressGuard.js +305 -0
  403. package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -0
  404. package/build/dist/Server/Utils/DataSource/HttpFetch.js +134 -0
  405. package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -0
  406. package/build/dist/Server/Utils/DataSource/SqlQueryGuard.js +331 -0
  407. package/build/dist/Server/Utils/DataSource/SqlQueryGuard.js.map +1 -0
  408. package/build/dist/Server/Utils/DataSource/SqlResultShaper.js +280 -0
  409. package/build/dist/Server/Utils/DataSource/SqlResultShaper.js.map +1 -0
  410. package/build/dist/Server/Utils/DataSource/Types.js +2 -0
  411. package/build/dist/Server/Utils/DataSource/Types.js.map +1 -0
  412. package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js +103 -9
  413. package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js.map +1 -1
  414. package/build/dist/Server/Utils/InProcessMemo.js +113 -0
  415. package/build/dist/Server/Utils/InProcessMemo.js.map +1 -0
  416. package/build/dist/Server/Utils/InstanceHealth/TelemetryIngestion.js +406 -0
  417. package/build/dist/Server/Utils/InstanceHealth/TelemetryIngestion.js.map +1 -0
  418. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +34 -0
  419. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  420. package/build/dist/Server/Utils/Monitor/MonitorResource.js +14 -0
  421. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  422. package/build/dist/Server/Utils/Response.js +9 -1
  423. package/build/dist/Server/Utils/Response.js.map +1 -1
  424. package/build/dist/Server/Utils/SSRFProtection.js +192 -0
  425. package/build/dist/Server/Utils/SSRFProtection.js.map +1 -0
  426. package/build/dist/Server/Utils/StartServer.js +7 -0
  427. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  428. package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js +24 -0
  429. package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js.map +1 -1
  430. package/build/dist/Server/Utils/Telemetry/CaptureSpan.js +25 -11
  431. package/build/dist/Server/Utils/Telemetry/CaptureSpan.js.map +1 -1
  432. package/build/dist/Server/Utils/Telemetry/IngestionTimestamp.js +32 -0
  433. package/build/dist/Server/Utils/Telemetry/IngestionTimestamp.js.map +1 -0
  434. package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js +92 -5
  435. package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js.map +1 -1
  436. package/build/dist/Server/Utils/Telemetry/Telemetry.js +92 -6
  437. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  438. package/build/dist/Server/Utils/Telemetry.js +93 -6
  439. package/build/dist/Server/Utils/Telemetry.js.map +1 -1
  440. package/build/dist/Server/Utils/VendorAssets.js +121 -0
  441. package/build/dist/Server/Utils/VendorAssets.js.map +1 -0
  442. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +25 -4
  443. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  444. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +5 -0
  445. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  446. package/build/dist/Types/Analytics/RevenueEvent.js +26 -0
  447. package/build/dist/Types/Analytics/RevenueEvent.js.map +1 -0
  448. package/build/dist/Types/Dashboard/DashboardComponentType.js +27 -0
  449. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  450. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceChartComponent.js +2 -0
  451. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceChartComponent.js.map +1 -0
  452. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceGaugeComponent.js +2 -0
  453. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceGaugeComponent.js.map +1 -0
  454. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceTableComponent.js +2 -0
  455. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceTableComponent.js.map +1 -0
  456. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceValueComponent.js +16 -0
  457. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceValueComponent.js.map +1 -0
  458. package/build/dist/Types/DataSource/DataSourceLimits.js +47 -0
  459. package/build/dist/Types/DataSource/DataSourceLimits.js.map +1 -0
  460. package/build/dist/Types/DataSource/DataSourceQueryConfig.js +10 -0
  461. package/build/dist/Types/DataSource/DataSourceQueryConfig.js.map +1 -0
  462. package/build/dist/Types/DataSource/DataSourceTableResult.js +14 -0
  463. package/build/dist/Types/DataSource/DataSourceTableResult.js.map +1 -0
  464. package/build/dist/Types/DataSource/DataSourceType.js +183 -0
  465. package/build/dist/Types/DataSource/DataSourceType.js.map +1 -0
  466. package/build/dist/Types/Date.js +38 -3
  467. package/build/dist/Types/Date.js.map +1 -1
  468. package/build/dist/Types/Password.js +56 -0
  469. package/build/dist/Types/Password.js.map +1 -0
  470. package/build/dist/Types/Permission.js +42 -0
  471. package/build/dist/Types/Permission.js.map +1 -1
  472. package/build/dist/Types/UserAuthenticationStatus.js +2 -0
  473. package/build/dist/Types/UserAuthenticationStatus.js.map +1 -0
  474. package/build/dist/UI/Components/ErrorBoundary.js +388 -72
  475. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  476. package/build/dist/UI/Components/Icon/Icon.js +10 -4
  477. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  478. package/build/dist/UI/Components/Modal/ConfirmModal.js +1 -1
  479. package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
  480. package/build/dist/UI/Components/Modal/Modal.js +178 -19
  481. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  482. package/build/dist/UI/Components/Modal/ModalFooter.js +3 -1
  483. package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
  484. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +9 -6
  485. package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
  486. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +7 -1
  487. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -1
  488. package/build/dist/UI/Components/StatusPage/ResourceGrid.js +119 -0
  489. package/build/dist/UI/Components/StatusPage/ResourceGrid.js.map +1 -0
  490. package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js +354 -0
  491. package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js.map +1 -0
  492. package/build/dist/UI/Components/StatusPage/ResourceList.js +203 -0
  493. package/build/dist/UI/Components/StatusPage/ResourceList.js.map +1 -0
  494. package/build/dist/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.js +1 -6
  495. package/build/dist/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.js.map +1 -1
  496. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +3 -8
  497. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
  498. package/build/dist/UI/Utils/TestDataSource.js +39 -0
  499. package/build/dist/UI/Utils/TestDataSource.js.map +1 -0
  500. package/build/dist/Utils/Analytics.js +4 -0
  501. package/build/dist/Utils/Analytics.js.map +1 -1
  502. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceChartComponent.js +79 -0
  503. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceChartComponent.js.map +1 -0
  504. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceGaugeComponent.js +111 -0
  505. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceGaugeComponent.js.map +1 -0
  506. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceShared.js +15 -0
  507. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceShared.js.map +1 -0
  508. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceTableComponent.js +62 -0
  509. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceTableComponent.js.map +1 -0
  510. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceValueComponent.js +112 -0
  511. package/build/dist/Utils/Dashboard/Components/DashboardDataSourceValueComponent.js.map +1 -0
  512. package/build/dist/Utils/Dashboard/Components/Index.js +16 -0
  513. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  514. package/build/dist/Utils/DataSource/DataSourceQueryText.js +64 -0
  515. package/build/dist/Utils/DataSource/DataSourceQueryText.js.map +1 -0
  516. package/build/dist/Utils/DataSource/DataSourceValueReducer.js +124 -0
  517. package/build/dist/Utils/DataSource/DataSourceValueReducer.js.map +1 -0
  518. package/build/dist/Utils/Metrics/MetricResourceAttributeUtil.js +281 -0
  519. package/build/dist/Utils/Metrics/MetricResourceAttributeUtil.js.map +1 -0
  520. package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js +8 -6
  521. package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js.map +1 -1
  522. package/build/dist/Utils/StatusPage/GroupHierarchyView.js +560 -0
  523. package/build/dist/Utils/StatusPage/GroupHierarchyView.js.map +1 -0
  524. package/build/dist/Utils/StatusPage/ResourceExplorer.js +519 -0
  525. package/build/dist/Utils/StatusPage/ResourceExplorer.js.map +1 -0
  526. package/jest.config.json +1 -0
  527. package/package.json +5 -1
  528. package/tsconfig.json +12 -10
@@ -0,0 +1,342 @@
1
+ import { DATA_SOURCE_CONNECT_TIMEOUT_IN_MS, DATA_SOURCE_MAX_TABLE_ROWS, DATA_SOURCE_MAX_TIME_SERIES_ROWS, DATA_SOURCE_QUERY_TIMEOUT_IN_MS, } from "../../../../Types/DataSource/DataSourceLimits";
2
+ import DataSourceType from "../../../../Types/DataSource/DataSourceType";
3
+ import BadDataException from "../../../../Types/Exception/BadDataException";
4
+ import DataSourceEgressGuard from "../EgressGuard";
5
+ import DataSourceHttpFetch from "../HttpFetch";
6
+ import SqlResultShaper from "../SqlResultShaper";
7
+ const ABSOLUTE_URL_REGEX = /^https?:\/\//i;
8
+ // Pure base-10 index, for traversing arrays in a rowsPath.
9
+ const ARRAY_INDEX_REGEX = /^\d+$/;
10
+ function describeJsonValue(value) {
11
+ if (value === undefined) {
12
+ return "undefined (the field is missing)";
13
+ }
14
+ if (value === null) {
15
+ return "null";
16
+ }
17
+ if (Array.isArray(value)) {
18
+ return "an array";
19
+ }
20
+ if (typeof value === "object") {
21
+ return "an object";
22
+ }
23
+ return `a ${typeof value}`;
24
+ }
25
+ function readOptionalString(descriptor, key) {
26
+ const value = descriptor[key];
27
+ if (value === undefined) {
28
+ return undefined;
29
+ }
30
+ if (typeof value !== "string" || value.trim() === "") {
31
+ throw new BadDataException(`Request descriptor field "${key}" must be a non-empty string, but found ${describeJsonValue(value)}.`);
32
+ }
33
+ return value;
34
+ }
35
+ function validatePath(value) {
36
+ if (value === undefined) {
37
+ return "/";
38
+ }
39
+ if (typeof value !== "string") {
40
+ throw new BadDataException(`Request descriptor field "path" must be a string, but found ${describeJsonValue(value)}.`);
41
+ }
42
+ if (ABSOLUTE_URL_REGEX.test(value)) {
43
+ throw new BadDataException('Request descriptor field "path" must be a relative path on the data source base URL — absolute http(s):// URLs are not allowed.');
44
+ }
45
+ if (!value.startsWith("/")) {
46
+ throw new BadDataException(`Request descriptor field "path" must start with "/" (got "${value}").`);
47
+ }
48
+ if (value.startsWith("//")) {
49
+ throw new BadDataException('Request descriptor field "path" must not start with "//" — protocol-relative URLs are not allowed.');
50
+ }
51
+ /*
52
+ * Reject ".." path segments (including percent-encoded variants that URL
53
+ * normalization would collapse) so the request cannot climb above the
54
+ * configured base URL's path prefix. Backslashes count as segment
55
+ * separators too: WHATWG URL parsing treats "\" as "/" in http(s) URLs,
56
+ * so "/a\..\x" would otherwise smuggle a ".." past a slash-only split.
57
+ */
58
+ const segments = value
59
+ .replace(/%2e/gi, ".")
60
+ .replace(/%5c/gi, "\\")
61
+ .split(/[/\\?#]/);
62
+ if (segments.includes("..")) {
63
+ throw new BadDataException('Request descriptor field "path" must not contain ".." segments.');
64
+ }
65
+ return value;
66
+ }
67
+ function validateMethod(value) {
68
+ if (value === undefined) {
69
+ return "GET";
70
+ }
71
+ if (typeof value !== "string") {
72
+ throw new BadDataException(`Request descriptor field "method" must be "GET" or "POST", but found ${describeJsonValue(value)}.`);
73
+ }
74
+ const normalized = value.toUpperCase();
75
+ if (normalized !== "GET" && normalized !== "POST") {
76
+ throw new BadDataException(`Request descriptor field "method" must be "GET" or "POST" (got "${value}").`);
77
+ }
78
+ return normalized;
79
+ }
80
+ function normalizeBody(value) {
81
+ if (value === undefined) {
82
+ return undefined;
83
+ }
84
+ if (typeof value === "string") {
85
+ return value;
86
+ }
87
+ if (value !== null && typeof value === "object") {
88
+ return JSON.stringify(value);
89
+ }
90
+ throw new BadDataException(`Request descriptor field "body" must be a JSON object or a string, but found ${describeJsonValue(value)}.`);
91
+ }
92
+ function validateLabelFields(value) {
93
+ if (value === undefined) {
94
+ return undefined;
95
+ }
96
+ if (!Array.isArray(value)) {
97
+ throw new BadDataException(`Request descriptor field "labelFields" must be an array of strings, but found ${describeJsonValue(value)}.`);
98
+ }
99
+ const fields = value;
100
+ for (const field of fields) {
101
+ if (typeof field !== "string" || field.trim() === "") {
102
+ throw new BadDataException(`Request descriptor field "labelFields" must contain only non-empty strings, but found ${describeJsonValue(field)}.`);
103
+ }
104
+ }
105
+ return fields;
106
+ }
107
+ /*
108
+ * Parse and validate the widget query text into a request descriptor.
109
+ * Throws BadDataException with the specific field that is wrong.
110
+ */
111
+ export function parseRequestDescriptor(queryText) {
112
+ if (!queryText || queryText.trim() === "") {
113
+ throw new BadDataException('Query is required. Provide a JSON request descriptor like { "path": "/api/stats", "rowsPath": "data.items" }.');
114
+ }
115
+ let parsed = undefined;
116
+ try {
117
+ parsed = JSON.parse(queryText);
118
+ }
119
+ catch (error) {
120
+ throw new BadDataException(`Query must be valid JSON (a request descriptor object): ${error instanceof Error ? error.message : String(error)}`);
121
+ }
122
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
123
+ throw new BadDataException(`Query must be a JSON object describing the request, but found ${describeJsonValue(parsed)}.`);
124
+ }
125
+ const raw = parsed;
126
+ return {
127
+ path: validatePath(raw["path"]),
128
+ method: validateMethod(raw["method"]),
129
+ body: normalizeBody(raw["body"]),
130
+ rowsPath: readOptionalString(raw, "rowsPath"),
131
+ timestampField: readOptionalString(raw, "timestampField"),
132
+ valueField: readOptionalString(raw, "valueField"),
133
+ seriesField: readOptionalString(raw, "seriesField"),
134
+ labelFields: validateLabelFields(raw["labelFields"]),
135
+ };
136
+ }
137
+ /*
138
+ * Replace dashboard time macros in the request path or body. Unlike the SQL
139
+ * variant, $__startTime / $__endTime interpolate as raw ISO-8601 strings
140
+ * WITHOUT quotes — in a REST descriptor the macro usually sits inside an
141
+ * already-quoted JSON string or a query parameter. Millisecond macros are
142
+ * replaced first so $__startTime cannot corrupt $__startTimeMs.
143
+ */
144
+ export function applyRestTimeMacros(text, startDate, endDate) {
145
+ return text
146
+ .replace(/\$__startTimeMs\b/g, startDate.getTime().toString())
147
+ .replace(/\$__endTimeMs\b/g, endDate.getTime().toString())
148
+ .replace(/\$__startTime\b/g, startDate.toISOString())
149
+ .replace(/\$__endTime\b/g, endDate.toISOString());
150
+ }
151
+ /*
152
+ * Navigate the response payload down a dot path ("data.items") to the rows
153
+ * array. Numeric segments index into arrays. The resolved value must be an
154
+ * array whose every element is a JSON object; anything else throws a
155
+ * BadDataException naming what was actually found.
156
+ */
157
+ export function extractRowsByPath(payload, rowsPath) {
158
+ const pathLabel = rowsPath ? `"${rowsPath}"` : "the response root";
159
+ let current = payload;
160
+ if (rowsPath) {
161
+ const segments = rowsPath.split(".");
162
+ for (const segment of segments) {
163
+ if (segment === "") {
164
+ throw new BadDataException(`Request descriptor field "rowsPath" (${rowsPath}) contains an empty segment.`);
165
+ }
166
+ if (Array.isArray(current) && ARRAY_INDEX_REGEX.test(segment)) {
167
+ const list = current;
168
+ current = list[Number(segment)];
169
+ continue;
170
+ }
171
+ if (current === null ||
172
+ typeof current !== "object" ||
173
+ Array.isArray(current)) {
174
+ throw new BadDataException(`Could not read "${segment}" of rowsPath ${pathLabel}: expected an object at that point of the response, but found ${describeJsonValue(current)}.`);
175
+ }
176
+ current = current[segment];
177
+ }
178
+ }
179
+ if (!Array.isArray(current)) {
180
+ throw new BadDataException(`Expected ${pathLabel} to be an array of rows, but found ${describeJsonValue(current)}. Set "rowsPath" to the dot path of the rows array (for example "data.items").`);
181
+ }
182
+ const rows = current;
183
+ for (let index = 0; index < rows.length; index++) {
184
+ const row = rows[index];
185
+ if (row === null || typeof row !== "object" || Array.isArray(row)) {
186
+ throw new BadDataException(`Expected every row at ${pathLabel} to be a JSON object, but the row at index ${index} is ${describeJsonValue(row)}.`);
187
+ }
188
+ }
189
+ return rows;
190
+ }
191
+ function joinUrl(baseUrl, path) {
192
+ // path always starts with "/" (descriptor validation), base loses its "/".
193
+ const trimmedBase = baseUrl.replace(/\/+$/, "");
194
+ return `${trimmedBase}${path}`;
195
+ }
196
+ export default class RestApiConnector {
197
+ constructor(fetchFunction) {
198
+ this.dataSourceType = DataSourceType.RestApi;
199
+ this.fetchFunction =
200
+ fetchFunction ||
201
+ ((request) => {
202
+ return DataSourceHttpFetch.fetch(request);
203
+ });
204
+ }
205
+ async testConnection(settings) {
206
+ const baseUrl = this.getBaseUrl(settings);
207
+ try {
208
+ await DataSourceEgressGuard.assertUrlAllowed(baseUrl);
209
+ const response = await this.fetchFunction({
210
+ method: "GET",
211
+ url: baseUrl,
212
+ headers: DataSourceHttpFetch.buildAuthHeaders(settings),
213
+ timeoutInMs: DATA_SOURCE_CONNECT_TIMEOUT_IN_MS,
214
+ });
215
+ if (response.statusCode < 200 || response.statusCode >= 300) {
216
+ throw new BadDataException(`Data source responded with HTTP ${response.statusCode} — expected a 2xx status. Check the URL and credentials.`);
217
+ }
218
+ }
219
+ catch (error) {
220
+ throw new BadDataException(this.sanitizeThrownError(error, settings));
221
+ }
222
+ }
223
+ async queryTimeSeries(settings, query, window) {
224
+ const descriptor = parseRequestDescriptor(query);
225
+ if (!descriptor.timestampField || !descriptor.valueField) {
226
+ throw new BadDataException('Time-series REST API queries require "timestampField" and "valueField" in the request descriptor so rows can be mapped to chart points.');
227
+ }
228
+ const payload = await this.executeRequest(settings, descriptor, window);
229
+ const allRows = extractRowsByPath(payload, descriptor.rowsPath);
230
+ const truncated = allRows.length > DATA_SOURCE_MAX_TIME_SERIES_ROWS;
231
+ const rows = truncated
232
+ ? allRows.slice(0, DATA_SOURCE_MAX_TIME_SERIES_ROWS)
233
+ : allRows;
234
+ const data = [];
235
+ for (const row of rows) {
236
+ const timestamp = SqlResultShaper.coerceTimestamp(row[descriptor.timestampField]);
237
+ const value = this.coerceFiniteNumber(row[descriptor.valueField]);
238
+ if (timestamp === null || value === null) {
239
+ continue; // skip unplottable rows rather than failing the chart.
240
+ }
241
+ const point = { timestamp: timestamp, value: value };
242
+ const attributes = this.buildAttributes(descriptor, row);
243
+ if (attributes) {
244
+ point["attributes"] = attributes;
245
+ }
246
+ data.push(point);
247
+ }
248
+ return { data: data, truncated: truncated };
249
+ }
250
+ async queryTable(settings, query, window) {
251
+ const descriptor = parseRequestDescriptor(query);
252
+ const payload = await this.executeRequest(settings, descriptor, window);
253
+ const rows = extractRowsByPath(payload, descriptor.rowsPath);
254
+ /*
255
+ * Rows go through the shared shaper as-is: nested objects become Json
256
+ * columns via coerceCell rather than being flattened.
257
+ */
258
+ return SqlResultShaper.rowsToTable(rows, {
259
+ maxRows: DATA_SOURCE_MAX_TABLE_ROWS,
260
+ });
261
+ }
262
+ async executeRequest(settings, descriptor, window) {
263
+ const baseUrl = this.getBaseUrl(settings);
264
+ const path = applyRestTimeMacros(descriptor.path, window.startDate, window.endDate);
265
+ const body = descriptor.body === undefined
266
+ ? undefined
267
+ : applyRestTimeMacros(descriptor.body, window.startDate, window.endDate);
268
+ const url = joinUrl(baseUrl, path);
269
+ try {
270
+ /*
271
+ * Guard here as well as inside DataSourceHttpFetch: the fetch seam is
272
+ * injectable, and the connector contract requires egress validation
273
+ * before every connection regardless of transport.
274
+ */
275
+ await DataSourceEgressGuard.assertUrlAllowed(url);
276
+ const request = {
277
+ method: descriptor.method,
278
+ url: url,
279
+ headers: DataSourceHttpFetch.buildAuthHeaders(settings),
280
+ body: body,
281
+ timeoutInMs: DATA_SOURCE_QUERY_TIMEOUT_IN_MS,
282
+ };
283
+ const response = await this.fetchFunction(request);
284
+ if (response.bodyJson === undefined) {
285
+ throw new BadDataException(`Data source did not return JSON (HTTP ${response.statusCode}). Response starts with: ${response.bodyText.substring(0, 200)}`);
286
+ }
287
+ return response.bodyJson;
288
+ }
289
+ catch (error) {
290
+ throw new BadDataException(this.sanitizeThrownError(error, settings));
291
+ }
292
+ }
293
+ getBaseUrl(settings) {
294
+ if (!settings.url || settings.url.trim() === "") {
295
+ throw new BadDataException("REST API data source has no URL configured. Set the base URL in the data source settings.");
296
+ }
297
+ return settings.url.trim();
298
+ }
299
+ /*
300
+ * Errors can echo credentials (a debug endpoint reflecting the
301
+ * Authorization header into the response body excerpt, a driver message
302
+ * quoting basic-auth) — redact every secret before the message can reach
303
+ * an API response.
304
+ */
305
+ sanitizeThrownError(error, settings) {
306
+ return SqlResultShaper.sanitizeError(error, SqlResultShaper.collectSecrets(settings));
307
+ }
308
+ coerceFiniteNumber(value) {
309
+ if (typeof value === "number") {
310
+ return Number.isFinite(value) ? value : null;
311
+ }
312
+ if (typeof value === "bigint") {
313
+ const numeric = Number(value);
314
+ return Number.isFinite(numeric) ? numeric : null;
315
+ }
316
+ if (typeof value === "string" && value.trim() !== "") {
317
+ const numeric = Number(value);
318
+ return Number.isFinite(numeric) ? numeric : null;
319
+ }
320
+ return null;
321
+ }
322
+ buildAttributes(descriptor, row) {
323
+ const attributes = {};
324
+ let hasAttributes = false;
325
+ if (descriptor.seriesField) {
326
+ attributes["series"] = this.formatLabelValue(row[descriptor.seriesField]);
327
+ hasAttributes = true;
328
+ }
329
+ if (descriptor.labelFields) {
330
+ for (const field of descriptor.labelFields) {
331
+ attributes[field] = this.formatLabelValue(row[field]);
332
+ hasAttributes = true;
333
+ }
334
+ }
335
+ return hasAttributes ? attributes : undefined;
336
+ }
337
+ formatLabelValue(value) {
338
+ const cell = SqlResultShaper.coerceCell(value);
339
+ return cell === null ? "(unset)" : String(cell);
340
+ }
341
+ }
342
+ //# sourceMappingURL=RestApiConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RestApiConnector.js","sourceRoot":"","sources":["../../../../../../Server/Utils/DataSource/Connectors/RestApiConnector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ import * as mssql from "mssql";
2
+ import { DATA_SOURCE_CONNECT_TIMEOUT_IN_MS, DATA_SOURCE_MAX_TABLE_ROWS, DATA_SOURCE_MAX_TIME_SERIES_ROWS, DATA_SOURCE_QUERY_TIMEOUT_IN_MS, } from "../../../../Types/DataSource/DataSourceLimits";
3
+ import DataSourceType from "../../../../Types/DataSource/DataSourceType";
4
+ import BadDataException from "../../../../Types/Exception/BadDataException";
5
+ import DataSourceEgressGuard from "../EgressGuard";
6
+ import SqlQueryGuard from "../SqlQueryGuard";
7
+ import SqlResultShaper from "../SqlResultShaper";
8
+ /*
9
+ * Default factory adapting the real mssql driver (default export = the
10
+ * pure-JS tedious driver — never msnodesqlv8/ODBC) onto the seam above.
11
+ * Each request() call returns a FRESH mssql.Request, so the SET ROWCOUNT
12
+ * batch and the user's query run as separate requests on one transaction.
13
+ */
14
+ const defaultPoolFactory = (config) => {
15
+ const pool = new mssql.ConnectionPool(config);
16
+ return {
17
+ connect: async () => {
18
+ await pool.connect();
19
+ },
20
+ close: async () => {
21
+ await pool.close();
22
+ },
23
+ transaction: () => {
24
+ const transaction = new mssql.Transaction(pool);
25
+ return {
26
+ begin: async () => {
27
+ await transaction.begin();
28
+ },
29
+ rollback: async () => {
30
+ await transaction.rollback();
31
+ },
32
+ request: () => {
33
+ const request = new mssql.Request(transaction);
34
+ return {
35
+ batch: (sql) => {
36
+ return request.batch(sql);
37
+ },
38
+ query: async (sql) => {
39
+ const result = await request.query(sql);
40
+ return {
41
+ recordset: result.recordset
42
+ ? Array.from(result.recordset)
43
+ : undefined,
44
+ };
45
+ },
46
+ };
47
+ },
48
+ };
49
+ },
50
+ };
51
+ };
52
+ export default class SqlServerConnector {
53
+ constructor(poolFactory) {
54
+ this.dataSourceType = DataSourceType.MicrosoftSqlServer;
55
+ this.poolFactory = poolFactory || defaultPoolFactory;
56
+ }
57
+ async testConnection(settings) {
58
+ /*
59
+ * Cheap probe through the exact same guarded path a real query takes:
60
+ * egress guard, connect, transaction, SELECT 1, rollback, close.
61
+ */
62
+ await this.executeReadOnlySql(settings, "SELECT 1", 1);
63
+ }
64
+ async queryTimeSeries(settings, query, window) {
65
+ const rows = await this.runGuardedQuery(settings, query, window, DATA_SOURCE_MAX_TIME_SERIES_ROWS);
66
+ return SqlResultShaper.rowsToTimeSeries(rows, {
67
+ maxRows: DATA_SOURCE_MAX_TIME_SERIES_ROWS,
68
+ });
69
+ }
70
+ async queryTable(settings, query, window) {
71
+ const rows = await this.runGuardedQuery(settings, query, window, DATA_SOURCE_MAX_TABLE_ROWS);
72
+ return SqlResultShaper.rowsToTable(rows, {
73
+ maxRows: DATA_SOURCE_MAX_TABLE_ROWS,
74
+ });
75
+ }
76
+ getSecrets(settings) {
77
+ return [
78
+ settings.password,
79
+ settings.apiToken,
80
+ settings.databaseHost,
81
+ settings.username,
82
+ ];
83
+ }
84
+ buildPoolConfig(settings) {
85
+ var _a, _b, _c;
86
+ const isSslEnabled = ((_a = settings.additionalOptions) === null || _a === void 0 ? void 0 : _a["sslEnabled"]) === true;
87
+ /*
88
+ * With TLS on, certificate verification stays ON unless the operator
89
+ * explicitly opted out for a self-signed cert
90
+ * (sslRejectUnauthorized === false → trust the server certificate).
91
+ * With TLS off the flag is irrelevant; tedious still wants
92
+ * trustServerCertificate true so it skips pointless verification.
93
+ */
94
+ const trustServerCertificate = isSslEnabled
95
+ ? ((_b = settings.additionalOptions) === null || _b === void 0 ? void 0 : _b["sslRejectUnauthorized"]) === false
96
+ : true;
97
+ return {
98
+ server: settings.databaseHost,
99
+ port: (_c = settings.databasePort) !== null && _c !== void 0 ? _c : 1433,
100
+ database: settings.databaseName,
101
+ user: settings.username,
102
+ password: settings.password,
103
+ connectionTimeout: DATA_SOURCE_CONNECT_TIMEOUT_IN_MS,
104
+ requestTimeout: DATA_SOURCE_QUERY_TIMEOUT_IN_MS,
105
+ pool: { max: 1, min: 0, idleTimeoutMillis: 30000 },
106
+ options: {
107
+ encrypt: isSslEnabled,
108
+ trustServerCertificate: trustServerCertificate,
109
+ appName: "OneUptime-DataSource",
110
+ },
111
+ };
112
+ }
113
+ /*
114
+ * Apply the dashboard time macros, run the T-SQL-aware read-only
115
+ * classifier (the enforcement layer for SQL Server — see header), then
116
+ * execute. The classified text is EXACTLY the executed text: nothing is
117
+ * appended or embedded, so there is no gap between what was checked and
118
+ * what runs (SET ROWCOUNT goes out as its own connector-owned batch).
119
+ */
120
+ async runGuardedQuery(settings, query, window, maxRows) {
121
+ const finalSql = SqlQueryGuard.applyTimeMacros(query, window.startDate, window.endDate);
122
+ SqlQueryGuard.assertReadOnlyQuery(finalSql);
123
+ return this.executeReadOnlySql(settings, finalSql, maxRows + 1);
124
+ }
125
+ /*
126
+ * Egress-validate the host, connect a single-connection pool, and run
127
+ * `sql` inside an always-rolled-back transaction with a server-side
128
+ * SET ROWCOUNT row cap. Teardown (rollback, then close) always runs and
129
+ * each step is individually guarded so a wedged server cannot turn
130
+ * cleanup into an unhandled rejection.
131
+ */
132
+ async executeReadOnlySql(settings, sql, rowFetchLimit) {
133
+ if (!settings.databaseHost) {
134
+ throw new BadDataException("Microsoft SQL Server data source is missing a database host. Set the host in the data source settings.");
135
+ }
136
+ /*
137
+ * SSRF guard — must pass BEFORE any socket is opened towards the
138
+ * configured host.
139
+ */
140
+ await DataSourceEgressGuard.assertHostnameAllowed(settings.databaseHost);
141
+ const pool = this.poolFactory(this.buildPoolConfig(settings));
142
+ let transaction = undefined;
143
+ let isTransactionBegun = false;
144
+ try {
145
+ await pool.connect();
146
+ transaction = pool.transaction();
147
+ await transaction.begin();
148
+ isTransactionBegun = true;
149
+ /*
150
+ * Hard server-side row cap: SET ROWCOUNT stops the server after this
151
+ * many rows (callers pass cap+1 so truncation stays detectable) and
152
+ * wins over a larger user-supplied TOP. It is session-scoped, so it
153
+ * applies to the user's query, which runs next on this connection.
154
+ */
155
+ await transaction.request().batch(`SET ROWCOUNT ${rowFetchLimit}`);
156
+ const result = await transaction.request().query(sql);
157
+ return result.recordset || [];
158
+ }
159
+ catch (error) {
160
+ if (error instanceof BadDataException) {
161
+ throw error;
162
+ }
163
+ throw new BadDataException(SqlResultShaper.sanitizeError(error, this.getSecrets(settings)));
164
+ }
165
+ finally {
166
+ if (transaction && isTransactionBegun) {
167
+ try {
168
+ await transaction.rollback();
169
+ }
170
+ catch (_a) {
171
+ /*
172
+ * Best effort — SQL Server rolls an abandoned transaction back
173
+ * itself when the connection goes away.
174
+ */
175
+ }
176
+ }
177
+ try {
178
+ await pool.close();
179
+ }
180
+ catch (_b) {
181
+ /* Best effort — nothing more can be done with a wedged pool. */
182
+ }
183
+ }
184
+ }
185
+ }
186
+ //# sourceMappingURL=SqlServerConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlServerConnector.js","sourceRoot":"","sources":["../../../../../../Server/Utils/DataSource/Connectors/SqlServerConnector.ts"],"names":[],"mappings":"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"}