@oneuptime/common 12.0.34 → 13.0.0

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 (259) hide show
  1. package/Models/DatabaseModels/GlobalConfig.ts +12 -12
  2. package/Models/DatabaseModels/InventoryItem.ts +44 -1
  3. package/Models/DatabaseModels/NetworkDevice.ts +126 -0
  4. package/Server/EnvironmentConfig.ts +47 -16
  5. package/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.ts +25 -0
  6. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  7. package/Server/Infrastructure/Redis.ts +8 -8
  8. package/Server/Infrastructure/Status.ts +10 -4
  9. package/Server/Services/DatabaseService.ts +65 -13
  10. package/Server/Services/InventoryItemService.ts +31 -1
  11. package/Server/Services/MonitorTemplateService.ts +140 -19
  12. package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +349 -41
  13. package/Server/Services/NetworkDeviceDiscoveryScanService.ts +87 -2
  14. package/Server/Services/NetworkDeviceService.ts +69 -0
  15. package/Server/Services/UserNotificationRuleService.ts +76 -25
  16. package/Server/Types/Database/Permissions/ReadPermission.ts +45 -5
  17. package/Server/Types/Database/QueryUtil.ts +56 -0
  18. package/Server/Types/Markdown.ts +93 -1
  19. package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +82 -17
  20. package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +10 -1
  21. package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +2 -2
  22. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +82 -35
  23. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +31 -5
  24. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +202 -37
  25. package/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +82 -9
  26. package/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.ts +16 -7
  27. package/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.ts +29 -17
  28. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +107 -48
  29. package/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.ts +158 -0
  30. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +27 -0
  31. package/Server/Utils/Telemetry/EntityRegistry.ts +11 -1
  32. package/Server/Utils/Telemetry/TelemetryEntity.ts +83 -9
  33. package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +32 -0
  34. package/Tests/App/Dashboard/AdoptedDeviceDrawer.test.tsx +374 -0
  35. package/Tests/App/Dashboard/DashboardLabelVariables.test.tsx +580 -0
  36. package/Tests/App/Dashboard/DashboardMonitorLabelVariable.test.tsx +438 -0
  37. package/Tests/App/Dashboard/DashboardVariableAllContract.test.tsx +5 -2
  38. package/Tests/App/Dashboard/DeviceAttachmentCard.test.tsx +273 -0
  39. package/Tests/App/Dashboard/DiscoveryReviewInventoryRefresh.test.tsx +505 -0
  40. package/Tests/App/Dashboard/EntityDetailPanel.test.tsx +163 -0
  41. package/Tests/App/Dashboard/InfrastructureExplorer.test.tsx +401 -0
  42. package/Tests/App/Dashboard/InfrastructureGraph.test.tsx +232 -0
  43. package/Tests/App/Dashboard/InventoryItems.test.tsx +201 -0
  44. package/Tests/App/Dashboard/InventoryTypeAndStatusFacets.test.tsx +798 -0
  45. package/Tests/App/Dashboard/NetworkTopologyLiveView.test.tsx +320 -0
  46. package/Tests/App/Dashboard/NetworkTopologyToolbar.test.tsx +275 -0
  47. package/Tests/App/Dashboard/OnCallCalendarFeedEmptyState.test.tsx +975 -0
  48. package/Tests/App/Dashboard/OnCallCalendarFeedPlanGate.test.tsx +63 -0
  49. package/Tests/App/Dashboard/ServiceMapGraph.test.tsx +626 -0
  50. package/Tests/App/Dashboard/TopologyDataLoading.test.tsx +348 -0
  51. package/Tests/App/Dashboard/TopologyPageNavigation.test.tsx +331 -0
  52. package/Tests/App/Dashboard/UserSettingsEmailPreferences.test.tsx +603 -0
  53. package/Tests/App/Dashboard/UserSettingsNotificationSettings.test.tsx +324 -0
  54. package/Tests/App/PublicDashboard/DashboardVariableSelector.test.tsx +13 -4
  55. package/Tests/App/StatusPage/StatusPageOidcOrigin.test.tsx +223 -0
  56. package/Tests/Models/InventoryItemStatus.test.ts +147 -0
  57. package/Tests/Models/NetworkDeviceMacAddressColumn.test.ts +294 -0
  58. package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +129 -0
  59. package/Tests/Server/EnvironmentConfigValkey.test.ts +227 -0
  60. package/Tests/Server/Infrastructure/Postgres/AddMacAddressToNetworkDeviceMigration.test.ts +365 -0
  61. package/Tests/Server/Infrastructure/Postgres/CustomFieldValueMappingMigration.test.ts +62 -23
  62. package/Tests/Server/Infrastructure/ValkeyDeploymentConfig.test.ts +265 -0
  63. package/Tests/Server/Middleware/HttpMetricsMiddleware.test.ts +382 -0
  64. package/Tests/Server/Middleware/SCIMAuthorization.test.ts +525 -0
  65. package/Tests/Server/Services/DatabaseServiceAggregateBy.test.ts +291 -56
  66. package/Tests/Server/Services/DatabaseServiceSortTiebreaker.test.ts +151 -0
  67. package/Tests/Server/Services/InventoryItemManualCreate.test.ts +105 -0
  68. package/Tests/Server/Services/InventoryItemPromotionGate.test.ts +178 -0
  69. package/Tests/Server/Services/MonitorTemplateServiceCustomFieldSync.test.ts +502 -0
  70. package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +1133 -81
  71. package/Tests/Server/Services/NetworkDeviceDiscoveryScanRegistration.test.ts +520 -0
  72. package/Tests/Server/Services/NetworkDeviceMacAddressNormalization.test.ts +572 -0
  73. package/Tests/Server/Types/Database/InventoryStatusPostgres.test.ts +368 -0
  74. package/Tests/Server/Types/Database/Permissions/ReadBlockPermission.test.ts +261 -14
  75. package/Tests/Server/Types/Database/QueryUtilIncludesAnyOfGroups.test.ts +169 -0
  76. package/Tests/Server/Types/Database/QueryUtilIncludesAnyOfGroupsPostgres.test.ts +297 -0
  77. package/Tests/Server/Types/Markdown.test.ts +194 -1
  78. package/Tests/Server/Types/Workflow/Components/IncomingWebhookUtils.test.ts +279 -0
  79. package/Tests/Server/Types/Workflow/Components/TextToJson.test.ts +212 -0
  80. package/Tests/Server/Utils/CustomField/CustomFieldMappingRegistry.test.ts +436 -0
  81. package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +214 -0
  82. package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerBehaviour.test.ts +1 -1
  83. package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +10 -3
  84. package/Tests/Server/Utils/EventLoop.test.ts +359 -0
  85. package/Tests/Server/Utils/JsonWebToken.test.ts +30 -0
  86. package/Tests/Server/Utils/Monitor/Criteria/CompareCriteria.test.ts +242 -0
  87. package/Tests/Server/Utils/Monitor/Criteria/CompareCriteriaAggregation.test.ts +13 -7
  88. package/Tests/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.test.ts +29 -0
  89. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +30 -6
  90. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaAnomalyUnits.test.ts +246 -0
  91. package/Tests/Server/Utils/Monitor/MonitorCriteriaEmailEvalLogAgreement.test.ts +280 -0
  92. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +224 -10
  93. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorMetricUnits.test.ts +570 -0
  94. package/Tests/Server/Utils/Monitor/MonitorCriteriaExpectationBuilderUnits.test.ts +30 -5
  95. package/Tests/Server/Utils/Monitor/MonitorCriteriaMessageBuilderUnits.test.ts +68 -21
  96. package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +36 -19
  97. package/Tests/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.test.ts +573 -0
  98. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +317 -0
  99. package/Tests/Server/Utils/Telemetry/ContextSpanProcessor.test.ts +281 -0
  100. package/Tests/Server/Utils/Telemetry/InventoryDuplicateIdentity.test.ts +316 -0
  101. package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +111 -8
  102. package/Tests/Types/Database/IncludesAnyOfGroups.test.ts +106 -0
  103. package/Tests/Types/JSONFunctions.test.ts +40 -0
  104. package/Tests/Types/NetworkAutomation/AutoImportRunMerge.test.ts +235 -0
  105. package/Tests/Types/NetworkAutomation/RuleRunResult.test.ts +66 -0
  106. package/Tests/Types/NetworkAutomation/RuleRunResultDescribe.test.ts +309 -1
  107. package/Tests/Types/Telemetry/InventoryLiveness.test.ts +99 -0
  108. package/Tests/UI/Components/CustomFields/CustomFieldsDetail.test.tsx +160 -0
  109. package/Tests/UI/ReactRouterSingletonBuild.test.ts +133 -0
  110. package/Tests/UI/Rum/ReplayHeader.test.tsx +10 -2
  111. package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +514 -0
  112. package/Tests/UI/Rum/ReplayTimeFormat.test.ts +94 -0
  113. package/Tests/UI/Rum/ReplayUi.test.tsx +559 -0
  114. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +5 -0
  115. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +1 -0
  116. package/Tests/Utils/Dashboard/Components/DashboardMonitorListComponent.test.ts +11 -1
  117. package/Tests/Utils/Dashboard/LabelVariable.test.ts +257 -0
  118. package/Tests/Utils/Dashboard/VariableUrlState.test.ts +144 -14
  119. package/Tests/Utils/MetricUnitUtil.test.ts +81 -0
  120. package/Tests/Utils/Monitor/DeviceMacLearningUtil.test.ts +497 -0
  121. package/Tests/Utils/Monitor/MetricValueFormatter.test.ts +546 -0
  122. package/Tests/Utils/Monitor/MonitorTemplateCustomFieldUtil.test.ts +218 -0
  123. package/Tests/Utils/Monitor/NetworkTopologyEndpointAdoption.test.ts +1755 -0
  124. package/Tests/Utils/NetworkAutomation/AutoImportRunChain.test.ts +320 -0
  125. package/Types/BaseDatabase/IncludesAnyOfGroups.ts +77 -0
  126. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
  127. package/Types/Dashboard/DashboardComponents/DashboardMonitorListComponent.ts +1 -0
  128. package/Types/Dashboard/DashboardVariable.ts +8 -0
  129. package/Types/JSON.ts +4 -0
  130. package/Types/JSONFunctions.ts +16 -0
  131. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +13 -0
  132. package/Types/NetworkAutomation/RuleRunResult.ts +402 -13
  133. package/Types/SerializableObjectDictionary.ts +4 -0
  134. package/Types/Telemetry/InventoryLiveness.ts +56 -0
  135. package/UI/Components/CSVFileUpload/CSVFileUpload.tsx +9 -2
  136. package/UI/Components/CustomFields/CustomFieldsDetail.tsx +46 -21
  137. package/UI/Components/Dashboard/DashboardVariableControl.tsx +285 -0
  138. package/UI/esbuild-config.js +6 -0
  139. package/Utils/Dashboard/Components/DashboardMonitorListComponent.ts +12 -1
  140. package/Utils/Dashboard/LabelVariable.ts +152 -0
  141. package/Utils/Dashboard/VariableUrlState.ts +27 -5
  142. package/Utils/MetricUnitUtil.ts +34 -0
  143. package/Utils/Monitor/DeviceMacLearningUtil.ts +177 -0
  144. package/Utils/Monitor/MetricValueFormatter.ts +342 -0
  145. package/Utils/Monitor/MonitorTemplateCustomFieldUtil.ts +124 -0
  146. package/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.ts +7 -2
  147. package/Utils/Monitor/NetworkTopologyUtil.ts +693 -0
  148. package/Utils/NetworkAutomation/AutoImportRunChain.ts +138 -0
  149. package/build/dist/Models/DatabaseModels/GlobalConfig.js +12 -12
  150. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  151. package/build/dist/Models/DatabaseModels/InventoryItem.js +34 -1
  152. package/build/dist/Models/DatabaseModels/InventoryItem.js.map +1 -1
  153. package/build/dist/Models/DatabaseModels/NetworkDevice.js +128 -0
  154. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  155. package/build/dist/Server/EnvironmentConfig.js +44 -12
  156. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  157. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.js +14 -0
  158. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.js.map +1 -0
  159. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  160. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  161. package/build/dist/Server/Infrastructure/Redis.js +8 -8
  162. package/build/dist/Server/Infrastructure/Redis.js.map +1 -1
  163. package/build/dist/Server/Infrastructure/Status.js +10 -4
  164. package/build/dist/Server/Infrastructure/Status.js.map +1 -1
  165. package/build/dist/Server/Services/DatabaseService.js +58 -13
  166. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  167. package/build/dist/Server/Services/InventoryItemService.js +28 -1
  168. package/build/dist/Server/Services/InventoryItemService.js.map +1 -1
  169. package/build/dist/Server/Services/MonitorTemplateService.js +116 -17
  170. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  171. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +270 -37
  172. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
  173. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +65 -0
  174. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
  175. package/build/dist/Server/Services/NetworkDeviceService.js +54 -0
  176. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  177. package/build/dist/Server/Services/UserNotificationRuleService.js +60 -25
  178. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  179. package/build/dist/Server/Types/Database/Permissions/ReadPermission.js +29 -4
  180. package/build/dist/Server/Types/Database/Permissions/ReadPermission.js.map +1 -1
  181. package/build/dist/Server/Types/Database/QueryUtil.js +36 -0
  182. package/build/dist/Server/Types/Database/QueryUtil.js.map +1 -1
  183. package/build/dist/Server/Types/Markdown.js +75 -0
  184. package/build/dist/Server/Types/Markdown.js.map +1 -1
  185. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +53 -18
  186. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -1
  187. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +10 -1
  188. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -1
  189. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +2 -2
  190. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -1
  191. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +58 -35
  192. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
  193. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +29 -5
  194. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  195. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +166 -35
  196. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  197. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +58 -9
  198. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js.map +1 -1
  199. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js +9 -3
  200. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js.map +1 -1
  201. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js +26 -12
  202. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js.map +1 -1
  203. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +74 -33
  204. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
  205. package/build/dist/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.js +114 -0
  206. package/build/dist/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.js.map +1 -0
  207. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +25 -0
  208. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  209. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +9 -1
  210. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
  211. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +70 -13
  212. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  213. package/build/dist/Types/BaseDatabase/IncludesAnyOfGroups.js +54 -0
  214. package/build/dist/Types/BaseDatabase/IncludesAnyOfGroups.js.map +1 -0
  215. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
  216. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  217. package/build/dist/Types/Dashboard/DashboardVariable.js +1 -0
  218. package/build/dist/Types/Dashboard/DashboardVariable.js.map +1 -1
  219. package/build/dist/Types/JSON.js +1 -0
  220. package/build/dist/Types/JSON.js.map +1 -1
  221. package/build/dist/Types/JSONFunctions.js +13 -0
  222. package/build/dist/Types/JSONFunctions.js.map +1 -1
  223. package/build/dist/Types/NetworkAutomation/RuleRunResult.js +291 -6
  224. package/build/dist/Types/NetworkAutomation/RuleRunResult.js.map +1 -1
  225. package/build/dist/Types/SerializableObjectDictionary.js +4 -0
  226. package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
  227. package/build/dist/Types/Telemetry/InventoryLiveness.js +37 -0
  228. package/build/dist/Types/Telemetry/InventoryLiveness.js.map +1 -0
  229. package/build/dist/UI/Components/CSVFileUpload/CSVFileUpload.js +7 -0
  230. package/build/dist/UI/Components/CSVFileUpload/CSVFileUpload.js.map +1 -1
  231. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +9 -2
  232. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
  233. package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js +137 -0
  234. package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js.map +1 -0
  235. package/build/dist/Utils/Dashboard/Components/DashboardMonitorListComponent.js +9 -1
  236. package/build/dist/Utils/Dashboard/Components/DashboardMonitorListComponent.js.map +1 -1
  237. package/build/dist/Utils/Dashboard/LabelVariable.js +96 -0
  238. package/build/dist/Utils/Dashboard/LabelVariable.js.map +1 -0
  239. package/build/dist/Utils/Dashboard/VariableUrlState.js +19 -4
  240. package/build/dist/Utils/Dashboard/VariableUrlState.js.map +1 -1
  241. package/build/dist/Utils/MetricUnitUtil.js +26 -0
  242. package/build/dist/Utils/MetricUnitUtil.js.map +1 -1
  243. package/build/dist/Utils/Monitor/DeviceMacLearningUtil.js +112 -0
  244. package/build/dist/Utils/Monitor/DeviceMacLearningUtil.js.map +1 -0
  245. package/build/dist/Utils/Monitor/MetricValueFormatter.js +276 -0
  246. package/build/dist/Utils/Monitor/MetricValueFormatter.js.map +1 -0
  247. package/build/dist/Utils/Monitor/MonitorTemplateCustomFieldUtil.js +101 -0
  248. package/build/dist/Utils/Monitor/MonitorTemplateCustomFieldUtil.js.map +1 -0
  249. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js +7 -2
  250. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js.map +1 -1
  251. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +484 -0
  252. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  253. package/build/dist/Utils/NetworkAutomation/AutoImportRunChain.js +59 -0
  254. package/build/dist/Utils/NetworkAutomation/AutoImportRunChain.js.map +1 -0
  255. package/jest.config.json +2 -0
  256. package/package.json +1 -1
  257. package/test-setup.sh +9 -9
  258. package/tsconfig.json +51 -11
  259. package/Tests/App/Dashboard/NotificationEmailPreferences.test.tsx +0 -399
