@oneuptime/common 10.0.39 → 10.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/Models/AnalyticsModels/Index.ts +4 -0
  2. package/Models/AnalyticsModels/Profile.ts +687 -0
  3. package/Models/AnalyticsModels/ProfileSample.ts +547 -0
  4. package/Models/DatabaseModels/Dashboard.ts +357 -0
  5. package/Models/DatabaseModels/DashboardDomain.ts +658 -0
  6. package/Models/DatabaseModels/Index.ts +2 -0
  7. package/Models/DatabaseModels/StatusPage.ts +41 -0
  8. package/Server/API/DashboardAPI.ts +408 -0
  9. package/Server/API/DashboardDomainAPI.ts +235 -0
  10. package/Server/API/StatusPageAPI.ts +36 -2
  11. package/Server/API/TelemetryAPI.ts +393 -0
  12. package/Server/EnvironmentConfig.ts +12 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1774524742177-MigrationName.ts +97 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1774524742178-MigrationName.ts +17 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1774524742179-MigrationName.ts +50 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/1774559064919-MigrationName.ts +59 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  18. package/Server/Middleware/UserAuthorization.ts +96 -1
  19. package/Server/Services/DashboardDomainService.ts +647 -0
  20. package/Server/Services/DashboardService.ts +174 -3
  21. package/Server/Services/IncidentService.ts +295 -50
  22. package/Server/Services/IncidentStateTimelineService.ts +1 -0
  23. package/Server/Services/Index.ts +6 -0
  24. package/Server/Services/MonitorService.ts +5 -0
  25. package/Server/Services/ProfileAggregationService.ts +559 -0
  26. package/Server/Services/ProfileSampleService.ts +11 -0
  27. package/Server/Services/ProfileService.ts +11 -0
  28. package/Server/Services/TelemetryUsageBillingService.ts +77 -3
  29. package/Server/Services/WorkspaceNotificationSummaryService.ts +15 -1
  30. package/Server/Types/Billing/MeteredPlan/AllMeteredPlans.ts +9 -0
  31. package/Server/Utils/Cookie.ts +48 -0
  32. package/Server/Utils/Monitor/Criteria/ProfileMonitorCriteria.ts +34 -0
  33. package/Server/Utils/Monitor/DataToProcess.ts +3 -1
  34. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +299 -0
  35. package/Server/Utils/Profile/PprofEncoder.ts +225 -0
  36. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +53 -16
  37. package/Server/Utils/Workspace/Slack/Slack.ts +26 -6
  38. package/ServiceRoute.ts +2 -0
  39. package/Tests/UI/Components/ComponentsModal.test.tsx +19 -15
  40. package/Types/AnalyticsDatabase/AnalyticsTableName.ts +2 -0
  41. package/Types/CookieName.ts +1 -0
  42. package/Types/Dashboard/Chart/ChartType.ts +5 -0
  43. package/Types/Dashboard/DashboardComponentType.ts +4 -0
  44. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +10 -0
  45. package/Types/Dashboard/DashboardComponents/DashboardChartComponent.ts +1 -2
  46. package/Types/Dashboard/DashboardComponents/DashboardGaugeComponent.ts +17 -0
  47. package/Types/Dashboard/DashboardComponents/DashboardLogStreamComponent.ts +15 -0
  48. package/Types/Dashboard/DashboardComponents/DashboardTableComponent.ts +14 -0
  49. package/Types/Dashboard/DashboardComponents/DashboardTextComponent.ts +1 -0
  50. package/Types/Dashboard/DashboardComponents/DashboardTraceListComponent.ts +13 -0
  51. package/Types/Dashboard/DashboardComponents/DashboardValueComponent.ts +2 -0
  52. package/Types/Dashboard/DashboardTemplates.ts +964 -0
  53. package/Types/Dashboard/DashboardVariable.ts +23 -0
  54. package/Types/Dashboard/DashboardViewConfig.ts +59 -0
  55. package/Types/Dashboard/MasterPassword.ts +10 -0
  56. package/Types/Icon/IconProp.ts +1 -0
  57. package/Types/Incident/IncidentMetricType.ts +3 -0
  58. package/Types/MeteredPlan/ProductType.ts +1 -0
  59. package/Types/Metrics/MetricQueryConfigData.ts +3 -0
  60. package/Types/Monitor/CriteriaFilter.ts +3 -0
  61. package/Types/Monitor/KubernetesAlertTemplates.ts +78 -7
  62. package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +20 -0
  63. package/Types/Monitor/MonitorStep.ts +25 -0
  64. package/Types/Monitor/MonitorStepProfileMonitor.ts +96 -0
  65. package/Types/Monitor/MonitorType.ts +11 -0
  66. package/Types/Monitor/ProfileMonitor/ProfileMonitorResponse.ts +12 -0
  67. package/Types/Permission.ts +87 -0
  68. package/Types/Telemetry/TelemetryType.ts +1 -0
  69. package/Types/Workspace/NotificationSummary/WorkspaceNotificationSummaryItem.ts +1 -0
  70. package/UI/Components/Button/Button.tsx +1 -1
  71. package/UI/Components/Card/Card.tsx +8 -4
  72. package/UI/Components/Charts/Area/AreaChart.tsx +4 -0
  73. package/UI/Components/Charts/Bar/BarChart.tsx +4 -0
  74. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +26 -0
  75. package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +26 -0
  76. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +26 -0
  77. package/UI/Components/Charts/Line/LineChart.tsx +4 -0
  78. package/UI/Components/Charts/Types/ReferenceLineProps.ts +6 -0
  79. package/UI/Components/Icon/Icon.tsx +33 -0
  80. package/UI/Components/ModelTable/BaseModelTable.tsx +13 -10
  81. package/UI/Components/MoreMenu/MoreMenu.tsx +15 -2
  82. package/UI/Components/MoreMenu/MoreMenuItem.tsx +4 -4
  83. package/UI/Components/Workflow/Component.tsx +450 -209
  84. package/UI/Components/Workflow/ComponentPortViewer.tsx +57 -20
  85. package/UI/Components/Workflow/ComponentReturnValueViewer.tsx +65 -25
  86. package/UI/Components/Workflow/ComponentSettingsModal.tsx +202 -37
  87. package/UI/Components/Workflow/ComponentsModal.tsx +180 -93
  88. package/UI/Components/Workflow/Workflow.tsx +105 -9
  89. package/UI/Config.ts +9 -0
  90. package/Utils/Dashboard/Components/DashboardChartComponent.ts +53 -22
  91. package/Utils/Dashboard/Components/DashboardGaugeComponent.ts +124 -0
  92. package/Utils/Dashboard/Components/DashboardLogStreamComponent.ts +110 -0
  93. package/Utils/Dashboard/Components/DashboardTableComponent.ts +86 -0
  94. package/Utils/Dashboard/Components/DashboardTextComponent.ts +32 -7
  95. package/Utils/Dashboard/Components/DashboardTraceListComponent.ts +86 -0
  96. package/Utils/Dashboard/Components/DashboardValueComponent.ts +39 -3
  97. package/Utils/Dashboard/Components/Index.ts +28 -0
  98. package/Utils/ValueFormatter.ts +170 -0
  99. package/build/dist/Models/AnalyticsModels/Index.js +4 -0
  100. package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
  101. package/build/dist/Models/AnalyticsModels/Profile.js +621 -0
  102. package/build/dist/Models/AnalyticsModels/Profile.js.map +1 -0
  103. package/build/dist/Models/AnalyticsModels/ProfileSample.js +497 -0
  104. package/build/dist/Models/AnalyticsModels/ProfileSample.js.map +1 -0
  105. package/build/dist/Models/DatabaseModels/Dashboard.js +365 -0
  106. package/build/dist/Models/DatabaseModels/Dashboard.js.map +1 -1
  107. package/build/dist/Models/DatabaseModels/DashboardDomain.js +691 -0
  108. package/build/dist/Models/DatabaseModels/DashboardDomain.js.map +1 -0
  109. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  110. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  111. package/build/dist/Models/DatabaseModels/StatusPage.js +42 -0
  112. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  113. package/build/dist/Server/API/DashboardAPI.js +293 -0
  114. package/build/dist/Server/API/DashboardAPI.js.map +1 -0
  115. package/build/dist/Server/API/DashboardDomainAPI.js +124 -0
  116. package/build/dist/Server/API/DashboardDomainAPI.js.map +1 -0
  117. package/build/dist/Server/API/StatusPageAPI.js +26 -2
  118. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  119. package/build/dist/Server/API/TelemetryAPI.js +222 -0
  120. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  121. package/build/dist/Server/EnvironmentConfig.js +4 -0
  122. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  123. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774524742177-MigrationName.js +40 -0
  124. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774524742177-MigrationName.js.map +1 -0
  125. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774524742178-MigrationName.js +12 -0
  126. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774524742178-MigrationName.js.map +1 -0
  127. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774524742179-MigrationName.js +23 -0
  128. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774524742179-MigrationName.js.map +1 -0
  129. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774559064919-MigrationName.js +26 -0
  130. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774559064919-MigrationName.js.map +1 -0
  131. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  132. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  133. package/build/dist/Server/Middleware/UserAuthorization.js +41 -0
  134. package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
  135. package/build/dist/Server/Services/DashboardDomainService.js +595 -0
  136. package/build/dist/Server/Services/DashboardDomainService.js.map +1 -0
  137. package/build/dist/Server/Services/DashboardService.js +117 -3
  138. package/build/dist/Server/Services/DashboardService.js.map +1 -1
  139. package/build/dist/Server/Services/IncidentService.js +231 -55
  140. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  141. package/build/dist/Server/Services/IncidentStateTimelineService.js +1 -1
  142. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  143. package/build/dist/Server/Services/Index.js +6 -0
  144. package/build/dist/Server/Services/Index.js.map +1 -1
  145. package/build/dist/Server/Services/MonitorService.js +5 -2
  146. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  147. package/build/dist/Server/Services/ProfileAggregationService.js +356 -0
  148. package/build/dist/Server/Services/ProfileAggregationService.js.map +1 -0
  149. package/build/dist/Server/Services/ProfileSampleService.js +9 -0
  150. package/build/dist/Server/Services/ProfileSampleService.js.map +1 -0
  151. package/build/dist/Server/Services/ProfileService.js +9 -0
  152. package/build/dist/Server/Services/ProfileService.js.map +1 -0
  153. package/build/dist/Server/Services/TelemetryUsageBillingService.js +61 -4
  154. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  155. package/build/dist/Server/Services/WorkspaceNotificationSummaryService.js +13 -1
  156. package/build/dist/Server/Services/WorkspaceNotificationSummaryService.js.map +1 -1
  157. package/build/dist/Server/Types/Billing/MeteredPlan/AllMeteredPlans.js +8 -0
  158. package/build/dist/Server/Types/Billing/MeteredPlan/AllMeteredPlans.js.map +1 -1
  159. package/build/dist/Server/Utils/Cookie.js +36 -0
  160. package/build/dist/Server/Utils/Cookie.js.map +1 -1
  161. package/build/dist/Server/Utils/Monitor/Criteria/ProfileMonitorCriteria.js +34 -0
  162. package/build/dist/Server/Utils/Monitor/Criteria/ProfileMonitorCriteria.js.map +1 -0
  163. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +173 -0
  164. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  165. package/build/dist/Server/Utils/Profile/PprofEncoder.js +129 -0
  166. package/build/dist/Server/Utils/Profile/PprofEncoder.js.map +1 -0
  167. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +36 -14
  168. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  169. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +23 -6
  170. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  171. package/build/dist/ServiceRoute.js +1 -0
  172. package/build/dist/ServiceRoute.js.map +1 -1
  173. package/build/dist/Tests/UI/Components/ComponentsModal.test.js +15 -15
  174. package/build/dist/Tests/UI/Components/ComponentsModal.test.js.map +1 -1
  175. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +2 -0
  176. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
  177. package/build/dist/Types/CookieName.js +1 -0
  178. package/build/dist/Types/CookieName.js.map +1 -1
  179. package/build/dist/Types/Dashboard/Chart/ChartType.js +5 -0
  180. package/build/dist/Types/Dashboard/Chart/ChartType.js.map +1 -1
  181. package/build/dist/Types/Dashboard/DashboardComponentType.js +4 -0
  182. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  183. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
  184. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  185. package/build/dist/Types/Dashboard/DashboardComponents/DashboardGaugeComponent.js +2 -0
  186. package/build/dist/Types/Dashboard/DashboardComponents/DashboardGaugeComponent.js.map +1 -0
  187. package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogStreamComponent.js +2 -0
  188. package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogStreamComponent.js.map +1 -0
  189. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTableComponent.js +2 -0
  190. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTableComponent.js.map +1 -0
  191. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTraceListComponent.js +2 -0
  192. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTraceListComponent.js.map +1 -0
  193. package/build/dist/Types/Dashboard/DashboardTemplates.js +853 -0
  194. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -0
  195. package/build/dist/Types/Dashboard/DashboardVariable.js +7 -0
  196. package/build/dist/Types/Dashboard/DashboardVariable.js.map +1 -0
  197. package/build/dist/Types/Dashboard/DashboardViewConfig.js +50 -1
  198. package/build/dist/Types/Dashboard/DashboardViewConfig.js.map +1 -1
  199. package/build/dist/Types/Dashboard/MasterPassword.js +5 -0
  200. package/build/dist/Types/Dashboard/MasterPassword.js.map +1 -0
  201. package/build/dist/Types/Icon/IconProp.js +1 -0
  202. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  203. package/build/dist/Types/Incident/IncidentMetricType.js +3 -0
  204. package/build/dist/Types/Incident/IncidentMetricType.js.map +1 -1
  205. package/build/dist/Types/MeteredPlan/ProductType.js +1 -0
  206. package/build/dist/Types/MeteredPlan/ProductType.js.map +1 -1
  207. package/build/dist/Types/Metrics/MetricQueryConfigData.js +1 -0
  208. package/build/dist/Types/Metrics/MetricQueryConfigData.js.map +1 -1
  209. package/build/dist/Types/Monitor/CriteriaFilter.js +2 -0
  210. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  211. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +58 -7
  212. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
  213. package/build/dist/Types/Monitor/MonitorStep.js +15 -0
  214. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  215. package/build/dist/Types/Monitor/MonitorStepProfileMonitor.js +59 -0
  216. package/build/dist/Types/Monitor/MonitorStepProfileMonitor.js.map +1 -0
  217. package/build/dist/Types/Monitor/MonitorType.js +10 -0
  218. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  219. package/build/dist/Types/Monitor/ProfileMonitor/ProfileMonitorResponse.js +2 -0
  220. package/build/dist/Types/Monitor/ProfileMonitor/ProfileMonitorResponse.js.map +1 -0
  221. package/build/dist/Types/Permission.js +75 -0
  222. package/build/dist/Types/Permission.js.map +1 -1
  223. package/build/dist/Types/Telemetry/TelemetryType.js +1 -0
  224. package/build/dist/Types/Telemetry/TelemetryType.js.map +1 -1
  225. package/build/dist/Types/Workspace/NotificationSummary/WorkspaceNotificationSummaryItem.js +1 -0
  226. package/build/dist/Types/Workspace/NotificationSummary/WorkspaceNotificationSummaryItem.js.map +1 -1
  227. package/build/dist/UI/Components/Button/Button.js +1 -1
  228. package/build/dist/UI/Components/Button/Button.js.map +1 -1
  229. package/build/dist/UI/Components/Card/Card.js +4 -4
  230. package/build/dist/UI/Components/Card/Card.js.map +1 -1
  231. package/build/dist/UI/Components/Charts/Area/AreaChart.js +1 -1
  232. package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
  233. package/build/dist/UI/Components/Charts/Bar/BarChart.js +1 -1
  234. package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
  235. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +5 -2
  236. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
  237. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +5 -2
  238. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
  239. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +6 -3
  240. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  241. package/build/dist/UI/Components/Charts/Line/LineChart.js +1 -1
  242. package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
  243. package/build/dist/UI/Components/Charts/Types/ReferenceLineProps.js +2 -0
  244. package/build/dist/UI/Components/Charts/Types/ReferenceLineProps.js.map +1 -0
  245. package/build/dist/UI/Components/Icon/Icon.js +11 -0
  246. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  247. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +12 -9
  248. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  249. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +8 -2
  250. package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
  251. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +4 -4
  252. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -1
  253. package/build/dist/UI/Components/Workflow/Component.js +311 -143
  254. package/build/dist/UI/Components/Workflow/Component.js.map +1 -1
  255. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js +44 -18
  256. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js.map +1 -1
  257. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js +48 -22
  258. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js.map +1 -1
  259. package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js +127 -21
  260. package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js.map +1 -1
  261. package/build/dist/UI/Components/Workflow/ComponentsModal.js +107 -52
  262. package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
  263. package/build/dist/UI/Components/Workflow/Workflow.js +87 -12
  264. package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
  265. package/build/dist/UI/Config.js +3 -1
  266. package/build/dist/UI/Config.js.map +1 -1
  267. package/build/dist/Utils/Dashboard/Components/DashboardChartComponent.js +50 -21
  268. package/build/dist/Utils/Dashboard/Components/DashboardChartComponent.js.map +1 -1
  269. package/build/dist/Utils/Dashboard/Components/DashboardGaugeComponent.js +104 -0
  270. package/build/dist/Utils/Dashboard/Components/DashboardGaugeComponent.js.map +1 -0
  271. package/build/dist/Utils/Dashboard/Components/DashboardLogStreamComponent.js +91 -0
  272. package/build/dist/Utils/Dashboard/Components/DashboardLogStreamComponent.js.map +1 -0
  273. package/build/dist/Utils/Dashboard/Components/DashboardTableComponent.js +70 -0
  274. package/build/dist/Utils/Dashboard/Components/DashboardTableComponent.js.map +1 -0
  275. package/build/dist/Utils/Dashboard/Components/DashboardTextComponent.js +28 -7
  276. package/build/dist/Utils/Dashboard/Components/DashboardTextComponent.js.map +1 -1
  277. package/build/dist/Utils/Dashboard/Components/DashboardTraceListComponent.js +70 -0
  278. package/build/dist/Utils/Dashboard/Components/DashboardTraceListComponent.js.map +1 -0
  279. package/build/dist/Utils/Dashboard/Components/DashboardValueComponent.js +34 -3
  280. package/build/dist/Utils/Dashboard/Components/DashboardValueComponent.js.map +1 -1
  281. package/build/dist/Utils/Dashboard/Components/Index.js +16 -0
  282. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  283. package/build/dist/Utils/ValueFormatter.js +132 -0
  284. package/build/dist/Utils/ValueFormatter.js.map +1 -0
  285. package/package.json +1 -1
