@oneuptime/common 14.0.7 → 14.0.8

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 (440) hide show
  1. package/Models/DatabaseModels/Incident.ts +267 -1
  2. package/Models/DatabaseModels/IncidentCustomField.ts +202 -0
  3. package/Models/DatabaseModels/IncidentEpisode.ts +30 -0
  4. package/Models/DatabaseModels/IncidentTemplate.ts +126 -1
  5. package/Models/DatabaseModels/StatusPage.ts +55 -0
  6. package/Models/DatabaseModels/StatusPageSubscriber.ts +128 -0
  7. package/Server/API/IncidentAPI.ts +162 -0
  8. package/Server/API/StatusPageAPI.ts +487 -171
  9. package/Server/API/StatusPageSubscriberAPI.ts +63 -15
  10. package/Server/Infrastructure/Postgres/SchemaMigrations/1795300000000-SkipHiddenIncidentCreatedNotifications.ts +49 -0
  11. package/Server/Infrastructure/Postgres/SchemaMigrations/1795400000000-AddIncidentStatusPageScope.ts +108 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1795500000000-AddIncidentTemplateStatusPageScopeFlag.ts +33 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1795600000000-AddStatusPageSubscriberUnsubscribeToken.ts +51 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1795700000000-AddStatusPageSubscriberIsAddedByTeam.ts +33 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1795800000000-AddIncidentCustomFieldCreateAndNotificationSettings.ts +168 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/1795900000000-AddSubscriberNotificationClaimedAt.ts +44 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +14 -0
  18. package/Server/Infrastructure/Semaphore.ts +10 -0
  19. package/Server/Middleware/IdentityRateLimit.ts +108 -3
  20. package/Server/Middleware/SubscriberNotificationPreviewRateLimit.ts +237 -0
  21. package/Server/Middleware/SubscriberNotificationTestSendRateLimit.ts +304 -0
  22. package/Server/Services/DatabaseService.ts +93 -10
  23. package/Server/Services/IncidentCustomFieldService.ts +276 -1
  24. package/Server/Services/IncidentEpisodePublicNoteService.ts +28 -0
  25. package/Server/Services/IncidentEpisodeService.ts +15 -0
  26. package/Server/Services/IncidentEpisodeStateTimelineService.ts +27 -1
  27. package/Server/Services/IncidentPublicNoteService.ts +30 -1
  28. package/Server/Services/IncidentService.ts +1535 -65
  29. package/Server/Services/IncidentStateTimelineService.ts +13 -0
  30. package/Server/Services/IncidentTemplateService.ts +109 -0
  31. package/Server/Services/ScheduledMaintenancePublicNoteService.ts +30 -1
  32. package/Server/Services/ScheduledMaintenanceService.ts +68 -18
  33. package/Server/Services/SmsService.ts +10 -0
  34. package/Server/Services/StatusPageService.ts +65 -8
  35. package/Server/Services/StatusPageSubscriberNotificationTemplateService.ts +299 -37
  36. package/Server/Services/StatusPageSubscriberNotificationTemplateStatusPageService.ts +129 -0
  37. package/Server/Services/StatusPageSubscriberService.ts +1161 -64
  38. package/Server/Types/Markdown.ts +153 -6
  39. package/Server/Types/Workflow/Components/Email.ts +61 -2
  40. package/Server/Utils/CustomField/CustomFieldRename.ts +378 -0
  41. package/Server/Utils/DataSource/EgressGuard.ts +66 -21
  42. package/Server/Utils/Mail/PinnedSmtpSocket.ts +130 -0
  43. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +10 -0
  44. package/Server/Utils/SSRFProtection.ts +76 -16
  45. package/Server/Utils/StatusPage/IncidentStatusPageScope.ts +948 -0
  46. package/Server/Utils/StatusPage/IncidentSubscriberAudienceBuilder.ts +656 -0
  47. package/Server/Utils/StatusPage/IncidentTemplateVariableBuilder.ts +805 -0
  48. package/Server/Utils/StatusPage/StatusPageExclusion.ts +18 -0
  49. package/Server/Utils/StatusPage/StatusPageReadAccess.ts +125 -0
  50. package/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeNotice.ts +151 -0
  51. package/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeToken.ts +70 -0
  52. package/Server/Utils/StatusPage/SubscriberIncidentEmailBuilder.ts +421 -0
  53. package/Server/Utils/StatusPage/SubscriberNotificationClaim.ts +107 -0
  54. package/Server/Utils/StatusPage/SubscriberNotificationDeliveryRecord.ts +1049 -0
  55. package/Server/Utils/StatusPage/SubscriberNotificationFanOut.ts +180 -0
  56. package/Server/Utils/StatusPage/SubscriberNotificationPreviewBuilder.ts +839 -0
  57. package/Server/Utils/StatusPage/SubscriberNotificationResendAccess.ts +393 -0
  58. package/Server/Utils/StatusPage/SubscriberNotificationRunLimit.ts +246 -0
  59. package/Server/Utils/StatusPage/SubscriberNotificationTiming.ts +133 -0
  60. package/Server/Utils/StatusPage/SubscriberTemplateIncidentRecordAccess.ts +215 -0
  61. package/Server/Utils/StatusPageResource.ts +51 -20
  62. package/Server/Utils/VM/VMAPI.ts +1 -0
  63. package/Server/Utils/VM/VMRunner.ts +10 -0
  64. package/Server/Utils/Workflow/OAuth2TokenClient.ts +10 -0
  65. package/Server/Views/Partials/SensitiveUrlToken.ejs +8 -5
  66. package/Tests/App/Accounts/RegisterVerifyEmail.test.tsx +748 -0
  67. package/Tests/App/Accounts/ResendVerificationEmail.test.tsx +1222 -0
  68. package/Tests/App/Accounts/VerificationEmailResendUtils.test.ts +797 -0
  69. package/Tests/App/Accounts/VerifyEmailPending.test.tsx +538 -0
  70. package/Tests/App/Accounts/VerifyEmailResend.test.tsx +779 -0
  71. package/Tests/App/Dashboard/CustomFieldsSettingsIncidentOptions.test.tsx +357 -0
  72. package/Tests/App/Dashboard/EventNotes.test.tsx +776 -0
  73. package/Tests/App/Dashboard/EventNotesPages.test.tsx +119 -0
  74. package/Tests/App/Dashboard/EventNotesUtil.test.ts +116 -17
  75. package/Tests/App/Dashboard/EventOverviewPages.test.tsx +242 -5
  76. package/Tests/App/Dashboard/IncidentChangeStateNotifyDefault.test.tsx +91 -1
  77. package/Tests/App/Dashboard/IncidentCreateDetailsStep.test.tsx +643 -0
  78. package/Tests/App/Dashboard/IncidentCreateFromAlerts.test.tsx +8 -1
  79. package/Tests/App/Dashboard/IncidentCreateStatusPageScope.test.tsx +601 -0
  80. package/Tests/App/Dashboard/IncidentCustomFieldTemplateVariables.test.tsx +386 -0
  81. package/Tests/App/Dashboard/IncidentNoteTemplatePlaceholders.test.tsx +124 -0
  82. package/Tests/App/Dashboard/IncidentNoteTemplateVariablesLoader.test.ts +305 -0
  83. package/Tests/App/Dashboard/IncidentOverviewNotifyDefault.test.tsx +112 -0
  84. package/Tests/App/Dashboard/IncidentSettingsRenotifyOnPublish.test.tsx +674 -0
  85. package/Tests/App/Dashboard/IncidentSettingsStatusPageScope.test.tsx +1051 -0
  86. package/Tests/App/Dashboard/IncidentTemplateCustomFields.test.tsx +384 -0
  87. package/Tests/App/Dashboard/IncidentTemplateStatusPageScopeCard.test.tsx +215 -0
  88. package/Tests/App/Dashboard/PublicNotePagesNotifyDefault.test.tsx +113 -1
  89. package/Tests/App/Dashboard/SubscriberAudienceSummary.test.tsx +512 -0
  90. package/Tests/App/Dashboard/SubscriberNotificationPreviewModal.test.tsx +837 -0
  91. package/Tests/App/Dashboard/SubscriberNotificationStatusLabel.test.tsx +88 -0
  92. package/Tests/App/Dashboard/SubscriberNotificationStatusResend.test.tsx +473 -0
  93. package/Tests/App/Dashboard/SubscriberTemplateLivePreview.test.tsx +196 -0
  94. package/Tests/App/Dashboard/TeamAddedSubscribersUnsubscribedNotice.test.tsx +248 -0
  95. package/Tests/App/SensitiveUrlTokenBootstrap.test.ts +64 -3
  96. package/Tests/App/StatusPage/StatusPageUnsubscribePage.test.tsx +412 -0
  97. package/Tests/Models/IncidentCustomFieldApiSchemaContract.test.ts +217 -0
  98. package/Tests/Models/IncidentCustomFieldCreateSettingsColumns.test.ts +252 -0
  99. package/Tests/Models/StatusPageSubscriberUnsubscribeColumns.test.ts +218 -0
  100. package/Tests/Server/API/ExpiredSessionRouteGuards.test.ts +7 -0
  101. package/Tests/Server/API/IncidentSubscriberAudienceAPI.test.ts +1408 -0
  102. package/Tests/Server/API/StatusPageIncidentScope.test.ts +1868 -0
  103. package/Tests/Server/API/StatusPageIncidentScopePostgres.test.ts +790 -0
  104. package/Tests/Server/API/StatusPageManageSubscriptionRecipient.test.ts +10 -1
  105. package/Tests/Server/API/StatusPageManageSubscriptionTemplateVariables.test.ts +206 -18
  106. package/Tests/Server/API/StatusPagePostmortemVisibility.test.ts +14 -2
  107. package/Tests/Server/API/StatusPageSubscriberCreateResponse.test.ts +217 -0
  108. package/Tests/Server/API/StatusPageSubscriberOwnership.test.ts +103 -2
  109. package/Tests/Server/API/StatusPageUnsubscribeAPI.test.ts +396 -0
  110. package/Tests/Server/Infrastructure/Postgres/AddIncidentStatusPageScopeMigration.test.ts +395 -0
  111. package/Tests/Server/Infrastructure/Postgres/AddIncidentTemplateStatusPageScopeFlagMigration.test.ts +150 -0
  112. package/Tests/Server/Infrastructure/Postgres/AddSubscriberNotificationClaimedAtMigration.test.ts +156 -0
  113. package/Tests/Server/Infrastructure/Postgres/SkipHiddenIncidentCreatedNotificationsMigration.test.ts +410 -0
  114. package/Tests/Server/Middleware/IdentityRateLimit.test.ts +551 -1
  115. package/Tests/Server/Middleware/SubscriberNotificationPreviewRateLimit.test.ts +238 -0
  116. package/Tests/Server/Middleware/SubscriberNotificationTestSendRateLimit.test.ts +245 -0
  117. package/Tests/Server/Services/AddStatusPageSubscriberUnsubscribeTokenMigration.test.ts +152 -0
  118. package/Tests/Server/Services/CrossProjectRelationWriteGuard.test.ts +221 -36
  119. package/Tests/Server/Services/DatabaseServiceCompareAndSetColumns.test.ts +191 -0
  120. package/Tests/Server/Services/IncidentCreatedRenotifyOnPublish.test.ts +681 -0
  121. package/Tests/Server/Services/IncidentCreatedResend.test.ts +775 -0
  122. package/Tests/Server/Services/IncidentCustomFieldRenamePostgres.test.ts +713 -0
  123. package/Tests/Server/Services/IncidentCustomFieldService.test.ts +751 -0
  124. package/Tests/Server/Services/IncidentCustomFieldValueValidation.test.ts +556 -0
  125. package/Tests/Server/Services/IncidentStatusPageScope.test.ts +2971 -0
  126. package/Tests/Server/Services/IncidentStatusPageScopeFeed.test.ts +131 -0
  127. package/Tests/Server/Services/IncidentStatusPageScopePostgres.test.ts +625 -0
  128. package/Tests/Server/Services/IncidentTemplateCustomFieldsCopy.test.ts +311 -0
  129. package/Tests/Server/Services/IncidentTemplateStatusPageScope.test.ts +363 -0
  130. package/Tests/Server/Services/PublicNoteEditFeedEventType.test.ts +213 -0
  131. package/Tests/Server/Services/PublicNoteResendAccess.test.ts +994 -0
  132. package/Tests/Server/Services/ScheduledMaintenanceSubscriberTemplateFormats.test.ts +289 -9
  133. package/Tests/Server/Services/SmsServiceFailIfNotSent.test.ts +67 -0
  134. package/Tests/Server/Services/StatusPageReportIncidentCounts.test.ts +610 -0
  135. package/Tests/Server/Services/StatusPageSubscriberAudienceCounts.test.ts +201 -0
  136. package/Tests/Server/Services/StatusPageSubscriberAudienceCountsPostgres.test.ts +271 -0
  137. package/Tests/Server/Services/StatusPageSubscriberConfirmationTemplateEscaping.test.ts +200 -0
  138. package/Tests/Server/Services/StatusPageSubscriberNotificationLogRedaction.test.ts +54 -0
  139. package/Tests/Server/Services/StatusPageSubscriberNotificationTemplateCompile.test.ts +37 -0
  140. package/Tests/Server/Services/StatusPageSubscriberNotificationTemplateIncidentRecordAccess.test.ts +772 -0
  141. package/Tests/Server/Services/StatusPageSubscriberNotificationTemplateLookup.test.ts +506 -0
  142. package/Tests/Server/Services/StatusPageSubscriberNotificationTemplateLookupPostgres.test.ts +261 -0
  143. package/Tests/Server/Services/StatusPageSubscriberReport.test.ts +21 -5
  144. package/Tests/Server/Services/StatusPageSubscriberUnsubscribe.test.ts +1618 -0
  145. package/Tests/Server/Services/StatusPageSubscriberUnsubscribeLinkSenders.test.ts +373 -0
  146. package/Tests/Server/Services/StatusPageSubscriberUnsubscribePostgres.test.ts +388 -0
  147. package/Tests/Server/Services/SubscriberNotificationInFlightRequeue.test.ts +500 -0
  148. package/Tests/Server/Types/MarkdownEmailLinks.test.ts +320 -0
  149. package/Tests/Server/Types/Workflow/Components/Email.test.ts +491 -1
  150. package/Tests/Server/Types/Workflow/Components/EmailSmtpPinning.test.ts +398 -0
  151. package/Tests/Server/Utils/CustomField/CustomFieldRename.test.ts +586 -0
  152. package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +246 -10
  153. package/Tests/Server/Utils/DataSource/EgressGuardDeploymentConfig.test.ts +226 -0
  154. package/Tests/Server/Utils/DataSource/EgressGuardPinning.test.ts +131 -0
  155. package/Tests/Server/Utils/DataSource/HttpFetch.test.ts +4 -0
  156. package/Tests/Server/Utils/EgressPolicyEnvironment.ts +45 -0
  157. package/Tests/Server/Utils/Mail/PinnedSmtpSocket.test.ts +409 -0
  158. package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +23 -0
  159. package/Tests/Server/Utils/SSRFProtection.test.ts +4 -0
  160. package/Tests/Server/Utils/SSRFProtectionCloudServiceAddresses.test.ts +4 -0
  161. package/Tests/Server/Utils/SSRFProtectionPrivateNetwork.test.ts +4 -0
  162. package/Tests/Server/Utils/SSRFProtectionResolutionDetail.test.ts +314 -0
  163. package/Tests/Server/Utils/StatusPage/IncidentStatusPageScope.test.ts +1699 -0
  164. package/Tests/Server/Utils/StatusPage/IncidentStatusPageScopeQueriesPostgres.test.ts +508 -0
  165. package/Tests/Server/Utils/StatusPage/IncidentSubscriberAudienceCallerPermission.test.ts +246 -0
  166. package/Tests/Server/Utils/StatusPage/IncidentTemplateVariableBuilder.test.ts +1348 -0
  167. package/Tests/Server/Utils/StatusPage/StatusPageReadAccess.test.ts +221 -0
  168. package/Tests/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeNotice.test.ts +132 -0
  169. package/Tests/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeToken.test.ts +155 -0
  170. package/Tests/Server/Utils/StatusPage/SubscriberIncidentEmailBuilder.test.ts +708 -0
  171. package/Tests/Server/Utils/StatusPage/SubscriberNotificationClaim.test.ts +255 -0
  172. package/Tests/Server/Utils/StatusPage/SubscriberNotificationClaimPostgres.test.ts +528 -0
  173. package/Tests/Server/Utils/StatusPage/SubscriberNotificationDeliveryRecord.test.ts +1238 -0
  174. package/Tests/Server/Utils/StatusPage/SubscriberNotificationFanOut.test.ts +472 -0
  175. package/Tests/Server/Utils/StatusPage/SubscriberNotificationPreviewBuilder.test.ts +1168 -0
  176. package/Tests/Server/Utils/StatusPage/SubscriberNotificationRunLimit.test.ts +275 -0
  177. package/Tests/Server/Utils/StatusPage/SubscriberNotificationTiming.test.ts +131 -0
  178. package/Tests/Server/Utils/StatusPageResource.test.ts +98 -0
  179. package/Tests/Server/Utils/VM/VMRunnerPrivateNetworkWiring.test.ts +17 -0
  180. package/Tests/Server/Utils/VM/VMRunnerSsrf.test.ts +75 -0
  181. package/Tests/Types/CustomField/CustomFieldSavedViews.test.ts +247 -0
  182. package/Tests/Types/CustomField/CustomFieldTemplateValues.test.ts +186 -0
  183. package/Tests/Types/CustomField/CustomFieldTypeCorrespondence.test.ts +48 -0
  184. package/Tests/Types/CustomField/CustomFieldValueFormat.test.ts +215 -0
  185. package/Tests/Types/CustomField/CustomFieldValueValidator.test.ts +343 -0
  186. package/Tests/Types/CustomField/CustomFieldVariableKey.test.ts +364 -0
  187. package/Tests/Types/SafeHtml.test.ts +102 -0
  188. package/Tests/Types/StatusPage/IncidentCreatedRenotify.test.ts +419 -0
  189. package/Tests/Types/StatusPage/IncidentCreatedResend.test.ts +118 -0
  190. package/Tests/Types/StatusPage/IncidentScopeAddedPagesNotification.test.ts +558 -0
  191. package/Tests/Types/StatusPage/IncidentSubscriberAudience.test.ts +284 -0
  192. package/Tests/Types/StatusPage/StatusPageSubscriberUnsubscribe.test.ts +341 -0
  193. package/Tests/Types/StatusPage/SubscriberNotificationPreview.test.ts +196 -0
  194. package/Tests/Types/StatusPage/SubscriberNotificationResend.test.ts +201 -0
  195. package/Tests/Types/StatusPage/SubscriberNotificationTemplateCompiler.test.ts +277 -0
  196. package/Tests/Types/StatusPage/SubscriberNotificationTemplatePreview.test.ts +179 -0
  197. package/Tests/Types/StatusPage/SubscriberNotificationTemplateVariables.test.ts +324 -0
  198. package/Tests/Types/StatusPage/SubscriberUpdateNotification.test.ts +60 -13
  199. package/Tests/UI/Components/CustomFields/CustomFieldFormFields.test.ts +432 -0
  200. package/Tests/UI/Components/CustomFields/CustomFieldModelFormFields.test.tsx +685 -0
  201. package/Tests/UI/Components/CustomFields/CustomFieldsDetailOrder.test.tsx +469 -0
  202. package/Tests/UI/Components/Forms/ModelFormCustomFieldInputs.test.tsx +325 -0
  203. package/Tests/UI/Components/Forms/ModelFormDropdownOptionsRefused.test.tsx +358 -0
  204. package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +22 -0
  205. package/Tests/UI/Monitor/NetworkPathView.test.tsx +289 -0
  206. package/Tests/Utils/Incident/IncidentNoteTemplateVariables.test.ts +623 -0
  207. package/Tests/Utils/Markdown/MarkdownEscape.test.ts +89 -0
  208. package/Tests/Utils/ProbeNetworkFailureUtil.test.ts +992 -0
  209. package/Tests/Utils/RequestFailedDetails.test.ts +575 -0
  210. package/Types/CustomField/CustomFieldOrder.ts +55 -0
  211. package/Types/CustomField/CustomFieldSavedViews.ts +225 -0
  212. package/Types/CustomField/CustomFieldTemplateMerge.ts +71 -0
  213. package/Types/CustomField/CustomFieldType.ts +14 -0
  214. package/Types/CustomField/CustomFieldValueFormat.ts +161 -0
  215. package/Types/CustomField/CustomFieldValueValidator.ts +488 -0
  216. package/Types/CustomField/CustomFieldVariableKey.ts +211 -0
  217. package/Types/SafeHtml.ts +93 -0
  218. package/Types/StatusPage/IncidentCreatedRenotify.ts +224 -0
  219. package/Types/StatusPage/IncidentCreatedResend.ts +108 -0
  220. package/Types/StatusPage/IncidentScopeAddedPagesNotification.ts +343 -0
  221. package/Types/StatusPage/IncidentSubscriberAudience.ts +332 -0
  222. package/Types/StatusPage/StatusPageSubscriberUnsubscribe.ts +405 -0
  223. package/Types/StatusPage/SubscriberNotificationInterruption.ts +32 -0
  224. package/Types/StatusPage/SubscriberNotificationPreview.ts +322 -0
  225. package/Types/StatusPage/SubscriberNotificationResend.ts +132 -0
  226. package/Types/StatusPage/SubscriberNotificationTemplateCompiler.ts +180 -0
  227. package/Types/StatusPage/SubscriberNotificationTemplatePreview.ts +301 -0
  228. package/Types/StatusPage/SubscriberNotificationTemplateVariables.ts +217 -4
  229. package/Types/StatusPage/SubscriberUpdateNotification.ts +32 -11
  230. package/UI/Components/CustomFields/CustomFieldFormFields.ts +317 -0
  231. package/UI/Components/CustomFields/CustomFieldModelFormFields.tsx +395 -0
  232. package/UI/Components/CustomFields/CustomFieldsDetail.tsx +95 -55
  233. package/UI/Components/Forms/ModelForm.tsx +70 -8
  234. package/UI/Components/Forms/Validation.ts +1 -1
  235. package/UI/Components/ModelFormModal/ModelFormModal.tsx +2 -4
  236. package/UI/Components/ModelTable/AnalyticsModelTable.tsx +2 -6
  237. package/UI/Components/ModelTable/BaseModelTable.tsx +9 -8
  238. package/UI/Components/ModelTable/CustomFieldColumns.tsx +14 -1
  239. package/UI/Components/ModelTable/ModelTable.tsx +6 -7
  240. package/UI/Utils/SensitiveUrlToken.ts +10 -5
  241. package/Utils/API.ts +247 -2
  242. package/Utils/Incident/IncidentNoteTemplateVariables.ts +304 -0
  243. package/Utils/Markdown/MarkdownEscape.ts +65 -0
  244. package/Utils/ProbeNetworkFailureUtil.ts +673 -0
  245. package/build/dist/Models/DatabaseModels/Incident.js +267 -1
  246. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  247. package/build/dist/Models/DatabaseModels/IncidentCustomField.js +207 -1
  248. package/build/dist/Models/DatabaseModels/IncidentCustomField.js.map +1 -1
  249. package/build/dist/Models/DatabaseModels/IncidentEpisode.js +31 -0
  250. package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -1
  251. package/build/dist/Models/DatabaseModels/IncidentTemplate.js +124 -1
  252. package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
  253. package/build/dist/Models/DatabaseModels/StatusPage.js +56 -0
  254. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  255. package/build/dist/Models/DatabaseModels/StatusPageSubscriber.js +131 -0
  256. package/build/dist/Models/DatabaseModels/StatusPageSubscriber.js.map +1 -1
  257. package/build/dist/Server/API/IncidentAPI.js +100 -1
  258. package/build/dist/Server/API/IncidentAPI.js.map +1 -1
  259. package/build/dist/Server/API/StatusPageAPI.js +417 -176
  260. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  261. package/build/dist/Server/API/StatusPageSubscriberAPI.js +52 -13
  262. package/build/dist/Server/API/StatusPageSubscriberAPI.js.map +1 -1
  263. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795300000000-SkipHiddenIncidentCreatedNotifications.js +41 -0
  264. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795300000000-SkipHiddenIncidentCreatedNotifications.js.map +1 -0
  265. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795400000000-AddIncidentStatusPageScope.js +57 -0
  266. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795400000000-AddIncidentStatusPageScope.js.map +1 -0
  267. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795500000000-AddIncidentTemplateStatusPageScopeFlag.js +23 -0
  268. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795500000000-AddIncidentTemplateStatusPageScopeFlag.js.map +1 -0
  269. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795600000000-AddStatusPageSubscriberUnsubscribeToken.js +40 -0
  270. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795600000000-AddStatusPageSubscriberUnsubscribeToken.js.map +1 -0
  271. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795700000000-AddStatusPageSubscriberIsAddedByTeam.js +26 -0
  272. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795700000000-AddStatusPageSubscriberIsAddedByTeam.js.map +1 -0
  273. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795800000000-AddIncidentCustomFieldCreateAndNotificationSettings.js +89 -0
  274. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795800000000-AddIncidentCustomFieldCreateAndNotificationSettings.js.map +1 -0
  275. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795900000000-AddSubscriberNotificationClaimedAt.js +29 -0
  276. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795900000000-AddSubscriberNotificationClaimedAt.js.map +1 -0
  277. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +14 -0
  278. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  279. package/build/dist/Server/Infrastructure/Semaphore.js +3 -0
  280. package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
  281. package/build/dist/Server/Middleware/IdentityRateLimit.js +89 -3
  282. package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
  283. package/build/dist/Server/Middleware/SubscriberNotificationPreviewRateLimit.js +149 -0
  284. package/build/dist/Server/Middleware/SubscriberNotificationPreviewRateLimit.js.map +1 -0
  285. package/build/dist/Server/Middleware/SubscriberNotificationTestSendRateLimit.js +190 -0
  286. package/build/dist/Server/Middleware/SubscriberNotificationTestSendRateLimit.js.map +1 -0
  287. package/build/dist/Server/Services/DatabaseService.js +56 -7
  288. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  289. package/build/dist/Server/Services/IncidentCustomFieldService.js +204 -8
  290. package/build/dist/Server/Services/IncidentCustomFieldService.js.map +1 -1
  291. package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js +24 -0
  292. package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js.map +1 -1
  293. package/build/dist/Server/Services/IncidentEpisodeService.js +14 -0
  294. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
  295. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js +26 -0
  296. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js.map +1 -1
  297. package/build/dist/Server/Services/IncidentPublicNoteService.js +26 -1
  298. package/build/dist/Server/Services/IncidentPublicNoteService.js.map +1 -1
  299. package/build/dist/Server/Services/IncidentService.js +1052 -0
  300. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  301. package/build/dist/Server/Services/IncidentStateTimelineService.js +12 -0
  302. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  303. package/build/dist/Server/Services/IncidentTemplateService.js +83 -0
  304. package/build/dist/Server/Services/IncidentTemplateService.js.map +1 -1
  305. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js +26 -1
  306. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js.map +1 -1
  307. package/build/dist/Server/Services/ScheduledMaintenanceService.js +47 -17
  308. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  309. package/build/dist/Server/Services/SmsService.js +2 -22
  310. package/build/dist/Server/Services/SmsService.js.map +1 -1
  311. package/build/dist/Server/Services/StatusPageService.js +47 -9
  312. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  313. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js +237 -32
  314. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js.map +1 -1
  315. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateStatusPageService.js +109 -0
  316. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateStatusPageService.js.map +1 -1
  317. package/build/dist/Server/Services/StatusPageSubscriberService.js +925 -99
  318. package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
  319. package/build/dist/Server/Types/Markdown.js +110 -6
  320. package/build/dist/Server/Types/Markdown.js.map +1 -1
  321. package/build/dist/Server/Types/Workflow/Components/Email.js +55 -6
  322. package/build/dist/Server/Types/Workflow/Components/Email.js.map +1 -1
  323. package/build/dist/Server/Utils/CustomField/CustomFieldRename.js +211 -0
  324. package/build/dist/Server/Utils/CustomField/CustomFieldRename.js.map +1 -0
  325. package/build/dist/Server/Utils/DataSource/EgressGuard.js +41 -12
  326. package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
  327. package/build/dist/Server/Utils/Mail/PinnedSmtpSocket.js +101 -0
  328. package/build/dist/Server/Utils/Mail/PinnedSmtpSocket.js.map +1 -0
  329. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +9 -0
  330. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
  331. package/build/dist/Server/Utils/SSRFProtection.js +48 -6
  332. package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
  333. package/build/dist/Server/Utils/StatusPage/IncidentStatusPageScope.js +631 -0
  334. package/build/dist/Server/Utils/StatusPage/IncidentStatusPageScope.js.map +1 -0
  335. package/build/dist/Server/Utils/StatusPage/IncidentSubscriberAudienceBuilder.js +403 -0
  336. package/build/dist/Server/Utils/StatusPage/IncidentSubscriberAudienceBuilder.js.map +1 -0
  337. package/build/dist/Server/Utils/StatusPage/IncidentTemplateVariableBuilder.js +451 -0
  338. package/build/dist/Server/Utils/StatusPage/IncidentTemplateVariableBuilder.js.map +1 -0
  339. package/build/dist/Server/Utils/StatusPage/StatusPageExclusion.js +13 -0
  340. package/build/dist/Server/Utils/StatusPage/StatusPageExclusion.js.map +1 -0
  341. package/build/dist/Server/Utils/StatusPage/StatusPageReadAccess.js +91 -0
  342. package/build/dist/Server/Utils/StatusPage/StatusPageReadAccess.js.map +1 -0
  343. package/build/dist/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeNotice.js +101 -0
  344. package/build/dist/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeNotice.js.map +1 -0
  345. package/build/dist/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeToken.js +47 -0
  346. package/build/dist/Server/Utils/StatusPage/StatusPageSubscriberUnsubscribeToken.js.map +1 -0
  347. package/build/dist/Server/Utils/StatusPage/SubscriberIncidentEmailBuilder.js +273 -0
  348. package/build/dist/Server/Utils/StatusPage/SubscriberIncidentEmailBuilder.js.map +1 -0
  349. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationClaim.js +73 -0
  350. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationClaim.js.map +1 -0
  351. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationDeliveryRecord.js +722 -0
  352. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationDeliveryRecord.js.map +1 -0
  353. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationFanOut.js +102 -0
  354. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationFanOut.js.map +1 -0
  355. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationPreviewBuilder.js +527 -0
  356. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationPreviewBuilder.js.map +1 -0
  357. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationResendAccess.js +278 -0
  358. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationResendAccess.js.map +1 -0
  359. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationRunLimit.js +137 -0
  360. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationRunLimit.js.map +1 -0
  361. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationTiming.js +103 -0
  362. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationTiming.js.map +1 -0
  363. package/build/dist/Server/Utils/StatusPage/SubscriberTemplateIncidentRecordAccess.js +114 -0
  364. package/build/dist/Server/Utils/StatusPage/SubscriberTemplateIncidentRecordAccess.js.map +1 -0
  365. package/build/dist/Server/Utils/StatusPageResource.js +39 -7
  366. package/build/dist/Server/Utils/StatusPageResource.js.map +1 -1
  367. package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
  368. package/build/dist/Server/Utils/VM/VMRunner.js +1 -0
  369. package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
  370. package/build/dist/Server/Utils/Workflow/OAuth2TokenClient.js +3 -0
  371. package/build/dist/Server/Utils/Workflow/OAuth2TokenClient.js.map +1 -1
  372. package/build/dist/Types/CustomField/CustomFieldOrder.js +36 -0
  373. package/build/dist/Types/CustomField/CustomFieldOrder.js.map +1 -0
  374. package/build/dist/Types/CustomField/CustomFieldSavedViews.js +135 -0
  375. package/build/dist/Types/CustomField/CustomFieldSavedViews.js.map +1 -0
  376. package/build/dist/Types/CustomField/CustomFieldTemplateMerge.js +27 -0
  377. package/build/dist/Types/CustomField/CustomFieldTemplateMerge.js.map +1 -0
  378. package/build/dist/Types/CustomField/CustomFieldType.js +12 -0
  379. package/build/dist/Types/CustomField/CustomFieldType.js.map +1 -1
  380. package/build/dist/Types/CustomField/CustomFieldValueFormat.js +126 -0
  381. package/build/dist/Types/CustomField/CustomFieldValueFormat.js.map +1 -0
  382. package/build/dist/Types/CustomField/CustomFieldValueValidator.js +280 -0
  383. package/build/dist/Types/CustomField/CustomFieldValueValidator.js.map +1 -0
  384. package/build/dist/Types/CustomField/CustomFieldVariableKey.js +150 -0
  385. package/build/dist/Types/CustomField/CustomFieldVariableKey.js.map +1 -0
  386. package/build/dist/Types/SafeHtml.js +84 -0
  387. package/build/dist/Types/SafeHtml.js.map +1 -0
  388. package/build/dist/Types/StatusPage/IncidentCreatedRenotify.js +117 -0
  389. package/build/dist/Types/StatusPage/IncidentCreatedRenotify.js.map +1 -0
  390. package/build/dist/Types/StatusPage/IncidentCreatedResend.js +86 -0
  391. package/build/dist/Types/StatusPage/IncidentCreatedResend.js.map +1 -0
  392. package/build/dist/Types/StatusPage/IncidentScopeAddedPagesNotification.js +246 -0
  393. package/build/dist/Types/StatusPage/IncidentScopeAddedPagesNotification.js.map +1 -0
  394. package/build/dist/Types/StatusPage/IncidentSubscriberAudience.js +183 -0
  395. package/build/dist/Types/StatusPage/IncidentSubscriberAudience.js.map +1 -0
  396. package/build/dist/Types/StatusPage/StatusPageSubscriberUnsubscribe.js +277 -0
  397. package/build/dist/Types/StatusPage/StatusPageSubscriberUnsubscribe.js.map +1 -0
  398. package/build/dist/Types/StatusPage/SubscriberNotificationInterruption.js +27 -0
  399. package/build/dist/Types/StatusPage/SubscriberNotificationInterruption.js.map +1 -0
  400. package/build/dist/Types/StatusPage/SubscriberNotificationPreview.js +190 -0
  401. package/build/dist/Types/StatusPage/SubscriberNotificationPreview.js.map +1 -0
  402. package/build/dist/Types/StatusPage/SubscriberNotificationResend.js +102 -0
  403. package/build/dist/Types/StatusPage/SubscriberNotificationResend.js.map +1 -0
  404. package/build/dist/Types/StatusPage/SubscriberNotificationTemplateCompiler.js +97 -0
  405. package/build/dist/Types/StatusPage/SubscriberNotificationTemplateCompiler.js.map +1 -0
  406. package/build/dist/Types/StatusPage/SubscriberNotificationTemplatePreview.js +175 -0
  407. package/build/dist/Types/StatusPage/SubscriberNotificationTemplatePreview.js.map +1 -0
  408. package/build/dist/Types/StatusPage/SubscriberNotificationTemplateVariables.js +144 -4
  409. package/build/dist/Types/StatusPage/SubscriberNotificationTemplateVariables.js.map +1 -1
  410. package/build/dist/Types/StatusPage/SubscriberUpdateNotification.js +29 -9
  411. package/build/dist/Types/StatusPage/SubscriberUpdateNotification.js.map +1 -1
  412. package/build/dist/UI/Components/CustomFields/CustomFieldFormFields.js +169 -0
  413. package/build/dist/UI/Components/CustomFields/CustomFieldFormFields.js.map +1 -0
  414. package/build/dist/UI/Components/CustomFields/CustomFieldModelFormFields.js +212 -0
  415. package/build/dist/UI/Components/CustomFields/CustomFieldModelFormFields.js.map +1 -0
  416. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +64 -49
  417. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
  418. package/build/dist/UI/Components/Forms/ModelForm.js +39 -5
  419. package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
  420. package/build/dist/UI/Components/Forms/Validation.js +1 -1
  421. package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
  422. package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js.map +1 -1
  423. package/build/dist/UI/Components/ModelTable/AnalyticsModelTable.js.map +1 -1
  424. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +2 -2
  425. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  426. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js +13 -1
  427. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js.map +1 -1
  428. package/build/dist/UI/Components/ModelTable/ModelTable.js +1 -1
  429. package/build/dist/UI/Components/ModelTable/ModelTable.js.map +1 -1
  430. package/build/dist/UI/Utils/SensitiveUrlToken.js +10 -5
  431. package/build/dist/UI/Utils/SensitiveUrlToken.js.map +1 -1
  432. package/build/dist/Utils/API.js +177 -1
  433. package/build/dist/Utils/API.js.map +1 -1
  434. package/build/dist/Utils/Incident/IncidentNoteTemplateVariables.js +155 -0
  435. package/build/dist/Utils/Incident/IncidentNoteTemplateVariables.js.map +1 -0
  436. package/build/dist/Utils/Markdown/MarkdownEscape.js +48 -0
  437. package/build/dist/Utils/Markdown/MarkdownEscape.js.map +1 -1
  438. package/build/dist/Utils/ProbeNetworkFailureUtil.js +460 -0
  439. package/build/dist/Utils/ProbeNetworkFailureUtil.js.map +1 -0
  440. package/package.json +1 -1