@@ -0,0 +1,137 @@
1
+ import React, { useEffect, useRef, useState, } from "react";
2
+ import { DashboardVariableType, } from "../../../Types/Dashboard/DashboardVariable";
3
+ const MultiSelectPopover = ({ options, selected, label, isLoading, maxSelections, unavailableLabel, onChange, }) => {
4
+ var _a;
5
+ const [open, setOpen] = useState(false);
6
+ const wrapRef = useRef(null);
7
+ useEffect(() => {
8
+ if (!open) {
9
+ return undefined;
10
+ }
11
+ const onDocClick = (e) => {
12
+ if (wrapRef.current && !wrapRef.current.contains(e.target)) {
13
+ setOpen(false);
14
+ }
15
+ };
16
+ document.addEventListener("mousedown", onDocClick);
17
+ return () => {
18
+ document.removeEventListener("mousedown", onDocClick);
19
+ };
20
+ }, [open]);
21
+ const buttonText = selected.length === 0
22
+ ? isLoading
23
+ ? "Loading…"
24
+ : "All"
25
+ : selected.length === 1
26
+ ? ((_a = options.find((option) => {
27
+ return option.value === selected[0];
28
+ })) === null || _a === void 0 ? void 0 : _a.label) ||
29
+ unavailableLabel ||
30
+ selected[0]
31
+ : `${selected.length} selected`;
32
+ const toggle = (value) => {
33
+ if (selected.includes(value)) {
34
+ onChange(selected.filter((v) => {
35
+ return v !== value;
36
+ }));
37
+ }
38
+ else {
39
+ onChange([...selected, value]);
40
+ }
41
+ };
42
+ return (React.createElement("div", { className: "relative", ref: wrapRef },
43
+ React.createElement("button", { type: "button", className: "text-xs border border-gray-200 rounded-md px-2.5 py-1.5 bg-white text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-100 focus:border-blue-300 transition-colors flex items-center gap-1", disabled: isLoading, onClick: () => {
44
+ setOpen(!open);
45
+ }, title: label, "aria-label": `${label}: ${buttonText}`, "aria-expanded": open },
46
+ React.createElement("span", { className: "truncate max-w-[10rem]" }, buttonText),
47
+ React.createElement("span", { className: "text-gray-400" }, "\u25BE")),
48
+ open && (React.createElement("div", { className: "absolute z-30 mt-1 right-0 w-56 max-h-72 overflow-auto rounded-md border border-gray-200 bg-white shadow-lg py-1" },
49
+ React.createElement("div", { className: "flex items-center justify-between px-3 py-1.5 border-b border-gray-100 text-[11px] text-gray-500" },
50
+ React.createElement("span", null,
51
+ selected.length,
52
+ " selected"),
53
+ React.createElement("button", { type: "button", className: "text-blue-600 hover:underline disabled:text-gray-300", disabled: selected.length === 0, onClick: () => {
54
+ onChange([]);
55
+ } }, "Clear")),
56
+ maxSelections !== undefined && selected.length >= maxSelections && (React.createElement("p", { className: "px-3 py-1 text-xs text-gray-500" },
57
+ "Choose up to ",
58
+ maxSelections,
59
+ " labels.")),
60
+ options.length === 0 ? (React.createElement("div", { className: "px-3 py-2 text-xs text-gray-400" }, isLoading ? "Loading options…" : "No options available")) : (options.map((option) => {
61
+ const checked = selected.includes(option.value);
62
+ return (React.createElement("label", { key: option.value, className: "flex items-center gap-2 px-3 py-1.5 text-xs text-gray-700 hover:bg-gray-50 cursor-pointer" },
63
+ React.createElement("input", { type: "checkbox", className: "h-3.5 w-3.5", checked: checked, disabled: !checked &&
64
+ maxSelections !== undefined &&
65
+ selected.length >= maxSelections, onChange: () => {
66
+ toggle(option.value);
67
+ } }),
68
+ React.createElement("span", { className: "truncate" }, option.label)));
69
+ }))))));
70
+ };
71
+ const DashboardVariableControl = (props) => {
72
+ var _a, _b, _c, _d, _e, _f;
73
+ const { variable } = props;
74
+ const isTelemetryAttribute = variable.type === DashboardVariableType.TelemetryAttribute;
75
+ const isCustomList = variable.type === DashboardVariableType.CustomList ||
76
+ Boolean(variable.customListValues);
77
+ const customListOptions = variable.customListValues
78
+ ? variable.customListValues.split(",").map((v) => {
79
+ return v.trim();
80
+ })
81
+ : [];
82
+ const isProjectLabel = variable.type === DashboardVariableType.ProjectLabel;
83
+ const options = isProjectLabel
84
+ ? variable.labelOptions || []
85
+ : (isTelemetryAttribute
86
+ ? props.dynamicOptions || []
87
+ : customListOptions).map((value) => {
88
+ return { label: value, value };
89
+ });
90
+ const selectedValue = (_b = (_a = variable.selectedValue) !== null && _a !== void 0 ? _a : variable.defaultValue) !== null && _b !== void 0 ? _b : "";
91
+ const isUnavailableSelection = Boolean(isProjectLabel &&
92
+ selectedValue &&
93
+ !options.some((option) => {
94
+ return option.value === selectedValue;
95
+ }));
96
+ const useSelect = isTelemetryAttribute || isCustomList || isProjectLabel;
97
+ const label = variable.label || variable.name;
98
+ return (React.createElement("div", { className: "flex items-center gap-1.5" },
99
+ React.createElement("label", { className: "text-xs font-medium text-gray-400 uppercase tracking-wide" }, label),
100
+ useSelect && variable.isMultiSelect ? (
101
+ /*
102
+ * `selectedValues` only — never defaultValue. The popover renders
103
+ * "All" for an empty list, and DashboardVariableInterpolation
104
+ * resolves an empty list to no predicate, so the two agree. Seeding
105
+ * this from defaultValue would put a filter behind a control that
106
+ * reads "All".
107
+ */
108
+ React.createElement(MultiSelectPopover, { options: options, selected: variable.selectedValues || [], label: label, isLoading: Boolean(props.isLoadingOptions), maxSelections: isProjectLabel ? 100 : undefined, unavailableLabel: isProjectLabel ? "Unavailable label" : undefined, onChange: (next) => {
109
+ props.onVariableValueChange(variable.id, { selectedValues: next });
110
+ } })) : useSelect ? (React.createElement("select", { "aria-label": label, className: "text-xs border border-gray-200 rounded-md px-2.5 py-1.5 bg-white text-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-100 focus:border-blue-300 transition-colors",
111
+ /*
112
+ * `??`, not `||`: picking "All" stores selectedValue as "", which is
113
+ * a real selection and must not collapse back to defaultValue. Only
114
+ * an unset (undefined) selection falls through to the default — the
115
+ * same rule the query side applies in
116
+ * Common/Utils/Dashboard/VariableInterpolation.ts, so what the
117
+ * toolbar shows and what the widgets are filtered by stay in step.
118
+ */
119
+ value: (_d = (_c = variable.selectedValue) !== null && _c !== void 0 ? _c : variable.defaultValue) !== null && _d !== void 0 ? _d : "", disabled: props.isLoadingOptions, onChange: (e) => {
120
+ props.onVariableValueChange(variable.id, {
121
+ selectedValue: e.target.value,
122
+ });
123
+ } },
124
+ React.createElement("option", { value: "" }, props.isLoadingOptions ? "Loading…" : "All"),
125
+ isUnavailableSelection && (React.createElement("option", { value: selectedValue }, "Unavailable label")),
126
+ options.map((option) => {
127
+ return (React.createElement("option", { key: option.value, value: option.value }, option.label));
128
+ }))) : (React.createElement("input", { type: "text", "aria-label": label, className: "text-xs border border-gray-200 rounded-md px-2.5 py-1.5 bg-white text-gray-700 w-28 focus:outline-none focus:ring-2 focus:ring-blue-100 focus:border-blue-300 transition-colors",
129
+ // `??` so clearing the box stays cleared. See the select above.
130
+ value: (_f = (_e = variable.selectedValue) !== null && _e !== void 0 ? _e : variable.defaultValue) !== null && _f !== void 0 ? _f : "", placeholder: variable.name, onChange: (e) => {
131
+ props.onVariableValueChange(variable.id, {
132
+ selectedValue: e.target.value,
133
+ });
134
+ } }))));
135
+ };
136
+ export default DashboardVariableControl;
137
+ //# sourceMappingURL=DashboardVariableControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardVariableControl.js","sourceRoot":"","sources":["../../../../../UI/Components/Dashboard/DashboardVariableControl.tsx"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ export default class DashboardMonitorListComponentUtil extends DashboardBaseComp
49
49
  const componentArguments = [];
