@northern.tech/store 0.41.2 → 0.42.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 (225) hide show
  1. package/dist/actions.d.cts +9 -10
  2. package/dist/actions.d.ts +9 -10
  3. package/dist/api/general-api.cjs +1 -1
  4. package/dist/api/general-api.cjs.map +1 -1
  5. package/dist/api/general-api.d.cts +0 -1
  6. package/dist/api/general-api.d.ts +0 -1
  7. package/dist/api/general-api.js +1 -1
  8. package/dist/api/users-api.cjs +1 -1
  9. package/dist/api/users-api.d.cts +1 -6
  10. package/dist/api/users-api.d.ts +1 -6
  11. package/dist/appSlice/constants.cjs +0 -5
  12. package/dist/appSlice/constants.cjs.map +1 -1
  13. package/dist/appSlice/constants.d.cts +1 -1
  14. package/dist/appSlice/constants.d.ts +1 -1
  15. package/dist/appSlice/constants.js +0 -5
  16. package/dist/appSlice/constants.js.map +1 -1
  17. package/dist/appSlice/index.cjs.map +1 -1
  18. package/dist/appSlice/index.d.cts +1 -1
  19. package/dist/appSlice/index.d.ts +1 -1
  20. package/dist/appSlice/index.js +1 -1
  21. package/dist/appSlice/mocks.d.cts +1 -2
  22. package/dist/appSlice/mocks.d.ts +1 -2
  23. package/dist/appSlice/selectors.cjs.map +1 -1
  24. package/dist/appSlice/selectors.d.cts +9 -10
  25. package/dist/appSlice/selectors.d.ts +9 -10
  26. package/dist/appSlice/thunks.d.cts +2 -3
  27. package/dist/appSlice/thunks.d.ts +2 -3
  28. package/dist/auth.cjs +1 -1
  29. package/dist/auth.d.cts +3 -10
  30. package/dist/auth.d.ts +3 -10
  31. package/dist/auth.js +1 -1
  32. package/dist/commonConstants.d.cts +1 -1
  33. package/dist/commonConstants.d.ts +1 -1
  34. package/dist/commonConstants.js +1 -1
  35. package/dist/commonSelectors.cjs +4 -3
  36. package/dist/commonSelectors.cjs.map +1 -1
  37. package/dist/commonSelectors.d.cts +20 -21
  38. package/dist/commonSelectors.d.ts +20 -21
  39. package/dist/commonSelectors.js +4 -3
  40. package/dist/commonSelectors.js.map +1 -1
  41. package/dist/{constants-Sn4gnNA3.d.ts → constants-B3Jdkn2b.d.cts} +2 -5
  42. package/dist/{constants-Sn4gnNA3.d.cts → constants-B3Jdkn2b.d.ts} +2 -5
  43. package/dist/{constants-CzjK2gV-.d.ts → constants-B_H4squx.d.ts} +4 -4
  44. package/dist/{constants-D9o0Cnk_.d.ts → constants-C6TIYaY4.d.cts} +1 -2
  45. package/dist/{constants-D9o0Cnk_.d.cts → constants-C6TIYaY4.d.ts} +1 -2
  46. package/dist/{constants-6kYRTdox.d.ts → constants-CEwun8TL.d.cts} +3 -2
  47. package/dist/{constants-6kYRTdox.d.cts → constants-CEwun8TL.d.ts} +3 -2
  48. package/dist/constants-C_SC_VKE.cjs.map +1 -1
  49. package/dist/{constants-xpheFFkA.js → constants-CerzXHnQ.js} +3 -3
  50. package/dist/{constants-xpheFFkA.js.map → constants-CerzXHnQ.js.map} +1 -1
  51. package/dist/{constants-DAi2zOZN.d.cts → constants-Rl3FJzFf.d.cts} +4 -4
  52. package/dist/{constants-B_7FCJQX.d.ts → constants-nKSWZ8oD.d.cts} +3 -8
  53. package/dist/{constants-B_7FCJQX.d.cts → constants-nKSWZ8oD.d.ts} +3 -8
  54. package/dist/constants.cjs +2 -0
  55. package/dist/constants.d.cts +6 -6
  56. package/dist/constants.d.ts +6 -6
  57. package/dist/constants.js +3 -3
  58. package/dist/deploymentsSlice/constants.d.cts +1 -1
  59. package/dist/deploymentsSlice/constants.d.ts +1 -1
  60. package/dist/deploymentsSlice/constants.js +1 -1
  61. package/dist/deploymentsSlice/index.cjs.map +1 -1
  62. package/dist/deploymentsSlice/index.d.cts +1 -1
  63. package/dist/deploymentsSlice/index.d.ts +1 -1
  64. package/dist/deploymentsSlice/index.js +1 -1
  65. package/dist/deploymentsSlice/mocks.d.cts +1 -2
  66. package/dist/deploymentsSlice/mocks.d.ts +1 -2
  67. package/dist/deploymentsSlice/selectors.cjs.map +1 -1
  68. package/dist/deploymentsSlice/selectors.d.cts +9 -10
  69. package/dist/deploymentsSlice/selectors.d.ts +9 -10
  70. package/dist/deploymentsSlice/selectors.js +1 -1
  71. package/dist/deploymentsSlice/thunks.d.cts +7 -13
  72. package/dist/deploymentsSlice/thunks.d.ts +7 -13
  73. package/dist/devicesSlice/constants.d.cts +1 -1
  74. package/dist/devicesSlice/constants.d.ts +1 -1
  75. package/dist/devicesSlice/constants.js +1 -1
  76. package/dist/devicesSlice/index.cjs +1 -1
  77. package/dist/devicesSlice/index.cjs.map +1 -1
  78. package/dist/devicesSlice/index.d.cts +2 -2
  79. package/dist/devicesSlice/index.d.ts +2 -2
  80. package/dist/devicesSlice/index.js +2 -2
  81. package/dist/devicesSlice/index.js.map +1 -1
  82. package/dist/devicesSlice/mocks.js +1 -1
  83. package/dist/devicesSlice/selectors.cjs.map +1 -1
  84. package/dist/devicesSlice/selectors.d.cts +9 -10
  85. package/dist/devicesSlice/selectors.d.ts +9 -10
  86. package/dist/devicesSlice/selectors.js +1 -1
  87. package/dist/devicesSlice/thunks.cjs +1 -2
  88. package/dist/devicesSlice/thunks.d.cts +11 -23
  89. package/dist/devicesSlice/thunks.d.ts +11 -23
  90. package/dist/devicesSlice/thunks.js +2 -2
  91. package/dist/{index-Bb4yvvgG.d.ts → index-B8td4-rY.d.ts} +1 -2
  92. package/dist/{index-C5oQrJGU.d.ts → index-BAGyeC-q.d.ts} +2 -3
  93. package/dist/{index-CgPgKMve.d.cts → index-BgF6rhXn.d.cts} +3 -4
  94. package/dist/{index-CnH51JfB.d.ts → index-Bs0c1-WY.d.ts} +4 -9
  95. package/dist/{index-BtGhTFBc.d.ts → index-Bvyf8OO6.d.ts} +9 -13
  96. package/dist/{index-m1c0qk2s.d.ts → index-C8uiyxnb.d.ts} +2 -3
  97. package/dist/{index-CSOj22xK.d.cts → index-C_LGDJN2.d.cts} +2 -3
  98. package/dist/{index-H9zg_3UV.d.ts → index-ChKTa1aL.d.ts} +2 -3
  99. package/dist/{index-vXsWdis1.d.cts → index-CiQ95u1W.d.cts} +9 -13
  100. package/dist/{index-DBUt8xVc.d.ts → index-CoObjWL4.d.cts} +1 -2
  101. package/dist/{index-DBUt8xVc.d.cts → index-CoObjWL4.d.ts} +1 -2
  102. package/dist/{index-BCErsO5h.d.ts → index-CpfhQHfg.d.ts} +3 -4
  103. package/dist/{index-BQCnJ5gh.d.cts → index-Ctj2r57a.d.cts} +2 -3
  104. package/dist/{index-Dn1SqQYh.d.cts → index-DeOpb2oK.d.cts} +4 -9
  105. package/dist/{index-VEayiYkv.d.cts → index-DiAjzARZ.d.cts} +2 -3
  106. package/dist/{index-EPmsL6Lb.d.cts → index-mvxjivTJ.d.cts} +1 -2
  107. package/dist/liststatehook.cjs.map +1 -1
  108. package/dist/liststatehook.d.cts +0 -1
  109. package/dist/liststatehook.d.ts +0 -1
  110. package/dist/locationutils.cjs +36 -28
  111. package/dist/locationutils.cjs.map +1 -1
  112. package/dist/locationutils.d.cts +14 -67
  113. package/dist/locationutils.d.ts +14 -67
  114. package/dist/locationutils.js +37 -29
  115. package/dist/locationutils.js.map +1 -1
  116. package/dist/monitorSlice/constants.d.cts +1 -1
  117. package/dist/monitorSlice/constants.d.ts +1 -1
  118. package/dist/monitorSlice/index.cjs.map +1 -1
  119. package/dist/monitorSlice/index.d.cts +1 -1
  120. package/dist/monitorSlice/index.d.ts +1 -1
  121. package/dist/monitorSlice/index.js +1 -1
  122. package/dist/monitorSlice/mocks.d.cts +1 -2
  123. package/dist/monitorSlice/mocks.d.ts +1 -2
  124. package/dist/monitorSlice/mocks.js +1 -1
  125. package/dist/monitorSlice/selectors.d.cts +1 -2
  126. package/dist/monitorSlice/selectors.d.ts +1 -2
  127. package/dist/monitorSlice/thunks.d.cts +4 -5
  128. package/dist/monitorSlice/thunks.d.ts +4 -5
  129. package/dist/monitorSlice/thunks.js +1 -1
  130. package/dist/onboardingSlice/index.cjs.map +1 -1
  131. package/dist/onboardingSlice/index.d.cts +1 -1
  132. package/dist/onboardingSlice/index.d.ts +1 -1
  133. package/dist/onboardingSlice/mocks.d.cts +1 -2
  134. package/dist/onboardingSlice/mocks.d.ts +1 -2
  135. package/dist/onboardingSlice/selectors.d.cts +2 -3
  136. package/dist/onboardingSlice/selectors.d.ts +2 -3
  137. package/dist/onboardingSlice/thunks.d.cts +4 -4
  138. package/dist/onboardingSlice/thunks.d.ts +4 -4
  139. package/dist/organizationSlice/constants.js +1 -1
  140. package/dist/organizationSlice/index.cjs.map +1 -1
  141. package/dist/organizationSlice/index.d.cts +1 -1
  142. package/dist/organizationSlice/index.d.ts +1 -1
  143. package/dist/organizationSlice/index.js +1 -1
  144. package/dist/organizationSlice/mocks.d.cts +3 -3
  145. package/dist/organizationSlice/mocks.d.ts +3 -3
  146. package/dist/organizationSlice/mocks.js +1 -1
  147. package/dist/organizationSlice/selectors.cjs.map +1 -1
  148. package/dist/organizationSlice/selectors.d.cts +11 -16
  149. package/dist/organizationSlice/selectors.d.ts +11 -16
  150. package/dist/organizationSlice/selectors.js +1 -1
  151. package/dist/organizationSlice/thunks.d.cts +6 -7
  152. package/dist/organizationSlice/thunks.d.ts +6 -7
  153. package/dist/organizationSlice/types.d.cts +1 -1
  154. package/dist/organizationSlice/types.d.ts +1 -1
  155. package/dist/releasesSlice/constants.cjs +2 -0
  156. package/dist/releasesSlice/constants.cjs.map +1 -1
  157. package/dist/releasesSlice/constants.d.cts +2 -2
  158. package/dist/releasesSlice/constants.d.ts +2 -2
  159. package/dist/releasesSlice/constants.js +2 -1
  160. package/dist/releasesSlice/constants.js.map +1 -1
  161. package/dist/releasesSlice/index.cjs.map +1 -1
  162. package/dist/releasesSlice/index.d.cts +1 -1
  163. package/dist/releasesSlice/index.d.ts +1 -1
  164. package/dist/releasesSlice/index.js +1 -1
  165. package/dist/releasesSlice/mocks.js +1 -1
  166. package/dist/releasesSlice/selectors.cjs.map +1 -1
  167. package/dist/releasesSlice/selectors.d.cts +9 -10
  168. package/dist/releasesSlice/selectors.d.ts +9 -10
  169. package/dist/releasesSlice/thunks.cjs +1 -1
  170. package/dist/releasesSlice/thunks.cjs.map +1 -1
  171. package/dist/releasesSlice/thunks.d.cts +4 -5
  172. package/dist/releasesSlice/thunks.d.ts +4 -5
  173. package/dist/releasesSlice/thunks.js +1 -1
  174. package/dist/{rolldown-runtime-D6vf50IK.cjs → rolldown-runtime-VH7oDXx4.cjs} +1 -1
  175. package/dist/sockethook.cjs +1 -2
  176. package/dist/sockethook.cjs.map +1 -1
  177. package/dist/sockethook.d.cts +1 -8
  178. package/dist/sockethook.d.ts +1 -8
  179. package/dist/sockethook.js +1 -2
  180. package/dist/sockethook.js.map +1 -1
  181. package/dist/{store-CkgokFlk.d.ts → store-CPptM5Ts.d.ts} +27 -48
  182. package/dist/{store-CGP5pCH8.d.cts → store-CUUm1GTI.d.cts} +27 -48
  183. package/dist/store.cjs.map +1 -1
  184. package/dist/store.d.cts +1 -1
  185. package/dist/store.d.ts +1 -1
  186. package/dist/store.js +1 -1
  187. package/dist/storehooks.cjs +30 -20
  188. package/dist/storehooks.cjs.map +1 -1
  189. package/dist/storehooks.d.cts +13 -4
  190. package/dist/storehooks.d.ts +13 -4
  191. package/dist/storehooks.js +31 -22
  192. package/dist/storehooks.js.map +1 -1
  193. package/dist/thunks.cjs +16 -112
  194. package/dist/thunks.cjs.map +1 -1
  195. package/dist/thunks.d.cts +2 -2
  196. package/dist/thunks.d.ts +2 -2
  197. package/dist/thunks.js +16 -111
  198. package/dist/thunks.js.map +1 -1
  199. package/dist/{types-uHmaedGU.d.ts → types-B3qGQoMx.d.ts} +3 -4
  200. package/dist/{types-yQ0ypHMZ.d.cts → types-B80ckxiy.d.cts} +3 -4
  201. package/dist/useDeploymentDevice.cjs +1 -1
  202. package/dist/useDeploymentDevice.cjs.map +1 -1
  203. package/dist/usersSlice/constants.d.cts +1 -1
  204. package/dist/usersSlice/constants.d.ts +1 -1
  205. package/dist/usersSlice/constants.js +1 -1
  206. package/dist/usersSlice/index.cjs.map +1 -1
  207. package/dist/usersSlice/index.d.cts +1 -1
  208. package/dist/usersSlice/index.d.ts +1 -1
  209. package/dist/usersSlice/index.js +1 -1
  210. package/dist/usersSlice/mocks.d.cts +2 -3
  211. package/dist/usersSlice/mocks.d.ts +2 -3
  212. package/dist/usersSlice/mocks.js +1 -1
  213. package/dist/usersSlice/selectors.cjs.map +1 -1
  214. package/dist/usersSlice/selectors.d.cts +10 -11
  215. package/dist/usersSlice/selectors.d.ts +10 -11
  216. package/dist/usersSlice/selectors.js +1 -1
  217. package/dist/usersSlice/thunks.d.cts +5 -6
  218. package/dist/usersSlice/thunks.d.ts +5 -6
  219. package/dist/utils.cjs +2 -2
  220. package/dist/utils.cjs.map +1 -1
  221. package/dist/utils.d.cts +1 -1
  222. package/dist/utils.d.ts +1 -1
  223. package/dist/utils.js +3 -3
  224. package/dist/utils.js.map +1 -1
  225. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"commonSelectors.cjs","names":["getOrganization","getFeatures","PLANS","getCurrentUser","getRolesById","rolesByName","mapUserRolesToUiPermissions","getIsServiceProvider","uiPermissionsById","ADDONS","getGlobalSettings","getFilteringAttributes","ATTRIBUTE_SCOPES","ATTRIBUTE_SCOPE_LABELS","stripOrchestratorManifestPrefix","getAttributeScopeLabel","getOnboarding","getUserSettings","onboardingSteps","getDevicesById","getDeviceById","getDeploymentsById","getDeploymentsSelectionState","getReleasesById","getSelectedDeploymentDeviceIds","getIssueCountsByType","DEVICE_ISSUE_OPTIONS","getGroupsById","UNGROUPED_GROUP","ALL_DEVICES","defaultReports","getListedDevices","getSearchedDevices","listItemMapper","getAuditLogEntry","getRolesList","rolesById","serviceProviderRolesById","getHas2FA","getUserSettingsInitialized","getSecurityAlertDismissedTimestamp"],"sources":["../src/commonSelectors.ts"],"sourcesContent":["// Copyright 2024 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport type { AuditLog as AuditLogEvent } from '@northern.tech/types/types.gen';\nimport type { DeviceIssueOption } from '@northern.tech/utils/constants';\nimport { attributeDuplicateFilter, getDemoDeviceAddress as getDemoDeviceAddressHelper } from '@northern.tech/utils/helpers';\nimport { createSelector } from '@reduxjs/toolkit';\nimport dayjs from 'dayjs';\n\nimport { ADDONS, PLANS, defaultReports } from './appSlice/constants';\nimport { getFeatures, getSearchedDevices } from './appSlice/selectors';\nimport { ATTRIBUTE_SCOPE_LABELS, DEVICE_LIST_MAXIMUM_LENGTH, UNGROUPED_GROUP } from './commonConstants';\nimport { ALL_DEVICES, ATTRIBUTE_SCOPES, DEVICE_ISSUE_OPTIONS, rolesById, rolesByName, serviceProviderRolesById, uiPermissionsById } from './constants';\nimport type { Role } from './constants';\nimport type { Deployment } from './deploymentsSlice';\nimport { getDeploymentsById, getDeploymentsSelectionState, getSelectedDeploymentDeviceIds } from './deploymentsSlice/selectors';\nimport type { Device, DeviceGroup } from './devicesSlice';\nimport { getDeviceById, getDevicesById, getFilteringAttributes, getGroupsById, getListedDevices } from './devicesSlice/selectors';\nimport { getIssueCountsByType } from './monitorSlice/selectors';\nimport { onboardingSteps } from './onboardingSlice/constants';\nimport { getOnboarding } from './onboardingSlice/selectors';\nimport { getAuditLogEntry, getIsServiceProvider, getOrganization } from './organizationSlice/selectors';\nimport { getReleasesById } from './releasesSlice/selectors';\nimport {\n getCurrentUser,\n getGlobalSettings,\n getHas2FA,\n getRolesById,\n getRolesList,\n getSecurityAlertDismissedTimestamp,\n getUserSettings,\n getUserSettingsInitialized\n} from './usersSlice/selectors';\nimport { getAttributeScopeLabel, listItemMapper, mapUserRolesToUiPermissions, stripOrchestratorManifestPrefix } from './utils';\n\nexport const getIsEnterprise = createSelector(\n [getOrganization, getFeatures],\n ({ plan = PLANS.os.id }, { isEnterprise, isHosted }) => isEnterprise || (isHosted && plan === PLANS.enterprise.id)\n);\n\nexport const getUserRoles = createSelector([getCurrentUser, getRolesById, getIsEnterprise], (currentUser, rolesById, isEnterprise) => {\n const isAdmin = currentUser.roles?.length ? currentUser.roles.some(role => role === rolesByName.admin) : !isEnterprise;\n const uiPermissions = isAdmin ? mapUserRolesToUiPermissions([rolesByName.admin], rolesById) : mapUserRolesToUiPermissions(currentUser.roles || [], rolesById);\n return { isAdmin, uiPermissions };\n});\n\nconst hasPermission = (thing: Record<string, string[]>, permission: string): boolean =>\n Object.values(thing).some(permissions => permissions.includes(permission));\n\nexport const getUserCapabilities = createSelector([getUserRoles, getIsServiceProvider], ({ uiPermissions }, isServiceProvider) => {\n const canManageReleases = hasPermission(uiPermissions.releases, uiPermissionsById.manage.value);\n const canReadReleases = canManageReleases || hasPermission(uiPermissions.releases, uiPermissionsById.read.value);\n const canUploadReleases = canManageReleases || hasPermission(uiPermissions.releases, uiPermissionsById.upload.value);\n\n const canAuditlog = uiPermissions.auditlog.includes(uiPermissionsById.read.value);\n\n const canReadUsers = uiPermissions.userManagement.includes(uiPermissionsById.read.value);\n const canManageUsers = uiPermissions.userManagement.includes(uiPermissionsById.manage.value);\n\n const canReadDevices = hasPermission(uiPermissions.groups, uiPermissionsById.read.value);\n const canWriteDevices = Object.values(uiPermissions.groups).some(\n groupPermissions => groupPermissions.includes(uiPermissionsById.read.value) && groupPermissions.length > 1\n );\n const canTroubleshoot = hasPermission(uiPermissions.groups, uiPermissionsById.connect.value);\n const canManageDevices = hasPermission(uiPermissions.groups, uiPermissionsById.manage.value);\n const canConfigure = hasPermission(uiPermissions.groups, uiPermissionsById.configure.value);\n\n const canDeploy =\n (uiPermissions.deployments?.includes(uiPermissionsById.deploy.value) ?? false) || hasPermission(uiPermissions.groups, uiPermissionsById.deploy.value);\n const canReadDeployments = uiPermissions.deployments?.includes(uiPermissionsById.read.value) ?? false;\n\n return {\n canAuditlog,\n canConfigure,\n canDeploy,\n canManageDevices,\n canManageReleases,\n canManageUsers,\n canReadDeployments,\n canReadDevices,\n canReadReleases,\n canReadUsers,\n canTroubleshoot,\n canUploadReleases,\n canWriteDevices,\n groupsPermissions: uiPermissions.groups,\n releasesPermissions: uiPermissions.releases,\n SPTenant: isServiceProvider\n };\n});\n\nexport const getTenantCapabilities = createSelector(\n [getFeatures, getOrganization, getIsEnterprise],\n (\n {\n hasAuditlogs: isAuditlogEnabled,\n hasDeviceConfig: isDeviceConfigEnabled,\n hasDeviceConnect: isDeviceConnectEnabled,\n hasMonitor: isMonitorEnabled,\n isHosted\n },\n { addons = [], plan = PLANS.os.id },\n isEnterprise\n ) => {\n const canDelta = isEnterprise || plan === PLANS.professional.id;\n const hasAuditlogs = isAuditlogEnabled && isEnterprise;\n const hasDeviceConfig = addons.some(addon => addon.name === ADDONS.configure.id && addon.enabled) || (isDeviceConfigEnabled && !isHosted);\n const hasDeviceConnect = addons.some(addon => addon.name === ADDONS.troubleshoot.id && addon.enabled) || (isDeviceConnectEnabled && !isHosted);\n const hasMonitor = isMonitorEnabled && addons.some(addon => addon.name === ADDONS.monitor.id && addon.enabled);\n return {\n canDelta,\n canRetry: canDelta,\n canSchedule: canDelta,\n hasAuditlogs,\n hasDeviceConfig,\n hasDeviceConnect,\n hasFullFiltering: canDelta,\n hasMonitor,\n isEnterprise,\n plan\n };\n }\n);\n\nexport const getFilterAttributes = createSelector(\n [getGlobalSettings, getFilteringAttributes],\n ({ previousFilters }, { identityAttributes, inventoryAttributes, systemAttributes, tagAttributes }) => {\n const deviceNameAttribute = { key: 'name', value: 'Name', scope: ATTRIBUTE_SCOPES.tags, category: ATTRIBUTE_SCOPES.tags, priority: 1 };\n const deviceIdAttribute = { key: 'id', value: 'Device ID', scope: ATTRIBUTE_SCOPES.identity, category: ATTRIBUTE_SCOPES.identity, priority: 1 };\n const checkInAttribute = {\n key: 'check_in_time',\n value: 'Latest activity',\n scope: ATTRIBUTE_SCOPES.system,\n category: ATTRIBUTE_SCOPE_LABELS.default,\n priority: 4\n };\n const updateAttribute = { ...checkInAttribute, key: 'updated_ts', value: 'Last inventory update' };\n const firstRequestAttribute = {\n key: 'created_ts',\n value: 'First request',\n scope: ATTRIBUTE_SCOPES.system,\n category: ATTRIBUTE_SCOPE_LABELS.default,\n priority: 4\n };\n const attributes = [\n ...previousFilters.map(item => ({\n ...item,\n value: deviceIdAttribute.key === item.key ? deviceIdAttribute.value : stripOrchestratorManifestPrefix(item.key),\n category: 'recently used',\n priority: 0\n })),\n deviceNameAttribute,\n deviceIdAttribute,\n ...identityAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.identity, category: ATTRIBUTE_SCOPES.identity, priority: 1 })),\n ...inventoryAttributes.map(item => {\n const category = getAttributeScopeLabel({ key: item, scope: ATTRIBUTE_SCOPES.inventory });\n return {\n key: item,\n value: stripOrchestratorManifestPrefix(item),\n scope: ATTRIBUTE_SCOPES.inventory,\n category,\n priority: category === ATTRIBUTE_SCOPES.inventory ? 2 : 3\n };\n }),\n ...tagAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.tags, category: ATTRIBUTE_SCOPES.tags, priority: 3 })),\n checkInAttribute,\n updateAttribute,\n firstRequestAttribute,\n ...systemAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPE_LABELS.default, priority: 4 }))\n ];\n return attributeDuplicateFilter(attributes, 'key');\n }\n);\n\nexport const getOnboardingState = createSelector([getOnboarding, getUserSettings], ({ complete, progress, showTips, ...remainder }, { onboarding = {} }) => ({\n ...remainder,\n ...onboarding,\n complete: onboarding.complete || complete,\n progress:\n Object.keys(onboardingSteps).findIndex(step => step === progress) > Object.keys(onboardingSteps).findIndex(step => step === onboarding.progress)\n ? progress\n : onboarding.progress,\n showTips: !onboarding.showTips ? onboarding.showTips : showTips\n}));\n\nexport const getDemoDeviceAddress = createSelector([getDevicesById, getOnboarding], (devicesById, { approach, demoArtifactPort }) => {\n const demoDeviceAddress = `http://${getDemoDeviceAddressHelper(Object.values(devicesById), approach)}`;\n return demoArtifactPort ? `${demoDeviceAddress}:${demoArtifactPort}` : demoDeviceAddress;\n});\n\nexport const getDeviceConfigDeployment = createSelector([getDeviceById, getDeploymentsById], (device, deploymentsById) => {\n const { config = {} } = device;\n const { deployment_id: configDeploymentId = '' } = config;\n const deviceConfigDeployment = deploymentsById[configDeploymentId] ?? {};\n return { device, deviceConfigDeployment };\n});\n\nexport const getDeploymentRelease = createSelector(\n [getDeploymentsById, getDeploymentsSelectionState, getReleasesById],\n (deploymentsById, { selectedId = '' }, releasesById) => {\n const deployment = deploymentsById[selectedId] ?? {};\n return deployment?.artifact_name && releasesById[deployment.artifact_name] ? releasesById[deployment.artifact_name] : { device_types_compatible: [] };\n }\n);\n\nexport const getSelectedDeploymentData = createSelector(\n [getDeploymentsById, getDeploymentsSelectionState, getDevicesById, getSelectedDeploymentDeviceIds],\n (deploymentsById, { selectedId = '' }, devicesById, selectedDeviceIds) => {\n const deployment = deploymentsById[selectedId] ?? {};\n const { devices = {} } = deployment as Deployment;\n return {\n deployment,\n selectedDevices: selectedDeviceIds.map(deviceId => ({ ...devicesById[deviceId], ...(devices[deviceId] ?? {}) }))\n };\n }\n);\n\nexport const getAvailableIssueOptionsByType = createSelector([getTenantCapabilities, getIssueCountsByType], ({ hasFullFiltering, hasMonitor }, issueCounts) =>\n Object.values<DeviceIssueOption>(DEVICE_ISSUE_OPTIONS).reduce(\n (accu, { isCategory, key, needsFullFiltering, needsMonitor, title }) => {\n if (isCategory || (needsFullFiltering && !hasFullFiltering) || (needsMonitor && !hasMonitor)) {\n return accu;\n }\n accu[key] = { count: issueCounts[key].filtered, key, title };\n return accu;\n },\n {} as Record<string, { count: number; key: string; title: string }>\n )\n);\n\nexport const getGroupNames = createSelector([getGroupsById, getUserRoles], (groupsById, { uiPermissions }) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [UNGROUPED_GROUP.id]: ungrouped, ...groups } = groupsById;\n return Object.keys(\n Object.entries(groups).reduce(\n (accu, [groupName, group]) => {\n if (group.filters || uiPermissions.groups[ALL_DEVICES]) {\n accu[groupName] = group;\n }\n return accu;\n },\n { ...uiPermissions.groups } as Record<string, DeviceGroup>\n )\n ).sort();\n});\n\nexport const getDeviceReportsForUser = createSelector(\n [getUserSettings, getCurrentUser, getGlobalSettings, getDevicesById],\n ({ reports }, { id: currentUserId }, globalSettings, devicesById) =>\n reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : [])\n);\n\nconst listTypeDeviceIdMap = {\n deviceList: getListedDevices,\n search: getSearchedDevices\n};\nconst deviceMapDefault = { defaultObject: { auth_sets: [] }, cutOffSize: DEVICE_LIST_MAXIMUM_LENGTH };\nconst getDeviceMappingDefaults = () => deviceMapDefault;\n\nexport const getMappedDevicesList = createSelector(\n [getDevicesById, (state, listType) => listTypeDeviceIdMap[listType](state), getDeviceMappingDefaults],\n listItemMapper\n);\n\nexport const getAuditlogDevice = createSelector([getAuditLogEntry, getDevicesById], (auditlogEvent, devicesById) => {\n let auditlogDevice: Partial<Device> = {};\n if (auditlogEvent) {\n const { object } = auditlogEvent as AuditLogEvent;\n const objectData = object as AuditLogEvent['object'] | undefined;\n if (objectData?.type === 'device' && objectData.id) {\n auditlogDevice = { id: objectData.id, ...(objectData.device ?? {}) } as Device;\n }\n }\n return { ...auditlogDevice, ...(auditlogDevice.id ? devicesById[auditlogDevice.id] : {}) };\n});\n\ntype RoleItem = Role | { value: string };\nexport const getRelevantRoles = createSelector([getOrganization, getRolesList], ({ service_provider }, roles) => {\n if (service_provider) {\n return roles.reduce(\n (accu, role) => {\n if (rolesById[role.value as keyof typeof rolesById]) {\n return accu;\n }\n accu.push(role);\n return accu;\n },\n [...Object.values(serviceProviderRolesById)] as RoleItem[]\n );\n }\n return Object.keys(rolesById)\n .reverse()\n .reduce((accu, key) => {\n const index = accu.findIndex(({ value }) => value === key);\n if (index >= 0) {\n accu = [accu[index], ...accu.filter((_, itemIndex) => index !== itemIndex)];\n }\n return accu;\n }, roles);\n});\n\nexport const getShowSecurityAlert = createSelector(\n [getCurrentUser, getHas2FA, getFeatures, getIsEnterprise, getUserSettingsInitialized, getSecurityAlertDismissedTimestamp],\n (currentUser, has2FA, features, isEnterprise, settingsInitialized, dismissedTimestamp) => {\n const isOAuth2 = !!currentUser?.sso?.length;\n const userVerified = !!currentUser.verified;\n\n const isHosted = features?.isHosted;\n const canHave2FA = isEnterprise || isHosted;\n const secureOAuthUser = isOAuth2 && userVerified;\n if (!currentUser || !settingsInitialized || has2FA || !canHave2FA || secureOAuthUser) {\n return false;\n }\n\n if (dismissedTimestamp === null) {\n return true;\n }\n\n const today = dayjs();\n const dismissedMonthAgo = today.diff(dismissedTimestamp, 'months');\n\n return dismissedMonthAgo > 0;\n }\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA6CA,MAAa,mBAAA,GAAA,iBAAA,eAAA,CACX,CAACA,oCAAAA,iBAAiBC,2BAAAA,WAAW,IAC5B,EAAE,OAAOC,2BAAAA,MAAM,GAAG,MAAM,EAAE,cAAc,eAAe,gBAAiB,YAAY,SAASA,2BAAAA,MAAM,WAAW,EACjH;AAEA,MAAa,gBAAA,GAAA,iBAAA,eAAA,CAA8B;CAACC,6BAAAA;CAAgBC,6BAAAA;CAAc;AAAe,IAAI,aAAa,WAAW,iBAAiB;CACpI,MAAM,UAAU,YAAY,OAAO,SAAS,YAAY,MAAM,MAAK,SAAQ,SAASC,+BAAAA,YAAY,KAAK,IAAI,CAAC;CAE1G,OAAO;EAAE;EAAS,eADI,UAAUC,cAAAA,4BAA4B,CAACD,+BAAAA,YAAY,KAAK,GAAG,SAAS,IAAIC,cAAAA,4BAA4B,YAAY,SAAS,CAAC,GAAG,SAAS;CAC5H;AAClC,CAAC;AAED,MAAM,iBAAiB,OAAiC,eACtD,OAAO,OAAO,KAAK,CAAC,CAAC,MAAK,gBAAe,YAAY,SAAS,UAAU,CAAC;AAE3E,MAAa,uBAAA,GAAA,iBAAA,eAAA,CAAqC,CAAC,cAAcC,oCAAAA,oBAAoB,IAAI,EAAE,iBAAiB,sBAAsB;CAChI,MAAM,oBAAoB,cAAc,cAAc,UAAUC,+BAAAA,kBAAkB,OAAO,KAAK;CAC9F,MAAM,kBAAkB,qBAAqB,cAAc,cAAc,UAAUA,+BAAAA,kBAAkB,KAAK,KAAK;CAC/G,MAAM,oBAAoB,qBAAqB,cAAc,cAAc,UAAUA,+BAAAA,kBAAkB,OAAO,KAAK;CAEnH,MAAM,cAAc,cAAc,SAAS,SAASA,+BAAAA,kBAAkB,KAAK,KAAK;CAEhF,MAAM,eAAe,cAAc,eAAe,SAASA,+BAAAA,kBAAkB,KAAK,KAAK;CACvF,MAAM,iBAAiB,cAAc,eAAe,SAASA,+BAAAA,kBAAkB,OAAO,KAAK;CAE3F,MAAM,iBAAiB,cAAc,cAAc,QAAQA,+BAAAA,kBAAkB,KAAK,KAAK;CACvF,MAAM,kBAAkB,OAAO,OAAO,cAAc,MAAM,CAAC,CAAC,MAC1D,qBAAoB,iBAAiB,SAASA,+BAAAA,kBAAkB,KAAK,KAAK,KAAK,iBAAiB,SAAS,CAC3G;CACA,MAAM,kBAAkB,cAAc,cAAc,QAAQA,+BAAAA,kBAAkB,QAAQ,KAAK;CAC3F,MAAM,mBAAmB,cAAc,cAAc,QAAQA,+BAAAA,kBAAkB,OAAO,KAAK;CAO3F,OAAO;EACL;EACA,cARmB,cAAc,cAAc,QAAQA,+BAAAA,kBAAkB,UAAU,KAQxE;EACX,YANC,cAAc,aAAa,SAASA,+BAAAA,kBAAkB,OAAO,KAAK,KAAK,UAAU,cAAc,cAAc,QAAQA,+BAAAA,kBAAkB,OAAO,KAAK;EAOpJ;EACA;EACA;EACA,oBATyB,cAAc,aAAa,SAASA,+BAAAA,kBAAkB,KAAK,KAAK,KAAK;EAU9F;EACA;EACA;EACA;EACA;EACA;EACA,mBAAmB,cAAc;EACjC,qBAAqB,cAAc;EACnC,UAAU;CACZ;AACF,CAAC;AAED,MAAa,yBAAA,GAAA,iBAAA,eAAA,CACX;CAACP,2BAAAA;CAAaD,oCAAAA;CAAiB;AAAe,IAE5C,EACE,cAAc,mBACd,iBAAiB,uBACjB,kBAAkB,wBAClB,YAAY,kBACZ,YAEF,EAAE,SAAS,CAAC,GAAG,OAAOE,2BAAAA,MAAM,GAAG,MAC/B,iBACG;CACH,MAAM,WAAW,gBAAgB,SAASA,2BAAAA,MAAM,aAAa;CAK7D,OAAO;EACL;EACA,UAAU;EACV,aAAa;EACb,cARmB,qBAAqB;EASxC,iBARsB,OAAO,MAAK,UAAS,MAAM,SAASO,2BAAAA,OAAO,UAAU,MAAM,MAAM,OAAO,KAAM,yBAAyB,CAAC;EAS9H,kBARuB,OAAO,MAAK,UAAS,MAAM,SAASA,2BAAAA,OAAO,aAAa,MAAM,MAAM,OAAO,KAAM,0BAA0B,CAAC;EASnI,kBAAkB;EAClB,YATiB,oBAAoB,OAAO,MAAK,UAAS,MAAM,SAASA,2BAAAA,OAAO,QAAQ,MAAM,MAAM,OAAO;EAU3G;EACA;CACF;AACF,CACF;AAEA,MAAa,uBAAA,GAAA,iBAAA,eAAA,CACX,CAACC,6BAAAA,mBAAmBC,+BAAAA,sBAAsB,IACzC,EAAE,mBAAmB,EAAE,oBAAoB,qBAAqB,kBAAkB,oBAAoB;CACrG,MAAM,sBAAsB;EAAE,KAAK;EAAQ,OAAO;EAAQ,OAAOC,+BAAAA,iBAAiB;EAAM,UAAUA,+BAAAA,iBAAiB;EAAM,UAAU;CAAE;CACrI,MAAM,oBAAoB;EAAE,KAAK;EAAM,OAAO;EAAa,OAAOA,+BAAAA,iBAAiB;EAAU,UAAUA,+BAAAA,iBAAiB;EAAU,UAAU;CAAE;CAC9I,MAAM,mBAAmB;EACvB,KAAK;EACL,OAAO;EACP,OAAOA,+BAAAA,iBAAiB;EACxB,UAAUC,kBAAAA,uBAAuB;EACjC,UAAU;CACZ;CACA,MAAM,kBAAkB;EAAE,GAAG;EAAkB,KAAK;EAAc,OAAO;CAAwB;CACjG,MAAM,wBAAwB;EAC5B,KAAK;EACL,OAAO;EACP,OAAOD,+BAAAA,iBAAiB;EACxB,UAAUC,kBAAAA,uBAAuB;EACjC,UAAU;CACZ;CA2BA,QAAA,GAAA,6BAAA,yBAAA,CAAgC;EAzB9B,GAAG,gBAAgB,KAAI,UAAS;GAC9B,GAAG;GACH,OAAO,kBAAkB,QAAQ,KAAK,MAAM,kBAAkB,QAAQC,cAAAA,gCAAgC,KAAK,GAAG;GAC9G,UAAU;GACV,UAAU;EACZ,EAAE;EACF;EACA;EACA,GAAG,mBAAmB,KAAI,UAAS;GAAE,KAAK;GAAM,OAAO;GAAM,OAAOF,+BAAAA,iBAAiB;GAAU,UAAUA,+BAAAA,iBAAiB;GAAU,UAAU;EAAE,EAAE;EAClJ,GAAG,oBAAoB,KAAI,SAAQ;GACjC,MAAM,WAAWG,cAAAA,uBAAuB;IAAE,KAAK;IAAM,OAAOH,+BAAAA,iBAAiB;GAAU,CAAC;GACxF,OAAO;IACL,KAAK;IACL,OAAOE,cAAAA,gCAAgC,IAAI;IAC3C,OAAOF,+BAAAA,iBAAiB;IACxB;IACA,UAAU,aAAaA,+BAAAA,iBAAiB,YAAY,IAAI;GAC1D;EACF,CAAC;EACD,GAAG,cAAc,KAAI,UAAS;GAAE,KAAK;GAAM,OAAO;GAAM,OAAOA,+BAAAA,iBAAiB;GAAM,UAAUA,+BAAAA,iBAAiB;GAAM,UAAU;EAAE,EAAE;EACrI;EACA;EACA;EACA,GAAG,iBAAiB,KAAI,UAAS;GAAE,KAAK;GAAM,OAAO;GAAM,OAAOA,+BAAAA,iBAAiB;GAAQ,UAAUC,kBAAAA,uBAAuB;GAAS,UAAU;EAAE,EAAE;CAE5G,GAAG,KAAK;AACnD,CACF;AAEA,MAAa,sBAAA,GAAA,iBAAA,eAAA,CAAoC,CAACG,kCAAAA,eAAeC,6BAAAA,eAAe,IAAI,EAAE,UAAU,UAAU,UAAU,GAAG,aAAa,EAAE,aAAa,CAAC,SAAS;CAC3J,GAAG;CACH,GAAG;CACH,UAAU,WAAW,YAAY;CACjC,UACE,OAAO,KAAKC,kCAAAA,eAAe,CAAC,CAAC,WAAU,SAAQ,SAAS,QAAQ,IAAI,OAAO,KAAKA,kCAAAA,eAAe,CAAC,CAAC,WAAU,SAAQ,SAAS,WAAW,QAAQ,IAC3I,WACA,WAAW;CACjB,UAAU,CAAC,WAAW,WAAW,WAAW,WAAW;AACzD,EAAE;AAEF,MAAa,wBAAA,GAAA,iBAAA,eAAA,CAAsC,CAACC,+BAAAA,gBAAgBH,kCAAAA,aAAa,IAAI,aAAa,EAAE,UAAU,uBAAuB;CACnI,MAAM,oBAAoB,WAAA,GAAA,6BAAA,qBAAA,CAAqC,OAAO,OAAO,WAAW,GAAG,QAAQ;CACnG,OAAO,mBAAmB,GAAG,kBAAkB,GAAG,qBAAqB;AACzE,CAAC;AAED,MAAa,6BAAA,GAAA,iBAAA,eAAA,CAA2C,CAACI,+BAAAA,eAAeC,mCAAAA,kBAAkB,IAAI,QAAQ,oBAAoB;CACxH,MAAM,EAAE,SAAS,CAAC,MAAM;CACxB,MAAM,EAAE,eAAe,qBAAqB,OAAO;CAEnD,OAAO;EAAE;EAAQ,wBADc,gBAAgB,uBAAuB,CAAC;CAC/B;AAC1C,CAAC;AAED,MAAa,wBAAA,GAAA,iBAAA,eAAA,CACX;CAACA,mCAAAA;CAAoBC,mCAAAA;CAA8BC,gCAAAA;AAAe,IACjE,iBAAiB,EAAE,aAAa,MAAM,iBAAiB;CACtD,MAAM,aAAa,gBAAgB,eAAe,CAAC;CACnD,OAAO,YAAY,iBAAiB,aAAa,WAAW,iBAAiB,aAAa,WAAW,iBAAiB,EAAE,yBAAyB,CAAC,EAAE;AACtJ,CACF;AAEA,MAAa,6BAAA,GAAA,iBAAA,eAAA,CACX;CAACF,mCAAAA;CAAoBC,mCAAAA;CAA8BH,+BAAAA;CAAgBK,mCAAAA;AAA8B,IAChG,iBAAiB,EAAE,aAAa,MAAM,aAAa,sBAAsB;CACxE,MAAM,aAAa,gBAAgB,eAAe,CAAC;CACnD,MAAM,EAAE,UAAU,CAAC,MAAM;CACzB,OAAO;EACL;EACA,iBAAiB,kBAAkB,KAAI,cAAa;GAAE,GAAG,YAAY;GAAW,GAAI,QAAQ,aAAa,CAAC;EAAG,EAAE;CACjH;AACF,CACF;AAEA,MAAa,kCAAA,GAAA,iBAAA,eAAA,CAAgD,CAAC,uBAAuBC,+BAAAA,oBAAoB,IAAI,EAAE,kBAAkB,cAAc,gBAC7I,OAAO,OAA0BC,+BAAAA,oBAAoB,CAAC,CAAC,QACpD,MAAM,EAAE,YAAY,KAAK,oBAAoB,cAAc,YAAY;CACtE,IAAI,cAAe,sBAAsB,CAAC,oBAAsB,gBAAgB,CAAC,YAC/E,OAAO;CAET,KAAK,OAAO;EAAE,OAAO,YAAY,IAAI,CAAC;EAAU;EAAK;CAAM;CAC3D,OAAO;AACT,GACA,CAAC,CACH,CACF;AAEA,MAAa,iBAAA,GAAA,iBAAA,eAAA,CAA+B,CAACC,+BAAAA,eAAe,YAAY,IAAI,YAAY,EAAE,oBAAoB;CAE5G,MAAM,GAAGC,kBAAAA,gBAAgB,KAAK,WAAW,GAAG,WAAW;CACvD,OAAO,OAAO,KACZ,OAAO,QAAQ,MAAM,CAAC,CAAC,QACpB,MAAM,CAAC,WAAW,WAAW;EAC5B,IAAI,MAAM,WAAW,cAAc,OAAOC,+BAAAA,cACxC,KAAK,aAAa;EAEpB,OAAO;CACT,GACA,EAAE,GAAG,cAAc,OAAO,CAC5B,CACF,CAAC,CAAC,KAAK;AACT,CAAC;AAED,MAAa,2BAAA,GAAA,iBAAA,eAAA,CACX;CAACZ,6BAAAA;CAAiBd,6BAAAA;CAAgBO,6BAAAA;CAAmBS,+BAAAA;AAAc,IAClE,EAAE,WAAW,EAAE,IAAI,iBAAiB,gBAAgB,gBACnD,WAAW,eAAe,GAAG,cAAc,eAAe,OAAO,KAAK,WAAW,CAAC,CAAC,SAASW,2BAAAA,iBAAiB,CAAC,EAClH;AAEA,MAAM,sBAAsB;CAC1B,YAAYC,+BAAAA;CACZ,QAAQC,2BAAAA;AACV;AACA,MAAM,mBAAmB;CAAE,eAAe,EAAE,WAAW,CAAC,EAAE;CAAG,YAAA;AAAuC;AACpG,MAAM,iCAAiC;AAEvC,MAAa,wBAAA,GAAA,iBAAA,eAAA,CACX;CAACb,+BAAAA;EAAiB,OAAO,aAAa,oBAAoB,SAAS,CAAC,KAAK;CAAG;AAAwB,GACpGc,cAAAA,cACF;AAEA,MAAa,qBAAA,GAAA,iBAAA,eAAA,CAAmC,CAACC,oCAAAA,kBAAkBf,+BAAAA,cAAc,IAAI,eAAe,gBAAgB;CAClH,IAAI,iBAAkC,CAAC;CACvC,IAAI,eAAe;EACjB,MAAM,EAAE,WAAW;EACnB,MAAM,aAAa;EACnB,IAAI,YAAY,SAAS,YAAY,WAAW,IAC9C,iBAAiB;GAAE,IAAI,WAAW;GAAI,GAAI,WAAW,UAAU,CAAC;EAAG;CAEvE;CACA,OAAO;EAAE,GAAG;EAAgB,GAAI,eAAe,KAAK,YAAY,eAAe,MAAM,CAAC;CAAG;AAC3F,CAAC;AAGD,MAAa,oBAAA,GAAA,iBAAA,eAAA,CAAkC,CAACnB,oCAAAA,iBAAiBmC,6BAAAA,YAAY,IAAI,EAAE,oBAAoB,UAAU;CAC/G,IAAI,kBACF,OAAO,MAAM,QACV,MAAM,SAAS;EACd,IAAIC,+BAAAA,UAAU,KAAK,QACjB,OAAO;EAET,KAAK,KAAK,IAAI;EACd,OAAO;CACT,GACA,CAAC,GAAG,OAAO,OAAOC,+BAAAA,wBAAwB,CAAC,CAC7C;CAEF,OAAO,OAAO,KAAKD,+BAAAA,SAAS,CAAC,CAC1B,QAAQ,CAAC,CACT,QAAQ,MAAM,QAAQ;EACrB,MAAM,QAAQ,KAAK,WAAW,EAAE,YAAY,UAAU,GAAG;EACzD,IAAI,SAAS,GACX,OAAO,CAAC,KAAK,QAAQ,GAAG,KAAK,QAAQ,GAAG,cAAc,UAAU,SAAS,CAAC;EAE5E,OAAO;CACT,GAAG,KAAK;AACZ,CAAC;AAED,MAAa,wBAAA,GAAA,iBAAA,eAAA,CACX;CAACjC,6BAAAA;CAAgBmC,6BAAAA;CAAWrC,2BAAAA;CAAa;CAAiBsC,6BAAAA;CAA4BC,6BAAAA;AAAkC,IACvH,aAAa,QAAQ,UAAU,cAAc,qBAAqB,uBAAuB;CACxF,MAAM,WAAW,CAAC,CAAC,aAAa,KAAK;CACrC,MAAM,eAAe,CAAC,CAAC,YAAY;CAEnC,MAAM,WAAW,UAAU;CAG3B,IAAI,CAAC,eAAe,CAAC,uBAAuB,UAAU,EAFnC,gBAAgB,aACX,YAAY,cAElC,OAAO;CAGT,IAAI,uBAAuB,MACzB,OAAO;CAMT,QAAA,GAAA,MAAA,QAAA,CAF8B,CAAC,CAAC,KAAK,oBAAoB,QAElC,IAAI;AAC7B,CACF"}
