@oneuptime/common 12.0.13 → 12.0.14

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 (376) hide show
  1. package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +14 -0
  2. package/Models/DatabaseModels/UserCall.ts +94 -3
  3. package/Models/DatabaseModels/UserEmail.ts +94 -3
  4. package/Models/DatabaseModels/UserIncomingCallNumber.ts +94 -3
  5. package/Models/DatabaseModels/UserPush.ts +37 -0
  6. package/Models/DatabaseModels/UserSMS.ts +94 -3
  7. package/Models/DatabaseModels/UserWhatsApp.ts +93 -2
  8. package/Server/API/BaseAPI.ts +79 -14
  9. package/Server/API/UserCallAPI.ts +53 -45
  10. package/Server/API/UserEmailAPI.ts +53 -44
  11. package/Server/API/UserIncomingCallNumberAPI.ts +48 -38
  12. package/Server/API/UserNotificationMethodAdminAPI.ts +481 -0
  13. package/Server/API/UserPushAPI.ts +126 -2
  14. package/Server/API/UserSmsAPI.ts +53 -44
  15. package/Server/API/UserWhatsAppAPI.ts +53 -50
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.ts +154 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.ts +17 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.ts +45 -0
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  20. package/Server/Middleware/VerificationCodeRateLimit.ts +586 -0
  21. package/Server/Services/AnalyticsDatabaseService.ts +169 -0
  22. package/Server/Services/DatabaseService.ts +101 -0
  23. package/Server/Services/LogAggregationService.ts +5 -0
  24. package/Server/Services/PushNotificationService.ts +127 -12
  25. package/Server/Services/TeamMemberService.ts +53 -13
  26. package/Server/Services/UserCallService.ts +55 -24
  27. package/Server/Services/UserEmailService.ts +83 -17
  28. package/Server/Services/UserIncomingCallNumberService.ts +49 -85
  29. package/Server/Services/UserNotificationMethodAdminService.ts +1527 -0
  30. package/Server/Services/UserNotificationRuleService.ts +26 -0
  31. package/Server/Services/UserPushService.ts +89 -0
  32. package/Server/Services/UserSmsService.ts +50 -17
  33. package/Server/Services/UserWhatsAppService.ts +48 -15
  34. package/Server/Types/Database/QueryHelper.ts +30 -0
  35. package/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.ts +59 -0
  36. package/Server/Utils/ChannelVerification.ts +510 -0
  37. package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +13 -16
  38. package/Server/Utils/Monitor/MonitorAlert.ts +24 -21
  39. package/Server/Utils/Monitor/MonitorIncident.ts +21 -18
  40. package/Server/Utils/Monitor/MonitorResourceContext.ts +107 -0
  41. package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +442 -0
  42. package/Server/Utils/Monitor/SeriesResourceLabels.ts +3 -3
  43. package/Server/Utils/Monitor/SeriesResourceLinker.ts +96 -28
  44. package/Server/Utils/TotpAuth.ts +137 -9
  45. package/Server/Utils/UserRegistrationToken.ts +182 -0
  46. package/Server/Utils/VerificationCode.ts +134 -0
  47. package/Tests/App/Dashboard/AdminNotificationRulesPage.test.tsx +173 -94
  48. package/Tests/App/Dashboard/AdminUserNotificationMethodsPage.test.tsx +1151 -0
  49. package/Tests/App/Dashboard/AdminUserOnCallPages.test.tsx +905 -0
  50. package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +338 -0
  51. package/Tests/App/Dashboard/InvestigationPanel.test.tsx +1 -1
  52. package/Tests/App/Dashboard/MonitorTypePicker.test.tsx +28 -0
  53. package/Tests/Models/UserPushCriticalAlertColumn.test.ts +172 -0
  54. package/Tests/Server/API/BaseAPIGetListParallel.test.ts +519 -0
  55. package/Tests/Server/API/NotificationChannelVerificationAPI.test.ts +543 -0
  56. package/Tests/Server/API/UserIncomingCallNumberApi.test.ts +108 -18
  57. package/Tests/Server/API/UserNotificationMethodAdminAPI.test.ts +963 -0
  58. package/Tests/Server/API/UserPushCriticalAlertsApi.test.ts +114 -0
  59. package/Tests/Server/API/UserSmsApi.test.ts +107 -14
  60. package/Tests/Server/API/UserTotpAuthAPI.test.ts +427 -0
  61. package/Tests/Server/Infrastructure/Postgres/FixTotpOtpUrlAlgorithmMigration.test.ts +315 -0
  62. package/Tests/Server/Middleware/VerificationCodeRateLimit.test.ts +775 -0
  63. package/Tests/Server/Services/AddNetworkDeviceReachabilityColumnsMigration.test.ts +10 -62
  64. package/Tests/Server/Services/AnalyticsDatabasePaginationStability.test.ts +33 -13
  65. package/Tests/Server/Services/AnalyticsDatabaseSortKeyBoundary.test.ts +658 -0
  66. package/Tests/Server/Services/CriticalOnCallAlertDelivery.test.ts +458 -0
  67. package/Tests/Server/Services/CriticalPushAlertPayload.test.ts +301 -0
  68. package/Tests/Server/Services/DatabaseServiceAtomicIncrement.test.ts +143 -0
  69. package/Tests/Server/Services/DeliverNotificationForRuleExtraction.test.ts +1 -0
  70. package/Tests/Server/Services/LogAggregationScanMemory.test.ts +421 -0
  71. package/Tests/Server/Services/LogAggregationService.test.ts +2 -2
  72. package/Tests/Server/Services/NotificationChannelCodeIssuance.test.ts +401 -0
  73. package/Tests/Server/Services/PushNotificationDeliveryOptions.test.ts +204 -0
  74. package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +21 -1
  75. package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +290 -0
  76. package/Tests/Server/Services/UserNotificationMethodAdminService.test.ts +948 -0
  77. package/Tests/Server/Services/UserNotificationRuleExecuteItem.test.ts +1 -0
  78. package/Tests/Server/Services/UserPushCriticalAlertToggle.test.ts +255 -0
  79. package/Tests/Server/Services/UserTotpAuthEnrolment.test.ts +218 -0
  80. package/Tests/Server/TestingUtils/AuthenticatorApp.ts +248 -0
  81. package/Tests/Server/Types/Database/Permissions/NotificationChannelVerificationColumns.test.ts +135 -0
  82. package/Tests/Server/Types/Database/Permissions/OnCallScheduleRelationSelect.test.ts +504 -0
  83. package/Tests/Server/Types/Database/QueryHelperFindWithSameTextAnyOf.test.ts +91 -0
  84. package/Tests/Server/Types/Workflow/Components/JsonToText.test.ts +384 -0
  85. package/Tests/Server/Types/Workflow/Components/MergeJson.test.ts +403 -0
  86. package/Tests/Server/Utils/Browser.test.ts +162 -0
  87. package/Tests/Server/Utils/ChannelVerification.test.ts +689 -0
  88. package/Tests/Server/Utils/Express.test.ts +371 -0
  89. package/Tests/Server/Utils/Monitor/Criteria/CustomCodeMonitorCriteria.test.ts +707 -0
  90. package/Tests/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.test.ts +698 -0
  91. package/Tests/Server/Utils/Monitor/Criteria/IncomingEmailBodyCriteria.test.ts +243 -0
  92. package/Tests/Server/Utils/Monitor/Criteria/IncomingRequestBodyCriteria.test.ts +278 -0
  93. package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +160 -20
  94. package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +13 -8
  95. package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +162 -18
  96. package/Tests/Server/Utils/Monitor/MonitorResourceContext.test.ts +349 -0
  97. package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +690 -0
  98. package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +7 -2
  99. package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +92 -18
  100. package/Tests/Server/Utils/PushNotificationUtilCreators.test.ts +267 -0
  101. package/Tests/Server/Utils/Telemetry/OneuptimeLabel.test.ts +439 -0
  102. package/Tests/Server/Utils/TotpAuth.test.ts +719 -0
  103. package/Tests/Server/Utils/UserRegistrationToken.test.ts +322 -0
  104. package/Tests/Server/Utils/VerificationCode.test.ts +296 -0
  105. package/Tests/Types/AutoRemediation/AutoRemediationSuggestionStatus.test.ts +192 -0
  106. package/Tests/Types/Call/CallRequest.test.ts +189 -0
  107. package/Tests/Types/Dashboard/DashboardSize.test.ts +226 -0
  108. package/Tests/Types/Incident/IncidentSlaStatus.test.ts +191 -0
  109. package/Tests/Types/Metrics/MetricDashboardMetricType.test.ts +278 -0
  110. package/Tests/Types/Metrics/MetricPipelineRuleType.test.ts +517 -0
  111. package/Tests/Types/Monitor/IncomingMonitorDefaultCriteria.test.ts +470 -0
  112. package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +6 -4
  113. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +262 -5
  114. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +1 -1
  115. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +1 -1
  116. package/Tests/Types/Monitor/ServiceAlertTemplates.test.ts +905 -0
  117. package/Tests/Types/Service/ServiceLanguage.test.ts +255 -0
  118. package/Tests/Types/TextRandomGeneration.test.ts +211 -0
  119. package/Tests/UI/Components/Button.test.tsx +175 -1
  120. package/Tests/UI/Components/CodeBlockLanguages.test.tsx +236 -0
  121. package/Tests/UI/Components/CommandPalette/CommandPalette.test.tsx +568 -0
  122. package/Tests/UI/Components/CommandPalette/CommandPaletteKeyboard.test.tsx +239 -0
  123. package/Tests/UI/Components/CommandPalette/CommandPaletteProviders.test.tsx +400 -0
  124. package/Tests/UI/Components/CommandPalette/PaletteFilter.test.ts +234 -0
  125. package/Tests/UI/Components/CommandPalette/RecentCommands.test.ts +97 -0
  126. package/Tests/UI/Components/CountModelSideMenuItemGuard.test.tsx +198 -0
  127. package/Tests/UI/Components/FeedItemSafeMode.test.tsx +1 -1
  128. package/Tests/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.test.ts +267 -0
  129. package/Tests/UI/Components/List.test.tsx +9 -2
  130. package/Tests/UI/Components/ListLoadingStates.test.tsx +173 -0
  131. package/Tests/UI/Components/MarkdownLazy.test.tsx +113 -0
  132. package/Tests/UI/Components/MarkdownMermaidRetry.test.tsx +110 -0
  133. package/Tests/UI/Components/ModelTable/useCustomFieldColumns.test.tsx +8 -0
  134. package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +692 -0
  135. package/Tests/UI/Components/MoreMenuMotion.test.tsx +118 -0
  136. package/Tests/UI/Components/NavBarCommandKGating.test.tsx +178 -0
  137. package/Tests/UI/Components/OrderedStatesList.test.tsx +19 -2
  138. package/Tests/UI/Components/SideOverMotion.test.tsx +109 -0
  139. package/Tests/UI/Components/Skeleton.test.tsx +71 -0
  140. package/Tests/UI/Components/TableLoadingStates.test.tsx +279 -0
  141. package/Tests/UI/Components/Tabs.test.tsx +24 -0
  142. package/Tests/UI/Components/Toast.test.tsx +130 -7
  143. package/Tests/UI/Components/ToastStacking.test.tsx +198 -0
  144. package/Tests/UI/Utils/Dropdown.test.ts +423 -0
  145. package/Tests/UI/Utils/ModelAPITenantHeader.test.ts +122 -0
  146. package/Tests/UI/Utils/ModelListCache.test.ts +338 -0
  147. package/Tests/UI/Utils/ProjectListCacheInvalidation.test.ts +225 -0
  148. package/Tests/Utils/API.test.ts +16 -2
  149. package/Tests/Utils/Dashboard/Components/DashboardKubernetesResourceListShared.test.ts +347 -0
  150. package/Tests/Utils/Dashboard/Components/DashboardListSharedArgs.test.ts +259 -0
  151. package/Tests/Utils/Dashboard/Components/DashboardMonitorListComponent.test.ts +466 -0
  152. package/Tests/Utils/Rum/UrlScrubberSegments.test.ts +362 -0
  153. package/Types/Email/EmailTemplateType.ts +1 -0
  154. package/Types/Monitor/MonitorCriteriaInstance.ts +41 -20
  155. package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +131 -8
  156. package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +48 -8
  157. package/Types/Monitor/ServiceAlertTemplates.ts +1352 -0
  158. package/Types/Permission.ts +35 -0
  159. package/Types/PushNotification/AndroidNotificationChannel.ts +26 -0
  160. package/Types/PushNotification/PushNotificationMessage.ts +15 -0
  161. package/Types/PushNotification/PushNotificationRequest.ts +8 -16
  162. package/Types/Service/ServiceLanguage.ts +144 -0
  163. package/Types/Text.ts +111 -19
  164. package/UI/Components/Button/Button.tsx +27 -14
  165. package/UI/Components/CodeBlock/CodeBlock.tsx +54 -7
  166. package/UI/Components/CodeBlock/LanguageRegistry.ts +103 -0
  167. package/UI/Components/CommandPalette/CommandPalette.tsx +790 -0
  168. package/UI/Components/CommandPalette/PaletteFilter.ts +196 -0
  169. package/UI/Components/CommandPalette/PaletteRow.tsx +173 -0
  170. package/UI/Components/CommandPalette/RecentCommands.ts +57 -0
  171. package/UI/Components/CommandPalette/Types.ts +49 -0
  172. package/UI/Components/CommandPalette/UseProviderSearch.ts +129 -0
  173. package/UI/Components/Dropdown/Dropdown.tsx +6 -1
  174. package/UI/Components/Feed/FeedItem.tsx +1 -1
  175. package/UI/Components/List/List.tsx +37 -5
  176. package/UI/Components/List/ListSkeleton.tsx +54 -0
  177. package/UI/Components/Markdown.tsx/LazyMarkdownViewer.tsx +6 -1
  178. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +71 -26
  179. package/UI/Components/Modal/Modal.tsx +2 -2
  180. package/UI/Components/ModelTable/BaseModelTable.tsx +1 -1
  181. package/UI/Components/ModelTable/useCustomFieldColumns.ts +11 -5
  182. package/UI/Components/MoreMenu/MoreMenu.tsx +39 -1
  183. package/UI/Components/Navbar/NavBar.tsx +14 -1
  184. package/UI/Components/OrderedStatesList/OrderedStatesList.tsx +50 -5
  185. package/UI/Components/SideMenu/CountModelSideMenuItem.tsx +40 -1
  186. package/UI/Components/SideOver/SideOver.tsx +37 -2
  187. package/UI/Components/Skeleton/Skeleton.tsx +53 -0
  188. package/UI/Components/Table/Table.tsx +74 -44
  189. package/UI/Components/Table/TableSkeletonRows.tsx +141 -0
  190. package/UI/Components/Tabs/Tab.tsx +1 -1
  191. package/UI/Components/Toast/Toast.tsx +118 -53
  192. package/UI/Components/Toast/ToastInit.tsx +82 -32
  193. package/UI/Styles/Theme.css +40 -0
  194. package/UI/Utils/ModelAPI/ModelAPI.ts +20 -10
  195. package/UI/Utils/ModelListCache.ts +188 -0
  196. package/UI/Utils/Project.ts +29 -0
  197. package/Utils/API.ts +6 -1
  198. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +14 -0
  199. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
  200. package/build/dist/Models/DatabaseModels/UserCall.js +101 -3
  201. package/build/dist/Models/DatabaseModels/UserCall.js.map +1 -1
  202. package/build/dist/Models/DatabaseModels/UserEmail.js +101 -3
  203. package/build/dist/Models/DatabaseModels/UserEmail.js.map +1 -1
  204. package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js +101 -3
  205. package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js.map +1 -1
  206. package/build/dist/Models/DatabaseModels/UserPush.js +38 -0
  207. package/build/dist/Models/DatabaseModels/UserPush.js.map +1 -1
  208. package/build/dist/Models/DatabaseModels/UserSMS.js +101 -3
  209. package/build/dist/Models/DatabaseModels/UserSMS.js.map +1 -1
  210. package/build/dist/Models/DatabaseModels/UserWhatsApp.js +100 -2
  211. package/build/dist/Models/DatabaseModels/UserWhatsApp.js.map +1 -1
  212. package/build/dist/Server/API/BaseAPI.js +69 -13
  213. package/build/dist/Server/API/BaseAPI.js.map +1 -1
  214. package/build/dist/Server/API/UserCallAPI.js +42 -38
  215. package/build/dist/Server/API/UserCallAPI.js.map +1 -1
  216. package/build/dist/Server/API/UserEmailAPI.js +42 -38
  217. package/build/dist/Server/API/UserEmailAPI.js.map +1 -1
  218. package/build/dist/Server/API/UserIncomingCallNumberAPI.js +37 -32
  219. package/build/dist/Server/API/UserIncomingCallNumberAPI.js.map +1 -1
  220. package/build/dist/Server/API/UserNotificationMethodAdminAPI.js +341 -0
  221. package/build/dist/Server/API/UserNotificationMethodAdminAPI.js.map +1 -0
  222. package/build/dist/Server/API/UserPushAPI.js +95 -2
  223. package/build/dist/Server/API/UserPushAPI.js.map +1 -1
  224. package/build/dist/Server/API/UserSmsAPI.js +42 -38
  225. package/build/dist/Server/API/UserSmsAPI.js.map +1 -1
  226. package/build/dist/Server/API/UserWhatsAppAPI.js +42 -40
  227. package/build/dist/Server/API/UserWhatsAppAPI.js.map +1 -1
  228. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.js +89 -0
  229. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.js.map +1 -0
  230. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.js +12 -0
  231. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.js.map +1 -0
  232. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.js +40 -0
  233. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.js.map +1 -0
  234. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  235. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  236. package/build/dist/Server/Middleware/VerificationCodeRateLimit.js +393 -0
  237. package/build/dist/Server/Middleware/VerificationCodeRateLimit.js.map +1 -0
  238. package/build/dist/Server/Services/AnalyticsDatabaseService.js +136 -0
  239. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  240. package/build/dist/Server/Services/DatabaseService.js +74 -0
  241. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  242. package/build/dist/Server/Services/LogAggregationService.js +5 -0
  243. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  244. package/build/dist/Server/Services/PushNotificationService.js +69 -30
  245. package/build/dist/Server/Services/PushNotificationService.js.map +1 -1
  246. package/build/dist/Server/Services/TeamMemberService.js +43 -7
  247. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  248. package/build/dist/Server/Services/UserCallService.js +54 -22
  249. package/build/dist/Server/Services/UserCallService.js.map +1 -1
  250. package/build/dist/Server/Services/UserEmailService.js +78 -17
  251. package/build/dist/Server/Services/UserEmailService.js.map +1 -1
  252. package/build/dist/Server/Services/UserIncomingCallNumberService.js +45 -74
  253. package/build/dist/Server/Services/UserIncomingCallNumberService.js.map +1 -1
  254. package/build/dist/Server/Services/UserNotificationMethodAdminService.js +1117 -0
  255. package/build/dist/Server/Services/UserNotificationMethodAdminService.js.map +1 -0
  256. package/build/dist/Server/Services/UserNotificationRuleService.js +20 -0
  257. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  258. package/build/dist/Server/Services/UserPushService.js +77 -0
  259. package/build/dist/Server/Services/UserPushService.js.map +1 -1
  260. package/build/dist/Server/Services/UserSmsService.js +50 -17
  261. package/build/dist/Server/Services/UserSmsService.js.map +1 -1
  262. package/build/dist/Server/Services/UserWhatsAppService.js +48 -15
  263. package/build/dist/Server/Services/UserWhatsAppService.js.map +1 -1
  264. package/build/dist/Server/Types/Database/QueryHelper.js +27 -0
  265. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  266. package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js +46 -0
  267. package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js.map +1 -1
  268. package/build/dist/Server/Utils/ChannelVerification.js +348 -0
  269. package/build/dist/Server/Utils/ChannelVerification.js.map +1 -0
  270. package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +13 -12
  271. package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js.map +1 -1
  272. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +20 -17
  273. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  274. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +17 -14
  275. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  276. package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js +95 -0
  277. package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js.map +1 -0
  278. package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +313 -0
  279. package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -0
  280. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +3 -3
  281. package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +67 -26
  282. package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -1
  283. package/build/dist/Server/Utils/TotpAuth.js +127 -8
  284. package/build/dist/Server/Utils/TotpAuth.js.map +1 -1
  285. package/build/dist/Server/Utils/UserRegistrationToken.js +170 -0
  286. package/build/dist/Server/Utils/UserRegistrationToken.js.map +1 -0
  287. package/build/dist/Server/Utils/VerificationCode.js +120 -0
  288. package/build/dist/Server/Utils/VerificationCode.js.map +1 -0
  289. package/build/dist/Types/Email/EmailTemplateType.js +1 -0
  290. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  291. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +42 -21
  292. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  293. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +77 -5
  294. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
  295. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +18 -6
  296. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
  297. package/build/dist/Types/Monitor/ServiceAlertTemplates.js +1028 -0
  298. package/build/dist/Types/Monitor/ServiceAlertTemplates.js.map +1 -0
  299. package/build/dist/Types/Permission.js +33 -0
  300. package/build/dist/Types/Permission.js.map +1 -1
  301. package/build/dist/Types/PushNotification/AndroidNotificationChannel.js +27 -0
  302. package/build/dist/Types/PushNotification/AndroidNotificationChannel.js.map +1 -0
  303. package/build/dist/Types/Service/ServiceLanguage.js +96 -0
  304. package/build/dist/Types/Service/ServiceLanguage.js.map +1 -0
  305. package/build/dist/Types/Text.js +82 -17
  306. package/build/dist/Types/Text.js.map +1 -1
  307. package/build/dist/UI/Components/Button/Button.js +22 -14
  308. package/build/dist/UI/Components/Button/Button.js.map +1 -1
  309. package/build/dist/UI/Components/CodeBlock/CodeBlock.js +35 -3
  310. package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
  311. package/build/dist/UI/Components/CodeBlock/LanguageRegistry.js +57 -0
  312. package/build/dist/UI/Components/CodeBlock/LanguageRegistry.js.map +1 -0
  313. package/build/dist/UI/Components/CommandPalette/CommandPalette.js +439 -0
  314. package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -0
  315. package/build/dist/UI/Components/CommandPalette/PaletteFilter.js +135 -0
  316. package/build/dist/UI/Components/CommandPalette/PaletteFilter.js.map +1 -0
  317. package/build/dist/UI/Components/CommandPalette/PaletteRow.js +83 -0
  318. package/build/dist/UI/Components/CommandPalette/PaletteRow.js.map +1 -0
  319. package/build/dist/UI/Components/CommandPalette/RecentCommands.js +47 -0
  320. package/build/dist/UI/Components/CommandPalette/RecentCommands.js.map +1 -0
  321. package/build/dist/UI/Components/CommandPalette/Types.js +2 -0
  322. package/build/dist/UI/Components/CommandPalette/Types.js.map +1 -0
  323. package/build/dist/UI/Components/CommandPalette/UseProviderSearch.js +88 -0
  324. package/build/dist/UI/Components/CommandPalette/UseProviderSearch.js.map +1 -0
  325. package/build/dist/UI/Components/Dropdown/Dropdown.js +6 -1
  326. package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
  327. package/build/dist/UI/Components/Feed/FeedItem.js +1 -1
  328. package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
  329. package/build/dist/UI/Components/List/List.js +19 -5
  330. package/build/dist/UI/Components/List/List.js.map +1 -1
  331. package/build/dist/UI/Components/List/ListSkeleton.js +21 -0
  332. package/build/dist/UI/Components/List/ListSkeleton.js.map +1 -0
  333. package/build/dist/UI/Components/Markdown.tsx/LazyMarkdownViewer.js.map +1 -1
  334. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +52 -25
  335. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  336. package/build/dist/UI/Components/Modal/Modal.js +2 -2
  337. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +1 -1
  338. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  339. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js +9 -2
  340. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js.map +1 -1
  341. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +32 -1
  342. package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
  343. package/build/dist/UI/Components/Navbar/NavBar.js +5 -1
  344. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  345. package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js +29 -5
  346. package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js.map +1 -1
  347. package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js +23 -1
  348. package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js.map +1 -1
  349. package/build/dist/UI/Components/SideOver/SideOver.js +23 -2
  350. package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
  351. package/build/dist/UI/Components/Skeleton/Skeleton.js +23 -0
  352. package/build/dist/UI/Components/Skeleton/Skeleton.js.map +1 -0
  353. package/build/dist/UI/Components/Table/Table.js +35 -24
  354. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  355. package/build/dist/UI/Components/Table/TableSkeletonRows.js +52 -0
  356. package/build/dist/UI/Components/Table/TableSkeletonRows.js.map +1 -0
  357. package/build/dist/UI/Components/Tabs/Tab.js +1 -1
  358. package/build/dist/UI/Components/Tabs/Tab.js.map +1 -1
  359. package/build/dist/UI/Components/Toast/Toast.js +77 -23
  360. package/build/dist/UI/Components/Toast/Toast.js.map +1 -1
  361. package/build/dist/UI/Components/Toast/ToastInit.js +37 -15
  362. package/build/dist/UI/Components/Toast/ToastInit.js.map +1 -1
  363. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +18 -9
  364. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
  365. package/build/dist/UI/Utils/ModelListCache.js +126 -0
  366. package/build/dist/UI/Utils/ModelListCache.js.map +1 -0
  367. package/build/dist/UI/Utils/Project.js +24 -1
  368. package/build/dist/UI/Utils/Project.js.map +1 -1
  369. package/build/dist/Utils/API.js +6 -1
  370. package/build/dist/Utils/API.js.map +1 -1
  371. package/jest.config.json +1 -1
  372. package/package.json +2 -3
  373. package/Server/Utils/Monitor/MonitorClusterContext.ts +0 -182
  374. package/Tests/__mocks__/otpauth.js +0 -30
  375. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +0 -141
  376. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +0 -1
