@oneuptime/common 12.0.9 → 12.0.11

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 (262) hide show
  1. package/Models/DatabaseModels/NetworkDevice.ts +44 -0
  2. package/Models/DatabaseModels/NetworkDeviceLink.ts +116 -0
  3. package/Models/DatabaseModels/RunnerJob.ts +17 -2
  4. package/Server/API/LlmProviderAPI.ts +8 -0
  5. package/Server/Infrastructure/Postgres/SchemaMigrations/1787400000000-AddDeviceRoleAndDeclaredLinkParent.ts +52 -0
  6. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  7. package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +240 -0
  8. package/Server/Services/NetworkDeviceLinkService.ts +338 -2
  9. package/Server/Services/NetworkDeviceService.ts +265 -12
  10. package/Server/Services/RunnerJobService.ts +24 -1
  11. package/Server/Types/Billing/MeteredPlan/AllMeteredPlans.ts +19 -5
  12. package/Server/Types/Database/JSONColumnQuery.ts +42 -4
  13. package/Server/Utils/LLM/LLMService.ts +108 -19
  14. package/Server/Utils/Monitor/MonitorAlert.ts +22 -115
  15. package/Server/Utils/Monitor/MonitorIncident.ts +7 -337
  16. package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +27 -2
  17. package/Server/Utils/Monitor/SeriesResourceLabels.ts +32 -0
  18. package/Server/Utils/Monitor/SeriesResourceLinker.ts +469 -0
  19. package/Server/Utils/SSRFProtection.ts +5 -4
  20. package/Server/Utils/Telemetry/InventoryEntityRegistry.ts +186 -38
  21. package/Tests/App/AdminDashboard/AdminUsersBulkAddToProject.test.tsx +955 -0
  22. package/Tests/App/AdminDashboard/BulkAddUsersToProject.test.ts +778 -0
  23. package/Tests/App/AdminDashboard/BulkAddUsersToProjectModal.test.tsx +1051 -0
  24. package/Tests/App/Dashboard/AdminNotificationRulesPage.test.tsx +420 -112
  25. package/Tests/App/Dashboard/OnCallReadinessSurfaces.test.tsx +81 -6
  26. package/Tests/App/Dashboard/PayAsYouGoConsentGate.test.tsx +543 -0
  27. package/Tests/App/Dashboard/PayAsYouGoFreePlan.test.ts +125 -0
  28. package/Tests/App/Dashboard/PayAsYouGoNotices.test.tsx +612 -0
  29. package/Tests/App/Dashboard/SloWidgetChartRendering.test.tsx +536 -0
  30. package/Tests/App/Dashboard/UserElementEmail.test.tsx +447 -0
  31. package/Tests/App/Dashboard/UserEmailCallSites.test.tsx +284 -0
  32. package/Tests/Models/AnalyticsModels/CommonModel.test.ts +312 -0
  33. package/Tests/Server/Infrastructure/Postgres/DeviceRoleAndDeclaredLinkParentMigration.test.ts +250 -0
  34. package/Tests/Server/Infrastructure/Postgres/EpisodeMemberNotifyIndexesMigration.test.ts +46 -18
  35. package/Tests/Server/Services/NetworkDeviceLabelRuleRun.test.ts +618 -0
  36. package/Tests/Server/Services/NetworkDeviceLinkParentValidation.test.ts +1043 -0
  37. package/Tests/Server/Services/NetworkSiteAssignmentRuleRun.test.ts +706 -0
  38. package/Tests/Server/Services/RunnerJobEnqueue.test.ts +412 -0
  39. package/Tests/Server/Types/Billing/PayAsYouGoMeteredPricing.test.ts +125 -0
  40. package/Tests/Server/Types/Database/JSONColumnQuery.test.ts +508 -0
  41. package/Tests/Server/Utils/AI/LLMServiceRequestPolicy.test.ts +2 -2
  42. package/Tests/Server/Utils/AI/LLMServiceRetryPolicy.test.ts +450 -0
  43. package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +556 -0
  44. package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +547 -0
  45. package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +30 -0
  46. package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +699 -0
  47. package/Tests/Server/Utils/SeriesResourceLabels.test.ts +55 -0
  48. package/Tests/Server/Utils/Telemetry/InventoryEntityRegistry.test.ts +668 -0
  49. package/Tests/Types/API/URLMalformedTolerance.test.ts +301 -0
  50. package/Tests/Types/API/URLTelScheme.test.ts +261 -0
  51. package/Tests/Types/API/URLUnsupportedScheme.test.ts +148 -0
  52. package/Tests/Types/Billing/PayAsYouGoPricing.test.ts +64 -0
  53. package/Tests/Types/CustomField/CustomFieldTypeCorrespondence.test.ts +107 -0
  54. package/Tests/Types/Monitor/MonitorType.test.ts +62 -0
  55. package/Tests/Types/NetworkAutomation/RuleRunResult.test.ts +184 -0
  56. package/Tests/Types/Runbook/RunbookStepType.test.ts +124 -0
  57. package/Tests/Types/Workflow/BaseModelComponents.test.ts +17 -0
  58. package/Tests/UI/Components/Button.test.tsx +279 -0
  59. package/Tests/UI/Components/Charts/ChartXAxisDataKey.test.tsx +256 -0
  60. package/Tests/UI/Components/Charts/DataPointUtil.test.ts +323 -0
  61. package/Tests/UI/Components/DictionaryValuePlaceholderAndSuggestions.test.tsx +595 -0
  62. package/Tests/UI/Components/Icon.test.tsx +57 -0
  63. package/Tests/UI/Components/List.test.tsx +20 -3
  64. package/Tests/UI/Components/LogsSavedViewsDropdown.test.tsx +304 -0
  65. package/Tests/UI/Components/LogsViewerClearSavedView.test.tsx +179 -0
  66. package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +349 -1
  67. package/Tests/UI/Components/Pagination.test.tsx +721 -146
  68. package/Tests/UI/Components/PaginationIntegration.test.tsx +386 -0
  69. package/Tests/UI/Components/PaginationUtil.test.ts +417 -0
  70. package/Tests/UI/Components/TelemetrySavedViewsDropdown.test.tsx +343 -0
  71. package/Tests/UI/Components/Workflow/ColumnEditor/ColumnControl.test.ts +289 -0
  72. package/Tests/UI/Components/Workflow/ColumnEditor/ColumnOperators.test.ts +271 -0
  73. package/Tests/UI/Components/Workflow/ColumnEditor/ColumnRow.test.ts +119 -0
  74. package/Tests/UI/Components/Workflow/ColumnEditor/ColumnRowSerialization.test.ts +968 -0
  75. package/Tests/UI/Components/Workflow/ModelColumnEditor.render.test.tsx +766 -0
  76. package/Tests/UI/Utils/RunNetworkRule.test.ts +320 -0
  77. package/Tests/Utils/APIRetryPolicy.test.ts +823 -0
  78. package/Tests/Utils/Monitor/NetworkDeviceRoleUtil.test.ts +502 -0
  79. package/Tests/Utils/Monitor/NetworkTopologyDeclaredHierarchy.test.ts +759 -0
  80. package/Tests/Utils/NetworkAutomation/RuleRunSummary.test.ts +286 -0
  81. package/Tests/Utils/Schema/BaseSchema.test.ts +651 -0
  82. package/Types/API/Protocol.ts +9 -0
  83. package/Types/API/URL.ts +286 -20
  84. package/Types/Billing/PayAsYouGoPricing.ts +47 -0
  85. package/Types/CustomField/CustomFieldType.ts +28 -0
  86. package/Types/Monitor/MonitorType.ts +11 -0
  87. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +13 -0
  88. package/Types/NetworkAutomation/RuleRunResult.ts +121 -0
  89. package/Types/Runbook/RunbookStepType.ts +23 -0
  90. package/UI/Components/AutocompleteTextInput/AutocompleteTextInput.tsx +7 -0
  91. package/UI/Components/Button/Button.tsx +14 -22
  92. package/UI/Components/Charts/Area/AreaChart.tsx +4 -2
  93. package/UI/Components/Charts/Bar/BarChart.tsx +4 -2
  94. package/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.ts +13 -0
  95. package/UI/Components/Charts/Line/LineChart.tsx +4 -2
  96. package/UI/Components/Charts/Types/XAxis/XAxis.ts +6 -0
  97. package/UI/Components/Charts/Utils/DataPoint.ts +15 -12
  98. package/UI/Components/Dictionary/Dictionary.tsx +4 -39
  99. package/UI/Components/Icon/Icon.tsx +1 -1
  100. package/UI/Components/LogsViewer/LogsViewer.tsx +5 -1
  101. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +8 -0
  102. package/UI/Components/LogsViewer/components/LogsPagination.tsx +29 -91
  103. package/UI/Components/LogsViewer/components/LogsViewerToolbar.tsx +2 -0
  104. package/UI/Components/LogsViewer/components/SavedViewsDropdown.tsx +66 -1
  105. package/UI/Components/ModelTable/CustomFieldColumns.tsx +55 -0
  106. package/UI/Components/Pagination/Pagination.tsx +373 -328
  107. package/UI/Components/Pagination/PaginationUtil.ts +263 -0
  108. package/UI/Components/Pagination/Screenshots/README.md +15 -0
  109. package/UI/Components/Pagination/Screenshots/pagination-before-after.png +0 -0
  110. package/UI/Components/Pagination/Screenshots/pagination-go-to-page-modal.png +0 -0
  111. package/UI/Components/Pagination/Screenshots/pagination-long-list.png +0 -0
  112. package/UI/Components/Pagination/Screenshots/pagination-mobile.png +0 -0
  113. package/UI/Components/Pagination/Screenshots/pagination-telemetry.png +0 -0
  114. package/UI/Components/TelemetryViewer/components/SavedViewsDropdown.tsx +66 -1
  115. package/UI/Components/TelemetryViewer/components/TelemetryPagination.tsx +38 -92
  116. package/UI/Components/TextArea/TextArea.tsx +3 -0
  117. package/UI/Components/Workflow/ArgumentsForm.tsx +18 -1
  118. package/UI/Components/Workflow/ColumnEditor/AddColumnDropdown.tsx +177 -0
  119. package/UI/Components/Workflow/ColumnEditor/ColumnConditionRow.tsx +243 -0
  120. package/UI/Components/Workflow/ColumnEditor/ColumnControl.ts +255 -0
  121. package/UI/Components/Workflow/ColumnEditor/ColumnFieldRow.tsx +178 -0
  122. package/UI/Components/Workflow/ColumnEditor/ColumnOperators.ts +206 -0
  123. package/UI/Components/Workflow/ColumnEditor/ColumnRow.ts +157 -0
  124. package/UI/Components/Workflow/ColumnEditor/ColumnRowSerialization.ts +517 -0
  125. package/UI/Components/Workflow/ColumnEditor/ColumnValueInput.tsx +482 -0
  126. package/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.tsx +131 -0
  127. package/UI/Components/Workflow/ColumnEditor/ModelRecordForm.tsx +163 -0
  128. package/UI/Components/Workflow/ModelColumnEditor.tsx +284 -100
  129. package/UI/Utils/NetworkAutomation/RunNetworkRule.ts +122 -0
  130. package/Utils/API.ts +243 -36
  131. package/Utils/Monitor/NetworkDeviceRoleUtil.ts +45 -0
  132. package/Utils/Monitor/NetworkTopologyUtil.ts +42 -2
  133. package/Utils/NetworkAutomation/RuleRunSummary.ts +147 -0
  134. package/build/dist/Models/DatabaseModels/NetworkDevice.js +45 -0
  135. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  136. package/build/dist/Models/DatabaseModels/NetworkDeviceLink.js +115 -0
  137. package/build/dist/Models/DatabaseModels/NetworkDeviceLink.js.map +1 -1
  138. package/build/dist/Models/DatabaseModels/RunnerJob.js +17 -2
  139. package/build/dist/Models/DatabaseModels/RunnerJob.js.map +1 -1
  140. package/build/dist/Server/API/LlmProviderAPI.js +9 -1
  141. package/build/dist/Server/API/LlmProviderAPI.js.map +1 -1
  142. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787400000000-AddDeviceRoleAndDeclaredLinkParent.js +33 -0
  143. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787400000000-AddDeviceRoleAndDeclaredLinkParent.js.map +1 -0
  144. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  145. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  146. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +202 -0
  147. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -1
  148. package/build/dist/Server/Services/NetworkDeviceLinkService.js +253 -1
  149. package/build/dist/Server/Services/NetworkDeviceLinkService.js.map +1 -1
  150. package/build/dist/Server/Services/NetworkDeviceService.js +223 -12
  151. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  152. package/build/dist/Server/Services/RunnerJobService.js +20 -2
  153. package/build/dist/Server/Services/RunnerJobService.js.map +1 -1
  154. package/build/dist/Server/Types/Billing/MeteredPlan/AllMeteredPlans.js +12 -5
  155. package/build/dist/Server/Types/Billing/MeteredPlan/AllMeteredPlans.js.map +1 -1
  156. package/build/dist/Server/Types/Database/JSONColumnQuery.js +40 -4
  157. package/build/dist/Server/Types/Database/JSONColumnQuery.js.map +1 -1
  158. package/build/dist/Server/Utils/LLM/LLMService.js +78 -22
  159. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  160. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +22 -98
  161. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  162. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +7 -254
  163. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  164. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +14 -2
  165. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
  166. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +27 -0
  167. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
  168. package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +285 -0
  169. package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -0
  170. package/build/dist/Server/Utils/SSRFProtection.js +5 -4
  171. package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
  172. package/build/dist/Server/Utils/Telemetry/InventoryEntityRegistry.js +128 -35
  173. package/build/dist/Server/Utils/Telemetry/InventoryEntityRegistry.js.map +1 -1
  174. package/build/dist/Types/API/Protocol.js +9 -0
  175. package/build/dist/Types/API/Protocol.js.map +1 -1
  176. package/build/dist/Types/API/URL.js +241 -18
  177. package/build/dist/Types/API/URL.js.map +1 -1
  178. package/build/dist/Types/Billing/PayAsYouGoPricing.js +41 -0
  179. package/build/dist/Types/Billing/PayAsYouGoPricing.js.map +1 -0
  180. package/build/dist/Types/CustomField/CustomFieldType.js +26 -0
  181. package/build/dist/Types/CustomField/CustomFieldType.js.map +1 -1
  182. package/build/dist/Types/Monitor/MonitorType.js +10 -0
  183. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  184. package/build/dist/Types/NetworkAutomation/RuleRunResult.js +39 -0
  185. package/build/dist/Types/NetworkAutomation/RuleRunResult.js.map +1 -0
  186. package/build/dist/Types/Runbook/RunbookStepType.js +21 -0
  187. package/build/dist/Types/Runbook/RunbookStepType.js.map +1 -1
  188. package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js +1 -1
  189. package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js.map +1 -1
  190. package/build/dist/UI/Components/Button/Button.js +10 -16
  191. package/build/dist/UI/Components/Button/Button.js.map +1 -1
  192. package/build/dist/UI/Components/Charts/Area/AreaChart.js +2 -1
  193. package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
  194. package/build/dist/UI/Components/Charts/Bar/BarChart.js +2 -1
  195. package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
  196. package/build/dist/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.js +12 -0
  197. package/build/dist/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.js.map +1 -1
  198. package/build/dist/UI/Components/Charts/Line/LineChart.js +2 -1
  199. package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
  200. package/build/dist/UI/Components/Charts/Utils/DataPoint.js +17 -10
  201. package/build/dist/UI/Components/Charts/Utils/DataPoint.js.map +1 -1
  202. package/build/dist/UI/Components/Dictionary/Dictionary.js +4 -18
  203. package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
  204. package/build/dist/UI/Components/Icon/Icon.js +1 -1
  205. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  206. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +3 -3
  207. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  208. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +5 -1
  209. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  210. package/build/dist/UI/Components/LogsViewer/components/LogsPagination.js +14 -44
  211. package/build/dist/UI/Components/LogsViewer/components/LogsPagination.js.map +1 -1
  212. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js +1 -1
  213. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js.map +1 -1
  214. package/build/dist/UI/Components/LogsViewer/components/SavedViewsDropdown.js +20 -2
  215. package/build/dist/UI/Components/LogsViewer/components/SavedViewsDropdown.js.map +1 -1
  216. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js +42 -0
  217. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js.map +1 -1
  218. package/build/dist/UI/Components/Pagination/Pagination.js +174 -199
  219. package/build/dist/UI/Components/Pagination/Pagination.js.map +1 -1
  220. package/build/dist/UI/Components/Pagination/PaginationUtil.js +160 -0
  221. package/build/dist/UI/Components/Pagination/PaginationUtil.js.map +1 -0
  222. package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js +20 -2
  223. package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js.map +1 -1
  224. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryPagination.js +23 -47
  225. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryPagination.js.map +1 -1
  226. package/build/dist/UI/Components/TextArea/TextArea.js +1 -1
  227. package/build/dist/UI/Components/TextArea/TextArea.js.map +1 -1
  228. package/build/dist/UI/Components/Workflow/ArgumentsForm.js +14 -2
  229. package/build/dist/UI/Components/Workflow/ArgumentsForm.js.map +1 -1
  230. package/build/dist/UI/Components/Workflow/ColumnEditor/AddColumnDropdown.js +86 -0
  231. package/build/dist/UI/Components/Workflow/ColumnEditor/AddColumnDropdown.js.map +1 -0
  232. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnConditionRow.js +119 -0
  233. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnConditionRow.js.map +1 -0
  234. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnControl.js +206 -0
  235. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnControl.js.map +1 -0
  236. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnFieldRow.js +57 -0
  237. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnFieldRow.js.map +1 -0
  238. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnOperators.js +150 -0
  239. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnOperators.js.map +1 -0
  240. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnRow.js +67 -0
  241. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnRow.js.map +1 -0
  242. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnRowSerialization.js +309 -0
  243. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnRowSerialization.js.map +1 -0
  244. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnValueInput.js +204 -0
  245. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnValueInput.js.map +1 -0
  246. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js +66 -0
  247. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js.map +1 -0
  248. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelRecordForm.js +83 -0
  249. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelRecordForm.js.map +1 -0
  250. package/build/dist/UI/Components/Workflow/ModelColumnEditor.js +187 -68
  251. package/build/dist/UI/Components/Workflow/ModelColumnEditor.js.map +1 -1
  252. package/build/dist/UI/Utils/NetworkAutomation/RunNetworkRule.js +75 -0
  253. package/build/dist/UI/Utils/NetworkAutomation/RunNetworkRule.js.map +1 -0
  254. package/build/dist/Utils/API.js +175 -34
  255. package/build/dist/Utils/API.js.map +1 -1
  256. package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js +37 -0
  257. package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js.map +1 -1
  258. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +25 -3
  259. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  260. package/build/dist/Utils/NetworkAutomation/RuleRunSummary.js +78 -0
  261. package/build/dist/Utils/NetworkAutomation/RuleRunSummary.js.map +1 -0
  262. package/package.json +1 -1