1
+ {"version":3,"file":"commonSelectors.cjs","names":["createSelector","getOrganization","getFeatures","PLANS","getCurrentUser","getRolesById","rolesByName","mapUserRolesToUiPermissions","getIsServiceProvider","uiPermissionsById","ADDONS","getGlobalSettings","getFilteringAttributes","ATTRIBUTE_SCOPES","ATTRIBUTE_SCOPE_LABELS","stripOrchestratorManifestPrefix","getAttributeScopeLabel","attributeDuplicateFilter","getOnboarding","getUserSettings","onboardingSteps","getDevicesById","getDemoDeviceAddressHelper","getDeviceById","getDeploymentsById","getDeploymentsSelectionState","getReleasesById","getSelectedDeploymentDeviceIds","getIssueCountsByType","DEVICE_ISSUE_OPTIONS","getGroupsById","UNGROUPED_GROUP","ALL_DEVICES","defaultReports","getListedDevices","getSearchedDevices","listItemMapper","getAuditLogEntry","getRolesList","rolesById","serviceProviderRolesById","getHas2FA","getUserSettingsInitialized","getSecurityAlertDismissedTimestamp"],"sources":["../src/commonSelectors.ts"],"sourcesContent":["// Copyright 2024 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport type { AuditLog as AuditLogEvent } from '@northern.tech/types/types.gen';\nimport type { DeviceIssueOption } from '@northern.tech/utils/constants';\nimport { attributeDuplicateFilter, getDemoDeviceAddress as getDemoDeviceAddressHelper } from '@northern.tech/utils/helpers';\nimport { createSelector } from '@reduxjs/toolkit';\nimport dayjs from 'dayjs';\n\nimport { ADDONS, PLANS, defaultReports } from './appSlice/constants';\nimport { getFeatures, getSearchedDevices } from './appSlice/selectors';\nimport { ATTRIBUTE_SCOPE_LABELS, DEVICE_LIST_MAXIMUM_LENGTH, UNGROUPED_GROUP } from './commonConstants';\nimport { ALL_DEVICES, ATTRIBUTE_SCOPES, DEVICE_ISSUE_OPTIONS, rolesById, rolesByName, serviceProviderRolesById, uiPermissionsById } from './constants';\nimport type { Role } from './constants';\nimport type { Deployment } from './deploymentsSlice';\nimport { getDeploymentsById, getDeploymentsSelectionState, getSelectedDeploymentDeviceIds } from './deploymentsSlice/selectors';\nimport type { Device, DeviceGroup } from './devicesSlice';\nimport { getDeviceById, getDevicesById, getFilteringAttributes, getGroupsById, getListedDevices } from './devicesSlice/selectors';\nimport { getIssueCountsByType } from './monitorSlice/selectors';\nimport { onboardingSteps } from './onboardingSlice/constants';\nimport { getOnboarding } from './onboardingSlice/selectors';\nimport { getAuditLogEntry, getIsServiceProvider, getOrganization } from './organizationSlice/selectors';\nimport { getReleasesById } from './releasesSlice/selectors';\nimport {\n getCurrentUser,\n getGlobalSettings,\n getHas2FA,\n getRolesById,\n getRolesList,\n getSecurityAlertDismissedTimestamp,\n getUserSettings,\n getUserSettingsInitialized\n} from './usersSlice/selectors';\nimport { getAttributeScopeLabel, listItemMapper, mapUserRolesToUiPermissions, stripOrchestratorManifestPrefix } from './utils';\n\nexport const getIsEnterprise = createSelector(\n [getOrganization, getFeatures],\n ({ plan = PLANS.os.id }, { isEnterprise, isHosted }) => isEnterprise || (isHosted && plan === PLANS.enterprise.id)\n);\n\nexport const getUserRoles = createSelector([getCurrentUser, getRolesById, getIsEnterprise], (currentUser, rolesById, isEnterprise) => {\n const isAdmin = currentUser.roles?.length ? currentUser.roles.some(role => role === rolesByName.admin) : !isEnterprise;\n const uiPermissions = isAdmin ? mapUserRolesToUiPermissions([rolesByName.admin], rolesById) : mapUserRolesToUiPermissions(currentUser.roles || [], rolesById);\n return { isAdmin, uiPermissions };\n});\n\nconst hasPermission = (thing: Record<string, string[]>, permission: string): boolean =>\n Object.values(thing).some(permissions => permissions.includes(permission));\n\nexport const getUserCapabilities = createSelector([getUserRoles, getIsServiceProvider], ({ uiPermissions }, isServiceProvider) => {\n const canManageReleases = hasPermission(uiPermissions.releases, uiPermissionsById.manage.value);\n const canReadReleases = canManageReleases || hasPermission(uiPermissions.releases, uiPermissionsById.read.value);\n const canUploadReleases = canManageReleases || hasPermission(uiPermissions.releases, uiPermissionsById.upload.value);\n\n const canAuditlog = uiPermissions.auditlog.includes(uiPermissionsById.read.value);\n\n const canReadUsers = uiPermissions.userManagement.includes(uiPermissionsById.read.value);\n const canManageUsers = uiPermissions.userManagement.includes(uiPermissionsById.manage.value);\n\n const canReadDevices = hasPermission(uiPermissions.groups, uiPermissionsById.read.value);\n const canWriteDevices = Object.values(uiPermissions.groups).some(\n groupPermissions => groupPermissions.includes(uiPermissionsById.read.value) && groupPermissions.length > 1\n );\n const canTroubleshoot = hasPermission(uiPermissions.groups, uiPermissionsById.connect.value);\n const canManageDevices = hasPermission(uiPermissions.groups, uiPermissionsById.manage.value);\n const canConfigure = hasPermission(uiPermissions.groups, uiPermissionsById.configure.value);\n\n const canDeploy =\n (uiPermissions.deployments?.includes(uiPermissionsById.deploy.value) ?? false) || hasPermission(uiPermissions.groups, uiPermissionsById.deploy.value);\n const canReadDeployments = uiPermissions.deployments?.includes(uiPermissionsById.read.value) ?? false;\n\n return {\n canAuditlog,\n canConfigure,\n canDeploy,\n canManageDevices,\n canManageReleases,\n canManageUsers,\n canReadDeployments,\n canReadDevices,\n canReadReleases,\n canReadUsers,\n canTroubleshoot,\n canUploadReleases,\n canWriteDevices,\n groupsPermissions: uiPermissions.groups,\n releasesPermissions: uiPermissions.releases,\n SPTenant: isServiceProvider\n };\n});\n\nexport const getTenantCapabilities = createSelector(\n [getFeatures, getOrganization, getIsEnterprise],\n (\n {\n hasAuditlogs: isAuditlogEnabled,\n hasDeviceConfig: isDeviceConfigEnabled,\n hasDeviceConnect: isDeviceConnectEnabled,\n hasMonitor: isMonitorEnabled,\n isHosted\n },\n { addons = [], plan = PLANS.os.id },\n isEnterprise\n ) => {\n const canDelta = isEnterprise || plan === PLANS.professional.id;\n const hasAuditlogs = isAuditlogEnabled && isEnterprise;\n const hasDeviceConfig = addons.some(addon => addon.name === ADDONS.configure.id && addon.enabled) || (isDeviceConfigEnabled && !isHosted);\n const hasDeviceConnect = addons.some(addon => addon.name === ADDONS.troubleshoot.id && addon.enabled) || (isDeviceConnectEnabled && !isHosted);\n const hasMonitor = isMonitorEnabled && addons.some(addon => addon.name === ADDONS.monitor.id && addon.enabled);\n return {\n canDelta,\n canRetry: canDelta,\n canSchedule: canDelta,\n hasAuditlogs,\n hasDeviceConfig,\n hasDeviceConnect,\n hasFullFiltering: canDelta,\n hasMonitor,\n isEnterprise,\n plan\n };\n }\n);\n\nexport const getFilterAttributes = createSelector(\n [getGlobalSettings, getFilteringAttributes],\n ({ previousFilters }, { identityAttributes, inventoryAttributes, systemAttributes, tagAttributes }) => {\n const deviceNameAttribute = { key: 'name', value: 'Name', scope: ATTRIBUTE_SCOPES.tags, category: ATTRIBUTE_SCOPES.tags, priority: 1 };\n const deviceIdAttribute = { key: 'id', value: 'Device ID', scope: ATTRIBUTE_SCOPES.identity, category: ATTRIBUTE_SCOPES.identity, priority: 1 };\n const checkInAttribute = {\n key: 'check_in_time',\n value: 'Latest activity',\n scope: ATTRIBUTE_SCOPES.system,\n category: ATTRIBUTE_SCOPE_LABELS.default,\n priority: 4\n };\n const updateAttribute = { ...checkInAttribute, key: 'updated_ts', value: 'Last inventory update' };\n const firstRequestAttribute = {\n key: 'created_ts',\n value: 'First request',\n scope: ATTRIBUTE_SCOPES.system,\n category: ATTRIBUTE_SCOPE_LABELS.default,\n priority: 4\n };\n const attributes = [\n ...previousFilters.map(item => ({\n ...item,\n value: deviceIdAttribute.key === item.key ? deviceIdAttribute.value : stripOrchestratorManifestPrefix(item.key),\n category: 'recently used',\n priority: 0\n })),\n deviceNameAttribute,\n deviceIdAttribute,\n ...identityAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.identity, category: ATTRIBUTE_SCOPES.identity, priority: 1 })),\n ...inventoryAttributes.map(item => {\n const category = getAttributeScopeLabel({ key: item, scope: ATTRIBUTE_SCOPES.inventory });\n return {\n key: item,\n value: stripOrchestratorManifestPrefix(item),\n scope: ATTRIBUTE_SCOPES.inventory,\n category,\n priority: category === ATTRIBUTE_SCOPES.inventory ? 2 : 3\n };\n }),\n ...tagAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.tags, category: ATTRIBUTE_SCOPES.tags, priority: 3 })),\n checkInAttribute,\n updateAttribute,\n firstRequestAttribute,\n ...systemAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPE_LABELS.default, priority: 4 }))\n ];\n return attributeDuplicateFilter(attributes, 'key');\n }\n);\n\nexport const getOnboardingState = createSelector([getOnboarding, getUserSettings], ({ complete, progress, showTips, ...remainder }, { onboarding = {} }) => ({\n ...remainder,\n ...onboarding,\n complete: onboarding.complete || complete,\n progress:\n Object.keys(onboardingSteps).findIndex(step => step === progress) > Object.keys(onboardingSteps).findIndex(step => step === onboarding.progress)\n ? progress\n : onboarding.progress,\n showTips: !onboarding.showTips ? onboarding.showTips : showTips\n}));\n\nexport const getDemoDeviceAddress = createSelector([getDevicesById, getOnboarding], (devicesById, { approach, demoArtifactPort }) => {\n const demoDeviceAddress = `http://${getDemoDeviceAddressHelper(Object.values(devicesById), approach)}`;\n return demoArtifactPort ? `${demoDeviceAddress}:${demoArtifactPort}` : demoDeviceAddress;\n});\n\nexport const getDeviceConfigDeployment = createSelector([getDeviceById, getDeploymentsById], (device, deploymentsById) => {\n const { config = {} } = device;\n const { deployment_id: configDeploymentId = '' } = config;\n const deviceConfigDeployment = deploymentsById[configDeploymentId] ?? {};\n return { device, deviceConfigDeployment };\n});\n\nexport const getDeploymentRelease = createSelector(\n [getDeploymentsById, getDeploymentsSelectionState, getReleasesById],\n (deploymentsById, { selectedId = '' }, releasesById) => {\n const deployment = deploymentsById[selectedId] ?? {};\n return deployment?.artifact_name && releasesById[deployment.artifact_name] ? releasesById[deployment.artifact_name] : { device_types_compatible: [] };\n }\n);\n\nexport const getSelectedDeploymentData = createSelector(\n [getDeploymentsById, getDeploymentsSelectionState, getDevicesById, getSelectedDeploymentDeviceIds],\n (deploymentsById, { selectedId = '' }, devicesById, selectedDeviceIds) => {\n const deployment = deploymentsById[selectedId] ?? {};\n const { devices = {} } = deployment as Deployment;\n return {\n deployment,\n selectedDevices: selectedDeviceIds.map(deviceId => ({ ...devicesById[deviceId], ...(devices[deviceId] ?? {}) }))\n };\n }\n);\n\nexport const getAvailableIssueOptionsByType = createSelector([getTenantCapabilities, getIssueCountsByType], ({ hasFullFiltering, hasMonitor }, issueCounts) =>\n Object.values<DeviceIssueOption>(DEVICE_ISSUE_OPTIONS).reduce(\n (accu, { isCategory, key, needsFullFiltering, needsMonitor, title }) => {\n if (isCategory || (needsFullFiltering && !hasFullFiltering) || (needsMonitor && !hasMonitor)) {\n return accu;\n }\n accu[key] = { count: issueCounts[key].filtered, key, title };\n return accu;\n },\n {} as Record<string, { count: number; key: string; title: string }>\n )\n);\n\nexport const getGroupNames = createSelector([getGroupsById, getUserRoles], (groupsById, { uiPermissions }) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [UNGROUPED_GROUP.id]: ungrouped, ...groups } = groupsById;\n return Object.keys(\n Object.entries(groups).reduce(\n (accu, [groupName, group]) => {\n if (group.filters || uiPermissions.groups[ALL_DEVICES]) {\n accu[groupName] = group;\n }\n return accu;\n },\n { ...uiPermissions.groups } as Record<string, DeviceGroup>\n )\n ).sort();\n});\n\nexport const getDeviceReportsForUser = createSelector(\n [getUserSettings, getCurrentUser, getGlobalSettings, getDevicesById],\n ({ reports }, { id: currentUserId }, globalSettings, devicesById) =>\n reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : [])\n);\n\nconst listTypeDeviceIdMap = {\n deviceList: getListedDevices,\n search: getSearchedDevices\n};\nconst deviceMapDefault = { defaultObject: { auth_sets: [] }, cutOffSize: DEVICE_LIST_MAXIMUM_LENGTH };\nconst getDeviceMappingDefaults = () => deviceMapDefault;\n\nexport const getMappedDevicesList = createSelector(\n [getDevicesById, (state, listType) => listTypeDeviceIdMap[listType](state), getDeviceMappingDefaults],\n listItemMapper\n);\n\nexport const getAuditlogDevice = createSelector([getAuditLogEntry, getDevicesById], (auditlogEvent, devicesById) => {\n let auditlogDevice: Partial<Device> = {};\n if (auditlogEvent) {\n const { object } = auditlogEvent as AuditLogEvent;\n const objectData = object as AuditLogEvent['object'] | undefined;\n if (objectData?.type === 'device' && objectData.id) {\n auditlogDevice = { id: objectData.id, ...(objectData.device ?? {}) } as Device;\n }\n }\n return { ...auditlogDevice, ...(auditlogDevice.id ? devicesById[auditlogDevice.id] : {}) };\n});\n\ntype RoleItem = Role | { value: string };\nexport const getRelevantRoles = createSelector([getOrganization, getRolesList], ({ service_provider }, roles) => {\n if (service_provider) {\n return roles.reduce(\n (accu, role) => {\n if (rolesById[role.value as keyof typeof rolesById]) {\n return accu;\n }\n accu.push(role);\n return accu;\n },\n [...Object.values(serviceProviderRolesById)] as RoleItem[]\n );\n }\n return Object.keys(rolesById)\n .reverse()\n .reduce((accu, key) => {\n const index = accu.findIndex(({ value }) => value === key);\n if (index >= 0) {\n accu = [accu[index], ...accu.filter((_, itemIndex) => index !== itemIndex)];\n }\n return accu;\n }, roles);\n});\n\nexport const getShowSecurityAlert = createSelector(\n [getCurrentUser, getHas2FA, getFeatures, getIsEnterprise, getUserSettingsInitialized, getSecurityAlertDismissedTimestamp],\n (currentUser, has2FA, features, isEnterprise, settingsInitialized, dismissedTimestamp) => {\n const isOAuth2 = !!currentUser?.sso?.length;\n const userVerified = !!currentUser.verified;\n\n const isHosted = features?.isHosted;\n const canHave2FA = isEnterprise || isHosted;\n const secureOAuthUser = isOAuth2 && userVerified;\n if (!currentUser || !settingsInitialized || has2FA || !canHave2FA || secureOAuthUser) {\n return false;\n }\n\n if (dismissedTimestamp === null) {\n return true;\n }\n\n const today = dayjs();\n const dismissedMonthAgo = today.diff(dismissedTimestamp, 'months');\n\n return dismissedMonthAgo > 0;\n }\n);\n"],"mappings":"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"}
@@ -1,17 +1,16 @@
1
- import { a as AvailablePlans } from "./constants-B_7FCJQX.cjs";
2
- import { S as Role } from "./constants-DAi2zOZN.cjs";
3
- import { a as UserSettings, n as GlobalSettings, o as UserSliceType, r as User } from "./index-CgPgKMve.cjs";
4
- import { i as ReleaseSliceType, r as Release } from "./index-VEayiYkv.cjs";
5
- import { i as Organization, n as AuditLogSelectionState } from "./types-yQ0ypHMZ.cjs";
6
- import { n as OnboardingSliceType, t as OnboardingApproach } from "./index-DBUt8xVc.cjs";
7
- import { l as SelectionState, o as DeploymentsSliceType, s as DeviceDeployment, t as Deployment } from "./index-EPmsL6Lb.cjs";
8
- import { c as InventoryAttributes, r as DeviceGroup, s as DeviceSliceType, t as Device } from "./index-vXsWdis1.cjs";
9
- import { t as AppSliceType } from "./index-Dn1SqQYh.cjs";
10
- import { t as MonitorSliceType } from "./index-BQCnJ5gh.cjs";
11
- import { t as OrganizationSliceType } from "./index-CSOj22xK.cjs";
12
- import { r as RootState } from "./store-CGP5pCH8.cjs";
1
+ import { a as AvailablePlans } from "./constants-nKSWZ8oD.cjs";
2
+ import { S as Role } from "./constants-Rl3FJzFf.cjs";
3
+ import { a as UserSettings, n as GlobalSettings, o as UserSliceType, r as User } from "./index-BgF6rhXn.cjs";
4
+ import { i as ReleaseSliceType, r as Release } from "./index-DiAjzARZ.cjs";
5
+ import { i as Organization, n as AuditLogSelectionState } from "./types-B80ckxiy.cjs";
6
+ import { n as OnboardingSliceType, t as OnboardingApproach } from "./index-CoObjWL4.cjs";
7
+ import { l as SelectionState, o as DeploymentsSliceType, s as DeviceDeployment, t as Deployment } from "./index-mvxjivTJ.cjs";
8
+ import { c as DeviceSliceType, i as DeviceGroup, l as InventoryAttributes, n as DeviceComponents, t as Device } from "./index-CiQ95u1W.cjs";
9
+ import { t as AppSliceType } from "./index-DeOpb2oK.cjs";
10
+ import { t as MonitorSliceType } from "./index-Ctj2r57a.cjs";
11
+ import { t as OrganizationSliceType } from "./index-C_LGDJN2.cjs";
12
+ import { r as RootState } from "./store-CUUm1GTI.cjs";
13
13
  import { AuditLog } from "@northern.tech/types/types.gen";