@@ -0,0 +1,169 @@
1
+ import { translateValidationMessage } from "../Forms/Validation";
2
+ import Color from "../../../Types/Color";
3
+ import { parseCustomFieldDropdownOptions, } from "../../../Types/CustomField/CustomFieldDropdownOption";
4
+ import CustomFieldType from "../../../Types/CustomField/CustomFieldType";
5
+ import { customFieldValueToText } from "../../../Types/CustomField/CustomFieldValueFormat";
6
+ /**
7
+ * Read a definition row (a model instance or its JSON) into the shape the
8
+ * builder takes. Null for a row with no name, which no value can be stored
9
+ * under.
10
+ */
11
+ export const toCustomFieldFormDefinition = (item) => {
12
+ if (!item || typeof item !== "object") {
13
+ return null;
14
+ }
15
+ const row = item;
16
+ const name = row["name"];
17
+ if (typeof name !== "string" || name.length === 0) {
18
+ return null;
19
+ }
20
+ const sortOrder = row["sortOrder"];
21
+ return {
22
+ name: name,
23
+ description: typeof row["description"] === "string"
24
+ ? row["description"]
25
+ : undefined,
26
+ customFieldType: typeof row["customFieldType"] === "string"
27
+ ? row["customFieldType"]
28
+ : undefined,
29
+ dropdownOptions: typeof row["dropdownOptions"] === "string"
30
+ ? row["dropdownOptions"]
31
+ : undefined,
32
+ sortOrder: typeof sortOrder === "number" && Number.isFinite(sortOrder)
33
+ ? sortOrder
34
+ : null,
35
+ showOnCreate: row["showOnCreate"] === true,
36
+ isRequiredOnCreate: row["isRequiredOnCreate"] === true,
37
+ mapFromResourceType: typeof row["mapFromResourceType"] === "string" &&
38
+ row["mapFromResourceType"]
39
+ ? row["mapFromResourceType"]
40
+ : undefined,
41
+ mapFromCustomFieldName: typeof row["mapFromCustomFieldName"] === "string" &&
42
+ row["mapFromCustomFieldName"]
43
+ ? row["mapFromCustomFieldName"]
44
+ : undefined,
45
+ };
46
+ };
47
+ /*
48
+ * The order fields are shown in lives with the types, so the server orders
49
+ * the fields in subscriber messages the same way; it is re-exported here for
50
+ * the forms and the Custom Fields card.
51
+ */
52
+ export { sortCustomFieldDefinitions } from "../../../Types/CustomField/CustomFieldOrder";
53
+ /** A dropdown field's options, with their colors, as the form lists them. */
54
+ export const getCustomFieldDropdownOptions = (serializedOptions) => {
55
+ return parseCustomFieldDropdownOptions(serializedOptions).map((option) => {
56
+ const dropdownOption = {
57
+ label: option.value,
58
+ value: option.value,
59
+ };
60
+ if (option.color) {
61
+ dropdownOption.color = Color.fromString(option.color);
62
+ }
63
+ return dropdownOption;
64
+ });
65
+ };
66
+ /*
67
+ * The types whose value is text. A value of theirs can still be a number or
68
+ * a yes/no: the value check accepts those for them, and a field switched
69
+ * from Number or Yes/No to one of them keeps the values it had.
70
+ */
71
+ const TEXT_CUSTOM_FIELD_TYPES = [
72
+ CustomFieldType.Text,
73
+ CustomFieldType.LongText,
74
+ CustomFieldType.Markdown,
75
+ ];
76
+ /**
77
+ * A stored value as Detail is handed it, on the Custom Fields card and a
78
+ * form's review step: a text field's value as the text it reads as
79
+ * (customFieldValueToText, as its subscriber messages read it), anything
80
+ * else as stored. Detail cannot draw a text field's number or yes/no: its
81
+ * Markdown viewer renders nothing for a value that is not a string, and
82
+ * React renders nothing for a boolean, so a Rich text field holding 5 or
83
+ * true looked empty.
84
+ */
85
+ export const getCustomFieldDisplayValue = (data) => {
86
+ if (data.value === null ||
87
+ data.value === undefined ||
88
+ typeof data.value === "string" ||
89
+ !data.customFieldType ||
90
+ !TEXT_CUSTOM_FIELD_TYPES.includes(data.customFieldType)) {
91
+ return data.value;
92
+ }
93
+ return customFieldValueToText(data.value);
94
+ };
95
+ /**
96
+ * The class Detail gives a field's value: a Long text value keeps its line
97
+ * breaks, as the type promises (CustomFieldType) and as its email shows it.
98
+ * Detail has no Long text rendering of its own and would run the lines
99
+ * together.
100
+ */
101
+ export const getCustomFieldDetailContentClassName = (customFieldType) => {
102
+ return customFieldType === CustomFieldType.LongText
103
+ ? "whitespace-pre-wrap"
104
+ : undefined;
105
+ };
106
+ /*
107
+ * What a review step shows for a field left empty. The English text is its
108
+ * key in the locale files, and the Custom Fields card shows the same.
109
+ */
110
+ export const CUSTOM_FIELD_NO_VALUE_PLACEHOLDER = "No data entered";
111
+ /*
112
+ * The error for a required yes/no field left unticked. The English template
113
+ * is also its key in the locale files, like the form's other validation
114
+ * messages.
115
+ */
116
+ export const CUSTOM_FIELD_MUST_BE_CHECKED_MESSAGE = "{{field}} must be checked.";
117
+ const isDropdownType = (customFieldType) => {
118
+ return (customFieldType === CustomFieldType.Dropdown ||
119
+ customFieldType === CustomFieldType.MultiSelectDropdown);
120
+ };
121
+ /**
122
+ * One form field per definition, in the order given (sort the definitions
123
+ * with sortCustomFieldDefinitions first).
124
+ */
125
+ export const buildCustomFieldFormFields = (data) => {
126
+ return data.definitions.map((definition) => {
127
+ const isRequired = Boolean(data.enforceRequiredOnCreate && definition.isRequiredOnCreate);
128
+ const formKey = data.getFormKey
129
+ ? data.getFormKey(definition.name)
130
+ : definition.name;
131
+ const field = {
132
+ field: {
133
+ [definition.name]: true,
134
+ },
135
+ title: definition.name,
136
+ fieldType: definition.customFieldType,
137
+ required: isRequired,
138
+ placeholder: "",
139
+ dropdownOptions: isDropdownType(definition.customFieldType)
140
+ ? getCustomFieldDropdownOptions(definition.dropdownOptions)
141
+ : undefined,
142
+ };
143
+ if (formKey !== definition.name) {
144
+ field.overrideFieldKey = formKey;
145
+ }
146
+ if (definition.description) {
147
+ field.description = definition.description;
148
+ }
149
+ if (data.stepId) {
150
+ field.stepId = data.stepId;
151
+ }
152
+ /*
153
+ * A required yes/no field means "must be ticked" - an acknowledgement.
154
+ * `required` alone cannot say that: the form turns an unticked box into
155
+ * the string "false" before its required check, which then passes.
156
+ */
157
+ if (isRequired &&
158
+ definition.customFieldType === CustomFieldType.Boolean) {
159
+ const name = definition.name;
160
+ field.customValidation = (values) => {
161
+ return values[formKey] === true
162
+ ? null
163
+ : translateValidationMessage(CUSTOM_FIELD_MUST_BE_CHECKED_MESSAGE, { field: name });
164
+ };
165
+ }
166
+ return field;
167
+ });
168
+ };
169
+ //# sourceMappingURL=CustomFieldFormFields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomFieldFormFields.js","sourceRoot":"","sources":["../../../../../UI/Components/CustomFields/CustomFieldFormFields.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ import Detail from "../Detail/Detail";
2
+ import FieldType from "../Types/FieldType";
3
+ import { buildCustomFieldFormFields, CUSTOM_FIELD_NO_VALUE_PLACEHOLDER, getCustomFieldDetailContentClassName, getCustomFieldDisplayValue, getCustomFieldDropdownOptions, } from "./CustomFieldFormFields";
4
+ export { CUSTOM_FIELD_NO_VALUE_PLACEHOLDER } from "./CustomFieldFormFields";
5
+ import { getCustomFieldMappingSource, hasCustomFieldMappingSource, } from "../../../Types/CustomField/CustomFieldMappingCatalog";
6
+ import CustomFieldType from "../../../Types/CustomField/CustomFieldType";
7
+ import { isCustomFieldValueEmpty } from "../../../Types/CustomField/CustomFieldValueMapping";
8
+ import React from "react";
9
+ /*
10
+ * Custom field inputs inside a record's OWN create form, next to its columns:
11
+ * the Details step of declaring an incident, and the Custom Fields step of a
12
+ * new incident template. (The Custom Fields card of a record that exists
13
+ * edits the values on their own, through CustomFieldsDetail.)
14
+ *
15
+ * A ModelForm only knows its model's columns, and the values live in one of
16
+ * them, `customFields`, a JSON bag keyed by each field's name. So each input
17
+ * here:
18
+ *
19
+ * - is held under its own form key, "customFields:<name>", never under the
20
+ * field's bare name: a field called "title" must not become the title
21
+ * input's value;
22
+ * - is permission-checked against the model's `customFields` column
23
+ * (overrideField), so nobody is shown inputs they may not fill in;
24
+ * - is packed back into `customFields` by the page's onBeforeCreate, from
25
+ * the values the form submitted (packCustomFieldFormValues). Never from
26
+ * the request's misc data, which keeps only truthy values - a Number of 0
27
+ * and a switch left off would be dropped there.
28
+ */
29
+ export const CUSTOM_FIELD_FORM_KEY_PREFIX = "customFields:";
30
+ // Where the form holds one field's value.
31
+ export const getCustomFieldFormKey = (fieldName) => {
32
+ return `${CUSTOM_FIELD_FORM_KEY_PREFIX}${fieldName}`;
33
+ };
34
+ /**
35
+ * Whether a field's value will be copied from a related resource rather than
36
+ * typed: it is mapped (an incident field from a monitor field) and the record
37
+ * is attached to something to copy from (the incident has a monitor). The
38
+ * server re-applies the mapping on create, so asking for such a value would
39
+ * only have it replaced. The same rule the Custom Fields card uses.
40
+ */
41
+ export const isCustomFieldInherited = (data) => {
42
+ if (!data.definition.mapFromResourceType ||
43
+ !data.definition.mapFromCustomFieldName) {
44
+ return false;
45
+ }
46
+ const source = getCustomFieldMappingSource({
47
+ definitionTableName: data.definitionTableName,
48
+ resource: data.definition.mapFromResourceType,
49
+ });
50
+ if (!source) {
51
+ return false;
52
+ }
53
+ return hasCustomFieldMappingSource({
54
+ source: source,
55
+ record: data.values,
56
+ });
57
+ };
58
+ /*
59
+ * One field's value on a form's review step, drawn the way the Custom Fields
60
+ * card draws it: Yes or No, the option's label, the date in the viewer's
61
+ * time, a text field's number or yes/no as text, a Long text value's lines.
62
+ */
63
+ export const CustomFieldValueSummary = (props) => {
64
+ const type = props.definition.customFieldType;
65
+ const isDropdown = type === CustomFieldType.Dropdown ||
66
+ type === CustomFieldType.MultiSelectDropdown;
67
+ return (React.createElement(Detail, { item: {
68
+ value: isCustomFieldValueEmpty(props.value)
69
+ ? null
70
+ : getCustomFieldDisplayValue({
71
+ customFieldType: type,
72
+ value: props.value,
73
+ }),
74
+ }, fields: [
75
+ {
76
+ key: "value",
77
+ // CustomFieldType names a FieldType by value (see CustomFieldType).
78
+ fieldType: type || FieldType.Text,
79
+ contentClassName: getCustomFieldDetailContentClassName(type),
80
+ placeholder: CUSTOM_FIELD_NO_VALUE_PLACEHOLDER,
81
+ dropdownOptions: isDropdown
82
+ ? getCustomFieldDropdownOptions(props.definition.dropdownOptions)
83
+ : undefined,
84
+ },
85
+ ] }));
86
+ };
87
+ /**
88
+ * One ModelForm input per definition, in the order given, built by the same
89
+ * builder as every other custom field form (buildCustomFieldFormFields).
90
+ */
91
+ export const buildCustomFieldModelFormFields = (data) => {
92
+ const fields = buildCustomFieldFormFields({
93
+ definitions: data.definitions,
94
+ enforceRequiredOnCreate: data.enforceRequiredOnCreate,
95
+ stepId: data.stepId,
96
+ getFormKey: getCustomFieldFormKey,
97
+ });
98
+ return fields.map((builtField, index) => {
99
+ const definition = data.definitions[index];
100
+ const formKey = getCustomFieldFormKey(definition.name);
101
+ /*
102
+ * The builder names the field after its name (`field`). Here the
103
+ * value is not a column, so that goes: the permission check and the
104
+ * dedupe read `overrideField` and the form key instead.
105
+ */
106
+ const rest = Object.assign({}, builtField);
107
+ delete rest.field;
108
+ const modelField = Object.assign(Object.assign({}, rest), { overrideField: {
109
+ customFields: true,
110
+ }, overrideFieldKey: formKey, getSummaryElement: (values) => {
111
+ return (React.createElement(CustomFieldValueSummary, { definition: definition, value: values[formKey] }));
112
+ } });
113
+ if (data.isShown) {
114
+ const isShown = data.isShown;
115
+ modelField.showIf = (values) => {
116
+ return isShown(definition, (values || {}));
117
+ };
118
+ }
119
+ return modelField;
120
+ });
121
+ };
122
+ /**
123
+ * The form's starting values for these fields, taken from a bag keyed by
124
+ * field name (an incident template's values), under their form keys.
125
+ */
126
+ export const getCustomFieldFormInitialValues = (data) => {
127
+ const initialValues = {};
128
+ if (!isPlainObject(data.customFields)) {
129
+ return initialValues;
130
+ }
131
+ const bag = data.customFields;
132
+ for (const definition of data.definitions) {
133
+ if (!Object.prototype.hasOwnProperty.call(bag, definition.name)) {
134
+ continue;
135
+ }
136
+ const value = bag[definition.name];
137
+ if (isCustomFieldValueEmpty(value)) {
138
+ continue;
139
+ }
140
+ // A text field's number or yes/no as text: its input takes a string.
141
+ initialValues[getCustomFieldFormKey(definition.name)] =
142
+ getCustomFieldDisplayValue({
143
+ customFieldType: definition.customFieldType,
144
+ value: value,
145
+ });
146
+ }
147
+ return initialValues;
148
+ };
149
+ const isPlainObject = (value) => {
150
+ return (value !== null &&
151
+ typeof value === "object" &&
152
+ !Array.isArray(value) &&
153
+ !(value instanceof Date));
154
+ };
155
+ /*
156
+ * A dropdown can still hold the option object it was picked as ({label,
157
+ * value}) rather than its value; the value is what is stored.
158
+ */
159
+ const normalizeFormValue = (value) => {
160
+ const unwrap = (entry) => {
161
+ if (isPlainObject(entry) &&
162
+ Object.prototype.hasOwnProperty.call(entry, "value") &&
163
+ Object.prototype.hasOwnProperty.call(entry, "label")) {
164
+ return entry["value"];
165
+ }
166
+ return entry;
167
+ };
168
+ if (Array.isArray(value)) {
169
+ return value.map(unwrap);
170
+ }
171
+ return unwrap(value);
172
+ };
173
+ /**
174
+ * The record's `customFields` bag: the starting values, with each field the
175
+ * form asked for set to what it holds. 0 and false are answers and are kept;
176
+ * a field emptied on the form is removed, so clearing a value a template
177
+ * filled in sticks. Undefined when there is nothing to store.
178
+ */
179
+ export const packCustomFieldFormValues = (data) => {
180
+ const formValues = data.formValues || {};
181
+ const result = isPlainObject(data.startingCustomFields)
182
+ ? Object.assign({}, data.startingCustomFields) : {};
183
+ for (const definition of data.definitions) {
184
+ if (data.isShown && !data.isShown(definition, formValues)) {
185
+ continue;
186
+ }
187
+ const formKey = getCustomFieldFormKey(definition.name);
188
+ // The form never held a value for it, so it has nothing to say.
189
+ if (!Object.prototype.hasOwnProperty.call(formValues, formKey)) {
190
+ continue;
191
+ }
192
+ const value = normalizeFormValue(formValues[formKey]);
193
+ if (isCustomFieldValueEmpty(value)) {
194
+ delete result[definition.name];
195
+ continue;
196
+ }
197
+ result[definition.name] = value;
198
+ }
199
+ return Object.keys(result).length > 0 ? result : undefined;
200
+ };
201
+ /**
202
+ * Takes the inputs' values out of a request's misc data, where ModelForm puts
203
+ * every form-only value: they travel in `customFields`, and nowhere else.
204
+ */
205
+ export const removeCustomFieldFormKeys = (miscDataProps) => {
206
+ for (const key of Object.keys(miscDataProps)) {
207
+ if (key.startsWith(CUSTOM_FIELD_FORM_KEY_PREFIX)) {
208
+ delete miscDataProps[key];
209
+ }
210
+ }
211
+ };
212
+ //# sourceMappingURL=CustomFieldModelFormFields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomFieldModelFormFields.js","sourceRoot":"","sources":["../../../../../UI/Components/CustomFields/CustomFieldModelFormFields.tsx"],"names":[],"mappings":"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"}
@@ -7,26 +7,14 @@ import ComponentLoader from "../ComponentLoader/ComponentLoader";
7
7
  import Detail from "../Detail/Detail";