@@ -1,29 +1,35 @@
1
1
  /*
2
- * A row-based editor for the two workflow arguments that are keyed on a
2
+ * A schema-driven editor for the two workflow arguments that are keyed on a
3
3
  * model's columns: the Query that picks which records a component acts on,
4
4
  * and the record of values a create/update writes.
5
5
  *
6
6
  * Both were bare JSON editors, with the column names — and, for a query, the
7
- * operator syntax — left entirely to memory. The description on those
8
- * arguments had to carry a hint about "_id" versus "id" precisely because
9
- * nothing else told the builder what the columns were called.
7
+ * operator syntax — left entirely to memory. The first attempt at fixing that
8
+ * borrowed the generic key/value row editor, which asked for a column name as
9
+ * free text and then asked, in a dropdown next to it, whether the value was
10
+ * Text, Number or Boolean. Both questions were already answered:
11
+ * /model-schema/:tableName says that `color` is a Color and `name` is a Name,
12
+ * so the builder could only agree with the schema or be wrong.
10
13
  *
11
- * Everything needed to do better already existed: /model-schema/:tableName
12
- * knows the columns, and DictionaryForm's operator mode emits exactly the
13
- * {_type, value} shape that JSONFunctions.deserialize hydrates on the server
14
- * (FindManyBaseModel and friends). This wires the two together, and keeps a
15
- * JSON escape hatch for the values rows cannot express.
14
+ * So the rows are generated from the schema instead. A record is a form of the
15
+ * model's own fields, with their real titles and descriptions; a query is a
16
+ * list of conditions whose comparisons are filtered by the column's type. The
17
+ * JSON escape hatch stays for the values rows cannot express, and now it
18
+ * re-reads what was typed in it rather than discarding it.
16
19
  */