@@ -0,0 +1,595 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import GreenlockUtil from "../Utils/Greenlock/Greenlock";
11
+ import logger from "../Utils/Logger";
12
+ import DatabaseService from "./DatabaseService";
13
+ import DomainService from "./DomainService";
14
+ import URL from "../../Types/API/URL";
15
+ import LIMIT_MAX from "../../Types/Database/LimitMax";
16
+ import BadDataException from "../../Types/Exception/BadDataException";
17
+ import ObjectID from "../../Types/ObjectID";
18
+ import API from "../../Utils/API";
19
+ import DashboardDomain from "../../Models/DatabaseModels/DashboardDomain";
20
+ import AcmeCertificateService from "./AcmeCertificateService";
21
+ import Telemetry from "../Utils/Telemetry";
22
+ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
23
+ import { DashboardCNameRecord } from "../EnvironmentConfig";
24
+ import Domain from "../Types/Domain";
25
+ export class Service extends DatabaseService {
26
+ constructor() {
27
+ super(DashboardDomain);
28
+ }
29
+ async onBeforeCreate(createBy) {
30
+ var _a, _b, _c, _d;
31
+ const domain = await DomainService.findOneBy({
32
+ query: {
33
+ _id: ((_a = createBy.data.domainId) === null || _a === void 0 ? void 0 : _a.toString()) || ((_b = createBy.data.domain) === null || _b === void 0 ? void 0 : _b._id) || "",
34
+ },
35
+ select: { domain: true, isVerified: true },
36
+ props: {
37
+ isRoot: true,
38
+ },
39
+ });
40
+ if (!(domain === null || domain === void 0 ? void 0 : domain.isVerified)) {
41
+ throw new BadDataException("This domain is not verified. Please verify it by going to Settings > Domains");
42
+ }
43
+ let normalizedSubdomain = ((_c = createBy.data.subdomain) === null || _c === void 0 ? void 0 : _c.trim().toLowerCase()) || "";
44
+ if (normalizedSubdomain === "@") {
45
+ normalizedSubdomain = "";
46
+ }
47
+ createBy.data.subdomain = normalizedSubdomain;
48
+ if (domain) {
49
+ const baseDomain = ((_d = domain.domain) === null || _d === void 0 ? void 0 : _d.toString().toLowerCase().trim()) || "";
50
+ if (!baseDomain) {
51
+ throw new BadDataException("Please select a valid domain.");
52
+ }
53
+ createBy.data.fullDomain = normalizedSubdomain
54
+ ? `${normalizedSubdomain}.${baseDomain}`
55
+ : baseDomain;
56
+ }
57
+ createBy.data.cnameVerificationToken = ObjectID.generate().toString();
58
+ if (createBy.data.isCustomCertificate) {
59
+ if (!createBy.data.customCertificate ||
60
+ !createBy.data.customCertificateKey) {
61
+ throw new BadDataException("Custom certificate or private key is missing");
62
+ }
63
+ }
64
+ return { createBy, carryForward: null };
65
+ }
66
+ async onBeforeDelete(deleteBy) {
67
+ const domains = await this.findBy({
68
+ query: Object.assign({}, deleteBy.query),
69
+ skip: 0,
70
+ limit: LIMIT_MAX,
71
+ select: { fullDomain: true },
72
+ props: {
73
+ isRoot: true,
74
+ },
75
+ });
76
+ return { deleteBy, carryForward: domains };
77
+ }
78
+ async onDeleteSuccess(onDelete, _itemIdsBeforeDelete) {
79
+ for (const domain of onDelete.carryForward) {
80
+ await this.removeDomainFromGreenlock(domain.fullDomain);
81
+ }
82
+ return onDelete;
83
+ }
84
+ async removeDomainFromGreenlock(domain) {
85
+ await GreenlockUtil.removeDomain(domain);
86
+ }
87
+ async orderCert(dashboardDomain) {
88
+ var _a;
89
+ return Telemetry.startActiveSpan({
90
+ name: "DashboardDomainService.orderCert",
91
+ options: {
92
+ attributes: {
93
+ fullDomain: dashboardDomain.fullDomain,
94
+ _id: (_a = dashboardDomain.id) === null || _a === void 0 ? void 0 : _a.toString(),
95
+ },
96
+ },
97
+ fn: async (span) => {
98
+ try {
99
+ if (!dashboardDomain.fullDomain) {
100
+ const fetchedDashboardDomain = await this.findOneBy({
101
+ query: {
102
+ _id: dashboardDomain.id.toString(),
103
+ },
104
+ select: {
105
+ _id: true,
106
+ fullDomain: true,
107
+ },
108
+ props: {
109
+ isRoot: true,
110
+ },
111
+ });
112
+ if (!fetchedDashboardDomain) {
113
+ throw new BadDataException("DomainModel not found");
114
+ }
115
+ dashboardDomain = fetchedDashboardDomain;
116
+ }
117
+ if (!dashboardDomain.fullDomain) {
118
+ throw new BadDataException("Unable to order certificate because domain is null");
119
+ }
120
+ logger.debug("Ordering SSL for domain: " + dashboardDomain.fullDomain);
121
+ await GreenlockUtil.orderCert({
122
+ domain: dashboardDomain.fullDomain,
123
+ validateCname: async (fullDomain) => {
124
+ return await this.isCnameValid(fullDomain);
125
+ },
126
+ });
127
+ logger.debug("SSL ordered for domain: " + dashboardDomain.fullDomain);
128
+ await this.updateOneById({
129
+ id: dashboardDomain.id,
130
+ data: {
131
+ isSslOrdered: true,
132
+ },
133
+ props: {
134
+ isRoot: true,
135
+ },
136
+ });
137
+ Telemetry.endSpan(span);
138
+ }
139
+ catch (err) {
140
+ Telemetry.recordExceptionMarkSpanAsErrorAndEndSpan({
141
+ span,
142
+ exception: err,
143
+ });
144
+ throw err;
145
+ }
146
+ },
147
+ });
148
+ }
149
+ async updateSslProvisioningStatusForAllDomains() {
150
+ const domains = await this.findBy({
151
+ query: {
152
+ isSslOrdered: true,
153
+ isCustomCertificate: false,
154
+ },
155
+ select: {
156
+ _id: true,
157
+ },
158
+ limit: LIMIT_MAX,
159
+ skip: 0,
160
+ props: {
161
+ isRoot: true,
162
+ },
163
+ });
164
+ for (const domain of domains) {
165
+ await this.updateSslProvisioningStatus(domain);
166
+ }
167
+ }
168
+ async isSSLProvisioned(fulldomain, token) {
169
+ try {
170
+ const result = await API.get({
171
+ url: URL.fromString("https://" +
172
+ fulldomain +
173
+ "/dashboard-api/cname-verification/" +
174
+ token),
175
+ });
176
+ if (result.isFailure()) {
177
+ return false;
178
+ }
179
+ return true;
180
+ }
181
+ catch (err) {
182
+ logger.error(err);
183
+ return false;
184
+ }
185
+ }
186
+ async updateCnameStatusForDashboardDomain(data) {
187
+ if (!data.cnameStatus) {
188
+ await this.updateOneBy({
189
+ query: {
190
+ fullDomain: data.domain,
191
+ },
192
+ data: {
193
+ isCnameVerified: false,
194
+ isSslOrdered: false,
195
+ isSslProvisioned: false,
196
+ },
197
+ props: {
198
+ isRoot: true,
199
+ },
200
+ });
201
+ }
202
+ else {
203
+ await this.updateOneBy({
204
+ query: {
205
+ fullDomain: data.domain,
206
+ },
207
+ data: {
208
+ isCnameVerified: true,
209
+ },
210
+ props: {
211
+ isRoot: true,
212
+ },
213
+ });
214
+ }
215
+ }
216
+ async isCnameValid(fullDomain) {
217
+ try {
218
+ logger.debug("Checking for CNAME " + fullDomain);
219
+ const dashboardDomain = await this.findOneBy({
220
+ query: {
221
+ fullDomain: fullDomain,
222
+ },
223
+ select: {
224
+ _id: true,
225
+ cnameVerificationToken: true,
226
+ },
227
+ props: {
228
+ isRoot: true,
229
+ },
230
+ });
231
+ if (!dashboardDomain) {
232
+ return false;
233
+ }
234
+ const token = dashboardDomain.cnameVerificationToken;
235
+ logger.debug("Checking for CNAME " + fullDomain + " with token " + token);
236
+ try {
237
+ const result = await API.get({
238
+ url: URL.fromString("http://" +
239
+ fullDomain +
240
+ "/dashboard-api/cname-verification/" +
241
+ token),
242
+ });
243
+ logger.debug("CNAME verification result");
244
+ logger.debug(result);
245
+ if (result.isSuccess()) {
246
+ await this.updateCnameStatusForDashboardDomain({
247
+ domain: fullDomain,
248
+ cnameStatus: true,
249
+ });
250
+ return true;
251
+ }
252
+ }
253
+ catch (err) {
254
+ logger.debug("Failed checking for CNAME " + fullDomain);
255
+ logger.debug(err);
256
+ }
257
+ try {
258
+ const resultHttps = await API.get({
259
+ url: URL.fromString("https://" +
260
+ fullDomain +
261
+ "/dashboard-api/cname-verification/" +
262
+ token),
263
+ });
264
+ logger.debug("CNAME verification result for https");
265
+ logger.debug(resultHttps);
266
+ if (resultHttps.isSuccess()) {
267
+ await this.updateCnameStatusForDashboardDomain({
268
+ domain: fullDomain,
269
+ cnameStatus: true,
270
+ });
271
+ return true;
272
+ }
273
+ }
274
+ catch (err) {
275
+ logger.debug("Failed checking for CNAME " + fullDomain);
276
+ logger.debug(err);
277
+ }
278
+ try {
279
+ if (DashboardCNameRecord) {
280
+ const cnameRecords = await Domain.getCnameRecords({
281
+ domain: fullDomain,
282
+ });
283
+ let cnameRecord = undefined;
284
+ if (cnameRecords.length > 0) {
285
+ cnameRecord = cnameRecords[0];
286
+ }
287
+ if (!cnameRecord) {
288
+ logger.debug(`No CNAME record found for ${fullDomain}. Expected record: ${DashboardCNameRecord}`);
289
+ await this.updateCnameStatusForDashboardDomain({
290
+ domain: fullDomain,
291
+ cnameStatus: false,
292
+ });
293
+ return false;
294
+ }
295
+ if (cnameRecord &&
296
+ cnameRecord.trim().toLocaleLowerCase() ===
297
+ DashboardCNameRecord.trim().toLocaleLowerCase()) {
298
+ logger.debug(`CNAME record for ${fullDomain} matches the expected record: ${DashboardCNameRecord}`);
299
+ await this.updateCnameStatusForDashboardDomain({
300
+ domain: fullDomain,
301
+ cnameStatus: true,
302
+ });
303
+ return true;
304
+ }
305
+ logger.debug(`CNAME record for ${fullDomain} is ${cnameRecord} and it does not match the expected record: ${DashboardCNameRecord}`);
306
+ }
307
+ }
308
+ catch (err) {
309
+ logger.debug("Failed checking for CNAME " + fullDomain);
310
+ logger.debug(err);
311
+ }
312
+ await this.updateCnameStatusForDashboardDomain({
313
+ domain: fullDomain,
314
+ cnameStatus: false,
315
+ });
316
+ return false;
317
+ }
318
+ catch (err) {
319
+ logger.debug("Failed checking for CNAME " + fullDomain);
320
+ logger.debug(err);
321
+ await this.updateCnameStatusForDashboardDomain({
322
+ domain: fullDomain,
323
+ cnameStatus: false,
324
+ });
325
+ return false;
326
+ }
327
+ }
328
+ async updateSslProvisioningStatus(domain) {
329
+ var _a;
330
+ if (!domain.id) {
331
+ throw new BadDataException("DomainModel ID is required");
332
+ }
333
+ const dashboardDomain = await this.findOneBy({
334
+ query: {
335
+ _id: (_a = domain.id) === null || _a === void 0 ? void 0 : _a.toString(),
336
+ },
337
+ select: {
338
+ _id: true,
339
+ fullDomain: true,
340
+ cnameVerificationToken: true,
341
+ },
342
+ props: {
343
+ isRoot: true,
344
+ },
345
+ });
346
+ if (!dashboardDomain) {
347
+ throw new BadDataException("DomainModel not found");
348
+ }
349
+ logger.debug(`DashboardCerts:RemoveCerts - Checking CNAME ${dashboardDomain.fullDomain}`);
350
+ const isValid = await this.isSSLProvisioned(dashboardDomain.fullDomain, dashboardDomain.cnameVerificationToken);
351
+ if (!isValid) {
352
+ const isCnameValid = await this.isCnameValid(dashboardDomain.fullDomain);
353
+ await this.updateOneById({
354
+ id: dashboardDomain.id,
355
+ data: {
356
+ isSslProvisioned: false,
357
+ },
358
+ props: {
359
+ isRoot: true,
360
+ },
361
+ });
362
+ if (isCnameValid) {
363
+ try {
364
+ await this.orderCert(dashboardDomain);
365
+ }
366
+ catch (err) {
367
+ logger.error("Cannot order cert for domain: " + dashboardDomain.fullDomain);
368
+ logger.error(err);
369
+ }
370
+ }
371
+ }
372
+ else {
373
+ await this.updateOneById({
374
+ id: dashboardDomain.id,
375
+ data: {
376
+ isSslProvisioned: true,
377
+ },
378
+ props: {
379
+ isRoot: true,
380
+ },
381
+ });
382
+ }
383
+ }
384
+ async orderSSLForDomainsWhichAreNotOrderedYet() {
385
+ return Telemetry.startActiveSpan({
386
+ name: "DashboardDomainService.orderSSLForDomainsWhichAreNotOrderedYet",
387
+ options: { attributes: {} },
388
+ fn: async (span) => {
389
+ try {
390
+ const domains = await this.findBy({
391
+ query: {
392
+ isSslOrdered: false,
393
+ isCustomCertificate: false,
394
+ },
395
+ select: {
396
+ _id: true,
397
+ fullDomain: true,
398
+ },
399
+ limit: LIMIT_MAX,
400
+ skip: 0,
401
+ props: {
402
+ isRoot: true,
403
+ },
404
+ });
405
+ for (const domain of domains) {
406
+ try {
407
+ logger.debug("Ordering SSL for domain: " + domain.fullDomain);
408
+ await this.orderCert(domain);
409
+ }
410
+ catch (e) {
411
+ logger.error(e);
412
+ }
413
+ }
414
+ Telemetry.endSpan(span);
415
+ }
416
+ catch (err) {
417
+ Telemetry.recordExceptionMarkSpanAsErrorAndEndSpan({
418
+ span,
419
+ exception: err,
420
+ });
421
+ throw err;
422
+ }
423
+ },
424
+ });
425
+ }
426
+ async verifyCnameWhoseCnameisNotVerified() {
427
+ const domains = await this.findBy({
428
+ query: {
429
+ isCnameVerified: false,
430
+ },
431
+ select: {
432
+ _id: true,
433
+ fullDomain: true,
434
+ },
435
+ limit: LIMIT_MAX,
436
+ skip: 0,
437
+ props: {
438
+ isRoot: true,
439
+ },
440
+ });
441
+ for (const domain of domains) {
442
+ try {
443
+ await this.isCnameValid(domain.fullDomain);
444
+ }
445
+ catch (e) {
446
+ logger.error(e);
447
+ }
448
+ }
449
+ }
450
+ async renewCertsWhichAreExpiringSoon() {
451
+ await GreenlockUtil.renewAllCertsWhichAreExpiringSoon({
452
+ validateCname: async (fullDomain) => {
453
+ return await this.isCnameValid(fullDomain);
454
+ },
455
+ notifyDomainRemoved: async (domain) => {
456
+ await this.updateOneBy({
457
+ query: {
458
+ fullDomain: domain,
459
+ },
460
+ data: {
461
+ isSslOrdered: false,
462
+ isSslProvisioned: false,
463
+ },
464
+ props: {
465
+ isRoot: true,
466
+ },
467
+ });
468
+ logger.debug(`DomainModel removed from greenlock: ${domain}`);
469
+ },
470
+ });
471
+ }
472
+ async checkOrderStatus() {
473
+ const domains = await this.findBy({
474
+ query: {
475
+ isSslOrdered: true,
476
+ isCustomCertificate: false,
477
+ },
478
+ select: {
479
+ _id: true,
480
+ fullDomain: true,
481
+ cnameVerificationToken: true,
482
+ },
483
+ limit: LIMIT_MAX,
484
+ skip: 0,
485
+ props: {
486
+ isRoot: true,
487
+ },
488
+ });
489
+ for (const domain of domains) {
490
+ if (!domain.fullDomain) {
491
+ continue;
492
+ }
493
+ const acmeCert = await AcmeCertificateService.findOneBy({
494
+ query: {
495
+ domain: domain.fullDomain,
496
+ },
497
+ select: {
498
+ _id: true,
499
+ },
500
+ props: {
501
+ isRoot: true,
502
+ },
503
+ });
504
+ if (!acmeCert) {
505
+ try {
506
+ await this.orderCert(domain);
507
+ }
508
+ catch (err) {
509
+ logger.error("Cannot order cert for domain: " + domain.fullDomain);
510
+ logger.error(err);
511
+ }
512
+ }
513
+ }
514
+ }
515
+ }
516
+ __decorate([
517
+ CaptureSpan(),
518
+ __metadata("design:type", Function),
519
+ __metadata("design:paramtypes", [Object]),
520
+ __metadata("design:returntype", Promise)
521
+ ], Service.prototype, "onBeforeCreate", null);
522
+ __decorate([
523
+ CaptureSpan(),
524
+ __metadata("design:type", Function),
525
+ __metadata("design:paramtypes", [Object]),
526
+ __metadata("design:returntype", Promise)
527
+ ], Service.prototype, "onBeforeDelete", null);
528
+ __decorate([
529
+ CaptureSpan(),
530
+ __metadata("design:type", Function),
531
+ __metadata("design:paramtypes", [Object, Array]),
532
+ __metadata("design:returntype", Promise)
533
+ ], Service.prototype, "onDeleteSuccess", null);
534
+ __decorate([
535
+ CaptureSpan(),
536
+ __metadata("design:type", Function),
537
+ __metadata("design:paramtypes", [String]),
538
+ __metadata("design:returntype", Promise)
539
+ ], Service.prototype, "removeDomainFromGreenlock", null);
540
+ __decorate([
541
+ CaptureSpan(),
542
+ __metadata("design:type", Function),
543
+ __metadata("design:paramtypes", [DashboardDomain]),
544
+ __metadata("design:returntype", Promise)
545
+ ], Service.prototype, "orderCert", null);
546
+ __decorate([
547
+ CaptureSpan(),
548
+ __metadata("design:type", Function),
549
+ __metadata("design:paramtypes", []),
550
+ __metadata("design:returntype", Promise)
551
+ ], Service.prototype, "updateSslProvisioningStatusForAllDomains", null);
552
+ __decorate([
553
+ CaptureSpan(),
554
+ __metadata("design:type", Function),
555
+ __metadata("design:paramtypes", [Object]),
556
+ __metadata("design:returntype", Promise)
557
+ ], Service.prototype, "updateCnameStatusForDashboardDomain", null);
558
+ __decorate([
559
+ CaptureSpan(),
560
+ __metadata("design:type", Function),
561
+ __metadata("design:paramtypes", [String]),
562
+ __metadata("design:returntype", Promise)
563
+ ], Service.prototype, "isCnameValid", null);
564
+ __decorate([
565
+ CaptureSpan(),
566
+ __metadata("design:type", Function),
567
+ __metadata("design:paramtypes", [DashboardDomain]),
568
+ __metadata("design:returntype", Promise)
569
+ ], Service.prototype, "updateSslProvisioningStatus", null);
570
+ __decorate([
571
+ CaptureSpan(),
572
+ __metadata("design:type", Function),
573
+ __metadata("design:paramtypes", []),
574
+ __metadata("design:returntype", Promise)
575
+ ], Service.prototype, "orderSSLForDomainsWhichAreNotOrderedYet", null);
576
+ __decorate([
577
+ CaptureSpan(),
578
+ __metadata("design:type", Function),
579
+ __metadata("design:paramtypes", []),
580
+ __metadata("design:returntype", Promise)
581
+ ], Service.prototype, "verifyCnameWhoseCnameisNotVerified", null);
582
+ __decorate([
583
+ CaptureSpan(),
584
+ __metadata("design:type", Function),
585
+ __metadata("design:paramtypes", []),
586
+ __metadata("design:returntype", Promise)
587
+ ], Service.prototype, "renewCertsWhichAreExpiringSoon", null);
588
+ __decorate([
589
+ CaptureSpan(),
590
+ __metadata("design:type", Function),
591
+ __metadata("design:paramtypes", []),
592
+ __metadata("design:returntype", Promise)
593
+ ], Service.prototype, "checkOrderStatus", null);
594
+ export default new Service();
595
+ //# sourceMappingURL=DashboardDomainService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardDomainService.js","sourceRoot":"","sources":["../../../../Server/Services/DashboardDomainService.ts"],"names":[],"mappings":"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"}