8
8
  import ErrorMessage from "../ErrorMessage/ErrorMessage";
9
9
  import BasicFormModal from "../FormModal/BasicFormModal";
10
+ import { buildCustomFieldFormFields, getCustomFieldDetailContentClassName, getCustomFieldDisplayValue, getCustomFieldDropdownOptions, sortCustomFieldDefinitions, toCustomFieldFormDefinition, } from "./CustomFieldFormFields";
11
+ import SortOrder from "../../../Types/BaseDatabase/SortOrder";
10
12
  import CustomFieldType from "../../../Types/CustomField/CustomFieldType";
11
- import { parseCustomFieldDropdownOptions, } from "../../../Types/CustomField/CustomFieldDropdownOption";
12
13
  import { getCustomFieldMappingRelationSelect, getCustomFieldMappingSources, hasCustomFieldMappingSource, } from "../../../Types/CustomField/CustomFieldMappingCatalog";
13
- import Color from "../../../Types/Color";
14
14
  import { LIMIT_PER_PROJECT } from "../../../Types/Database/LimitMax";
15
15
  import IconProp from "../../../Types/Icon/IconProp";
16
16
  import React, { useState } from "react";
17
17
  import useAsyncEffect from "use-async-effect";
18
- const parseDropdownOptions = (value) => {
19
- return parseCustomFieldDropdownOptions(value).map((option) => {
20
- const dropdownOption = {
21
- label: option.value,
22
- value: option.value,
23
- };
24
- if (option.color) {
25
- dropdownOption.color = Color.fromString(option.color);
26
- }
27
- return dropdownOption;
28
- });
29
- };
30
18
  const CustomFieldsDetail = (props) => {
31
19
  const [schemaList, setSchemaList] = useState([]);
32
20
  /*
@@ -49,6 +37,13 @@ const CustomFieldsDetail = (props) => {
49
37
  * it did before mapping existed.
50
38
  */
51
39
  const mappingSources = getCustomFieldMappingSources(new props.customFieldType().tableName);
40
+ /*
41
+ * Only incident fields have an order today. The column is asked for only
42
+ * where the definition model has it: this card issues one select for
43
+ * whichever definition model it is handed, and a column missing from the
44
+ * model would fail that read for every other resource.
45
+ */
46
+ const hasSortOrder = new props.customFieldType().hasColumn("sortOrder");
52
47
  const isMappedAndInherited = (schemaItem) => {
53
48
  const resource = schemaItem
54
49
  .mapFromResourceType;
@@ -91,15 +86,8 @@ const CustomFieldsDetail = (props) => {
91
86
  },
92
87
  limit: LIMIT_PER_PROJECT,
93
88
  skip: 0,
94
- select: {
95
- name: true,
96
- customFieldType: true,
97
- description: true,
98
- dropdownOptions: true,
99
- mapFromResourceType: true,
100
- mapFromCustomFieldName: true,
101
- },
102
- sort: {},
89
+ select: Object.assign({ name: true, customFieldType: true, description: true, dropdownOptions: true, mapFromResourceType: true, mapFromCustomFieldName: true }, (hasSortOrder ? { sortOrder: true } : {})),
90
+ sort: (hasSortOrder ? { sortOrder: SortOrder.Ascending } : {}),
103
91
  });