17
20
  import CodeEditor from "../CodeEditor/CodeEditor";
18
21
  import ComponentLoader from "../ComponentLoader/ComponentLoader";
19
- import DictionaryForm, { ValueType } from "../Dictionary/Dictionary";
22
+ import { getOperatorOption, } from "../Dictionary/DictionaryFilterOperator";
20
23
  import Icon from "../Icon/Icon";
21
24
  import { findColumn, requiredWritableColumns, useModelSchema, } from "./ModelSchema";
25
+ import { rowsFromParsedValue, seedRequiredRows, serializeColumnRows, } from "./ColumnEditor/ColumnRowSerialization";
26
+ import ModelQueryBuilder from "./ColumnEditor/ModelQueryBuilder";
27
+ import ModelRecordForm from "./ColumnEditor/ModelRecordForm";
22
28
  import CodeType from "../../../Types/Code/CodeType";
23
29
  import IconProp from "../../../Types/Icon/IconProp";
24
30
  import { ObjectType } from "../../../Types/JSON";
25
31
  import { maskTemplateExpressions } from "../../../Types/Workflow/TemplateSyntax";
26
- import React, { useMemo, useState, } from "react";
32
+ import React, { useEffect, useMemo, useState, } from "react";
27
33
  export var ModelColumnEditorMode;
