@northern.tech/store 0.36.1 → 0.36.3

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 (281) hide show
  1. package/dist/actions.cjs.map +1 -1
  2. package/dist/actions.d.cts +123 -134
  3. package/dist/actions.d.ts +123 -134
  4. package/dist/actions.js.map +1 -1
  5. package/dist/api/general-api.cjs +3 -3
  6. package/dist/api/general-api.cjs.map +1 -1
  7. package/dist/api/general-api.d.cts +9 -10
  8. package/dist/api/general-api.d.ts +9 -10
  9. package/dist/api/general-api.js.map +1 -1
  10. package/dist/api/users-api.cjs +2 -2
  11. package/dist/api/users-api.cjs.map +1 -1
  12. package/dist/api/users-api.d.cts +1 -2
  13. package/dist/api/users-api.d.ts +1 -2
  14. package/dist/api/users-api.js.map +1 -1
  15. package/dist/appSlice/constants.cjs +0 -1
  16. package/dist/appSlice/constants.cjs.map +1 -1
  17. package/dist/appSlice/constants.d.cts +1 -1
  18. package/dist/appSlice/constants.d.ts +1 -1
  19. package/dist/appSlice/constants.js.map +1 -1
  20. package/dist/appSlice/index.cjs +2 -4
  21. package/dist/appSlice/index.cjs.map +1 -1
  22. package/dist/appSlice/index.d.cts +2 -2
  23. package/dist/appSlice/index.d.ts +2 -2
  24. package/dist/appSlice/index.js +2 -3
  25. package/dist/appSlice/index.js.map +1 -1
  26. package/dist/appSlice/mocks.cjs.map +1 -1
  27. package/dist/appSlice/mocks.d.cts +1 -1
  28. package/dist/appSlice/mocks.d.ts +1 -1
  29. package/dist/appSlice/mocks.js.map +1 -1
  30. package/dist/appSlice/selectors.cjs +2 -6
  31. package/dist/appSlice/selectors.cjs.map +1 -1
  32. package/dist/appSlice/selectors.d.cts +35 -128
  33. package/dist/appSlice/selectors.d.ts +35 -128
  34. package/dist/appSlice/selectors.js +2 -5
  35. package/dist/appSlice/selectors.js.map +1 -1
  36. package/dist/appSlice/thunks.cjs +0 -1
  37. package/dist/appSlice/thunks.d.cts +6 -31
  38. package/dist/appSlice/thunks.d.ts +6 -31
  39. package/dist/appSlice/thunks.js +2 -2
  40. package/dist/auth.cjs +2 -2
  41. package/dist/auth.cjs.map +1 -1
  42. package/dist/auth.d.cts +1 -1
  43. package/dist/auth.d.ts +1 -1
  44. package/dist/auth.js.map +1 -1
  45. package/dist/commonConstants.d.cts +1 -1
  46. package/dist/commonConstants.d.ts +1 -1
  47. package/dist/commonSelectors.cjs +2 -2
  48. package/dist/commonSelectors.cjs.map +1 -1
  49. package/dist/commonSelectors.d.cts +164 -166
  50. package/dist/commonSelectors.d.ts +164 -166
  51. package/dist/commonSelectors.js.map +1 -1
  52. package/dist/{constants-CIx3fnBv.d.cts → constants-6kYRTdox.d.cts} +1 -1
  53. package/dist/{constants-BciiayPt.d.ts → constants-6kYRTdox.d.ts} +1 -1
  54. package/dist/{constants-BIIEMVoG.d.ts → constants-B_7FCJQX.d.cts} +3 -6
  55. package/dist/{constants-BFTS6mge.d.cts → constants-B_7FCJQX.d.ts} +3 -6
  56. package/dist/{constants-D41U_jbR.d.cts → constants-BwKiHHaB.d.cts} +1 -1
  57. package/dist/{constants-5cdwz1iH.d.ts → constants-BwKiHHaB.d.ts} +1 -1
  58. package/dist/{constants-DK7fI3Rh.d.cts → constants-Db_RBdlV.d.cts} +1 -1
  59. package/dist/{constants-BWEsNG5c.d.ts → constants-Db_RBdlV.d.ts} +1 -1
  60. package/dist/{constants-CNhpIMME.d.cts → constants-OZiiFKiA.d.cts} +1 -1
  61. package/dist/{constants-y2XVLQWf.d.ts → constants-OZiiFKiA.d.ts} +1 -1
  62. package/dist/{constants-CjO3_FOH.d.ts → constants-OcdoVk6f.d.ts} +3 -4
  63. package/dist/{constants-G3wymKIl.d.cts → constants-Sn4gnNA3.d.cts} +1 -1
  64. package/dist/{constants-Cpgyuy_r.d.ts → constants-Sn4gnNA3.d.ts} +1 -1
  65. package/dist/{constants-BrGIx40B.d.cts → constants-_p6w8uEp.d.cts} +3 -4
  66. package/dist/constants.cjs +0 -1
  67. package/dist/constants.cjs.map +1 -1
  68. package/dist/constants.d.cts +8 -8
  69. package/dist/constants.d.ts +8 -8
  70. package/dist/constants.js.map +1 -1
  71. package/dist/deploymentsSlice/constants.d.cts +1 -1
  72. package/dist/deploymentsSlice/constants.d.ts +1 -1
  73. package/dist/deploymentsSlice/index.cjs +0 -1
  74. package/dist/deploymentsSlice/index.cjs.map +1 -1
  75. package/dist/deploymentsSlice/index.d.cts +1 -1
  76. package/dist/deploymentsSlice/index.d.ts +1 -1
  77. package/dist/deploymentsSlice/index.js.map +1 -1
  78. package/dist/deploymentsSlice/mocks.cjs.map +1 -1
  79. package/dist/deploymentsSlice/mocks.d.cts +1 -1
  80. package/dist/deploymentsSlice/mocks.d.ts +1 -1
  81. package/dist/deploymentsSlice/mocks.js.map +1 -1
  82. package/dist/deploymentsSlice/selectors.cjs +0 -1
  83. package/dist/deploymentsSlice/selectors.cjs.map +1 -1
  84. package/dist/deploymentsSlice/selectors.d.cts +15 -16
  85. package/dist/deploymentsSlice/selectors.d.ts +15 -16
  86. package/dist/deploymentsSlice/selectors.js.map +1 -1
  87. package/dist/deploymentsSlice/thunks.d.cts +21 -22
  88. package/dist/deploymentsSlice/thunks.d.ts +21 -22
  89. package/dist/devicesSlice/constants.d.cts +1 -1
  90. package/dist/devicesSlice/constants.d.ts +1 -1
  91. package/dist/devicesSlice/index.cjs +0 -1
  92. package/dist/devicesSlice/index.cjs.map +1 -1
  93. package/dist/devicesSlice/index.d.cts +1 -1
  94. package/dist/devicesSlice/index.d.ts +1 -1
  95. package/dist/devicesSlice/index.js.map +1 -1
  96. package/dist/devicesSlice/mocks.cjs +0 -1
  97. package/dist/devicesSlice/mocks.cjs.map +1 -1
  98. package/dist/devicesSlice/mocks.js.map +1 -1
  99. package/dist/devicesSlice/selectors.cjs +0 -1
  100. package/dist/devicesSlice/selectors.cjs.map +1 -1
  101. package/dist/devicesSlice/selectors.d.cts +79 -81
  102. package/dist/devicesSlice/selectors.d.ts +79 -81
  103. package/dist/devicesSlice/selectors.js.map +1 -1
  104. package/dist/devicesSlice/thunks.d.cts +67 -69
  105. package/dist/devicesSlice/thunks.d.ts +67 -69
  106. package/dist/{index-DUvrw_Ed.d.ts → index-5Q-iI4EB.d.cts} +17 -20
  107. package/dist/index-BBsUj1a8.d.ts +68 -0
  108. package/dist/index-BLvjQfGj.d.ts +119 -0
  109. package/dist/{index-BP0uAq36.d.cts → index-Bb4yvvgG.d.ts} +25 -28
  110. package/dist/index-Bj3OArhr.d.cts +68 -0
  111. package/dist/{index-CT5hgXm9.d.cts → index-ByfjrTdH.d.ts} +16 -19
  112. package/dist/index-C8QadAm7.d.cts +119 -0
  113. package/dist/{index-BI9O8JWe.d.ts → index-CPdMUfRr.d.ts} +41 -44
  114. package/dist/index-CSk4ENmk.d.cts +149 -0
  115. package/dist/index-Cf81vLTi.d.ts +149 -0
  116. package/dist/index-DBUt8xVc.d.cts +61 -0
  117. package/dist/index-DBUt8xVc.d.ts +61 -0
  118. package/dist/index-DLDY7bNT.d.ts +165 -0
  119. package/dist/{index-B64X5ozM.d.cts → index-DbfM03Gj.d.cts} +42 -45
  120. package/dist/{index-CkwVnIqd.d.ts → index-EPmsL6Lb.d.cts} +26 -29
  121. package/dist/index-Zs9RnVoR.d.cts +165 -0
  122. package/dist/liststatehook.cjs +5 -6
  123. package/dist/liststatehook.cjs.map +1 -1
  124. package/dist/liststatehook.d.cts +1 -1
  125. package/dist/liststatehook.d.ts +1 -1
  126. package/dist/liststatehook.js +1 -1
  127. package/dist/liststatehook.js.map +1 -1
  128. package/dist/locationutils.cjs +0 -1
  129. package/dist/locationutils.cjs.map +1 -1
  130. package/dist/locationutils.d.cts +3 -3
  131. package/dist/locationutils.d.ts +3 -3
  132. package/dist/locationutils.js.map +1 -1
  133. package/dist/monitorSlice/constants.d.cts +1 -1
  134. package/dist/monitorSlice/constants.d.ts +1 -1
  135. package/dist/monitorSlice/index.cjs +0 -1
  136. package/dist/monitorSlice/index.cjs.map +1 -1
  137. package/dist/monitorSlice/index.d.cts +1 -1
  138. package/dist/monitorSlice/index.d.ts +1 -1
  139. package/dist/monitorSlice/index.js.map +1 -1
  140. package/dist/monitorSlice/mocks.cjs +0 -1
  141. package/dist/monitorSlice/mocks.cjs.map +1 -1
  142. package/dist/monitorSlice/mocks.d.cts +1 -1
  143. package/dist/monitorSlice/mocks.d.ts +1 -1
  144. package/dist/monitorSlice/mocks.js.map +1 -1
  145. package/dist/monitorSlice/selectors.d.cts +1 -1
  146. package/dist/monitorSlice/selectors.d.ts +1 -1
  147. package/dist/monitorSlice/thunks.cjs +1 -3
  148. package/dist/monitorSlice/thunks.cjs.map +1 -1
  149. package/dist/monitorSlice/thunks.d.cts +11 -13
  150. package/dist/monitorSlice/thunks.d.ts +11 -13
  151. package/dist/monitorSlice/thunks.js +1 -2
  152. package/dist/monitorSlice/thunks.js.map +1 -1
  153. package/dist/onboardingSlice/constants.cjs.map +1 -1
  154. package/dist/onboardingSlice/constants.d.cts +1 -1
  155. package/dist/onboardingSlice/constants.d.ts +1 -1
  156. package/dist/onboardingSlice/constants.js.map +1 -1
  157. package/dist/onboardingSlice/index.cjs +0 -1
  158. package/dist/onboardingSlice/index.cjs.map +1 -1
  159. package/dist/onboardingSlice/index.d.cts +1 -1
  160. package/dist/onboardingSlice/index.d.ts +1 -1
  161. package/dist/onboardingSlice/index.js.map +1 -1
  162. package/dist/onboardingSlice/mocks.cjs.map +1 -1
  163. package/dist/onboardingSlice/mocks.d.cts +1 -1
  164. package/dist/onboardingSlice/mocks.d.ts +1 -1
  165. package/dist/onboardingSlice/mocks.js.map +1 -1
  166. package/dist/onboardingSlice/selectors.d.cts +2 -2
  167. package/dist/onboardingSlice/selectors.d.ts +2 -2
  168. package/dist/onboardingSlice/thunks.d.cts +22 -23
  169. package/dist/onboardingSlice/thunks.d.ts +22 -23
  170. package/dist/organizationSlice/constants.d.cts +1 -1
  171. package/dist/organizationSlice/constants.d.ts +1 -1
  172. package/dist/organizationSlice/index.cjs +0 -1
  173. package/dist/organizationSlice/index.cjs.map +1 -1
  174. package/dist/organizationSlice/index.d.cts +1 -1
  175. package/dist/organizationSlice/index.d.ts +1 -1
  176. package/dist/organizationSlice/index.js.map +1 -1
  177. package/dist/organizationSlice/mocks.cjs +0 -1
  178. package/dist/organizationSlice/mocks.cjs.map +1 -1
  179. package/dist/organizationSlice/mocks.d.cts +3 -4
  180. package/dist/organizationSlice/mocks.d.ts +3 -4
  181. package/dist/organizationSlice/mocks.js.map +1 -1
  182. package/dist/organizationSlice/selectors.cjs +0 -1
  183. package/dist/organizationSlice/selectors.cjs.map +1 -1
  184. package/dist/organizationSlice/selectors.d.cts +78 -81
  185. package/dist/organizationSlice/selectors.d.ts +78 -81
  186. package/dist/organizationSlice/selectors.js.map +1 -1
  187. package/dist/organizationSlice/thunks.d.cts +65 -105
  188. package/dist/organizationSlice/thunks.d.ts +65 -105
  189. package/dist/organizationSlice/types.d.cts +1 -1
  190. package/dist/organizationSlice/types.d.ts +1 -1
  191. package/dist/releasesSlice/constants.cjs.map +1 -1
  192. package/dist/releasesSlice/constants.d.cts +1 -1
  193. package/dist/releasesSlice/constants.d.ts +1 -1
  194. package/dist/releasesSlice/constants.js.map +1 -1
  195. package/dist/releasesSlice/index.cjs +0 -1
  196. package/dist/releasesSlice/index.cjs.map +1 -1
  197. package/dist/releasesSlice/index.d.cts +1 -1
  198. package/dist/releasesSlice/index.d.ts +1 -1
  199. package/dist/releasesSlice/index.js.map +1 -1
  200. package/dist/releasesSlice/mocks.cjs +0 -1
  201. package/dist/releasesSlice/mocks.cjs.map +1 -1
  202. package/dist/releasesSlice/mocks.d.cts +3 -6
  203. package/dist/releasesSlice/mocks.d.ts +3 -6
  204. package/dist/releasesSlice/mocks.js.map +1 -1
  205. package/dist/releasesSlice/selectors.cjs +0 -1
  206. package/dist/releasesSlice/selectors.cjs.map +1 -1
  207. package/dist/releasesSlice/selectors.d.cts +107 -110
  208. package/dist/releasesSlice/selectors.d.ts +107 -110
  209. package/dist/releasesSlice/selectors.js.map +1 -1
  210. package/dist/releasesSlice/thunks.cjs +39 -16
  211. package/dist/releasesSlice/thunks.cjs.map +1 -1
  212. package/dist/releasesSlice/thunks.d.cts +52 -61
  213. package/dist/releasesSlice/thunks.d.ts +52 -61
  214. package/dist/releasesSlice/thunks.js +38 -15
  215. package/dist/releasesSlice/thunks.js.map +1 -1
  216. package/dist/sockethook.cjs +3 -3
  217. package/dist/sockethook.cjs.map +1 -1
  218. package/dist/sockethook.js.map +1 -1
  219. package/dist/{store-BhRxVhtL.d.cts → store-DBUTT4FF.d.cts} +139 -36
  220. package/dist/{store-BZo47jc-.d.ts → store-gkY5P9Uz.d.ts} +139 -36
  221. package/dist/store.cjs +0 -1
  222. package/dist/store.cjs.map +1 -1
  223. package/dist/store.d.cts +2 -3
  224. package/dist/store.d.ts +2 -3
  225. package/dist/store.js.map +1 -1
  226. package/dist/storehooks.cjs +9 -17
  227. package/dist/storehooks.cjs.map +1 -1
  228. package/dist/storehooks.d.cts +6 -43
  229. package/dist/storehooks.d.ts +6 -43
  230. package/dist/storehooks.js +7 -15
  231. package/dist/storehooks.js.map +1 -1
  232. package/dist/thunks.cjs +51 -67
  233. package/dist/thunks.cjs.map +1 -1
  234. package/dist/thunks.d.cts +2 -2
  235. package/dist/thunks.d.ts +2 -2
  236. package/dist/thunks.js +45 -60
  237. package/dist/thunks.js.map +1 -1
  238. package/dist/{types-COdPU2QQ.d.cts → types-B33vKVhi.d.cts} +4 -4
  239. package/dist/{types-BPyM8Inu.d.ts → types-BjtmX60L.d.ts} +4 -4
  240. package/dist/useDeploymentDevice.cjs +2 -2
  241. package/dist/useDeploymentDevice.cjs.map +1 -1
  242. package/dist/useDeploymentDevice.js.map +1 -1
  243. package/dist/usersSlice/constants.d.cts +1 -1
  244. package/dist/usersSlice/constants.d.ts +1 -1
  245. package/dist/usersSlice/index.cjs +0 -1
  246. package/dist/usersSlice/index.cjs.map +1 -1
  247. package/dist/usersSlice/index.d.cts +1 -1
  248. package/dist/usersSlice/index.d.ts +1 -1
  249. package/dist/usersSlice/index.js.map +1 -1
  250. package/dist/usersSlice/mocks.cjs +0 -1
  251. package/dist/usersSlice/mocks.cjs.map +1 -1
  252. package/dist/usersSlice/mocks.d.cts +4 -6
  253. package/dist/usersSlice/mocks.d.ts +4 -6
  254. package/dist/usersSlice/mocks.js.map +1 -1
  255. package/dist/usersSlice/selectors.cjs +0 -1
  256. package/dist/usersSlice/selectors.cjs.map +1 -1
  257. package/dist/usersSlice/selectors.d.cts +44 -47
  258. package/dist/usersSlice/selectors.d.ts +44 -47
  259. package/dist/usersSlice/selectors.js.map +1 -1
  260. package/dist/usersSlice/thunks.d.cts +92 -95
  261. package/dist/usersSlice/thunks.d.ts +92 -95
  262. package/dist/utils.cjs +2 -3
  263. package/dist/utils.cjs.map +1 -1
  264. package/dist/utils.d.cts +2 -2
  265. package/dist/utils.d.ts +2 -2
  266. package/dist/utils.js +3 -3
  267. package/dist/utils.js.map +1 -1
  268. package/package.json +8 -8
  269. package/dist/index-B3IF6ur9.d.cts +0 -168
  270. package/dist/index-BFlHWzjv.d.cts +0 -152
  271. package/dist/index-BbaS7MzW.d.cts +0 -71
  272. package/dist/index-Bp1WpATs.d.ts +0 -154
  273. package/dist/index-C6wNUfiV.d.ts +0 -71
  274. package/dist/index-CJkrL0oA.d.ts +0 -64
  275. package/dist/index-DaD3yorF.d.ts +0 -168
  276. package/dist/index-DwACbyUg.d.cts +0 -154
  277. package/dist/index-UPc3wvVd.d.cts +0 -64
  278. package/dist/index-ez3oxfRo.d.ts +0 -152
  279. package/dist/utils-CHBWS_tH.d.ts +0 -105
  280. package/dist/utils-Do9z5TL1.d.cts +0 -105
  281. /package/dist/{chunk-CKQMccvm.cjs → rolldown-runtime-D6vf50IK.cjs} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"commonSelectors.cjs","names":["getOrganization","getFeatures","PLANS","getCurrentUser","getRolesById","rolesByName","mapUserRolesToUiPermissions","getIsServiceProvider","uiPermissionsById","ADDONS","getGlobalSettings","getFilteringAttributes","ATTRIBUTE_SCOPES","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 { 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 { listItemMapper, mapUserRolesToUiPermissions } 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 = { key: 'check_in_time', value: 'Latest activity', scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPES.system, priority: 4 };\n const updateAttribute = { ...checkInAttribute, key: 'updated_ts', value: 'Last inventory update' };\n const firstRequestAttribute = { key: 'created_ts', value: 'First request', scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPES.system, priority: 4 };\n const attributes = [\n ...previousFilters.map(item => ({\n ...item,\n value: deviceIdAttribute.key === item.key ? deviceIdAttribute.value : 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 => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.inventory, category: ATTRIBUTE_SCOPES.inventory, priority: 2 })),\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_SCOPES.system, 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.cjs","names":["getOrganization","getFeatures","PLANS","getCurrentUser","getRolesById","rolesByName","mapUserRolesToUiPermissions","getIsServiceProvider","uiPermissionsById","ADDONS","getGlobalSettings","getFilteringAttributes","ATTRIBUTE_SCOPES","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 { 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 { listItemMapper, mapUserRolesToUiPermissions } 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 = { key: 'check_in_time', value: 'Latest activity', scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPES.system, priority: 4 };\n const updateAttribute = { ...checkInAttribute, key: 'updated_ts', value: 'Last inventory update' };\n const firstRequestAttribute = { key: 'created_ts', value: 'First request', scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPES.system, priority: 4 };\n const attributes = [\n ...previousFilters.map(item => ({\n ...item,\n value: deviceIdAttribute.key === item.key ? deviceIdAttribute.value : 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 => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.inventory, category: ATTRIBUTE_SCOPES.inventory, priority: 2 })),\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_SCOPES.system, 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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"}