104
92
  /*
105
93
  * The relation a mapped field would inherit through is read alongside
@@ -121,7 +109,13 @@ const CustomFieldsDetail = (props) => {
121
109
  id: props.modelId,
122
110
  select: itemSelect,
123
111
  });
124
- setSchemaList(schemaList.data);
112
+ /*
113
+ * Sorted here as well as by the query: the order has to hold for fields
114
+ * with no order too (last, in the order the server listed them).
115
+ */
116
+ setSchemaList(hasSortOrder
117
+ ? sortCustomFieldDefinitions(schemaList.data)
118
+ : schemaList.data);
125
119
  setModel(item);
126
120
  if (props.onValuesLoaded) {
127
121
  props.onValuesLoaded((item === null || item === void 0 ? void 0 : item["customFields"]) || {});
@@ -220,6 +214,30 @@ const CustomFieldsDetail = (props) => {
220
214
  : []),
221
215
  ...(props.additionalButtons || []),
222
216
  ];
217
+ /*
218
+ * The stored values as the card draws them and the edit form starts from
219
+ * them: a text field's number or yes/no as text
220
+ * (getCustomFieldDisplayValue). The Markdown viewer draws nothing for a
221
+ * value that is not a string, and the Rich text editor fails on one, so a
222
+ * field switched from Number to Rich text could be neither seen nor
223
+ * edited. Every other value, and every key no field has, is as stored.
224
+ */
225
+ const getDisplayValues = () => {
226
+ const stored = ((model === null || model === void 0 ? void 0 : model["customFields"]) ||
227
+ {});
228
+ const displayed = Object.assign({}, stored);
229
+ for (const schemaItem of schemaList) {
230
+ const name = schemaItem.name;
231
+ if (typeof name === "string" &&
232
+ Object.prototype.hasOwnProperty.call(stored, name)) {
233
+ displayed[name] = getCustomFieldDisplayValue({
234
+ customFieldType: schemaItem.customFieldType,
235
+ value: stored[name],
236
+ });
237
+ }
238
+ }
239
+ return displayed;
240
+ };
223
241
  return (React.createElement(Card, { title: props.title, description: props.description, buttons: cardButtons, headerLayout: props.headerLayout },
224
242
  React.createElement("div", { className: "border-t border-gray-200 px-4 py-5 sm:px-6 -m-6 -mt-2" },
225
243
  isLoading && !loadError && React.createElement(ComponentLoader, null),
@@ -227,7 +245,7 @@ const CustomFieldsDetail = (props) => {
227
245
  loadError && React.createElement(ErrorMessage, { message: loadError }),
228
246
  saveError && React.createElement(ErrorMessage, { message: saveError }),
229
247
  !isLoading && !loadError && schemaList.length > 0 && !model && (React.createElement(ErrorMessage, { message: "Item not found" })),
230
- !isLoading && !loadError && schemaList.length > 0 && model && (React.createElement(Detail, { id: props.name, item: model["customFields"] || {}, fields: schemaList.map((schemaItem) => {
248
+ !isLoading && !loadError && schemaList.length > 0 && model && (React.createElement(Detail, { id: props.name, item: getDisplayValues(), fields: schemaList.map((schemaItem) => {
231
249
  const isDropdown = schemaItem.customFieldType ===
232
250
  CustomFieldType.Dropdown ||
233
251
  schemaItem.customFieldType ===
@@ -237,9 +255,10 @@ const CustomFieldsDetail = (props) => {
237
255
  title: schemaItem.name,
238
256
  description: getMappedDescription(schemaItem),
239
257
  fieldType: schemaItem.customFieldType,
258
+ contentClassName: getCustomFieldDetailContentClassName(schemaItem.customFieldType),
240
259
  placeholder: "No data entered",
241
260
  dropdownOptions: isDropdown
242
- ? parseDropdownOptions(schemaItem.dropdownOptions)
261
+ ? getCustomFieldDropdownOptions(schemaItem.dropdownOptions)
243
262
  : undefined,
244
263
  };
245
264
  }), showDetailsInNumberOfColumns: 1 })),
@@ -248,7 +267,7 @@ const CustomFieldsDetail = (props) => {
248
267
  }, onSubmit: async (data) => {
249
268
  await onSave(data).catch();
250
269
  }, formProps: {
251
- initialValues: (model === null || model === void 0 ? void 0 : model["customFields"]) || {},
270
+ initialValues: getDisplayValues(),
252
271
  /*
253
272
  * Mapped fields are left OUT of the form rather than rendered
254
273
  * disabled: `Field.disabled` is honoured by only three of the
@@ -259,28 +278,24 @@ const CustomFieldsDetail = (props) => {
259
278
  * from the record's existing bag — and the server re-applies the
260
279
  * mapping on update either way.
261
280
  */
262
- fields: schemaList
263
- .filter((schemaItem) => {
264
- return !isMappedAndInherited(schemaItem);
265
- })
266
- .map((schemaItem) => {
267
- const isDropdown = schemaItem.customFieldType ===
268
- CustomFieldType.Dropdown ||
269
- schemaItem.customFieldType ===
270
- CustomFieldType.MultiSelectDropdown;
271
- return {
272
- field: {
273
- [schemaItem.name]: true,
274
- },
275
- title: schemaItem.name,
276
- description: schemaItem.description,
277
- fieldType: schemaItem.customFieldType,
278
- required: false,
279
- placeholder: "",
280
- dropdownOptions: isDropdown
281
- ? parseDropdownOptions(schemaItem.dropdownOptions)
282
- : undefined,
283
- };
281
+ /*
282
+ * Every field optional, "Required on create" included: that
283
+ * applies when an incident is declared, and fixing one field on
284
+ * an incident a monitor opened mid-outage must not demand all
285
+ * the others first.
286
+ */
287
+ fields: buildCustomFieldFormFields({
288
+ definitions: schemaList
289
+ .filter((schemaItem) => {
290
+ return !isMappedAndInherited(schemaItem);
291
+ })
292
+ .map((schemaItem) => {
293
+ return toCustomFieldFormDefinition(schemaItem);
294
+ })
295
+ .filter((definition) => {
296
+ return definition !== null;
297
+ }),
298
+ enforceRequiredOnCreate: false,
284
299
  }),
285
300
  } })))));
286
301
  };
@@ -1 +1 @@
1
- {"version":3,"file":"CustomFieldsDetail.js","sourceRoot":"","sources":["../../../../../UI/Components/CustomFields/CustomFieldsDetail.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CustomFieldsDetail.js","sourceRoot":"","sources":["../../../../../UI/Components/CustomFields/CustomFieldsDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,qBAAqB,CAAC;AACtC,OAAO,QAAwB,MAAM,+BAA+B,CAAC;AACrE,OAAO,cAAc,EAAE,EACrB,WAAW,GAEZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,IAA4C,MAAM,cAAc,CAAC;AACxE,OAAO,eAAe,MAAM,oCAAoC,CAAC;AACjE,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,YAAY,MAAM,8BAA8B,CAAC;AACxD,OAAO,cAAc,MAAM,6BAA6B,CAAC;AACzD,OAAO,EACL,0BAA0B,EAE1B,oCAAoC,EACpC,0BAA0B,EAC1B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AAIjC,OAAO,SAAS,MAAM,uCAAuC,CAAC;AAC9D,OAAO,eAAe,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAEL,mCAAmC,EACnC,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,QAAQ,MAAM,8BAA8B,CAAC;AAGpD,OAAO,KAAK,EAAE,EAAmC,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzE,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAgD9C,MAAM,kBAAkB,GAAsC,CAC5D,KAAqB,EACP,EAAE;IAChB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAmB,EAAE,CAAC,CAAC;IACnE;;;;;;;;OAQG;IACH,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC3D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAEnE;;;;OAIG;IACH,MAAM,cAAc,GAClB,4BAA4B,CAAC,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC,SAAU,CAAC,CAAC;IAEvE;;;;;OAKG;IACH,MAAM,YAAY,GAAY,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC,SAAS,CACjE,WAAW,CACZ,CAAC;IAUF,MAAM,oBAAoB,GAAiC,CACzD,UAAqB,EACZ,EAAE;QACX,MAAM,QAAQ,GAAwB,UAAkB;aACrD,mBAAmB,CAAC;QACvB,MAAM,SAAS,GAAwB,UAAkB;aACtD,sBAAsB,CAAC;QAE1B,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,GACV,cAAc,CAAC,IAAI,CAAC,CAAC,SAAuC,EAAE,EAAE;YAC9D,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC;QACzC,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,2BAA2B,CAAC;YACjC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,KAA2C;SACpD,CAAC,CAAC;IACL,CAAC,CAAC;IAMF,MAAM,oBAAoB,GAAiC,CACzD,UAAqB,EACD,EAAE;QACtB,MAAM,WAAW,GAAwB,UAAkB,CAAC,WAAW,CAAC;QAExE,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,MAAM,GACV,cAAc,CAAC,IAAI,CAAC,CAAC,SAAuC,EAAE,EAAE;YAC9D,OAAO,SAAS,CAAC,QAAQ,KAAM,UAAkB,CAAC,mBAAmB,CAAC;QACxE,CAAC,CAAC,CAAC;QAEL,MAAM,IAAI,GAAW,mBAAmB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,kBAClD,UAAkB,CAAC,sBACtB,IAAI,CAAC;QAEL,OAAO,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC,CAAC;IAEF,MAAM,MAAM,GAAwB,KAAK,IAAmB,EAAE;QAC5D,IAAI,CAAC;YACH,eAAe;YACf,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,YAAY,CAAC,EAAE,CAAC,CAAC;YAEjB,MAAM,UAAU,GACd,MAAM,QAAQ,CAAC,OAAO,CAAY;gBAChC,SAAS,EAAE,KAAK,CAAC,eAAe;gBAChC,KAAK,EAAE;oBACL,SAAS,EAAE,KAAK,CAAC,SAAS;iBACpB;gBACR,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,gBACN,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,IAAI,EACrB,WAAW,EAAE,IAAI,EACjB,eAAe,EAAE,IAAI,EACrB,mBAAmB,EAAE,IAAI,EACzB,sBAAsB,EAAE,IAAI,IACzB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACtC;gBACR,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAQ;aACtE,CAAC,CAAC;YAEL;;;;;;;;eAQG;YACH,MAAM,UAAU,GAAe;gBAC7B,YAAY,EAAE,IAAI;aACnB,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;gBACpC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,mCAAmC,CAAC,MAAM,CAAC,CAAC,CAAC;YACzE,CAAC;YAED,MAAM,IAAI,GAAqB,MAAM,QAAQ,CAAC,OAAO,CAAY;gBAC/D,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,EAAE,EAAE,KAAK,CAAC,OAAO;gBACjB,MAAM,EAAE,UAAiB;aAC1B,CAAC,CAAC;YAEH;;;eAGG;YACH,aAAa,CACX,YAAY;gBACV,CAAC,CAAC,0BAA0B,CACxB,UAAU,CAAC,IAEV,CACF;gBACH,CAAC,CAAC,UAAU,CAAC,IAAI,CACpB,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEf,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;gBACzB,KAAK,CAAC,cAAc,CAClB,CAAE,IAAY,aAAZ,IAAI,uBAAJ,IAAI,CAAW,cAAc,CAAgB,KAAI,EAAE,CACtD,CAAC;YACJ,CAAC;YAED,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC;IAIF,MAAM,MAAM,GAAmB,KAAK,EAAE,IAAgB,EAAiB,EAAE;QACvE,IAAI,CAAC;YACH,eAAe;YACf,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,YAAY,CAAC,EAAE,CAAC,CAAC;YACjB,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAExB,MAAM,QAAQ,CAAC,UAAU,CAAC;gBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,EAAE,EAAE,KAAK,CAAC,OAAO;gBACjB,IAAI,EAAE;oBACJ,YAAY,EAAE,IAAI;iBACnB;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,EAAE,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC;IAEF,cAAc,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAY,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC;IAEvD;;;;;;;;;;;OAWG;IACH,IACE,KAAK,CAAC,WAAW;QACjB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EACzD,CAAC;QACD,OAAO,yCAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;OAUG;IACH;;;;OAIG;IACH,MAAM,mBAAmB,GAAW,UAAU,CAAC,MAAM,CACnD,CAAC,UAAqB,EAAE,EAAE;QACxB,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC,CACF,CAAC,MAAM,CAAC;IAET,MAAM,OAAO,GACX,UAAU,IAAI,CAAC,SAAS,IAAI,mBAAmB,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAExE;;;;OAIG;IACH,MAAM,UAAU,GAAyB,cAAc,CAAC,KAAK,CAC3D,IAAI,KAAK,CAAC,SAAS,EAAE,EACrB,WAAW,CAAC,MAAM,CACnB,CAAC;IAEF,MAAM,cAAc,GAClB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IAE1E,MAAM,WAAW,GAA4B;QAC3C,GAAG,CAAC,cAAc;YAChB,CAAC,CAAC;gBACE;oBACE,KAAK,EAAE,aAAa;oBACpB,WAAW,EAAE,eAAe,CAAC,MAAM;oBACnC,QAAQ,EAAE,CAAC,UAAU,CAAC,SAAS;oBAC/B,OAAO,EAAE,UAAU,CAAC,cAAc;oBAClC,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;4BAC1B,OAAO;wBACT,CAAC;wBAED,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBACzB,CAAC;oBACD,IAAI,EAAE,QAAQ,CAAC,IAAI;iBACA;aACtB;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC;KACnC,CAAC;IAEF;;;;;;;OAOG;IACH,MAAM,gBAAgB,GAAqB,GAAe,EAAE;QAC1D,MAAM,MAAM,GAAe,CAAC,CAAC,KAAa,aAAb,KAAK,uBAAL,KAAK,CAAW,cAAc,CAAC;YAC1D,EAAE,CAAe,CAAC;QACpB,MAAM,SAAS,qBAAoB,MAAM,CAAE,CAAC;QAE5C,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,IAAI,GAAa,UAAkB,CAAC,IAAI,CAAC;YAE/C,IACE,OAAO,IAAI,KAAK,QAAQ;gBACxB,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAClD,CAAC;gBACD,SAAS,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC;oBAC3C,eAAe,EAAG,UAAkB,CAAC,eAAe;oBACpD,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;iBACpB,CAAuB,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,IAAI,IACH,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,KAAK,CAAC,YAAY;QAEhC,6BAAK,SAAS,EAAC,uDAAuD;YACnE,SAAS,IAAI,CAAC,SAAS,IAAI,oBAAC,eAAe,OAAG;YAC9C,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CACtD,oBAAC,YAAY,IAAC,OAAO,EAAC,oGAAoG,GAAG,CAC9H;YACA,SAAS,IAAI,oBAAC,YAAY,IAAC,OAAO,EAAE,SAAS,GAAI;YAKjD,SAAS,IAAI,oBAAC,YAAY,IAAC,OAAO,EAAE,SAAS,GAAI;YAMjD,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAC9D,oBAAC,YAAY,IAAC,OAAO,EAAE,gBAAgB,GAAI,CAC5C;YAEA,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,CAC7D,oBAAC,MAAM,IACL,EAAE,EAAE,KAAK,CAAC,IAAI,EACd,IAAI,EAAE,gBAAgB,EAAE,EACxB,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,UAAqB,EAAE,EAAE;oBAC/C,MAAM,UAAU,GACb,UAAkB,CAAC,eAAe;wBACjC,eAAe,CAAC,QAAQ;wBACzB,UAAkB,CAAC,eAAe;4BACjC,eAAe,CAAC,mBAAmB,CAAC;oBACxC,OAAO;wBACL,GAAG,EAAG,UAAkB,CAAC,IAAI;wBAC7B,KAAK,EAAG,UAAkB,CAAC,IAAI;wBAC/B,WAAW,EAAE,oBAAoB,CAAC,UAAU,CAAW;wBACvD,SAAS,EAAG,UAAkB,CAAC,eAAe;wBAC9C,gBAAgB,EAAE,oCAAoC,CACnD,UAAkB,CAAC,eAAe,CACpC;wBACD,WAAW,EAAE,iBAAiB;wBAC9B,eAAe,EAAE,UAAU;4BACzB,CAAC,CAAC,6BAA6B,CAC1B,UAAkB,CAAC,eAAe,CACpC;4BACH,CAAC,CAAC,SAAS;qBACd,CAAC;gBACJ,CAAC,CAAC,EACF,4BAA4B,EAAE,CAAC,GAC/B,CACH;YAEA,aAAa,IAAI,CAChB,oBAAC,cAAc,IACb,KAAK,EAAE,OAAO,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,YAAY,EACnD,OAAO,EAAE,GAAG,EAAE;oBACZ,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC,EACD,QAAQ,EAAE,KAAK,EAAE,IAAgB,EAAE,EAAE;oBACnC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC7B,CAAC,EACD,SAAS,EAAE;oBACT,aAAa,EAAE,gBAAgB,EAAE;oBACjC;;;;;;;;;uBASG;oBACH;;;;;uBAKG;oBACH,MAAM,EAAE,0BAA0B,CAAC;wBACjC,WAAW,EAAE,UAAU;6BACpB,MAAM,CAAC,CAAC,UAAqB,EAAE,EAAE;4BAChC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;wBAC3C,CAAC,CAAC;6BACD,GAAG,CAAC,CAAC,UAAqB,EAAE,EAAE;4BAC7B,OAAO,2BAA2B,CAAC,UAAU,CAAC,CAAC;wBACjD,CAAC,CAAC;6BACD,MAAM,CACL,CACE,UAA4C,EACH,EAAE;4BAC3C,OAAO,UAAU,KAAK,IAAI,CAAC;wBAC7B,CAAC,CACF;wBACH,uBAAuB,EAAE,KAAK;qBAC/B,CAAC;iBACH,GACD,CACH,CACG,CACD,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}