14
-
15
14
  //#region src/commonSelectors.d.ts
16
15
  declare const getIsEnterprise: ((state: {
17
16
  app: AppSliceType;
@@ -796,13 +795,13 @@ declare const getSelectedDeploymentData: ((state: {
796
795
  tags?: Record<string, string>;
797
796
  check_in_time_exact?: string;
798
797
  check_in_time_rounded?: string;
798
+ components?: DeviceComponents;
799
799
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
800
800
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
801
801
  connect_updated_ts?: string;
802
802
  deploymentsCount?: number;
803
803
  deviceDeployments?: DeviceDeployment;
804
804
  etag?: string;
805
- gatewayIds?: string[];
806
805
  group?: string;
807
806
  isNew?: boolean;
808
807
  isOffline?: boolean;
@@ -848,13 +847,13 @@ declare const getSelectedDeploymentData: ((state: {
848
847
  tags?: Record<string, string>;
849
848
  check_in_time_exact?: string;
850
849
  check_in_time_rounded?: string;
850
+ components?: DeviceComponents;
851
851
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
852
852
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
853
853
  connect_updated_ts?: string;
854
854
  deploymentsCount?: number;
855
855
  deviceDeployments?: DeviceDeployment;
856
856
  etag?: string;
857
- gatewayIds?: string[];
858
857
  group?: string;
859
858
  isNew?: boolean;
860
859
  isOffline?: boolean;
@@ -896,13 +895,13 @@ declare const getSelectedDeploymentData: ((state: {
896
895
  tags?: Record<string, string>;
897
896
  check_in_time_exact?: string;
898
897
  check_in_time_rounded?: string;
898
+ components?: DeviceComponents;
899
899
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
900
900
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
901
901
  connect_updated_ts?: string;
902
902
  deploymentsCount?: number;
903
903
  deviceDeployments?: DeviceDeployment;
904
904
  etag?: string;
905
- gatewayIds?: string[];
906
905
  group?: string;
907
906
  isNew?: boolean;
908
907
  isOffline?: boolean;
@@ -948,13 +947,13 @@ declare const getSelectedDeploymentData: ((state: {
948
947
  tags?: Record<string, string>;
949
948
  check_in_time_exact?: string;
950
949
  check_in_time_rounded?: string;
950
+ components?: DeviceComponents;
951
951
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
952
952
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
953
953
  connect_updated_ts?: string;
954
954
  deploymentsCount?: number;
955
955
  deviceDeployments?: DeviceDeployment;
956
956
  etag?: string;
957
- gatewayIds?: string[];
958
957
  group?: string;
959
958
  isNew?: boolean;
960
959
  isOffline?: boolean;
@@ -1448,13 +1447,13 @@ declare const getAuditlogDevice: ((state: {
1448
1447
  tags?: Record<string, string>;
1449
1448
  check_in_time_exact?: string;
1450
1449
  check_in_time_rounded?: string;
1450
+ components?: DeviceComponents;
1451
1451
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
1452
1452
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
1453
1453
  connect_updated_ts?: string;
1454
1454
  deploymentsCount?: number;
1455
1455
  deviceDeployments?: DeviceDeployment;
1456
1456
  etag?: string;
1457
- gatewayIds?: string[];
1458
1457
  group?: string;
1459
1458
  isNew?: boolean;
1460
1459
  isOffline?: boolean;
@@ -1486,13 +1485,13 @@ declare const getAuditlogDevice: ((state: {
1486
1485
  tags?: Record<string, string>;
1487
1486
  check_in_time_exact?: string;
1488
1487
  check_in_time_rounded?: string;
1488
+ components?: DeviceComponents;
1489
1489
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
1490
1490
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
1491
1491
  connect_updated_ts?: string;
1492
1492
  deploymentsCount?: number;
1493
1493
  deviceDeployments?: DeviceDeployment;
1494
1494
  etag?: string;
1495
- gatewayIds?: string[];
1496
1495
  group?: string;
1497
1496
  isNew?: boolean;
1498
1497
  isOffline?: boolean;
@@ -1520,13 +1519,13 @@ declare const getAuditlogDevice: ((state: {
1520
1519
  tags?: Record<string, string>;
1521
1520
  check_in_time_exact?: string;
1522
1521
  check_in_time_rounded?: string;
1522
+ components?: DeviceComponents;
1523
1523
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
1524
1524
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
1525
1525
  connect_updated_ts?: string;
1526
1526
  deploymentsCount?: number;
1527
1527
  deviceDeployments?: DeviceDeployment;
1528
1528
  etag?: string;
1529
- gatewayIds?: string[];
1530
1529
  group?: string;
1531
1530
  isNew?: boolean;
1532
1531
  isOffline?: boolean;
@@ -1558,13 +1557,13 @@ declare const getAuditlogDevice: ((state: {
1558
1557
  tags?: Record<string, string>;
1559
1558
  check_in_time_exact?: string;
1560
1559
  check_in_time_rounded?: string;
1560
+ components?: DeviceComponents;
1561
1561
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
1562
1562
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
1563
1563
  connect_updated_ts?: string;
1564
1564
  deploymentsCount?: number;
1565
1565
  deviceDeployments?: DeviceDeployment;
1566
1566
  etag?: string;
1567
- gatewayIds?: string[];
1568
1567
  group?: string;
1569
1568
  isNew?: boolean;
1570
1569
  isOffline?: boolean;
@@ -1,17 +1,16 @@
1
- import { a as AvailablePlans } from "./constants-B_7FCJQX.js";
2
- import { S as Role } from "./constants-CzjK2gV-.js";
3
- import { a as UserSettings, n as GlobalSettings, o as UserSliceType, r as User } from "./index-BCErsO5h.js";
4
- import { i as ReleaseSliceType, r as Release } from "./index-m1c0qk2s.js";
5
- import { i as Organization, n as AuditLogSelectionState } from "./types-uHmaedGU.js";
6
- import { n as OnboardingSliceType, t as OnboardingApproach } from "./index-DBUt8xVc.js";
7
- import { l as SelectionState, o as DeploymentsSliceType, s as DeviceDeployment, t as Deployment } from "./index-Bb4yvvgG.js";
8
- import { c as InventoryAttributes, r as DeviceGroup, s as DeviceSliceType, t as Device } from "./index-BtGhTFBc.js";
9
- import { t as AppSliceType } from "./index-CnH51JfB.js";
10
- import { t as MonitorSliceType } from "./index-C5oQrJGU.js";
11
- import { t as OrganizationSliceType } from "./index-H9zg_3UV.js";
12
- import { r as RootState } from "./store-CkgokFlk.js";
1
+ import { a as AvailablePlans } from "./constants-nKSWZ8oD.js";
2
+ import { S as Role } from "./constants-B_H4squx.js";
3
+ import { a as UserSettings, n as GlobalSettings, o as UserSliceType, r as User } from "./index-CpfhQHfg.js";
4
+ import { i as ReleaseSliceType, r as Release } from "./index-C8uiyxnb.js";
5
+ import { i as Organization, n as AuditLogSelectionState } from "./types-B3qGQoMx.js";
6
+ import { n as OnboardingSliceType, t as OnboardingApproach } from "./index-CoObjWL4.js";
7
+ import { l as SelectionState, o as DeploymentsSliceType, s as DeviceDeployment, t as Deployment } from "./index-B8td4-rY.js";
8
+ import { c as DeviceSliceType, i as DeviceGroup, l as InventoryAttributes, n as DeviceComponents, t as Device } from "./index-Bvyf8OO6.js";
9
+ import { t as AppSliceType } from "./index-Bs0c1-WY.js";
10
+ import { t as MonitorSliceType } from "./index-BAGyeC-q.js";
11
+ import { t as OrganizationSliceType } from "./index-ChKTa1aL.js";
12
+ import { r as RootState } from "./store-CPptM5Ts.js";
13
13
  import { AuditLog } from "@northern.tech/types/types.gen";
14
-
15
14
  //#region src/commonSelectors.d.ts
16
15
  declare const getIsEnterprise: ((state: {
17
16
  app: AppSliceType;
@@ -796,13 +795,13 @@ declare const getSelectedDeploymentData: ((state: {
796
795
  tags?: Record<string, string>;
797
796
  check_in_time_exact?: string;
798
797
  check_in_time_rounded?: string;
798
+ components?: DeviceComponents;
799
799
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
800
800
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
801
801
  connect_updated_ts?: string;
802
802
  deploymentsCount?: number;
803
803
  deviceDeployments?: DeviceDeployment;
804
804
  etag?: string;
805
- gatewayIds?: string[];
806
805
  group?: string;
807
806
  isNew?: boolean;
808
807
  isOffline?: boolean;
@@ -848,13 +847,13 @@ declare const getSelectedDeploymentData: ((state: {
848
847
  tags?: Record<string, string>;
849
848
  check_in_time_exact?: string;
850
849
  check_in_time_rounded?: string;
850
+ components?: DeviceComponents;
851
851
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
852
852
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
853
853
  connect_updated_ts?: string;
854
854
  deploymentsCount?: number;
855
855
  deviceDeployments?: DeviceDeployment;
856
856
  etag?: string;
857
- gatewayIds?: string[];
858
857
  group?: string;
859
858
  isNew?: boolean;
860
859
  isOffline?: boolean;
@@ -896,13 +895,13 @@ declare const getSelectedDeploymentData: ((state: {
896
895
  tags?: Record<string, string>;
897
896
  check_in_time_exact?: string;
898
897
  check_in_time_rounded?: string;
898
+ components?: DeviceComponents;
899
899
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
900
900
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
901
901
  connect_updated_ts?: string;
902
902
  deploymentsCount?: number;
903
903
  deviceDeployments?: DeviceDeployment;
904
904
  etag?: string;
905
- gatewayIds?: string[];
906
905
  group?: string;
907
906
  isNew?: boolean;
908
907
  isOffline?: boolean;
@@ -948,13 +947,13 @@ declare const getSelectedDeploymentData: ((state: {
948
947
  tags?: Record<string, string>;
949
948
  check_in_time_exact?: string;
950
949
  check_in_time_rounded?: string;
950
+ components?: DeviceComponents;
951
951
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
952
952
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
953
953
  connect_updated_ts?: string;
954
954
  deploymentsCount?: number;
955
955
  deviceDeployments?: DeviceDeployment;
956
956
  etag?: string;
957
- gatewayIds?: string[];
958
957
  group?: string;
959
958
  isNew?: boolean;
960
959
  isOffline?: boolean;
@@ -1448,13 +1447,13 @@ declare const getAuditlogDevice: ((state: {
1448
1447
  tags?: Record<string, string>;
1449
1448
  check_in_time_exact?: string;
1450
1449
  check_in_time_rounded?: string;
1450
+ components?: DeviceComponents;
1451
1451
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
1452
1452
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
1453
1453
  connect_updated_ts?: string;
1454
1454
  deploymentsCount?: number;
1455
1455
  deviceDeployments?: DeviceDeployment;
1456
1456
  etag?: string;
1457
- gatewayIds?: string[];
1458
1457
  group?: string;
1459
1458
  isNew?: boolean;
1460
1459
  isOffline?: boolean;
@@ -1486,13 +1485,13 @@ declare const getAuditlogDevice: ((state: {
1486
1485
  tags?: Record<string, string>;
1487
1486
  check_in_time_exact?: string;
1488
1487
  check_in_time_rounded?: string;
1488
+ components?: DeviceComponents;
1489
1489
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
1490
1490
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
1491
1491
  connect_updated_ts?: string;
1492
1492
  deploymentsCount?: number;
1493
1493
  deviceDeployments?: DeviceDeployment;
1494
1494
  etag?: string;
1495
- gatewayIds?: string[];
1496
1495
  group?: string;
1497
1496
  isNew?: boolean;
1498
1497
  isOffline?: boolean;
@@ -1520,13 +1519,13 @@ declare const getAuditlogDevice: ((state: {
1520
1519
  tags?: Record<string, string>;
1521
1520
  check_in_time_exact?: string;
1522
1521
  check_in_time_rounded?: string;
1522
+ components?: DeviceComponents;
1523
1523
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
1524
1524
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
1525
1525
  connect_updated_ts?: string;
1526
1526
  deploymentsCount?: number;
1527
1527
  deviceDeployments?: DeviceDeployment;
1528
1528
  etag?: string;
1529
- gatewayIds?: string[];
1530
1529
  group?: string;
1531
1530
  isNew?: boolean;
1532
1531
  isOffline?: boolean;
@@ -1558,13 +1557,13 @@ declare const getAuditlogDevice: ((state: {
1558
1557
  tags?: Record<string, string>;
1559
1558
  check_in_time_exact?: string;
1560
1559
  check_in_time_rounded?: string;
1560
+ components?: DeviceComponents;
1561
1561
  config?: import("@northern.tech/types/types.gen").DeviceConfiguration;
1562
1562
  connect_status?: import("@northern.tech/types/types.gen").ConnectionState["status"];
1563
1563
  connect_updated_ts?: string;
1564
1564
  deploymentsCount?: number;
1565
1565
  deviceDeployments?: DeviceDeployment;
1566
1566
  etag?: string;
1567
- gatewayIds?: string[];
1568
1567
  group?: string;
1569
1568
  isNew?: boolean;
1570
1569
  isOffline?: boolean;
@@ -1,5 +1,5 @@
1
1
  import { ADDONS, PLANS, defaultReports } from "./appSlice/constants.js";
2
- import { Dt as ATTRIBUTE_SCOPE_LABELS, H as uiPermissionsById, I as serviceProviderRolesById, N as rolesById, P as rolesByName, Pt as UNGROUPED_GROUP, c as DEVICE_ISSUE_OPTIONS, o as ATTRIBUTE_SCOPES, t as ALL_DEVICES } from "./constants-xpheFFkA.js";
2
+ import { F as rolesByName, Ft as UNGROUPED_GROUP, L as serviceProviderRolesById, Ot as ATTRIBUTE_SCOPE_LABELS, P as rolesById, U as uiPermissionsById, c as DEVICE_ISSUE_OPTIONS, o as ATTRIBUTE_SCOPES, t as ALL_DEVICES } from "./constants-CerzXHnQ.js";
3
3
  import { onboardingSteps } from "./onboardingSlice/constants.js";
4
4
  import { getFeatures, getSearchedDevices } from "./appSlice/selectors.js";
5
5
  import { getDeploymentsById, getDeploymentsSelectionState, getSelectedDeploymentDeviceIds } from "./deploymentsSlice/selectors.js";
@@ -110,7 +110,7 @@ const getFilterAttributes = createSelector([getGlobalSettings, getFilteringAttri
110
110
  category: ATTRIBUTE_SCOPE_LABELS.default,
111
111
  priority: 4
112
112
  };
113
- return attributeDuplicateFilter([
113
+ const attributes = [
114
114
  ...previousFilters.map((item) => ({
115
115
  ...item,
116
116
  value: deviceIdAttribute.key === item.key ? deviceIdAttribute.value : stripOrchestratorManifestPrefix(item.key),
@@ -156,7 +156,8 @@ const getFilterAttributes = createSelector([getGlobalSettings, getFilteringAttri
156
156
  category: ATTRIBUTE_SCOPE_LABELS.default,
157
157
  priority: 4
158
158
  }))
159
- ], "key");
159
+ ];
160
+ return attributeDuplicateFilter(attributes, "key");
160
161
  });
161
162
  const getOnboardingState = createSelector([getOnboarding, getUserSettings], ({ complete, progress, showTips, ...remainder }, { onboarding = {} }) => ({
162
163
  ...remainder,
@@ -1 +1 @@
1
- {"version":3,"file":"commonSelectors.js","names":["getDemoDeviceAddressHelper"],"sources":["../src/commonSelectors.ts"],"sourcesContent":["// Copyright 2024 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport type { AuditLog as AuditLogEvent } from '@northern.tech/types/types.gen';\nimport type { DeviceIssueOption } from '@northern.tech/utils/constants';\nimport { attributeDuplicateFilter, getDemoDeviceAddress as getDemoDeviceAddressHelper } from '@northern.tech/utils/helpers';\nimport { createSelector } from '@reduxjs/toolkit';\nimport dayjs from 'dayjs';\n\nimport { ADDONS, PLANS, defaultReports } from './appSlice/constants';\nimport { getFeatures, getSearchedDevices } from './appSlice/selectors';\nimport { ATTRIBUTE_SCOPE_LABELS, DEVICE_LIST_MAXIMUM_LENGTH, UNGROUPED_GROUP } from './commonConstants';\nimport { ALL_DEVICES, ATTRIBUTE_SCOPES, DEVICE_ISSUE_OPTIONS, rolesById, rolesByName, serviceProviderRolesById, uiPermissionsById } from './constants';\nimport type { Role } from './constants';\nimport type { Deployment } from './deploymentsSlice';\nimport { getDeploymentsById, getDeploymentsSelectionState, getSelectedDeploymentDeviceIds } from './deploymentsSlice/selectors';\nimport type { Device, DeviceGroup } from './devicesSlice';\nimport { getDeviceById, getDevicesById, getFilteringAttributes, getGroupsById, getListedDevices } from './devicesSlice/selectors';\nimport { getIssueCountsByType } from './monitorSlice/selectors';\nimport { onboardingSteps } from './onboardingSlice/constants';\nimport { getOnboarding } from './onboardingSlice/selectors';\nimport { getAuditLogEntry, getIsServiceProvider, getOrganization } from './organizationSlice/selectors';\nimport { getReleasesById } from './releasesSlice/selectors';\nimport {\n getCurrentUser,\n getGlobalSettings,\n getHas2FA,\n getRolesById,\n getRolesList,\n getSecurityAlertDismissedTimestamp,\n getUserSettings,\n getUserSettingsInitialized\n} from './usersSlice/selectors';\nimport { getAttributeScopeLabel, listItemMapper, mapUserRolesToUiPermissions, stripOrchestratorManifestPrefix } from './utils';\n\nexport const getIsEnterprise = createSelector(\n [getOrganization, getFeatures],\n ({ plan = PLANS.os.id }, { isEnterprise, isHosted }) => isEnterprise || (isHosted && plan === PLANS.enterprise.id)\n);\n\nexport const getUserRoles = createSelector([getCurrentUser, getRolesById, getIsEnterprise], (currentUser, rolesById, isEnterprise) => {\n const isAdmin = currentUser.roles?.length ? currentUser.roles.some(role => role === rolesByName.admin) : !isEnterprise;\n const uiPermissions = isAdmin ? mapUserRolesToUiPermissions([rolesByName.admin], rolesById) : mapUserRolesToUiPermissions(currentUser.roles || [], rolesById);\n return { isAdmin, uiPermissions };\n});\n\nconst hasPermission = (thing: Record<string, string[]>, permission: string): boolean =>\n Object.values(thing).some(permissions => permissions.includes(permission));\n\nexport const getUserCapabilities = createSelector([getUserRoles, getIsServiceProvider], ({ uiPermissions }, isServiceProvider) => {\n const canManageReleases = hasPermission(uiPermissions.releases, uiPermissionsById.manage.value);\n const canReadReleases = canManageReleases || hasPermission(uiPermissions.releases, uiPermissionsById.read.value);\n const canUploadReleases = canManageReleases || hasPermission(uiPermissions.releases, uiPermissionsById.upload.value);\n\n const canAuditlog = uiPermissions.auditlog.includes(uiPermissionsById.read.value);\n\n const canReadUsers = uiPermissions.userManagement.includes(uiPermissionsById.read.value);\n const canManageUsers = uiPermissions.userManagement.includes(uiPermissionsById.manage.value);\n\n const canReadDevices = hasPermission(uiPermissions.groups, uiPermissionsById.read.value);\n const canWriteDevices = Object.values(uiPermissions.groups).some(\n groupPermissions => groupPermissions.includes(uiPermissionsById.read.value) && groupPermissions.length > 1\n );\n const canTroubleshoot = hasPermission(uiPermissions.groups, uiPermissionsById.connect.value);\n const canManageDevices = hasPermission(uiPermissions.groups, uiPermissionsById.manage.value);\n const canConfigure = hasPermission(uiPermissions.groups, uiPermissionsById.configure.value);\n\n const canDeploy =\n (uiPermissions.deployments?.includes(uiPermissionsById.deploy.value) ?? false) || hasPermission(uiPermissions.groups, uiPermissionsById.deploy.value);\n const canReadDeployments = uiPermissions.deployments?.includes(uiPermissionsById.read.value) ?? false;\n\n return {\n canAuditlog,\n canConfigure,\n canDeploy,\n canManageDevices,\n canManageReleases,\n canManageUsers,\n canReadDeployments,\n canReadDevices,\n canReadReleases,\n canReadUsers,\n canTroubleshoot,\n canUploadReleases,\n canWriteDevices,\n groupsPermissions: uiPermissions.groups,\n releasesPermissions: uiPermissions.releases,\n SPTenant: isServiceProvider\n };\n});\n\nexport const getTenantCapabilities = createSelector(\n [getFeatures, getOrganization, getIsEnterprise],\n (\n {\n hasAuditlogs: isAuditlogEnabled,\n hasDeviceConfig: isDeviceConfigEnabled,\n hasDeviceConnect: isDeviceConnectEnabled,\n hasMonitor: isMonitorEnabled,\n isHosted\n },\n { addons = [], plan = PLANS.os.id },\n isEnterprise\n ) => {\n const canDelta = isEnterprise || plan === PLANS.professional.id;\n const hasAuditlogs = isAuditlogEnabled && isEnterprise;\n const hasDeviceConfig = addons.some(addon => addon.name === ADDONS.configure.id && addon.enabled) || (isDeviceConfigEnabled && !isHosted);\n const hasDeviceConnect = addons.some(addon => addon.name === ADDONS.troubleshoot.id && addon.enabled) || (isDeviceConnectEnabled && !isHosted);\n const hasMonitor = isMonitorEnabled && addons.some(addon => addon.name === ADDONS.monitor.id && addon.enabled);\n return {\n canDelta,\n canRetry: canDelta,\n canSchedule: canDelta,\n hasAuditlogs,\n hasDeviceConfig,\n hasDeviceConnect,\n hasFullFiltering: canDelta,\n hasMonitor,\n isEnterprise,\n plan\n };\n }\n);\n\nexport const getFilterAttributes = createSelector(\n [getGlobalSettings, getFilteringAttributes],\n ({ previousFilters }, { identityAttributes, inventoryAttributes, systemAttributes, tagAttributes }) => {\n const deviceNameAttribute = { key: 'name', value: 'Name', scope: ATTRIBUTE_SCOPES.tags, category: ATTRIBUTE_SCOPES.tags, priority: 1 };\n const deviceIdAttribute = { key: 'id', value: 'Device ID', scope: ATTRIBUTE_SCOPES.identity, category: ATTRIBUTE_SCOPES.identity, priority: 1 };\n const checkInAttribute = {\n key: 'check_in_time',\n value: 'Latest activity',\n scope: ATTRIBUTE_SCOPES.system,\n category: ATTRIBUTE_SCOPE_LABELS.default,\n priority: 4\n };\n const updateAttribute = { ...checkInAttribute, key: 'updated_ts', value: 'Last inventory update' };\n const firstRequestAttribute = {\n key: 'created_ts',\n value: 'First request',\n scope: ATTRIBUTE_SCOPES.system,\n category: ATTRIBUTE_SCOPE_LABELS.default,\n priority: 4\n };\n const attributes = [\n ...previousFilters.map(item => ({\n ...item,\n value: deviceIdAttribute.key === item.key ? deviceIdAttribute.value : stripOrchestratorManifestPrefix(item.key),\n category: 'recently used',\n priority: 0\n })),\n deviceNameAttribute,\n deviceIdAttribute,\n ...identityAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.identity, category: ATTRIBUTE_SCOPES.identity, priority: 1 })),\n ...inventoryAttributes.map(item => {\n const category = getAttributeScopeLabel({ key: item, scope: ATTRIBUTE_SCOPES.inventory });\n return {\n key: item,\n value: stripOrchestratorManifestPrefix(item),\n scope: ATTRIBUTE_SCOPES.inventory,\n category,\n priority: category === ATTRIBUTE_SCOPES.inventory ? 2 : 3\n };\n }),\n ...tagAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.tags, category: ATTRIBUTE_SCOPES.tags, priority: 3 })),\n checkInAttribute,\n updateAttribute,\n firstRequestAttribute,\n ...systemAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPE_LABELS.default, priority: 4 }))\n ];\n return attributeDuplicateFilter(attributes, 'key');\n }\n);\n\nexport const getOnboardingState = createSelector([getOnboarding, getUserSettings], ({ complete, progress, showTips, ...remainder }, { onboarding = {} }) => ({\n ...remainder,\n ...onboarding,\n complete: onboarding.complete || complete,\n progress:\n Object.keys(onboardingSteps).findIndex(step => step === progress) > Object.keys(onboardingSteps).findIndex(step => step === onboarding.progress)\n ? progress\n : onboarding.progress,\n showTips: !onboarding.showTips ? onboarding.showTips : showTips\n}));\n\nexport const getDemoDeviceAddress = createSelector([getDevicesById, getOnboarding], (devicesById, { approach, demoArtifactPort }) => {\n const demoDeviceAddress = `http://${getDemoDeviceAddressHelper(Object.values(devicesById), approach)}`;\n return demoArtifactPort ? `${demoDeviceAddress}:${demoArtifactPort}` : demoDeviceAddress;\n});\n\nexport const getDeviceConfigDeployment = createSelector([getDeviceById, getDeploymentsById], (device, deploymentsById) => {\n const { config = {} } = device;\n const { deployment_id: configDeploymentId = '' } = config;\n const deviceConfigDeployment = deploymentsById[configDeploymentId] ?? {};\n return { device, deviceConfigDeployment };\n});\n\nexport const getDeploymentRelease = createSelector(\n [getDeploymentsById, getDeploymentsSelectionState, getReleasesById],\n (deploymentsById, { selectedId = '' }, releasesById) => {\n const deployment = deploymentsById[selectedId] ?? {};\n return deployment?.artifact_name && releasesById[deployment.artifact_name] ? releasesById[deployment.artifact_name] : { device_types_compatible: [] };\n }\n);\n\nexport const getSelectedDeploymentData = createSelector(\n [getDeploymentsById, getDeploymentsSelectionState, getDevicesById, getSelectedDeploymentDeviceIds],\n (deploymentsById, { selectedId = '' }, devicesById, selectedDeviceIds) => {\n const deployment = deploymentsById[selectedId] ?? {};\n const { devices = {} } = deployment as Deployment;\n return {\n deployment,\n selectedDevices: selectedDeviceIds.map(deviceId => ({ ...devicesById[deviceId], ...(devices[deviceId] ?? {}) }))\n };\n }\n);\n\nexport const getAvailableIssueOptionsByType = createSelector([getTenantCapabilities, getIssueCountsByType], ({ hasFullFiltering, hasMonitor }, issueCounts) =>\n Object.values<DeviceIssueOption>(DEVICE_ISSUE_OPTIONS).reduce(\n (accu, { isCategory, key, needsFullFiltering, needsMonitor, title }) => {\n if (isCategory || (needsFullFiltering && !hasFullFiltering) || (needsMonitor && !hasMonitor)) {\n return accu;\n }\n accu[key] = { count: issueCounts[key].filtered, key, title };\n return accu;\n },\n {} as Record<string, { count: number; key: string; title: string }>\n )\n);\n\nexport const getGroupNames = createSelector([getGroupsById, getUserRoles], (groupsById, { uiPermissions }) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [UNGROUPED_GROUP.id]: ungrouped, ...groups } = groupsById;\n return Object.keys(\n Object.entries(groups).reduce(\n (accu, [groupName, group]) => {\n if (group.filters || uiPermissions.groups[ALL_DEVICES]) {\n accu[groupName] = group;\n }\n return accu;\n },\n { ...uiPermissions.groups } as Record<string, DeviceGroup>\n )\n ).sort();\n});\n\nexport const getDeviceReportsForUser = createSelector(\n [getUserSettings, getCurrentUser, getGlobalSettings, getDevicesById],\n ({ reports }, { id: currentUserId }, globalSettings, devicesById) =>\n reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : [])\n);\n\nconst listTypeDeviceIdMap = {\n deviceList: getListedDevices,\n search: getSearchedDevices\n};\nconst deviceMapDefault = { defaultObject: { auth_sets: [] }, cutOffSize: DEVICE_LIST_MAXIMUM_LENGTH };\nconst getDeviceMappingDefaults = () => deviceMapDefault;\n\nexport const getMappedDevicesList = createSelector(\n [getDevicesById, (state, listType) => listTypeDeviceIdMap[listType](state), getDeviceMappingDefaults],\n listItemMapper\n);\n\nexport const getAuditlogDevice = createSelector([getAuditLogEntry, getDevicesById], (auditlogEvent, devicesById) => {\n let auditlogDevice: Partial<Device> = {};\n if (auditlogEvent) {\n const { object } = auditlogEvent as AuditLogEvent;\n const objectData = object as AuditLogEvent['object'] | undefined;\n if (objectData?.type === 'device' && objectData.id) {\n auditlogDevice = { id: objectData.id, ...(objectData.device ?? {}) } as Device;\n }\n }\n return { ...auditlogDevice, ...(auditlogDevice.id ? devicesById[auditlogDevice.id] : {}) };\n});\n\ntype RoleItem = Role | { value: string };\nexport const getRelevantRoles = createSelector([getOrganization, getRolesList], ({ service_provider }, roles) => {\n if (service_provider) {\n return roles.reduce(\n (accu, role) => {\n if (rolesById[role.value as keyof typeof rolesById]) {\n return accu;\n }\n accu.push(role);\n return accu;\n },\n [...Object.values(serviceProviderRolesById)] as RoleItem[]\n );\n }\n return Object.keys(rolesById)\n .reverse()\n .reduce((accu, key) => {\n const index = accu.findIndex(({ value }) => value === key);\n if (index >= 0) {\n accu = [accu[index], ...accu.filter((_, itemIndex) => index !== itemIndex)];\n }\n return accu;\n }, roles);\n});\n\nexport const getShowSecurityAlert = createSelector(\n [getCurrentUser, getHas2FA, getFeatures, getIsEnterprise, getUserSettingsInitialized, getSecurityAlertDismissedTimestamp],\n (currentUser, has2FA, features, isEnterprise, settingsInitialized, dismissedTimestamp) => {\n const isOAuth2 = !!currentUser?.sso?.length;\n const userVerified = !!currentUser.verified;\n\n const isHosted = features?.isHosted;\n const canHave2FA = isEnterprise || isHosted;\n const secureOAuthUser = isOAuth2 && userVerified;\n if (!currentUser || !settingsInitialized || has2FA || !canHave2FA || secureOAuthUser) {\n return false;\n }\n\n if (dismissedTimestamp === null) {\n return true;\n }\n\n const today = dayjs();\n const dismissedMonthAgo = today.diff(dismissedTimestamp, 'months');\n\n return dismissedMonthAgo > 0;\n }\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"commonSelectors.js","names":["getDemoDeviceAddressHelper"],"sources":["../src/commonSelectors.ts"],"sourcesContent":["// Copyright 2024 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport type { AuditLog as AuditLogEvent } from '@northern.tech/types/types.gen';\nimport type { DeviceIssueOption } from '@northern.tech/utils/constants';\nimport { attributeDuplicateFilter, getDemoDeviceAddress as getDemoDeviceAddressHelper } from '@northern.tech/utils/helpers';\nimport { createSelector } from '@reduxjs/toolkit';\nimport dayjs from 'dayjs';\n\nimport { ADDONS, PLANS, defaultReports } from './appSlice/constants';\nimport { getFeatures, getSearchedDevices } from './appSlice/selectors';\nimport { ATTRIBUTE_SCOPE_LABELS, DEVICE_LIST_MAXIMUM_LENGTH, UNGROUPED_GROUP } from './commonConstants';\nimport { ALL_DEVICES, ATTRIBUTE_SCOPES, DEVICE_ISSUE_OPTIONS, rolesById, rolesByName, serviceProviderRolesById, uiPermissionsById } from './constants';\nimport type { Role } from './constants';\nimport type { Deployment } from './deploymentsSlice';\nimport { getDeploymentsById, getDeploymentsSelectionState, getSelectedDeploymentDeviceIds } from './deploymentsSlice/selectors';\nimport type { Device, DeviceGroup } from './devicesSlice';\nimport { getDeviceById, getDevicesById, getFilteringAttributes, getGroupsById, getListedDevices } from './devicesSlice/selectors';\nimport { getIssueCountsByType } from './monitorSlice/selectors';\nimport { onboardingSteps } from './onboardingSlice/constants';\nimport { getOnboarding } from './onboardingSlice/selectors';\nimport { getAuditLogEntry, getIsServiceProvider, getOrganization } from './organizationSlice/selectors';\nimport { getReleasesById } from './releasesSlice/selectors';\nimport {\n getCurrentUser,\n getGlobalSettings,\n getHas2FA,\n getRolesById,\n getRolesList,\n getSecurityAlertDismissedTimestamp,\n getUserSettings,\n getUserSettingsInitialized\n} from './usersSlice/selectors';\nimport { getAttributeScopeLabel, listItemMapper, mapUserRolesToUiPermissions, stripOrchestratorManifestPrefix } from './utils';\n\nexport const getIsEnterprise = createSelector(\n [getOrganization, getFeatures],\n ({ plan = PLANS.os.id }, { isEnterprise, isHosted }) => isEnterprise || (isHosted && plan === PLANS.enterprise.id)\n);\n\nexport const getUserRoles = createSelector([getCurrentUser, getRolesById, getIsEnterprise], (currentUser, rolesById, isEnterprise) => {\n const isAdmin = currentUser.roles?.length ? currentUser.roles.some(role => role === rolesByName.admin) : !isEnterprise;\n const uiPermissions = isAdmin ? mapUserRolesToUiPermissions([rolesByName.admin], rolesById) : mapUserRolesToUiPermissions(currentUser.roles || [], rolesById);\n return { isAdmin, uiPermissions };\n});\n\nconst hasPermission = (thing: Record<string, string[]>, permission: string): boolean =>\n Object.values(thing).some(permissions => permissions.includes(permission));\n\nexport const getUserCapabilities = createSelector([getUserRoles, getIsServiceProvider], ({ uiPermissions }, isServiceProvider) => {\n const canManageReleases = hasPermission(uiPermissions.releases, uiPermissionsById.manage.value);\n const canReadReleases = canManageReleases || hasPermission(uiPermissions.releases, uiPermissionsById.read.value);\n const canUploadReleases = canManageReleases || hasPermission(uiPermissions.releases, uiPermissionsById.upload.value);\n\n const canAuditlog = uiPermissions.auditlog.includes(uiPermissionsById.read.value);\n\n const canReadUsers = uiPermissions.userManagement.includes(uiPermissionsById.read.value);\n const canManageUsers = uiPermissions.userManagement.includes(uiPermissionsById.manage.value);\n\n const canReadDevices = hasPermission(uiPermissions.groups, uiPermissionsById.read.value);\n const canWriteDevices = Object.values(uiPermissions.groups).some(\n groupPermissions => groupPermissions.includes(uiPermissionsById.read.value) && groupPermissions.length > 1\n );\n const canTroubleshoot = hasPermission(uiPermissions.groups, uiPermissionsById.connect.value);\n const canManageDevices = hasPermission(uiPermissions.groups, uiPermissionsById.manage.value);\n const canConfigure = hasPermission(uiPermissions.groups, uiPermissionsById.configure.value);\n\n const canDeploy =\n (uiPermissions.deployments?.includes(uiPermissionsById.deploy.value) ?? false) || hasPermission(uiPermissions.groups, uiPermissionsById.deploy.value);\n const canReadDeployments = uiPermissions.deployments?.includes(uiPermissionsById.read.value) ?? false;\n\n return {\n canAuditlog,\n canConfigure,\n canDeploy,\n canManageDevices,\n canManageReleases,\n canManageUsers,\n canReadDeployments,\n canReadDevices,\n canReadReleases,\n canReadUsers,\n canTroubleshoot,\n canUploadReleases,\n canWriteDevices,\n groupsPermissions: uiPermissions.groups,\n releasesPermissions: uiPermissions.releases,\n SPTenant: isServiceProvider\n };\n});\n\nexport const getTenantCapabilities = createSelector(\n [getFeatures, getOrganization, getIsEnterprise],\n (\n {\n hasAuditlogs: isAuditlogEnabled,\n hasDeviceConfig: isDeviceConfigEnabled,\n hasDeviceConnect: isDeviceConnectEnabled,\n hasMonitor: isMonitorEnabled,\n isHosted\n },\n { addons = [], plan = PLANS.os.id },\n isEnterprise\n ) => {\n const canDelta = isEnterprise || plan === PLANS.professional.id;\n const hasAuditlogs = isAuditlogEnabled && isEnterprise;\n const hasDeviceConfig = addons.some(addon => addon.name === ADDONS.configure.id && addon.enabled) || (isDeviceConfigEnabled && !isHosted);\n const hasDeviceConnect = addons.some(addon => addon.name === ADDONS.troubleshoot.id && addon.enabled) || (isDeviceConnectEnabled && !isHosted);\n const hasMonitor = isMonitorEnabled && addons.some(addon => addon.name === ADDONS.monitor.id && addon.enabled);\n return {\n canDelta,\n canRetry: canDelta,\n canSchedule: canDelta,\n hasAuditlogs,\n hasDeviceConfig,\n hasDeviceConnect,\n hasFullFiltering: canDelta,\n hasMonitor,\n isEnterprise,\n plan\n };\n }\n);\n\nexport const getFilterAttributes = createSelector(\n [getGlobalSettings, getFilteringAttributes],\n ({ previousFilters }, { identityAttributes, inventoryAttributes, systemAttributes, tagAttributes }) => {\n const deviceNameAttribute = { key: 'name', value: 'Name', scope: ATTRIBUTE_SCOPES.tags, category: ATTRIBUTE_SCOPES.tags, priority: 1 };\n const deviceIdAttribute = { key: 'id', value: 'Device ID', scope: ATTRIBUTE_SCOPES.identity, category: ATTRIBUTE_SCOPES.identity, priority: 1 };\n const checkInAttribute = {\n key: 'check_in_time',\n value: 'Latest activity',\n scope: ATTRIBUTE_SCOPES.system,\n category: ATTRIBUTE_SCOPE_LABELS.default,\n priority: 4\n };\n const updateAttribute = { ...checkInAttribute, key: 'updated_ts', value: 'Last inventory update' };\n const firstRequestAttribute = {\n key: 'created_ts',\n value: 'First request',\n scope: ATTRIBUTE_SCOPES.system,\n category: ATTRIBUTE_SCOPE_LABELS.default,\n priority: 4\n };\n const attributes = [\n ...previousFilters.map(item => ({\n ...item,\n value: deviceIdAttribute.key === item.key ? deviceIdAttribute.value : stripOrchestratorManifestPrefix(item.key),\n category: 'recently used',\n priority: 0\n })),\n deviceNameAttribute,\n deviceIdAttribute,\n ...identityAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.identity, category: ATTRIBUTE_SCOPES.identity, priority: 1 })),\n ...inventoryAttributes.map(item => {\n const category = getAttributeScopeLabel({ key: item, scope: ATTRIBUTE_SCOPES.inventory });\n return {\n key: item,\n value: stripOrchestratorManifestPrefix(item),\n scope: ATTRIBUTE_SCOPES.inventory,\n category,\n priority: category === ATTRIBUTE_SCOPES.inventory ? 2 : 3\n };\n }),\n ...tagAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.tags, category: ATTRIBUTE_SCOPES.tags, priority: 3 })),\n checkInAttribute,\n updateAttribute,\n firstRequestAttribute,\n ...systemAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPE_LABELS.default, priority: 4 }))\n ];\n return attributeDuplicateFilter(attributes, 'key');\n }\n);\n\nexport const getOnboardingState = createSelector([getOnboarding, getUserSettings], ({ complete, progress, showTips, ...remainder }, { onboarding = {} }) => ({\n ...remainder,\n ...onboarding,\n complete: onboarding.complete || complete,\n progress:\n Object.keys(onboardingSteps).findIndex(step => step === progress) > Object.keys(onboardingSteps).findIndex(step => step === onboarding.progress)\n ? progress\n : onboarding.progress,\n showTips: !onboarding.showTips ? onboarding.showTips : showTips\n}));\n\nexport const getDemoDeviceAddress = createSelector([getDevicesById, getOnboarding], (devicesById, { approach, demoArtifactPort }) => {\n const demoDeviceAddress = `http://${getDemoDeviceAddressHelper(Object.values(devicesById), approach)}`;\n return demoArtifactPort ? `${demoDeviceAddress}:${demoArtifactPort}` : demoDeviceAddress;\n});\n\nexport const getDeviceConfigDeployment = createSelector([getDeviceById, getDeploymentsById], (device, deploymentsById) => {\n const { config = {} } = device;\n const { deployment_id: configDeploymentId = '' } = config;\n const deviceConfigDeployment = deploymentsById[configDeploymentId] ?? {};\n return { device, deviceConfigDeployment };\n});\n\nexport const getDeploymentRelease = createSelector(\n [getDeploymentsById, getDeploymentsSelectionState, getReleasesById],\n (deploymentsById, { selectedId = '' }, releasesById) => {\n const deployment = deploymentsById[selectedId] ?? {};\n return deployment?.artifact_name && releasesById[deployment.artifact_name] ? releasesById[deployment.artifact_name] : { device_types_compatible: [] };\n }\n);\n\nexport const getSelectedDeploymentData = createSelector(\n [getDeploymentsById, getDeploymentsSelectionState, getDevicesById, getSelectedDeploymentDeviceIds],\n (deploymentsById, { selectedId = '' }, devicesById, selectedDeviceIds) => {\n const deployment = deploymentsById[selectedId] ?? {};\n const { devices = {} } = deployment as Deployment;\n return {\n deployment,\n selectedDevices: selectedDeviceIds.map(deviceId => ({ ...devicesById[deviceId], ...(devices[deviceId] ?? {}) }))\n };\n }\n);\n\nexport const getAvailableIssueOptionsByType = createSelector([getTenantCapabilities, getIssueCountsByType], ({ hasFullFiltering, hasMonitor }, issueCounts) =>\n Object.values<DeviceIssueOption>(DEVICE_ISSUE_OPTIONS).reduce(\n (accu, { isCategory, key, needsFullFiltering, needsMonitor, title }) => {\n if (isCategory || (needsFullFiltering && !hasFullFiltering) || (needsMonitor && !hasMonitor)) {\n return accu;\n }\n accu[key] = { count: issueCounts[key].filtered, key, title };\n return accu;\n },\n {} as Record<string, { count: number; key: string; title: string }>\n )\n);\n\nexport const getGroupNames = createSelector([getGroupsById, getUserRoles], (groupsById, { uiPermissions }) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [UNGROUPED_GROUP.id]: ungrouped, ...groups } = groupsById;\n return Object.keys(\n Object.entries(groups).reduce(\n (accu, [groupName, group]) => {\n if (group.filters || uiPermissions.groups[ALL_DEVICES]) {\n accu[groupName] = group;\n }\n return accu;\n },\n { ...uiPermissions.groups } as Record<string, DeviceGroup>\n )\n ).sort();\n});\n\nexport const getDeviceReportsForUser = createSelector(\n [getUserSettings, getCurrentUser, getGlobalSettings, getDevicesById],\n ({ reports }, { id: currentUserId }, globalSettings, devicesById) =>\n reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : [])\n);\n\nconst listTypeDeviceIdMap = {\n deviceList: getListedDevices,\n search: getSearchedDevices\n};\nconst deviceMapDefault = { defaultObject: { auth_sets: [] }, cutOffSize: DEVICE_LIST_MAXIMUM_LENGTH };\nconst getDeviceMappingDefaults = () => deviceMapDefault;\n\nexport const getMappedDevicesList = createSelector(\n [getDevicesById, (state, listType) => listTypeDeviceIdMap[listType](state), getDeviceMappingDefaults],\n listItemMapper\n);\n\nexport const getAuditlogDevice = createSelector([getAuditLogEntry, getDevicesById], (auditlogEvent, devicesById) => {\n let auditlogDevice: Partial<Device> = {};\n if (auditlogEvent) {\n const { object } = auditlogEvent as AuditLogEvent;\n const objectData = object as AuditLogEvent['object'] | undefined;\n if (objectData?.type === 'device' && objectData.id) {\n auditlogDevice = { id: objectData.id, ...(objectData.device ?? {}) } as Device;\n }\n }\n return { ...auditlogDevice, ...(auditlogDevice.id ? devicesById[auditlogDevice.id] : {}) };\n});\n\ntype RoleItem = Role | { value: string };\nexport const getRelevantRoles = createSelector([getOrganization, getRolesList], ({ service_provider }, roles) => {\n if (service_provider) {\n return roles.reduce(\n (accu, role) => {\n if (rolesById[role.value as keyof typeof rolesById]) {\n return accu;\n }\n accu.push(role);\n return accu;\n },\n [...Object.values(serviceProviderRolesById)] as RoleItem[]\n );\n }\n return Object.keys(rolesById)\n .reverse()\n .reduce((accu, key) => {\n const index = accu.findIndex(({ value }) => value === key);\n if (index >= 0) {\n accu = [accu[index], ...accu.filter((_, itemIndex) => index !== itemIndex)];\n }\n return accu;\n }, roles);\n});\n\nexport const getShowSecurityAlert = createSelector(\n [getCurrentUser, getHas2FA, getFeatures, getIsEnterprise, getUserSettingsInitialized, getSecurityAlertDismissedTimestamp],\n (currentUser, has2FA, features, isEnterprise, settingsInitialized, dismissedTimestamp) => {\n const isOAuth2 = !!currentUser?.sso?.length;\n const userVerified = !!currentUser.verified;\n\n const isHosted = features?.isHosted;\n const canHave2FA = isEnterprise || isHosted;\n const secureOAuthUser = isOAuth2 && userVerified;\n if (!currentUser || !settingsInitialized || has2FA || !canHave2FA || secureOAuthUser) {\n return false;\n }\n\n if (dismissedTimestamp === null) {\n return true;\n }\n\n const today = dayjs();\n const dismissedMonthAgo = today.diff(dismissedTimestamp, 'months');\n\n return dismissedMonthAgo > 0;\n }\n);\n"],"mappings":"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"}
@@ -33,10 +33,7 @@ type PermissionsArea = {
33
33
  title: string;
34
34
  uiPermissions: UiPermission[];
35
35
  };
36
- declare const itemUiPermissionsReducer: (accu: any, {
37
- item,
38
- uiPermissions
39
- }: {
36
+ declare const itemUiPermissionsReducer: (accu: any, { item, uiPermissions }: {
40
37
  item: any;
41
38
  uiPermissions: any;
42
39
  }) => any;
@@ -54,4 +51,4 @@ declare const READ_STATES: {
54
51
  type ReadState = keyof typeof READ_STATES;
55
52
  //#endregion
56
53
  export { USER_LOGOUT as a, itemUiPermissionsReducer as c, ReadState as i, settingsKeys as l, PermissionsArea as n, UiPermission as o, READ_STATES as r, checkPermissionsObject as s, OWN_USER_ID as t };
57
- //# sourceMappingURL=constants-Sn4gnNA3.d.ts.map
54
+ //# sourceMappingURL=constants-B3Jdkn2b.d.cts.map
@@ -33,10 +33,7 @@ type PermissionsArea = {
33
33
  title: string;
34
34
  uiPermissions: UiPermission[];
35
35
  };
36
- declare const itemUiPermissionsReducer: (accu: any, {
37
- item,
38
- uiPermissions
39
- }: {
36
+ declare const itemUiPermissionsReducer: (accu: any, { item, uiPermissions }: {
40
37
  item: any;
41
38
  uiPermissions: any;
42
39
  }) => any;
@@ -54,4 +51,4 @@ declare const READ_STATES: {
54
51
  type ReadState = keyof typeof READ_STATES;
55
52
  //#endregion
56
53
  export { USER_LOGOUT as a, itemUiPermissionsReducer as c, ReadState as i, settingsKeys as l, PermissionsArea as n, UiPermission as o, READ_STATES as r, checkPermissionsObject as s, OWN_USER_ID as t };
57
- //# sourceMappingURL=constants-Sn4gnNA3.d.cts.map
54
+ //# sourceMappingURL=constants-B3Jdkn2b.d.ts.map
@@ -1,6 +1,6 @@
1
- import { ALL_DEVICES, ALL_DEVICE_STATES, ALL_RELEASES, APPLICATION_JSON_CONTENT_TYPE, APPLICATION_JWT_CONTENT_TYPE, ATTRIBUTE_SCOPES, AnyPermission, AuditLogPermission, DEVICE_FILTERING_OPTIONS, DEVICE_ISSUE_OPTIONS, DEVICE_LIST_DEFAULTS, DEVICE_STATES, DeploymentPermission, DeviceIssueOptionKey, GroupsPermission, PaginationOptions, PermissionObject, PermissionSet, PermissionSetId, PermissionTypes, ReleasesPermission, Role, SORTING_OPTIONS, ScopedPermissionsByAreaKey, SortOptions, UiPermissionsByAreaKey, UiPermissionsByIdKey, UiPermissionsDefinition, UserManagementPermission, alertChannels, apiRoot, apiUrl, auditLogsApiUrl, defaultPermissionSets, deploymentsApiUrl, deploymentsApiUrlV1alpha1, deploymentsApiUrlV2, deviceAuthV2, deviceConfig, deviceConnect, emptyRole, emptyUiPermissions, headerNames, inventoryApiUrl, inventoryApiUrlV2, iotManagerBaseURL, limitDefault, maxSessionAge, monitorApiUrlv1, rolesById, rolesByName, scopedPermissionAreas, serviceProviderRolesById, ssoIdpApiUrlv1, tenantadmApiUrlv1, tenantadmApiUrlv2, twoFAStates, uiPermissionsByArea, uiPermissionsById, useradmApiUrl, useradmApiUrlv1, useradmApiUrlv2 } from "@northern.tech/utils/constants";
1
+ import "./constants-C6TIYaY4.js";
2
+ import { ALL_DEVICES, ALL_DEVICE_STATES, ALL_RELEASES, APPLICATION_JSON_CONTENT_TYPE, APPLICATION_JWT_CONTENT_TYPE, ATTRIBUTE_SCOPES, AnyPermission, AuditLogPermission, DEVICE_FILTERING_OPTIONS, DEVICE_ISSUE_OPTIONS, DEVICE_LIST_DEFAULTS, DEVICE_STATES, DeploymentPermission, DeviceIssueOptionKey, GroupsPermission, PaginationOptions, PermissionObject, PermissionSet, PermissionSetId, PermissionTypes, ReleasesPermission, Role, SORTING_OPTIONS, ScopedPermissionsByAreaKey, SortOptions, UiPermissionsByAreaKey, UiPermissionsByIdKey, UiPermissionsDefinition, UserManagementPermission, alertChannels, apiRoot, apiUrl, auditLogsApiUrl, defaultPermissionSets, deploymentsApiUrl, deploymentsApiUrlV1alpha1, deploymentsApiUrlV2, deviceAuthV2, deviceConfig, deviceConnect, emptyRole, emptyUiPermissions, headerNames, inventoryApiUrl, inventoryApiUrlV2, inventoryApiUrlV2alpha1, iotManagerBaseURL, limitDefault, maxSessionAge, monitorApiUrlv1, rolesById, rolesByName, scopedPermissionAreas, serviceProviderRolesById, ssoIdpApiUrlv1, tenantadmApiUrlv1, tenantadmApiUrlv2, twoFAStates, uiPermissionsByArea, uiPermissionsById, useradmApiUrl, useradmApiUrlv1, useradmApiUrlv2 } from "@northern.tech/utils/constants";
2
3
  import { Integration } from "@northern.tech/types/MenderTypes";
3
-
4
4
  //#region src/commonConstants.d.ts
5
5
  declare const timeUnits: {
6
6
  days: string;
@@ -120,5 +120,5 @@ declare const REPORT_CHART_SIZE_LIMIT = 6;
120
120
  //#region src/monitorSlice/constants.d.ts
121
121
  type AlertChannelKey = keyof typeof alertChannels;
122
122
  //#endregion
123
- export { serviceProviderRolesById as $, alertChannels as A, credentialTypes as At, deviceConnect as B, SORTING_OPTIONS as C, IdAttribute as Ct, UiPermissionsByIdKey as D, UNGROUPED_GROUP as Dt, UiPermissionsByAreaKey as E, TIMEOUTS as Et, deploymentsApiUrl as F, inventoryApiUrlV2 as G, emptyUiPermissions as H, deploymentsApiUrlV1alpha1 as I, maxSessionAge as J, iotManagerBaseURL as K, deploymentsApiUrlV2 as L, apiUrl as M, emptyWebhook as Mt, auditLogsApiUrl as N, productOrder as Nt, UiPermissionsDefinition as O, Webhook as Ot, defaultPermissionSets as P, timeUnits as Pt, scopedPermissionAreas as Q, deviceAuthV2 as R, Role as S, FilterOperator as St, SortOptions as T, ORCHESTRATOR_MANIFEST_ATTRIBUTE_PREFIX as Tt, headerNames as U, emptyRole as V, inventoryApiUrl as W, rolesById as X, monitorApiUrlv1 as Y, rolesByName as Z, PermissionObject as _, geoAttributes as _t, APPLICATION_JWT_CONTENT_TYPE as a, uiPermissionsById as at, PermissionTypes as b, DEVICE_ONLINE_CUTOFF as bt, AuditLogPermission as c, useradmApiUrlv2 as ct, DEVICE_LIST_DEFAULTS as d, DEVICE_DISMISSAL_STATE as dt, ssoIdpApiUrlv1 as et, DEVICE_STATES as f, DEVICE_MESSAGE_PROTOCOLS as ft, PaginationOptions as g, emptyFilter as gt, GroupsPermission as h, REPORT_CHART_SIZE_LIMIT as ht, APPLICATION_JSON_CONTENT_TYPE as i, uiPermissionsByArea as it, apiRoot as j, defaultIdAttribute as jt, UserManagementPermission as k, countries as kt, DEVICE_FILTERING_OPTIONS as l, AlertChannelKey as lt, DeviceIssueOptionKey as m, DeviceAuthState as mt, ALL_DEVICE_STATES as n, tenantadmApiUrlv2 as nt, ATTRIBUTE_SCOPES as o, useradmApiUrl as ot, DeploymentPermission as p, DEVICE_MESSAGE_TYPES as pt, limitDefault as q, ALL_RELEASES as r, twoFAStates as rt, AnyPermission as s, useradmApiUrlv1 as st, ALL_DEVICES as t, tenantadmApiUrlv1 as tt, DEVICE_ISSUE_OPTIONS as u, DEVICE_CONNECT_STATES as ut, PermissionSet as v, ATTRIBUTE_SCOPE_LABELS as vt, ScopedPermissionsByAreaKey as w, MAX_PAGE_SIZE as wt, ReleasesPermission as x, EXTERNAL_PROVIDER as xt, PermissionSetId as y, DEVICE_LIST_MAXIMUM_LENGTH as yt, deviceConfig as z };
124
- //# sourceMappingURL=constants-CzjK2gV-.d.ts.map
123
+ export { scopedPermissionAreas as $, alertChannels as A, countries as At, deviceConnect as B, SORTING_OPTIONS as C, FilterOperator as Ct, UiPermissionsByIdKey as D, TIMEOUTS as Dt, UiPermissionsByAreaKey as E, ORCHESTRATOR_MANIFEST_ATTRIBUTE_PREFIX as Et, deploymentsApiUrl as F, timeUnits as Ft, inventoryApiUrlV2 as G, emptyUiPermissions as H, deploymentsApiUrlV1alpha1 as I, limitDefault as J, inventoryApiUrlV2alpha1 as K, deploymentsApiUrlV2 as L, apiUrl as M, defaultIdAttribute as Mt, auditLogsApiUrl as N, emptyWebhook as Nt, UiPermissionsDefinition as O, UNGROUPED_GROUP as Ot, defaultPermissionSets as P, productOrder as Pt, rolesByName as Q, deviceAuthV2 as R, Role as S, EXTERNAL_PROVIDER as St, SortOptions as T, MAX_PAGE_SIZE as Tt, headerNames as U, emptyRole as V, inventoryApiUrl as W, monitorApiUrlv1 as X, maxSessionAge as Y, rolesById as Z, PermissionObject as _, emptyFilter as _t, APPLICATION_JWT_CONTENT_TYPE as a, uiPermissionsByArea as at, PermissionTypes as b, DEVICE_LIST_MAXIMUM_LENGTH as bt, AuditLogPermission as c, useradmApiUrlv1 as ct, DEVICE_LIST_DEFAULTS as d, DEVICE_CONNECT_STATES as dt, serviceProviderRolesById as et, DEVICE_STATES as f, DEVICE_DISMISSAL_STATE as ft, PaginationOptions as g, REPORT_CHART_SIZE_LIMIT as gt, GroupsPermission as h, DeviceAuthState as ht, APPLICATION_JSON_CONTENT_TYPE as i, twoFAStates as it, apiRoot as j, credentialTypes as jt, UserManagementPermission as k, Webhook as kt, DEVICE_FILTERING_OPTIONS as l, useradmApiUrlv2 as lt, DeviceIssueOptionKey as m, DEVICE_MESSAGE_TYPES as mt, ALL_DEVICE_STATES as n, tenantadmApiUrlv1 as nt, ATTRIBUTE_SCOPES as o, uiPermissionsById as ot, DeploymentPermission as p, DEVICE_MESSAGE_PROTOCOLS as pt, iotManagerBaseURL as q, ALL_RELEASES as r, tenantadmApiUrlv2 as rt, AnyPermission as s, useradmApiUrl as st, ALL_DEVICES as t, ssoIdpApiUrlv1 as tt, DEVICE_ISSUE_OPTIONS as u, AlertChannelKey as ut, PermissionSet as v, geoAttributes as vt, ScopedPermissionsByAreaKey as w, IdAttribute as wt, ReleasesPermission as x, DEVICE_ONLINE_CUTOFF as xt, PermissionSetId as y, ATTRIBUTE_SCOPE_LABELS as yt, deviceConfig as z };
124
+ //# sourceMappingURL=constants-B_H4squx.d.ts.map