50
50
  componentArguments.push({
51
51
  name: "Title",
52
- description: "Header shown above the monitor list",
52
+ description: "Header shown above the monitor list. Use {{UNIT}} to show a dashboard variable’s selected label; configure Label Variable separately to filter monitors.",
53
53
  required: false,
54
54
  type: ComponentInputType.Text,
55
55
  id: "title",
@@ -108,6 +108,14 @@ export default class DashboardMonitorListComponentUtil extends DashboardBaseComp
108
108
  section: FiltersSection,
109
109
  entityFilterModelType: EntityFilterModelType.Label,
110
110
  });
111
+ componentArguments.push({
112
+ name: "Label Variable",
113
+ description: "Filter monitors using a Project Labels dashboard variable. This is combined with the fixed filters above. All removes only the variable filter.",
114
+ required: false,
115
+ type: ComponentInputType.ProjectLabelVariable,
116
+ id: "labelVariableId",
117
+ section: FiltersSection,
118
+ });
111
119
  return componentArguments;
112
120
  }
113
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardMonitorListComponent.js","sourceRoot":"","sources":["../../../../../Utils/Dashboard/Components/DashboardMonitorListComponent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DashboardMonitorListComponent.js","sourceRoot":"","sources":["../../../../../Utils/Dashboard/Components/DashboardMonitorListComponent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import Includes from "../../Types/BaseDatabase/Includes";
2
+ import IncludesAnyOfGroups from "../../Types/BaseDatabase/IncludesAnyOfGroups";
3
+ import { DashboardVariableType, } from "../../Types/Dashboard/DashboardVariable";
4
+ import BadDataException from "../../Types/Exception/BadDataException";
5
+ import ObjectID from "../../Types/ObjectID";
6
+ import DashboardVariableInterpolation from "./VariableInterpolation";
7
+ export default class DashboardLabelVariable {
8
+ static getOptions(variable) {
9
+ const options = variable.labelOptions;
10
+ if (!Array.isArray(options) ||
11
+ options.length === 0 ||
12
+ options.length > 1000) {
13
+ throw new BadDataException("A project label variable must offer between 1 and 1000 labels.");
14
+ }
15
+ const seen = new Set();
16
+ for (const option of options) {
17
+ if (!option ||
18
+ typeof option.value !== "string" ||
19
+ !ObjectID.isValidUUID(option.value) ||
20
+ typeof option.label !== "string" ||
21
+ option.label.trim().length === 0 ||
22
+ option.label.length > 1024 ||
23
+ seen.has(option.value)) {
24
+ throw new BadDataException("Project label variable choices must have unique label IDs and nonempty display names.");
25
+ }
26
+ seen.add(option.value);
27
+ }
28
+ return options;
29
+ }
30
+ static getFilter(data) {
31
+ const fixed = [...new Set(data.labelIds || [])];
32
+ if (!data.labelVariableId) {
33
+ return fixed.length > 0 ? new Includes(fixed) : undefined;
34
+ }
35
+ const matching = (data.variables || []).filter((variable) => {
36
+ return variable.id === data.labelVariableId;
37
+ });
38
+ const variable = matching[0];
39
+ if (matching.length !== 1 ||
40
+ !variable ||
41
+ variable.type !== DashboardVariableType.ProjectLabel) {
42
+ throw new BadDataException("The monitor widget's label variable is missing or is not a project label variable. Edit the widget to select a label variable.");
43
+ }
44
+ const allowed = new Set(DashboardLabelVariable.getOptions(variable).map((option) => {
45
+ return option.value;
46
+ }));
47
+ const resolved = DashboardVariableInterpolation.resolveValue(variable);
48
+ const selected = (resolved === null || resolved === void 0 ? void 0 : resolved.multi) ||
49
+ ((resolved === null || resolved === void 0 ? void 0 : resolved.scalar) !== undefined ? [resolved.scalar] : []);
50
+ if (selected.length > 100 ||
51
+ selected.some((value) => {
52
+ return !allowed.has(value);
53
+ })) {
54
+ throw new BadDataException("Choose up to 100 labels offered by this dashboard variable, or select All.");
55
+ }
56
+ if (selected.length === 0) {
57
+ return fixed.length > 0 ? new Includes(fixed) : undefined;
58
+ }
59
+ const dynamic = [...new Set(selected)];
60
+ return fixed.length > 0
61
+ ? new IncludesAnyOfGroups([fixed, dynamic])
62
+ : new Includes(dynamic);
63
+ }
64
+ static interpolateTitle(title, variables) {
65
+ if (!title || !(variables === null || variables === void 0 ? void 0 : variables.length)) {
66
+ return title;
67
+ }
68
+ return title.replace(/\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g, (placeholder, name) => {
69
+ const variable = variables.find((item) => {
70
+ return item.name === name;
71
+ });
72
+ if (!variable) {
73
+ return placeholder;
74
+ }
75
+ const resolved = DashboardVariableInterpolation.resolveValue(variable);
76
+ if (!resolved) {
77
+ return "All";
78
+ }
79
+ const values = resolved.multi || [
80
+ resolved.scalar,
81
+ ];
82
+ return values
83
+ .map((value) => {
84
+ var _a, _b;
85
+ if (variable.type !== DashboardVariableType.ProjectLabel) {
86
+ return value;
87
+ }
88
+ return (((_b = (_a = variable.labelOptions) === null || _a === void 0 ? void 0 : _a.find((option) => {
89
+ return option.value === value;
90
+ })) === null || _b === void 0 ? void 0 : _b.label) || "Unavailable label");
91
+ })
92
+ .join(", ");
93
+ });
94
+ }
95
+ }
96
+ //# sourceMappingURL=LabelVariable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LabelVariable.js","sourceRoot":"","sources":["../../../../Utils/Dashboard/LabelVariable.ts"],"names":[],"mappings":"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"}
@@ -46,11 +46,20 @@ export default class DashboardVariableUrlState {
46
46
  }