28
34
  (function (ModelColumnEditorMode) {
29
35
  /** Conditions that select records: column, operator, value. */
@@ -31,6 +37,18 @@ export var ModelColumnEditorMode;
31
37
  /** Values to write: column, value. No operators — you cannot save a ">". */
32
38
  ModelColumnEditorMode["Record"] = "Record";
33
39
  })(ModelColumnEditorMode || (ModelColumnEditorMode = {}));
40
+ /**
41
+ * Whether the record being edited creates a row or updates one.
42
+ *
43
+ * It decides one thing: whether the editor opens with a blank row for every
44
+ * column a create must supply. An update legitimately writes a single column,
45
+ * so seeding those rows there presents six fields where the builder wanted one.
46
+ */
47
+ export var RecordIntent;
48
+ (function (RecordIntent) {
49
+ RecordIntent["Create"] = "Create";
50
+ RecordIntent["Update"] = "Update";
51
+ })(RecordIntent || (RecordIntent = {}));
34
52
  /*
35
53
  * Operator wrappers the row editor can show. Anything else in a stored query
36
54
  * (an InBetween, a relation sub-object, a raw QueryHelper construct) keeps the
@@ -225,95 +243,196 @@ const ModelColumnEditor = (props) => {
225
243
  const [jsonText, setJsonText] = useState(initial.text);
226
244
  const [viewMode, setViewMode] = useState("builder");
227
245
  /*
228
- * The row editor is uncontrolled after mount (DictionaryForm seeds itself
229
- * once), so this is computed rather than held in state. It only has to be
230
- * right on the render that first mounts DictionaryForm, which is the first
231
- * render after the schema resolves — the loader below returns early until
232
- * then.
246
+ * The rows are the editor's own state, and both bodies are fully controlled
247
+ * from here. Null until the schema resolves, because a row cannot be built
248
+ * before it is known what kind of column it is for.
233
249
  *
234
- * Record mode opens with a blank row for every column a create must be given
235
- * a value for. Seeding is additive and never overwrites what was stored, and
236
- * blank rows are dropped on the way back out (buildColumnValueJson), so
237
- * opening a saved workflow and saving it again cannot change what it does.
250
+ * Nothing in the seeding path calls props.onChange. That matters more than it
251
+ * looks: this component is mounted every time someone opens a step's
252
+ * settings, and a change fired during mount would rewrite the stored bytes of
253
+ * every workflow just for being looked at.
238
254
  */