@@ -0,0 +1,27 @@
1
+ /*
2
+ * Android delivers a notification with the settings of the channel it names,
3
+ * not the settings in the payload - importance, sound and Do Not Disturb
4
+ * bypass are all fixed when the app creates the channel and cannot be raised
5
+ * afterwards. So "ring through silent mode" is expressed by picking a channel,
6
+ * and these ids are the contract for that choice.
7
+ *
8
+ * The app creates channels with exactly these ids in
9
+ * MobileApp/src/notifications/channels.ts. An id sent from here that the app
10
+ * never created does not fail loudly: Android falls back to a default channel
11
+ * and the page arrives with default settings, which for an on-call page means
12
+ * silently. Keep the two lists in step.
13
+ */
14
+ var AndroidNotificationChannel;
15
+ (function (AndroidNotificationChannel) {
16
+ /*
17
+ * Do Not Disturb bypass, alarm audio stream, MAX importance. Reserved for
18
+ * on-call pages from a device whose owner opted in and granted the app Do
19
+ * Not Disturb access.
20
+ */
21
+ AndroidNotificationChannel["Critical"] = "oncall_critical";
22
+ AndroidNotificationChannel["High"] = "oncall_high";
23
+ AndroidNotificationChannel["Normal"] = "oncall_normal";
24
+ AndroidNotificationChannel["Low"] = "oncall_low";
25
+ })(AndroidNotificationChannel || (AndroidNotificationChannel = {}));
26
+ export default AndroidNotificationChannel;
27
+ //# sourceMappingURL=AndroidNotificationChannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AndroidNotificationChannel.js","sourceRoot":"","sources":["../../../../Types/PushNotification/AndroidNotificationChannel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,IAAK,0BAUJ;AAVD,WAAK,0BAA0B;IAC7B;;;;OAIG;IACH,0DAA4B,CAAA;IAC5B,kDAAoB,CAAA;IACpB,sDAAwB,CAAA;IACxB,gDAAkB,CAAA;AACpB,CAAC,EAVI,0BAA0B,KAA1B,0BAA0B,QAU9B;AAED,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,96 @@
1
+ import TechStack from "./TechStack";
2
+ export const SERVICE_LANGUAGE_DISPLAY_NAMES = {
3
+ java: "Java",
4
+ dotnet: ".NET",
5
+ nodejs: "Node.js",
6
+ python: "Python",
7
+ go: "Go",
8
+ ruby: "Ruby",
9
+ php: "PHP",
10
+ rust: "Rust",
11
+ erlang: "Erlang / Elixir",
12
+ swift: "Swift",
13
+ cpp: "C++",
14
+ webjs: "Browser JS",
15
+ };
16
+ const KNOWN_LANGUAGES = Object.keys(SERVICE_LANGUAGE_DISPLAY_NAMES);
17
+ /*
18
+ * process.runtime.name values seen in the wild → language. Checked as
19
+ * case-insensitive substrings, so "OpenJDK Runtime Environment" → java.
20
+ * Ordered: more specific markers first ("graalvm" before "go").
21
+ */
22
+ const RUNTIME_NAME_MARKERS = [
23
+ { marker: "openjdk", lang: "java" },
24
+ { marker: "graalvm", lang: "java" },
25
+ { marker: "java", lang: "java" },
26
+ { marker: "dotnet", lang: "dotnet" },
27
+ { marker: ".net", lang: "dotnet" },
28
+ { marker: "node", lang: "nodejs" },
29
+ { marker: "deno", lang: "nodejs" },
30
+ { marker: "bun", lang: "nodejs" },
31
+ { marker: "cpython", lang: "python" },
32
+ { marker: "pypy", lang: "python" },
33
+ { marker: "python", lang: "python" },
34
+ { marker: "beam", lang: "erlang" },
35
+ { marker: "erlang", lang: "erlang" },
36
+ { marker: "ruby", lang: "ruby" },
37
+ { marker: "php", lang: "php" },
38
+ { marker: "rust", lang: "rust" },
39
+ { marker: "swift", lang: "swift" },
40
+ { marker: "go", lang: "go" },
41
+ ];
42
+ // Manual tech-stack selections → language (JVM languages map to java).
43
+ const TECH_STACK_LANGUAGES = {
44
+ [TechStack.Java]: "java",
45
+ [TechStack.Kotlin]: "java",
46
+ [TechStack.CSharp]: "dotnet",
47
+ [TechStack.NodeJS]: "nodejs",
48
+ [TechStack.TypeScript]: "nodejs",
49
+ [TechStack.JavaScript]: "nodejs",
50
+ [TechStack.React]: "webjs",
51
+ [TechStack.Python]: "python",
52
+ [TechStack.Go]: "go",
53
+ [TechStack.Ruby]: "ruby",
54
+ [TechStack.PHP]: "php",
55
+ [TechStack.Rust]: "rust",
56
+ [TechStack.Swift]: "swift",
57
+ [TechStack.CPlusPlus]: "cpp",
58
+ };
59
+ /*
60
+ * Best-effort language for a service, in descending order of trust:
61
+ *
62
+ * 1. `telemetry.sdk.language` — stamped by the SDK itself, so it is what the
63
+ * process actually runs on rather than what anyone believes it runs on.
64
+ * 2. `process.runtime.name` — present when runtime instrumentation is on but
65
+ * the SDK attribute did not survive a collector hop.
66
+ * 3. The manually-chosen tech stack — a human's answer, used only when the
67
+ * telemetry has not answered.
68
+ *
69
+ * Returns null when nothing identifies the runtime. Callers must treat that as
70
+ * "unknown", never as a default language: recommending JVM heap monitors to a
71
+ * service that turns out to be Go is worse than recommending nothing.
72
+ */
73
+ export const detectServiceLanguage = (data) => {
74
+ const sdkLanguage = (data.telemetrySdkLanguage || "")
75
+ .trim()
76
+ .toLowerCase();
77
+ if (sdkLanguage && KNOWN_LANGUAGES.includes(sdkLanguage)) {
78
+ return sdkLanguage;
79
+ }
80
+ const runtimeName = (data.runtimeName || "").trim().toLowerCase();
81
+ if (runtimeName) {
82
+ for (const entry of RUNTIME_NAME_MARKERS) {
83
+ if (runtimeName.includes(entry.marker)) {
84
+ return entry.lang;
85
+ }
86
+ }
87
+ }
88
+ for (const stack of data.techStack || []) {
89
+ const lang = TECH_STACK_LANGUAGES[stack];
90
+ if (lang) {
91
+ return lang;
92
+ }
93
+ }
94
+ return null;
95
+ };
96
+ //# sourceMappingURL=ServiceLanguage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceLanguage.js","sourceRoot":"","sources":["../../../../Types/Service/ServiceLanguage.ts"],"names":[],"mappings":"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"}
@@ -183,18 +183,86 @@ class Text {
183
183
  }