47
47
  static applyUrlToVariables(variables, fromUrl) {
48
48
  return variables.map((variable) => {
49
+ var _a, _b;
49
50
  const fromName = fromUrl[variable.name];
50
51
  if (!fromName) {
51
52
  return variable;
52
53
  }
53
- return Object.assign(Object.assign({}, variable), { selectedValue: fromName.selectedValue, selectedValues: fromName.selectedValues });
54
+ /*
55
+ * The URL's comma syntax cannot distinguish one multi-select choice
56
+ * from a scalar. Resolve that ambiguity using the saved definition.
57
+ */
58
+ if (variable.isMultiSelect) {
59
+ return Object.assign(Object.assign({}, variable), { selectedValue: undefined, selectedValues: fromName.selectedValues ||
60
+ (fromName.selectedValue ? [fromName.selectedValue] : []) });
61
+ }
62
+ return Object.assign(Object.assign({}, variable), { selectedValue: (_a = fromName.selectedValue) !== null && _a !== void 0 ? _a : (_b = fromName.selectedValues) === null || _b === void 0 ? void 0 : _b.join(","), selectedValues: undefined });
54
63
  });
55
64
  }
56
65
  /*
@@ -85,11 +94,17 @@ export default class DashboardVariableUrlState {
85
94
  continue;
86
95
  }
87
96
  const paramKey = `${VAR_PREFIX}${name}`;
88
- if (variable.selectedValues && variable.selectedValues.length > 0) {
89
- params.set(paramKey, variable.selectedValues.join(","));
97
+ if (variable.isMultiSelect) {
98
+ if (Array.isArray(variable.selectedValues)) {
99
+ params.set(paramKey, variable.selectedValues.join(","));
100
+ }
90
101
  continue;
91
102
  }
92
- if (variable.selectedValue && variable.selectedValue.length > 0) {
103
+ /*
104
+ * Keep an explicit All as `var-name=`. Omitting it would restore the
105
+ * saved selection or default when this URL is reopened.
106
+ */
107
+ if (typeof variable.selectedValue === "string") {
93
108
  params.set(paramKey, variable.selectedValue);
94
109
  }