239
- const initialRows = useMemo(() => {
240
- const stored = (initial.parsed ||
241
- {});
242
- if (isQuery || !schema.columns) {
243
- return stored;
244
- }
245
- const seeded = Object.assign({}, stored);
246
- for (const column of requiredWritableColumns(schema.columns)) {
247
- if (seeded[column.id] === undefined) {
248
- seeded[column.id] = "";
249
- }
250
- }
251
- return seeded;
252
- }, [schema.columns, isQuery]);
255
+ const [rows, setRows] = useState(null);
253
256
  /*
254
- * The model's own example for each column, shown in the row it belongs to.
255
- * MonitorSecret.secretValue ships example: "sk_test_1234567890abcdefghijklmnop",
256
- * which answers "what goes in this box" better than any prose in the sidebar.
257
+ * Why the switch back from JSON is refused, when it is. Empty means it is
258
+ * allowed.
259
+ */
260
+ const [returnToRowsBlockedBy, setReturnToRowsBlockedBy] = useState([]);
261
+ /*
262
+ * Whether the value can be shown as rows at all. Read from the value as it
263
+ * was loaded, deliberately: the decision has to be stable, or the editor
264
+ * would change shape under the builder's hands as they type.
257
265
  */
258
- const valuePlaceholders = useMemo(() => {
259
- const placeholders = {};
260
- for (const column of schema.columns || []) {
261
- const hint = column.example || column.placeholder;
262
- if (hint) {
263
- placeholders[column.id] = hint;
264
- }
265
- }
266
- return placeholders;
267
- }, [schema.columns]);
268
266
  const compatibility = useMemo(() => {
269
267
  return classifyColumnValueCompatibility(initial.parsed, schema.columns || [], props.mode, initial.hasTemplateExpressions);
270
268
  }, [schema.columns, props.mode]);