184
184
  return null;
185
185
  }
186
- static generateRandomText(length) {
187
- if (!length) {
188
- length = 10;
186
+ /*
187
+ * Cryptographically secure random bytes, or null if this runtime has no
188
+ * CSPRNG at all.
189
+ *
190
+ * `globalThis.crypto` is the Web Crypto API: present in every browser, and a
191
+ * global in Node since 19. It is used here rather than `require("crypto")`
192
+ * because this file is bundled into the dashboard as well as the server, so
193
+ * it cannot reach for a Node built-in.
194
+ */
195
+ static getSecureRandomBytes(byteCount) {
196
+ const webCrypto = globalThis.crypto || {};
197
+ if (typeof webCrypto.getRandomValues !== "function") {
198
+ return null;
189
199
  }
190
- let result = "";
191
- const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
200
+ return webCrypto.getRandomValues(new Uint8Array(byteCount));
201
+ }
202
+ /*
203
+ * Draw `length` characters uniformly at random from `characters`.
204
+ *
205
+ * TWO properties here are load-bearing, and this used to have neither:
206
+ *
207
+ * 1. The source is a CSPRNG. Math.random is a fast non-cryptographic PRNG
208
+ * (xorshift128+ in V8) whose entire internal state can be recovered from
209
+ * a handful of observed outputs and then run forwards AND backwards. For
210
+ * a value used as a secret that is worse than a short code: an attacker
211
+ * who sees one generated value predicts the next one exactly, with no
212
+ * guessing at all.
213
+ *
214
+ * 2. The draw is unbiased. `byte % n` is only uniform when n divides 256.
215
+ * Rejection sampling discards the short tail of the byte range instead of
216
+ * folding it, which is what keeps a k-character code at its full
217
+ * k * log2(n) bits of entropy.
218
+ *
219
+ * The Math.random fallback survives ONLY for the case where no CSPRNG exists
220
+ * at all, which is unreachable on any supported runtime. It is there so the
221
+ * non-secret callers - SQL alias suffixes in QueryHelper and friends, which
222
+ * run on every query - cannot be broken by an exotic environment. Secrets
223
+ * must NOT come through here: notification-channel codes go through
224
+ * Common/Server/Utils/VerificationCode.ts, which throws rather than
225
+ * downgrading.
226
+ */
227
+ static generateRandomString(length, characters) {
192
228
  const charactersLength = characters.length;
193
- for (let i = 0; i < length; i++) {
194
- result += characters.charAt(Math.floor(Math.random() * charactersLength));
229
+ /*
230
+ * The largest multiple of charactersLength that fits in a byte. Bytes at
231
+ * or above it are thrown away rather than folded - that is the whole of
232
+ * the rejection sampling, and skipping it is what biases the result.
233
+ */
234
+ const unbiasedCeiling = 256 - (256 % charactersLength);
235
+ let result = "";
236
+ while (result.length < length) {
237
+ const remaining = length - result.length;
238
+ /*
239
+ * Over-draw a little so a rejected byte usually does not cost a second
240
+ * trip into the CSPRNG. With a 10-character alphabet fewer than 3% of
241
+ * bytes are rejected, so one pass almost always finishes the job.
242
+ */
243
+ const bytes = Text.getSecureRandomBytes(remaining + Math.ceil(remaining / 4) + 4);
244
+ if (!bytes) {
245
+ while (result.length < length) {
246
+ result += characters.charAt(Math.floor(Math.random() * charactersLength));
247
+ }
248
+ return result;
249
+ }
250
+ for (let i = 0; i < bytes.length; i++) {
251
+ if (result.length >= length) {
252
+ break;
253
+ }
254
+ const byte = bytes[i];
255
+ if (byte === undefined || byte >= unbiasedCeiling) {
256
+ continue;
257
+ }
258
+ result += characters.charAt(byte % charactersLength);
259
+ }
195
260
  }
196
261
  return result;
197
262
  }
263
+ static generateRandomText(length) {
264
+ return Text.generateRandomString(length || 10, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
265
+ }
198
266
  static trimLines(text) {
199
267
  return text
200
268
  .split("\n")
@@ -203,17 +271,14 @@ class Text {
203
271
  })
204
272
  .join("\n");
205
273
  }
274
+ /*
275
+ * The alphabet used to be the string "12134567890" - eleven characters, with
276
+ * "1" written twice and every digit therefore NOT equally likely. Combined
277
+ * with Math.random that made a six-digit code both biased and predictable.
278
+ * Both halves are fixed in generateRandomString above.
279
+ */
206
280
  static generateRandomNumber(length) {
207
- if (!length) {
208
- length = 10;
209
- }
210
- let result = "";
211
- const characters = "12134567890";
212
- const charactersLength = characters.length;
213
- for (let i = 0; i < length; i++) {
214
- result += characters.charAt(Math.floor(Math.random() * charactersLength));
215
- }
216
- return result;
281
+ return Text.generateRandomString(length || 10, "0123456789");
217
282
  }
218
283
  static convertNumberToWords(num) {
219
284
  const words = [
@@ -1 +1 @@
1
- {"version":3,"file":"Text.js","sourceRoot":"","sources":["../../../Types/Text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Text.js","sourceRoot":"","sources":["../../../Types/Text.ts"],"names":[],"mappings":"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"}
@@ -36,21 +36,23 @@ const Button = ({ title, onClick, disabled, id, shortcutKey, type = ButtonType.B
36
36
  const translatedTitle = translateString(title);
37
37
  const translatedTooltip = translateString(tooltip);
38
38
  useEffect(() => {
39
- // componentDidMount
40
- if (shortcutKey) {
41
- window.addEventListener(`keydown`, (e) => {
42
- return handleKeyboard(e);
43
- });
39
+ if (!shortcutKey) {
40
+ return undefined;
44
41
  }
45
- // componentDidUnmount
42
+ /*
43
+ * One stable function for the whole subscription. The previous version
44
+ * passed a fresh arrow function to removeEventListener, which never
45
+ * matches the one that was added — every render leaked a live keydown
46
+ * listener for the lifetime of the page.
47
+ */
48
+ const onKeyDown = (event) => {
49
+ return handleKeyboard(event);
50
+ };
51
+ window.addEventListener(`keydown`, onKeyDown);
46
52
  return () => {
47
- if (shortcutKey) {
48
- window.removeEventListener(`keydown`, (e) => {
49
- return handleKeyboard(e);
50
- });
51
- }
53
+ window.removeEventListener(`keydown`, onKeyDown);
52
54
  };
53
- });
55
+ }, [shortcutKey, onClick]);
54
56
  const handleKeyboard = (event) => {
55
57
  if (event.target instanceof HTMLBodyElement && event.key && shortcutKey) {
56
58
  switch (event.key) {
@@ -76,13 +78,13 @@ const Button = ({ title, onClick, disabled, id, shortcutKey, type = ButtonType.B
76
78
  iconClassName += ` m-1`;
77
79
  }
78
80
  if (buttonStyle === ButtonStyleType.LINK) {
79
- buttonStyleCssClass = `text-indigo-600 hover:text-indigo-900 space-x-2`;
81
+ buttonStyleCssClass = `text-indigo-600 hover:text-indigo-900 space-x-2 focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 focus-visible:ring-offset-2`;
80
82
  if (icon) {
81
83
  buttonStyleCssClass += ` flex`;
82
84
  }
83
85
  }
84
86
  if (buttonStyle === ButtonStyleType.SECONDARY_LINK) {
85
- buttonStyleCssClass = `text-sm text-gray-400 hover:text-gray-500 space-x-2`;
87
+ buttonStyleCssClass = `text-sm text-gray-400 hover:text-gray-500 space-x-2 focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 focus-visible:ring-offset-2`;
86
88
  if (icon) {
87
89
  buttonStyleCssClass += ` flex`;
88
90
  }
@@ -134,6 +136,12 @@ const Button = ({ title, onClick, disabled, id, shortcutKey, type = ButtonType.B
134
136
  if (buttonStyle === ButtonStyleType.WARNING_OUTLINE) {
135
137
  buttonStyleCssClass = `inline-flex w-full justify-center rounded-md border border-yellow-700 bg-white text-base font-medium text-yellow-700 shadow-sm ${disabled ? "" : "hover:bg-yellow-50"} focus:outline-none focus:ring-2 focus:ring-yellow-500 focus:ring-offset-2 md:mt-0 md:ml-3 md:w-auto md:text-sm`;
136
138
  }
139
+ /*
140
+ * The one shared point every variant funnels through: hover/focus colour
141
+ * changes ease in instead of snapping, at the same 150ms the other
142
+ * primitives use.
143
+ */
144
+ buttonStyleCssClass += ` transition-colors duration-150 ease-out`;
137
145
  buttonStyleCssClass += ` ` + buttonSize;
138
146
  if (className) {
139
147
  buttonStyleCssClass += ` ` + className;
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../../../UI/Components/Button/Button.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../../../UI/Components/Button/Button.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
1
1
  import "highlight.js/styles/a11y-dark.css";
2
- import React, { useState } from "react";
3
- import Highlight from "react-highlight";
2
+ import React, { useMemo, useState, } from "react";
3
+ /*
4
+ * Trimmed highlight.js instance — lib/core plus only the languages CodeBlock
5
+ * callers actually pass (see the audit in LanguageRegistry.ts). Replaces
6
+ * react-highlight, which imported all 194 grammars (~1.5MB) eagerly.
7
+ */
8
+ import hljs, { resolveRegisteredLanguage } from "./LanguageRegistry";
4
9
  import Icon from "../Icon/Icon";
5
10
  import IconProp from "../../../Types/Icon/IconProp";
6
11
  const CodeBlock = (props) => {
@@ -18,11 +23,38 @@ const CodeBlock = (props) => {
18
23
  };
19
24
  const maxHeight = props.maxHeight || "500px";
20
25
  const showCopyButton = props.showCopyButton !== false;
26
+ /*
27
+ * react-highlight rendered <pre><code className>…</code></pre> and then ran
28
+ * hljs.highlightBlock over the DOM after mount (reading the language from
29
+ * the `language-*` class and adding the theme's `hljs` class). We keep that
30
+ * exact DOM shape but highlight synchronously: registered language → hljs
31
+ * token markup (hljs.highlight escapes the source before wrapping it in
32
+ * spans, so the HTML is safe to inject); unregistered language or a
33
+ * ReactElement child → plain React-escaped rendering. hljs is never called
34
+ * with an unknown language, so it never logs lookup warnings.
35
+ */
36
+ const registeredLanguage = typeof props.code === "string"
37
+ ? resolveRegisteredLanguage(props.language)
38
+ : null;
39
+ const highlightedHtml = useMemo(() => {
40
+ if (typeof props.code !== "string" || !registeredLanguage) {
41
+ return null;
42
+ }
43
+ return hljs.highlight(props.code, {
44
+ language: registeredLanguage,
45
+ ignoreIllegals: true,
46
+ }).value;
47
+ }, [props.code, registeredLanguage]);
48
+ /*
49
+ * `hljs` carries the a11y-dark theme background; react-highlight added it
50
+ * post-mount, we add it up front so there is no unstyled first paint.
51
+ */
52
+ const codeClassName = `hljs p-4 language-${props.language} text-sm leading-relaxed`;
21
53
  return (React.createElement("div", { className: "relative group" },
22
54
  showCopyButton && typeof props.code === "string" && (React.createElement("button", { onClick: handleCopy, className: "absolute top-2 right-2 p-2 rounded-md bg-gray-700 hover:bg-gray-600 text-gray-300 hover:text-white transition-all opacity-70 hover:opacity-100 focus-visible:opacity-100 group-hover:opacity-100 z-10", title: copied ? "Copied!" : "Copy to clipboard", "aria-label": copied ? "Copied" : "Copy to clipboard", type: "button" },
23
55
  React.createElement(Icon, { icon: copied ? IconProp.Check : IconProp.Copy, className: "h-4 w-4" }))),
24
56
  React.createElement("div", { className: "overflow-auto rounded-lg border border-gray-700", style: { maxHeight: maxHeight } },
25
- React.createElement(Highlight, { className: `p-4 language-${props.language} text-sm leading-relaxed` }, props.code))));
57
+ React.createElement("pre", null, highlightedHtml !== null ? (React.createElement("code", { className: codeClassName, dangerouslySetInnerHTML: { __html: highlightedHtml } })) : (React.createElement("code", { className: codeClassName }, props.code))))));
26
58
  };
27
59
  export default CodeBlock;
28
60
  //# sourceMappingURL=CodeBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodeBlock.js","sourceRoot":"","sources":["../../../../../UI/Components/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,EAAmC,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzE,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,IAAI,MAAM,cAAc,CAAC;AAChC,OAAO,QAAQ,MAAM,8BAA8B,CAAC;AASpD,MAAM,SAAS,GAAsC,CACnD,KAAqB,EACP,EAAE;IAChB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAErD,MAAM,UAAU,GAAe,GAAS,EAAE;QACxC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnD,6BAA6B;YAC/B,CAAC,CAAC,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,UAAU,CAAC,GAAG,EAAE;gBACd,SAAS,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAW,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC;IACrD,MAAM,cAAc,GAAY,KAAK,CAAC,cAAc,KAAK,KAAK,CAAC;IAE/D,OAAO,CACL,6BAAK,SAAS,EAAC,gBAAgB;QAC5B,cAAc,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CACnD,gCACE,OAAO,EAAE,UAAU,EACnB,SAAS,EAAC,uMAAuM,EACjN,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,gBACnC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,EACnD,IAAI,EAAC,QAAQ;YAEb,oBAAC,IAAI,IACH,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAC7C,SAAS,EAAC,SAAS,GACnB,CACK,CACV;QACD,6BACE,SAAS,EAAC,iDAAiD,EAC3D,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;YAE/B,oBAAC,SAAS,IACR,SAAS,EAAE,gBAAgB,KAAK,CAAC,QAAQ,0BAA0B,IAElE,KAAK,CAAC,IAAI,CACD,CACR,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"CodeBlock.js","sourceRoot":"","sources":["../../../../../UI/Components/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import hljs from "highlight.js/lib/core";
2
+ import bash from "highlight.js/lib/languages/bash";
3
+ import cpp from "highlight.js/lib/languages/cpp";
4
+ import csharp from "highlight.js/lib/languages/csharp";
5
+ import css from "highlight.js/lib/languages/css";
6
+ import dockerfile from "highlight.js/lib/languages/dockerfile";
7
+ import elixir from "highlight.js/lib/languages/elixir";
8
+ import go from "highlight.js/lib/languages/go";
9
+ import javascript from "highlight.js/lib/languages/javascript";
10
+ import json from "highlight.js/lib/languages/json";
11
+ import markdown from "highlight.js/lib/languages/markdown";
12
+ import php from "highlight.js/lib/languages/php";
13
+ import plaintext from "highlight.js/lib/languages/plaintext";
14
+ import python from "highlight.js/lib/languages/python";
15
+ import ruby from "highlight.js/lib/languages/ruby";
16
+ import rust from "highlight.js/lib/languages/rust";
17
+ import shell from "highlight.js/lib/languages/shell";
18
+ import sql from "highlight.js/lib/languages/sql";
19
+ import swift from "highlight.js/lib/languages/swift";
20
+ import typescript from "highlight.js/lib/languages/typescript";
21
+ import xml from "highlight.js/lib/languages/xml";
22
+ import yaml from "highlight.js/lib/languages/yaml";
23
+ hljs.registerLanguage("bash", bash);
24
+ hljs.registerLanguage("cpp", cpp);
25
+ hljs.registerLanguage("csharp", csharp);
26
+ hljs.registerLanguage("css", css);
27
+ hljs.registerLanguage("dockerfile", dockerfile);
28
+ hljs.registerLanguage("elixir", elixir);
29
+ hljs.registerLanguage("go", go);
30
+ hljs.registerLanguage("javascript", javascript);
31
+ hljs.registerLanguage("json", json);
32
+ hljs.registerLanguage("markdown", markdown);
33
+ hljs.registerLanguage("php", php);
34
+ hljs.registerLanguage("plaintext", plaintext);
35
+ hljs.registerLanguage("python", python);
36
+ hljs.registerLanguage("ruby", ruby);
37
+ hljs.registerLanguage("rust", rust);
38
+ hljs.registerLanguage("shell", shell);
39
+ hljs.registerLanguage("sql", sql);
40
+ hljs.registerLanguage("swift", swift);
41
+ hljs.registerLanguage("typescript", typescript);
42
+ hljs.registerLanguage("xml", xml);
43
+ hljs.registerLanguage("yaml", yaml);
44
+ /*
45
+ * Maps a caller-supplied language string to a name highlight.js can actually
46
+ * highlight with, or null when the language (or one of its aliases) is not
47
+ * registered above. Callers must treat null as "render plain text".
48
+ */
49
+ export const resolveRegisteredLanguage = (language) => {
50
+ const normalized = language.trim().toLowerCase();
51
+ if (!normalized) {
52
+ return null;
53
+ }
54
+ return hljs.getLanguage(normalized) ? normalized : null;
55
+ };
56
+ export default hljs;
57
+ //# sourceMappingURL=LanguageRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageRegistry.js","sourceRoot":"","sources":["../../../../../UI/Components/CodeBlock/LanguageRegistry.ts"],"names":[],"mappings":"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"}