95
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VariableUrlState.js","sourceRoot":"","sources":["../../../../Utils/Dashboard/VariableUrlState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VariableUrlState.js","sourceRoot":"","sources":["../../../../Utils/Dashboard/VariableUrlState.ts"],"names":[],"mappings":"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"}
@@ -239,6 +239,32 @@ export default class MetricUnitUtil {
239
239
  */
240
240
  return (value * fromDef.toCanonical) / metricDef.toCanonical;
241
241
  }
242
+ /*
243
+ * The canonical base of the family this unit belongs to — "B" for any
244
+ * data unit, "sec" for any time unit, "%" for percent, "bit" for bits.
245
+ * Null when the unit belongs to no known family.
246
+ *
247
+ * Distinct from getCanonicalUnitValue, which answers "what should the
248
+ * threshold dropdown default to for this metric" and returns the unit
249
+ * itself for a known family member. This answers "what is the one unit
250
+ * every member of this family can be converted into", which is what a
251
+ * formatter needs before it can pick a human-readable scale: a value
252
+ * carrying the unit "GB" has to become bytes before a bytes ladder can
253
+ * decide that 2500 of them read best as "2.5 TB".
254
+ */
255
+ static getFamilyBaseUnit(metricUnit) {
256
+ if (!metricUnit || !metricUnit.trim()) {
257
+ return null;
258
+ }
259
+ const family = findFamily(metricUnit);
260
+ if (!family) {
261
+ return null;
262
+ }
263
+ const base = family.find((u) => {
264
+ return u.toCanonical === 1;
265
+ });
266
+ return (base === null || base === void 0 ? void 0 : base.value) || null;
267
+ }
242
268
  /*
243
269
  * Convenience: does the metric unit belong to a family we can offer
244
270
  * conversions for? When false, the UI should still render a dropdown,
@@ -1 +1 @@
1
- {"version":3,"file":"MetricUnitUtil.js","sourceRoot":"","sources":["../../../Utils/MetricUnitUtil.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MetricUnitUtil.js","sourceRoot":"","sources":["../../../Utils/MetricUnitUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ import { normalizeMac } from "./EndpointAttachmentUtil";
2
+ /*
3
+ * null, undefined, "" and whitespace all read as the same "no site" key -
4
+ * the convention NetworkDeviceLinkRuleUtil and the topology builder use.
5
+ */
6
+ export function siteKeyOf(siteId) {
7
+ return (siteId || "").trim();
8
+ }
9
+ export default class DeviceMacLearningUtil {
10
+ /*
11
+ * Which devices get which MAC. The rules, every one of them a refusal:
12
+ *
13
+ * - Only a device in the SAME site as the router that reported the
14
+ * binding. Every branch has a 10.0.0.5; a project-wide match would
15
+ * stamp one store's register with another store's MAC.
16
+ * - Only a device whose MAC column is EMPTY, or holds a MAC an earlier
17
+ * pass LEARNED that this table now contradicts. What an operator typed
18
+ * is theirs and is never touched. A learned value is the pass's own
19
+ * answer, and an ARP table is exactly the evidence that can be stale
20
+ * (an address re-leased the day before the register was plugged in
21
+ * stamps the previous holder's MAC), so the pass corrects itself when
22
+ * the address is later bound to a different MAC.
23
+ * - Only an address exactly one candidate device answers at. Two
24
+ * devices registered at one address is a contradiction, and a wrong
25
+ * MAC drawn as a cable is worse than none.
26
+ * - Only an address the ARP table binds to exactly one MAC. Proxy ARP
27
+ * and stale duplicates put two MACs behind one address; neither can
28
+ * be trusted.
29
+ *
30
+ * Output is sorted by device id, so a given input always plans the same
31
+ * writes in the same order.
32
+ */
33
+ static planMacLearning(data) {
34
+ const macsByIp = new Map();
35
+ for (const binding of data.ipBindings) {
36
+ const mac = normalizeMac(binding.macAddress);
37
+ const ip = (binding.ipAddress || "").trim();
38
+ if (!mac || !ip) {
39
+ continue;
40
+ }
41
+ const macs = macsByIp.get(ip);
42
+ if (macs) {
43
+ macs.add(mac);
44
+ }
45
+ else {
46
+ macsByIp.set(ip, new Set([mac]));
47
+ }
48
+ }
49
+ const siteKey = siteKeyOf(data.observingSiteId);
50
+ const devicesByIp = new Map();
51
+ for (const device of data.devices) {
52
+ const hostname = (device.hostname || "").trim();
53
+ if (!hostname || !macsByIp.has(hostname)) {
54
+ continue;
55
+ }
56
+ if (siteKeyOf(device.siteId) !== siteKey) {
57
+ continue;
58
+ }
59
+ const bucket = devicesByIp.get(hostname);
60
+ if (bucket) {
61
+ bucket.push(device);
62
+ }
63
+ else {
64
+ devicesByIp.set(hostname, [device]);
65
+ }
66
+ }
67
+ const plan = [];
68
+ for (const [ip, candidates] of devicesByIp) {
69
+ // Two devices at one address: neither can be the one.
70
+ if (candidates.length !== 1) {
71
+ continue;
72
+ }
73
+ const macs = macsByIp.get(ip);
74
+ // Two MACs behind one address: neither can be trusted.
75
+ if (macs.size !== 1) {
76
+ continue;
77
+ }
78
+ const device = candidates[0];
79
+ const learnedMac = Array.from(macs)[0];
80
+ const storedMac = normalizeMac(device.macAddress);
81
+ const hasStoredValue = (device.macAddress || "").trim().length > 0;
82
+ if (!hasStoredValue) {
83
+ plan.push({
84
+ deviceId: device.id,
85
+ macAddress: learnedMac,
86
+ ipAddress: ip,
87
+ previousMacAddress: null,
88
+ });
89
+ continue;
90
+ }
91
+ // Typed by somebody, or already what the table says: leave it.
92
+ if (device.isMacAddressLearned !== true || storedMac === learnedMac) {
93
+ continue;
94
+ }
95
+ plan.push({
96
+ deviceId: device.id,
97
+ macAddress: learnedMac,
98
+ ipAddress: ip,
99
+ /*
100
+ * The raw stored value, not the normalised one: the writer's
101
+ * compare-and-set has to match what the column actually holds.
102
+ */
103
+ previousMacAddress: device.macAddress || null,
104
+ });
105
+ }
106
+ plan.sort((a, b) => {
107
+ return a.deviceId < b.deviceId ? -1 : a.deviceId > b.deviceId ? 1 : 0;
108
+ });
109
+ return plan;
110
+ }
111
+ }
112
+ //# sourceMappingURL=DeviceMacLearningUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceMacLearningUtil.js","sourceRoot":"","sources":["../../../../Utils/Monitor/DeviceMacLearningUtil.ts"],"names":[],"mappings":"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"}