271
- const columnKeys = useMemo(() => {
272
- return (schema.columns || []).map((column) => {
273
- return column.id;
274
- });
275
- }, [schema.columns]);
276
- if (schema.isLoading) {
269
+ const columns = schema.columns || [];
270
+ /*
271
+ * A create opens with a blank row for every column it must be given, so the
272
+ * shape of the record is visible before anything is typed. Seeded rows hold
273
+ * "" and are dropped on the way out, so an untouched Create One still reads
274
+ * as empty to form validation and to the graph linter.
275
+ *
276
+ * Used by the JSON view's return trip as well as by the first load - built
277
+ * only on the way in, those rows disappeared the first time anyone looked at
278
+ * the JSON, and a create that had been read once no longer showed what it
279
+ * needed.
280
+ */
281
+ const buildRows = (parsed) => {
282
+ const storedRows = rowsFromParsedValue(parsed, columns, props.mode);
283
+ const shouldSeed = !isQuery &&
284
+ (props.recordIntent || RecordIntent.Create) === RecordIntent.Create;
285
+ return shouldSeed ? seedRequiredRows(storedRows, columns) : storedRows;
286
+ };
287
+ useEffect(() => {
288
+ if (schema.isLoading || rows !== null) {
289
+ return;
290
+ }
291
+ setRows(buildRows(initial.parsed));
292
+ }, [schema.isLoading, schema.columns]);
293
+ if (schema.isLoading || rows === null) {
277
294
  return React.createElement(ComponentLoader, null);
278
295
  }
279
296
  const isLockedToJson = !compatibility.compatible;
280
297
  const effectiveMode = isLockedToJson ? "json" : viewMode;
281
298
  const onJsonChange = (value) => {
282
299
  setJsonText(value);
300
+ /*
301
+ * Any block on returning to rows was about the previous text, so it is
302
+ * re-decided when the switch is next attempted rather than left standing.
303
+ */
304
+ setReturnToRowsBlockedBy([]);
283
305
  props.onChange(value);
284
306
  };
285
307
  const onRowsChange = (value) => {
286
- const asJson = buildColumnValueJson(value, props.mode);
308
+ setRows(value);
309
+ const asJson = serializeColumnRows(value, columns, props.mode);
287
310
  setJsonText(asJson);
288
311
  props.onChange(asJson);
289
312
  };
313
+ const showJson = () => {
314
+ /*
315
+ * What is shown is what is stored. Handing the code editor the text the
316
+ * argument held before the rows were edited would be the same data loss as
317
+ * the other direction, one step later.
318
+ */
319
+ setJsonText(serializeColumnRows(rows, columns, props.mode));
320
+ setViewMode("json");
321
+ };
322
+ const showRows = () => {
323
+ /*
324
+ * The JSON is re-read here, which is the fix for a real bug: the rows used
325
+ * to be seeded once and never again, so editing as JSON, adding a key and
326
+ * switching back silently dropped the key, and the next keystroke in any
327
+ * row overwrote the argument with the pre-edit content.
328
+ */
329
+ const edited = normalizeInitialValue(jsonText);
330
+ const editedCompatibility = classifyColumnValueCompatibility(edited.parsed, columns, props.mode, edited.hasTemplateExpressions);
331
+ if (!editedCompatibility.compatible) {
332
+ // Refused rather than silently losing the edit.
333
+ setReturnToRowsBlockedBy(editedCompatibility.reasons);
334
+ return;
335
+ }
336
+ setReturnToRowsBlockedBy([]);
337
+ setRows(buildRows(edited.parsed));
338
+ setViewMode("builder");
339
+ };
340
+ const filledRowCount = rows.filter((row) => {
341
+ if (row.columnId === "") {
342
+ return false;
343
+ }
344
+ /*
345
+ * "is set" and "is not set" carry no value by design, so counting only rows
346
+ * that hold one reported a query with three real conditions as having none.
347
+ */
348
+ if (isQuery && getOperatorOption(row.operator).hidesValueInput) {
349
+ return true;
350
+ }
351
+ return row.text !== "" || row.values.length > 0;
352
+ }).length;
353
+ /*
354
+ * Recomputed from the rows on screen rather than from the value as it was
355
+ * loaded, so fixing the column name that caused the warning also clears it.
356
+ * Read from the frozen initial value, the "id isn't a known column" note
357
+ * stayed up after the builder had corrected it to "_id", which reads as the
358
+ * editor not having noticed.
359
+ *
360
+ * Only the non-blocking half is live. Whether the value can be rows at all is
361
+ * decided once, above.
362
+ */
363
+ const unknownColumnWarnings = columns.length
364
+ ? rows
365
+ .filter((row) => {
366
+ return row.columnId !== "" && !findColumn(columns, row.columnId);
367
+ })
368
+ .map((row) => {
369
+ return `"${row.columnId}" isn't a known column on this model.`;
370
+ })
371
+ : [];
372
+ const emptyRequiredCount = isQuery
373
+ ? 0
374
+ : requiredWritableColumns(columns).filter((column) => {
375
+ return rows.some((row) => {
376
+ return row.columnId === column.id && row.text === "";
377
+ });
378
+ }).length;
379
+ const noun = isQuery ? "condition" : "field";
290
380
  return (React.createElement("div", null,
291
- schema.error && (React.createElement("p", { className: "text-sm text-amber-600 mb-2" },
292
- "Couldn't load this model's columns (",
293
- schema.error,
294
- "). You can still write ",
295
- isQuery ? "the query" : "these fields",
296
- " as JSON.")),
297
- isLockedToJson && compatibility.reasons.length > 0 && (React.createElement("div", { className: "mb-2 rounded-md border border-amber-200 bg-amber-50 p-3" },
381
+ schema.error && (React.createElement("div", { className: "mb-2 flex items-start gap-2 rounded-md border border-red-200 bg-red-50/60 px-3 py-2.5" },
382
+ React.createElement(Icon, { icon: IconProp.Alert, className: "mt-0.5 h-3.5 w-3.5 shrink-0 text-red-500" }),
383
+ React.createElement("p", { className: "text-sm text-red-700" },
384
+ "Couldn't load this model's columns (",
385
+ schema.error,
386
+ "). You can still write ",
387
+ isQuery ? "the query" : "these fields",
388
+ " as JSON."))),
389
+ isLockedToJson && compatibility.reasons.length > 0 && (React.createElement("div", { className: "mb-2 rounded-md border border-amber-200 bg-amber-50/60 px-3 py-2.5" },
298
390
  React.createElement("p", { className: "text-sm text-amber-800" }, "Editing as JSON, because:"),
299
391
  React.createElement("ul", { className: "mt-1 list-disc pl-5 text-sm text-amber-700" }, compatibility.reasons.map((reason, i) => {
300
392
  return React.createElement("li", { key: i }, reason);
301
393
  })))),
302
- !isLockedToJson && compatibility.reasons.length > 0 && (React.createElement("div", { className: "mb-2 rounded-md border border-amber-200 bg-amber-50 p-3" },
303
- React.createElement("ul", { className: "list-disc pl-5 text-sm text-amber-700" }, compatibility.reasons.map((reason, i) => {
394
+ !isLockedToJson && unknownColumnWarnings.length > 0 && (React.createElement("div", { className: "mb-2 rounded-md border border-amber-200 bg-amber-50/60 px-3 py-2.5" },
395
+ React.createElement("ul", { className: "list-disc pl-5 text-sm text-amber-700" }, unknownColumnWarnings.map((reason, i) => {
396
+ return React.createElement("li", { key: i }, reason);
397
+ })))),
398
+ returnToRowsBlockedBy.length > 0 && (React.createElement("div", { className: "mb-2 rounded-md border border-amber-200 bg-amber-50/60 px-3 py-2.5" },
399
+ React.createElement("p", { className: "text-sm text-amber-800" },
400
+ "This can't go back to ",
401
+ isQuery ? "conditions" : "fields",
402
+ ", because:"),
403
+ React.createElement("ul", { className: "mt-1 list-disc pl-5 text-sm text-amber-700" }, returnToRowsBlockedBy.map((reason, i) => {
304
404
  return React.createElement("li", { key: i }, reason);
305
405
  })))),
306
- effectiveMode === "builder" ? (React.createElement(DictionaryForm, { keys: columnKeys, enableOperators: isQuery, valueTypes: [ValueType.Text, ValueType.Number, ValueType.Boolean], addButtonSuffix: isQuery ? "condition" : "field", keyPlaceholder: "Column", valuePlaceholder: "Value", valuePlaceholders: valuePlaceholders, defaultValueSuggestions: props.valueSuggestions, initialValue: initialRows, onChange: onRowsChange })) : (React.createElement(CodeEditor, { type: CodeType.JSON, tabIndex: props.tabIndex, error: props.error, initialValue: initial.text, value: jsonText, placeholder: props.placeholder, onChange: onJsonChange })),
307
- !isLockedToJson && (React.createElement("div", { className: "mt-2" },
308
- React.createElement("button", { type: "button", className: "text-sm underline text-blue-500 hover:text-blue-600 cursor-pointer inline-flex items-center gap-1", onClick: () => {
309
- setViewMode(effectiveMode === "builder" ? "json" : "builder");
406
+ React.createElement("div", { className: "mb-2 flex items-center justify-between gap-2" },
407
+ React.createElement("p", { className: "text-xs text-gray-500" }, effectiveMode === "builder" ? (React.createElement(React.Fragment, null,
408
+ filledRowCount,
409
+ " ",
410
+ noun,
411
+ filledRowCount === 1 ? "" : "s",
412
+ " set",
413
+ emptyRequiredCount > 0 && (React.createElement("span", { className: "text-amber-600" },
414
+ " ",
415
+ "\u00B7 ",
416
+ emptyRequiredCount,
417
+ " required field",
418
+ emptyRequiredCount === 1 ? "" : "s",
419
+ " still empty")))) : (React.createElement(React.Fragment, null, "Editing the raw JSON this step will send."))),
420
+ !isLockedToJson && (React.createElement("button", { type: "button", "data-testid": "model-column-json-toggle", className: "inline-flex items-center gap-1.5 rounded-md border border-gray-200 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-700 hover:border-gray-300 hover:bg-gray-50 focus:outline-none focus:ring-1 focus:ring-indigo-500", onClick: () => {
421
+ if (effectiveMode === "builder") {
422
+ showJson();
423
+ return;
424
+ }
425
+ showRows();
310
426
  } },
311
- React.createElement(Icon, { icon: IconProp.Code, className: "h-3.5 w-3.5" }),
427
+ React.createElement(Icon, { icon: effectiveMode === "builder"
428
+ ? IconProp.Code
429
+ : IconProp.ListBullet, className: "h-3.5 w-3.5 text-gray-500" }),
312
430
  effectiveMode === "builder"
313
431
  ? "Edit as JSON"
314
432
  : isQuery
315
433
  ? "Back to conditions"
316
434
  : "Back to fields"))),
435
+ effectiveMode === "builder" ? (isQuery ? (React.createElement(ModelQueryBuilder, { rows: rows, columns: columns, suggestions: props.valueSuggestions, onChange: onRowsChange })) : (React.createElement(ModelRecordForm, { rows: rows, columns: columns, suggestions: props.valueSuggestions, onChange: onRowsChange }))) : (React.createElement(CodeEditor, { type: CodeType.JSON, tabIndex: props.tabIndex, error: props.error, initialValue: initial.text, value: jsonText, placeholder: props.placeholder, onChange: onJsonChange })),
317
436
  props.error && effectiveMode === "builder" && (React.createElement("p", { className: "mt-1 text-sm text-red-400" }, props.error))));
318
437
  };
319
438
  export default ModelColumnEditor;
@@ -1 +1 @@
1
- {"version":3,"file":"ModelColumnEditor.js","sourceRoot":"","sources":["../../../../../UI/Components/Workflow/ModelColumnEditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelColumnEditor.js","sourceRoot":"","sources":["../../../../../UI/Components/Workflow/ModelColumnEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import URL from "../../../Types/API/URL";
2
+ import { RuleRunResultUtil } from "../../../Types/NetworkAutomation/RuleRunResult";
3
+ import RuleRunSummary from "../../../Utils/NetworkAutomation/RuleRunSummary";
4
+ import { APP_API_URL } from "../../Config";
5
+ import API from "../API/API";
6
+ /*
7
+ * Client for the two Network Automation "Run now" endpoints.
8
+ *
9
+ * Both rule kinds fire automatically only when a device is created (and, for
10
+ * site assignment, when its identity changes or on the next poll of a device
11
+ * with no site), so a rule written after an estate was imported never reaches
12
+ * it. These endpoints apply one rule to the devices that already exist —
13
+ * OneUptime/oneuptime#3191.
14
+ *
15
+ * The two differ only in the route they post to and in whether the run can
16
+ * overwrite something a person chose, so they share one client rather than
17
+ * two that drift.
18
+ */
19
+ export var NetworkRuleKind;
20
+ (function (NetworkRuleKind) {
21
+ NetworkRuleKind["SiteAssignment"] = "SiteAssignment";
22
+ NetworkRuleKind["DeviceLabel"] = "DeviceLabel";
23
+ })(NetworkRuleKind || (NetworkRuleKind = {}));
24
+ const RULE_RUN_ROUTE = {
25
+ [NetworkRuleKind.SiteAssignment]: "/network-site-assignment-rule",
26
+ [NetworkRuleKind.DeviceLabel]: "/network-device-label-rule",
27
+ };
28
+ export default class RunNetworkRule {
29
+ static getRunRoute(data) {
30
+ return `${RULE_RUN_ROUTE[data.ruleKind]}/${data.ruleId}/run`;
31
+ }
32
+ static async run(data) {
33
+ /*
34
+ * Without this the request would go to `/…//run`, which matches no route
35
+ * and comes back as an unhelpful 404 rather than as the real problem.
36
+ */
37
+ if (!data.ruleId) {
38
+ return {
39
+ isSuccess: false,
40
+ message: "This rule has no id, so it cannot be run.",
41
+ };
42
+ }
43
+ const isSiteAssignment = data.ruleKind === NetworkRuleKind.SiteAssignment;
44
+ try {
45
+ const response = await API.post(Object.assign({ url: URL.fromString(APP_API_URL.toString()).addRoute(RunNetworkRule.getRunRoute({
46
+ ruleKind: data.ruleKind,
47
+ ruleId: data.ruleId,
48
+ })), data: isSiteAssignment
49
+ ? {
50
+ reassignDevicesAlreadyInASite: Boolean(data.reassignDevicesAlreadyInASite),
51
+ }
52
+ : {} }, (data.headers ? { headers: data.headers } : {})));
53
+ if (response.isFailure()) {
54
+ return {
55
+ isSuccess: false,
56
+ message: API.getFriendlyMessage(response),
57
+ };
58
+ }
59
+ const body = (response.data || {});
60
+ return {
61
+ isSuccess: true,
62
+ message: isSiteAssignment
63
+ ? RuleRunSummary.describeSiteAssignmentRun(RuleRunResultUtil.parseSiteAssignmentRuleRunResult(body))
64
+ : RuleRunSummary.describeLabelRun(RuleRunResultUtil.parseLabelRuleRunResult(body)),
65
+ };
66
+ }
67
+ catch (err) {
68
+ return {
69
+ isSuccess: false,
70
+ message: API.getFriendlyMessage(err),
71
+ };
72
+ }
73
+ }
74
+ }
75
+ //# sourceMappingURL=RunNetworkRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunNetworkRule.js","sourceRoot":"","sources":["../../../../../UI/Utils/NetworkAutomation/RunNetworkRule.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,wBAAwB,CAAC;AAKzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,cAAc,MAAM,iDAAiD,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oDAAiC,CAAA;IACjC,8CAA2B,CAAA;AAC7B,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,cAAc,GAAoC;IACtD,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,+BAA+B;IACjE,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,4BAA4B;CAC5D,CAAC;AAWF,MAAM,CAAC,OAAO,OAAO,cAAc;IAC1B,MAAM,CAAC,WAAW,CAAC,IAGzB;QACC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,MAAM,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAUvB;QACC;;;WAGG;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,2CAA2C;aACrD,CAAC;QACJ,CAAC;QAED,MAAM,gBAAgB,GACpB,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,cAAc,CAAC;QAEnD,IAAI,CAAC;YACH,MAAM,QAAQ,GACZ,MAAM,GAAG,CAAC,IAAI,iBACZ,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAClD,cAAc,CAAC,WAAW,CAAC;oBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC,CACH,EACD,IAAI,EAAE,gBAAgB;oBACpB,CAAC,CAAC;wBACE,6BAA6B,EAAE,OAAO,CACpC,IAAI,CAAC,6BAA6B,CACnC;qBACF;oBACH,CAAC,CAAC,EAAE,IACH,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAClD,CAAC;YAEL,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;gBACzB,OAAO;oBACL,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC;iBAC1C,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAe,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAe,CAAC;YAE7D,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,gBAAgB;oBACvB,CAAC,CAAC,cAAc,CAAC,yBAAyB,CACtC,iBAAiB,CAAC,gCAAgC,CAAC,IAAI,CAAC,CACzD;oBACH,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAC7B,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAChD;aACN,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC;aACrC,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}