@northern.tech/store 0.1.1 → 0.1.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 (622) hide show
  1. package/dist/actions.d.mts +95 -0
  2. package/dist/actions.d.ts +95 -0
  3. package/dist/actions.js +1746 -0
  4. package/dist/actions.js.map +1 -0
  5. package/dist/actions.mjs +21 -0
  6. package/dist/actions.mjs.map +1 -0
  7. package/dist/api/general-api.d.mts +21 -0
  8. package/dist/api/general-api.d.ts +21 -0
  9. package/dist/api/general-api.js +1002 -0
  10. package/dist/api/general-api.js.map +1 -0
  11. package/dist/api/general-api.mjs +18 -0
  12. package/dist/api/general-api.mjs.map +1 -0
  13. package/dist/api/types/Address.ts +6 -0
  14. package/dist/api/types/AddressUpdate.ts +12 -0
  15. package/dist/api/types/AuthSet.ts +37 -0
  16. package/{api/types/AuthSet.ts → dist/api/types/AuthSetIot_manager.ts} +2 -2
  17. package/dist/api/types/BillingProfile.ts +37 -0
  18. package/dist/api/types/BillingProfileUpdate.ts +37 -0
  19. package/{api → dist/api}/types/BinaryDeltaLimits.ts +6 -0
  20. package/{api → dist/api}/types/BoundingBox.ts +1 -3
  21. package/dist/api/types/Deployment.ts +45 -0
  22. package/{api → dist/api}/types/DeploymentAggregation.ts +1 -3
  23. package/{api → dist/api}/types/DeploymentAggregationItem.ts +1 -3
  24. package/{api → dist/api}/types/DeploymentAggregationTerm.ts +1 -2
  25. package/{api → dist/api}/types/DeploymentAggregationTerms.ts +1 -3
  26. package/{api → dist/api}/types/DeploymentAttributeProjection.ts +1 -2
  27. package/{api → dist/api}/types/DeploymentDeployments.ts +4 -5
  28. package/{api → dist/api}/types/DeploymentFilterTerm.ts +1 -3
  29. package/dist/api/types/DeploymentPhaseDeployments.ts +23 -0
  30. package/{api → dist/api}/types/DeploymentSearchTerms.ts +1 -3
  31. package/{api → dist/api}/types/DeploymentSortTerm.ts +1 -3
  32. package/dist/api/types/DeploymentStatisticsDeployments.ts +15 -0
  33. package/dist/api/types/DeploymentStatusStatisticsDeployments.ts +54 -0
  34. package/dist/api/types/Device.ts +20 -0
  35. package/{api → dist/api}/types/DeviceAggregation.ts +1 -3
  36. package/{api → dist/api}/types/DeviceAggregationItem.ts +1 -3
  37. package/{api → dist/api}/types/DeviceAggregationTerm.ts +1 -2
  38. package/{api → dist/api}/types/DeviceAggregationTerms.ts +1 -3
  39. package/{api → dist/api}/types/DeviceAttribute.ts +1 -2
  40. package/{api → dist/api}/types/DeviceAttributeProjection.ts +1 -2
  41. package/{api/types/Device.ts → dist/api/types/DeviceDeployments.ts} +1 -1
  42. package/{api → dist/api}/types/DeviceFilterAttribute.ts +1 -2
  43. package/{api → dist/api}/types/DeviceFilterTerm.ts +1 -3
  44. package/{api → dist/api}/types/DeviceSearchTerms.ts +1 -3
  45. package/{api → dist/api}/types/DeviceSortTerm.ts +1 -3
  46. package/{api → dist/api}/types/Error.ts +1 -1
  47. package/{api/types/FilterInventory.ts → dist/api/types/Filter.ts} +3 -4
  48. package/{api/types/Filter.ts → dist/api/types/FilterInventory.ts} +1 -1
  49. package/dist/api/types/FilterPredicate.ts +48 -0
  50. package/{api/types/FilterPredicate.ts → dist/api/types/FilterPredicateInventory.ts} +3 -3
  51. package/{api → dist/api}/types/GeoBoundingBox.ts +1 -3
  52. package/{api → dist/api}/types/GeoBoundingBoxFilter.ts +1 -2
  53. package/{api → dist/api}/types/GeoDistance.ts +1 -3
  54. package/{api → dist/api}/types/GeoDistanceFilter.ts +1 -3
  55. package/{api → dist/api}/types/GeoPoint.ts +1 -2
  56. package/{api → dist/api}/types/Integration.ts +6 -0
  57. package/{api → dist/api}/types/MenderTypes.ts +41 -11
  58. package/{api → dist/api}/types/NewDeploymentV2.ts +3 -0
  59. package/{api → dist/api}/types/NewTenant.ts +16 -8
  60. package/{api → dist/api}/types/Object.ts +3 -0
  61. package/{api → dist/api}/types/PreAuthSet.ts +1 -1
  62. package/{api → dist/api}/types/Settings.ts +3 -3
  63. package/{api → dist/api}/types/Status.ts +5 -4
  64. package/{api → dist/api}/types/StatusTenantadm.ts +1 -3
  65. package/dist/api/types/Tenant.ts +21 -0
  66. package/{api → dist/api}/types/TenantTenantadm.ts +16 -0
  67. package/dist/api/types/UpdateChildTenant.ts +17 -0
  68. package/{api → dist/api}/types/UpdateDeployments.ts +1 -1
  69. package/{api → dist/api}/types/UpgradeCompleteRequest.ts +2 -0
  70. package/{api → dist/api}/types/UserWithTenantInfo.ts +7 -3
  71. package/dist/api/users-api.d.mts +16 -0
  72. package/dist/api/users-api.d.ts +16 -0
  73. package/dist/api/users-api.js +1026 -0
  74. package/dist/api/users-api.js.map +1 -0
  75. package/dist/api/users-api.mjs +15 -0
  76. package/dist/api/users-api.mjs.map +1 -0
  77. package/dist/appSlice/constants.d.mts +210 -0
  78. package/dist/appSlice/constants.d.ts +210 -0
  79. package/dist/appSlice/constants.js +221 -0
  80. package/dist/appSlice/constants.js.map +1 -0
  81. package/dist/appSlice/constants.mjs +42 -0
  82. package/dist/appSlice/constants.mjs.map +1 -0
  83. package/dist/appSlice/index.d.mts +1557 -0
  84. package/dist/appSlice/index.d.ts +1557 -0
  85. package/dist/appSlice/index.js +1067 -0
  86. package/dist/appSlice/index.js.map +1 -0
  87. package/dist/appSlice/index.mjs +21 -0
  88. package/dist/appSlice/index.mjs.map +1 -0
  89. package/dist/appSlice/selectors.d.mts +91 -0
  90. package/dist/appSlice/selectors.d.ts +91 -0
  91. package/dist/appSlice/selectors.js +90 -0
  92. package/dist/appSlice/selectors.js.map +1 -0
  93. package/dist/appSlice/selectors.mjs +20 -0
  94. package/dist/appSlice/selectors.mjs.map +1 -0
  95. package/dist/appSlice/thunks.d.mts +46 -0
  96. package/dist/appSlice/thunks.d.ts +46 -0
  97. package/dist/appSlice/thunks.js +5655 -0
  98. package/dist/appSlice/thunks.js.map +1 -0
  99. package/dist/appSlice/thunks.mjs +45 -0
  100. package/dist/appSlice/thunks.mjs.map +1 -0
  101. package/dist/auth.d.mts +17 -0
  102. package/dist/auth.d.ts +17 -0
  103. package/dist/auth.js +985 -0
  104. package/dist/auth.js.map +1 -0
  105. package/dist/auth.mjs +23 -0
  106. package/dist/auth.mjs.map +1 -0
  107. package/dist/chunk-6667TCAJ.mjs +135 -0
  108. package/dist/chunk-6667TCAJ.mjs.map +1 -0
  109. package/{releasesSlice/index.ts → dist/chunk-7E7KJHY3.mjs} +33 -32
  110. package/dist/chunk-7E7KJHY3.mjs.map +1 -0
  111. package/{usersSlice/index.ts → dist/chunk-BJSH2G7W.mjs} +39 -58
  112. package/dist/chunk-BJSH2G7W.mjs.map +1 -0
  113. package/dist/chunk-BOSBROA3.mjs +168 -0
  114. package/dist/chunk-BOSBROA3.mjs.map +1 -0
  115. package/dist/chunk-BRHSKNFC.mjs +70 -0
  116. package/dist/chunk-BRHSKNFC.mjs.map +1 -0
  117. package/dist/chunk-C2YZYTJ6.mjs +37 -0
  118. package/dist/chunk-C2YZYTJ6.mjs.map +1 -0
  119. package/dist/chunk-DZBVTSIX.mjs +55 -0
  120. package/dist/chunk-DZBVTSIX.mjs.map +1 -0
  121. package/{appSlice/index.ts → dist/chunk-F37LUTBX.mjs} +58 -68
  122. package/dist/chunk-F37LUTBX.mjs.map +1 -0
  123. package/dist/chunk-G32LAKW4.mjs +239 -0
  124. package/dist/chunk-G32LAKW4.mjs.map +1 -0
  125. package/dist/chunk-G3I53JGW.mjs +243 -0
  126. package/dist/chunk-G3I53JGW.mjs.map +1 -0
  127. package/dist/chunk-G4FGNSV3.mjs +13 -0
  128. package/dist/chunk-G4FGNSV3.mjs.map +1 -0
  129. package/dist/chunk-G7LATUT6.mjs +110 -0
  130. package/dist/chunk-G7LATUT6.mjs.map +1 -0
  131. package/dist/chunk-H2PQQMRY.mjs +7 -0
  132. package/dist/chunk-H2PQQMRY.mjs.map +1 -0
  133. package/{devicesSlice/index.ts → dist/chunk-HRWZJQMH.mjs} +57 -77
  134. package/dist/chunk-HRWZJQMH.mjs.map +1 -0
  135. package/dist/chunk-HVHZG2H4.mjs +56 -0
  136. package/dist/chunk-HVHZG2H4.mjs.map +1 -0
  137. package/dist/chunk-HXPYJ6QN.mjs +75 -0
  138. package/dist/chunk-HXPYJ6QN.mjs.map +1 -0
  139. package/dist/chunk-IPPIKGIB.mjs +35 -0
  140. package/dist/chunk-IPPIKGIB.mjs.map +1 -0
  141. package/dist/chunk-IU4OXOPA.mjs +46 -0
  142. package/dist/chunk-IU4OXOPA.mjs.map +1 -0
  143. package/dist/chunk-IVSYYXTC.mjs +36 -0
  144. package/dist/chunk-IVSYYXTC.mjs.map +1 -0
  145. package/{onboardingSlice/index.ts → dist/chunk-M4U5R7A4.mjs} +19 -22
  146. package/dist/chunk-M4U5R7A4.mjs.map +1 -0
  147. package/dist/chunk-N7G6QK2E.mjs +414 -0
  148. package/dist/chunk-N7G6QK2E.mjs.map +1 -0
  149. package/dist/chunk-O6O3D52B.mjs +39 -0
  150. package/dist/chunk-O6O3D52B.mjs.map +1 -0
  151. package/dist/chunk-QBKCUIWO.mjs +7 -0
  152. package/dist/chunk-QBKCUIWO.mjs.map +1 -0
  153. package/dist/chunk-R2GBNXLV.mjs +57 -0
  154. package/dist/chunk-R2GBNXLV.mjs.map +1 -0
  155. package/dist/chunk-RH6ONMG7.mjs +65 -0
  156. package/dist/chunk-RH6ONMG7.mjs.map +1 -0
  157. package/dist/chunk-RQOE5OOT.mjs +284 -0
  158. package/dist/chunk-RQOE5OOT.mjs.map +1 -0
  159. package/dist/chunk-TD45YTYK.mjs +108 -0
  160. package/dist/chunk-TD45YTYK.mjs.map +1 -0
  161. package/dist/chunk-V32GTKOS.mjs +1 -0
  162. package/dist/chunk-V32GTKOS.mjs.map +1 -0
  163. package/dist/chunk-XWBD7VOK.mjs +93 -0
  164. package/dist/chunk-XWBD7VOK.mjs.map +1 -0
  165. package/dist/chunk-XYVPYFSM.mjs +106 -0
  166. package/dist/chunk-XYVPYFSM.mjs.map +1 -0
  167. package/dist/chunk-YNVSU3AA.mjs +2977 -0
  168. package/dist/chunk-YNVSU3AA.mjs.map +1 -0
  169. package/dist/chunk-ZIYGEXSJ.mjs +145 -0
  170. package/dist/chunk-ZIYGEXSJ.mjs.map +1 -0
  171. package/dist/chunk-ZNST5R6O.mjs +658 -0
  172. package/dist/chunk-ZNST5R6O.mjs.map +1 -0
  173. package/dist/commonConstants.d.mts +248 -0
  174. package/dist/commonConstants.d.ts +248 -0
  175. package/dist/commonConstants.js +303 -0
  176. package/dist/commonConstants.js.map +1 -0
  177. package/dist/commonConstants.mjs +40 -0
  178. package/dist/commonConstants.mjs.map +1 -0
  179. package/dist/commonSelectors.d.mts +896 -0
  180. package/dist/commonSelectors.d.ts +896 -0
  181. package/dist/commonSelectors.js +1482 -0
  182. package/dist/commonSelectors.js.map +1 -0
  183. package/dist/commonSelectors.mjs +54 -0
  184. package/dist/commonSelectors.mjs.map +1 -0
  185. package/dist/constants.d.mts +12 -0
  186. package/dist/constants.d.ts +12 -0
  187. package/dist/constants.js +1246 -0
  188. package/dist/constants.js.map +1 -0
  189. package/dist/constants.mjs +219 -0
  190. package/dist/constants.mjs.map +1 -0
  191. package/dist/deploymentsSlice/constants.d.mts +142 -0
  192. package/dist/deploymentsSlice/constants.d.ts +142 -0
  193. package/dist/deploymentsSlice/constants.js +969 -0
  194. package/dist/deploymentsSlice/constants.js.map +1 -0
  195. package/dist/deploymentsSlice/constants.mjs +42 -0
  196. package/dist/deploymentsSlice/constants.mjs.map +1 -0
  197. package/dist/deploymentsSlice/index.d.mts +2373 -0
  198. package/dist/deploymentsSlice/index.d.ts +2373 -0
  199. package/dist/deploymentsSlice/index.js +1053 -0
  200. package/dist/deploymentsSlice/index.js.map +1 -0
  201. package/dist/deploymentsSlice/index.mjs +21 -0
  202. package/dist/deploymentsSlice/index.mjs.map +1 -0
  203. package/dist/deploymentsSlice/selectors.d.mts +59 -0
  204. package/dist/deploymentsSlice/selectors.d.ts +59 -0
  205. package/dist/deploymentsSlice/selectors.js +969 -0
  206. package/dist/deploymentsSlice/selectors.js.map +1 -0
  207. package/dist/deploymentsSlice/selectors.mjs +25 -0
  208. package/dist/deploymentsSlice/selectors.mjs.map +1 -0
  209. package/dist/deploymentsSlice/thunks.d.mts +202 -0
  210. package/dist/deploymentsSlice/thunks.d.ts +202 -0
  211. package/dist/deploymentsSlice/thunks.js +5671 -0
  212. package/dist/deploymentsSlice/thunks.js.map +1 -0
  213. package/dist/deploymentsSlice/thunks.mjs +63 -0
  214. package/dist/deploymentsSlice/thunks.mjs.map +1 -0
  215. package/dist/devicesSlice/constants.d.mts +44 -0
  216. package/dist/devicesSlice/constants.d.ts +44 -0
  217. package/dist/devicesSlice/constants.js +969 -0
  218. package/dist/devicesSlice/constants.js.map +1 -0
  219. package/dist/devicesSlice/constants.mjs +40 -0
  220. package/dist/devicesSlice/constants.mjs.map +1 -0
  221. package/dist/devicesSlice/index.d.mts +2223 -0
  222. package/dist/devicesSlice/index.d.ts +2223 -0
  223. package/dist/devicesSlice/index.js +1109 -0
  224. package/dist/devicesSlice/index.js.map +1 -0
  225. package/dist/devicesSlice/index.mjs +21 -0
  226. package/dist/devicesSlice/index.mjs.map +1 -0
  227. package/dist/devicesSlice/selectors.d.mts +261 -0
  228. package/dist/devicesSlice/selectors.d.ts +261 -0
  229. package/dist/devicesSlice/selectors.js +1084 -0
  230. package/dist/devicesSlice/selectors.js.map +1 -0
  231. package/dist/devicesSlice/selectors.mjs +53 -0
  232. package/dist/devicesSlice/selectors.mjs.map +1 -0
  233. package/dist/devicesSlice/thunks.d.mts +742 -0
  234. package/dist/devicesSlice/thunks.d.ts +742 -0
  235. package/dist/devicesSlice/thunks.js +5743 -0
  236. package/dist/devicesSlice/thunks.js.map +1 -0
  237. package/dist/devicesSlice/thunks.mjs +135 -0
  238. package/dist/devicesSlice/thunks.mjs.map +1 -0
  239. package/dist/monitorSlice/constants.d.mts +6 -0
  240. package/dist/monitorSlice/constants.d.ts +6 -0
  241. package/dist/monitorSlice/constants.js +919 -0
  242. package/dist/monitorSlice/constants.js.map +1 -0
  243. package/dist/monitorSlice/constants.mjs +14 -0
  244. package/dist/monitorSlice/constants.mjs.map +1 -0
  245. package/dist/monitorSlice/index.d.mts +291 -0
  246. package/dist/monitorSlice/index.d.ts +291 -0
  247. package/dist/monitorSlice/index.js +971 -0
  248. package/dist/monitorSlice/index.js.map +1 -0
  249. package/dist/monitorSlice/index.mjs +21 -0
  250. package/dist/monitorSlice/index.mjs.map +1 -0
  251. package/dist/monitorSlice/selectors.d.mts +3 -0
  252. package/dist/monitorSlice/selectors.d.ts +3 -0
  253. package/dist/monitorSlice/selectors.js +31 -0
  254. package/dist/monitorSlice/selectors.js.map +1 -0
  255. package/dist/monitorSlice/selectors.mjs +8 -0
  256. package/dist/monitorSlice/selectors.mjs.map +1 -0
  257. package/dist/monitorSlice/thunks.d.mts +71 -0
  258. package/dist/monitorSlice/thunks.d.ts +71 -0
  259. package/dist/monitorSlice/thunks.js +2531 -0
  260. package/dist/monitorSlice/thunks.js.map +1 -0
  261. package/dist/monitorSlice/thunks.mjs +44 -0
  262. package/dist/monitorSlice/thunks.mjs.map +1 -0
  263. package/dist/onboardingSlice/constants.d.mts +23 -0
  264. package/dist/onboardingSlice/constants.d.ts +23 -0
  265. package/dist/onboardingSlice/constants.js +71 -0
  266. package/dist/onboardingSlice/constants.js.map +1 -0
  267. package/dist/onboardingSlice/constants.mjs +10 -0
  268. package/dist/onboardingSlice/constants.mjs.map +1 -0
  269. package/dist/onboardingSlice/index.d.mts +237 -0
  270. package/dist/onboardingSlice/index.d.ts +237 -0
  271. package/dist/onboardingSlice/index.js +94 -0
  272. package/dist/onboardingSlice/index.js.map +1 -0
  273. package/dist/onboardingSlice/index.mjs +16 -0
  274. package/dist/onboardingSlice/index.mjs.map +1 -0
  275. package/dist/onboardingSlice/selectors.d.mts +3 -0
  276. package/dist/onboardingSlice/selectors.d.ts +3 -0
  277. package/dist/onboardingSlice/selectors.js +31 -0
  278. package/dist/onboardingSlice/selectors.js.map +1 -0
  279. package/dist/onboardingSlice/selectors.mjs +8 -0
  280. package/dist/onboardingSlice/selectors.mjs.map +1 -0
  281. package/dist/onboardingSlice/thunks.d.mts +172 -0
  282. package/dist/onboardingSlice/thunks.d.ts +172 -0
  283. package/dist/onboardingSlice/thunks.js +5661 -0
  284. package/dist/onboardingSlice/thunks.js.map +1 -0
  285. package/dist/onboardingSlice/thunks.mjs +51 -0
  286. package/dist/onboardingSlice/thunks.mjs.map +1 -0
  287. package/dist/organizationSlice/constants.d.mts +134 -0
  288. package/dist/organizationSlice/constants.d.ts +134 -0
  289. package/dist/organizationSlice/constants.js +978 -0
  290. package/dist/organizationSlice/constants.js.map +1 -0
  291. package/dist/organizationSlice/constants.mjs +34 -0
  292. package/dist/organizationSlice/constants.mjs.map +1 -0
  293. package/dist/organizationSlice/index.d.mts +1097 -0
  294. package/dist/organizationSlice/index.d.ts +1097 -0
  295. package/dist/organizationSlice/index.js +1015 -0
  296. package/dist/organizationSlice/index.js.map +1 -0
  297. package/dist/organizationSlice/index.mjs +21 -0
  298. package/dist/organizationSlice/index.mjs.map +1 -0
  299. package/dist/organizationSlice/selectors.d.mts +134 -0
  300. package/dist/organizationSlice/selectors.d.ts +134 -0
  301. package/dist/organizationSlice/selectors.js +977 -0
  302. package/dist/organizationSlice/selectors.js.map +1 -0
  303. package/dist/organizationSlice/selectors.mjs +39 -0
  304. package/dist/organizationSlice/selectors.mjs.map +1 -0
  305. package/dist/organizationSlice/thunks.d.mts +502 -0
  306. package/dist/organizationSlice/thunks.d.ts +502 -0
  307. package/dist/organizationSlice/thunks.js +5709 -0
  308. package/dist/organizationSlice/thunks.js.map +1 -0
  309. package/dist/organizationSlice/thunks.mjs +101 -0
  310. package/dist/organizationSlice/thunks.mjs.map +1 -0
  311. package/dist/releasesSlice/constants.d.mts +14 -0
  312. package/dist/releasesSlice/constants.d.ts +14 -0
  313. package/dist/releasesSlice/constants.js +40 -0
  314. package/dist/releasesSlice/constants.js.map +1 -0
  315. package/dist/releasesSlice/constants.mjs +14 -0
  316. package/dist/releasesSlice/constants.mjs.map +1 -0
  317. package/dist/releasesSlice/index.d.mts +483 -0
  318. package/dist/releasesSlice/index.d.ts +483 -0
  319. package/dist/releasesSlice/index.js +1034 -0
  320. package/dist/releasesSlice/index.js.map +1 -0
  321. package/dist/releasesSlice/index.mjs +21 -0
  322. package/dist/releasesSlice/index.mjs.map +1 -0
  323. package/dist/releasesSlice/selectors.d.mts +92 -0
  324. package/dist/releasesSlice/selectors.d.ts +92 -0
  325. package/dist/releasesSlice/selectors.js +967 -0
  326. package/dist/releasesSlice/selectors.js.map +1 -0
  327. package/dist/releasesSlice/selectors.mjs +28 -0
  328. package/dist/releasesSlice/selectors.mjs.map +1 -0
  329. package/dist/releasesSlice/thunks.d.mts +276 -0
  330. package/dist/releasesSlice/thunks.d.ts +276 -0
  331. package/dist/releasesSlice/thunks.js +2843 -0
  332. package/dist/releasesSlice/thunks.js.map +1 -0
  333. package/dist/releasesSlice/thunks.mjs +66 -0
  334. package/dist/releasesSlice/thunks.mjs.map +1 -0
  335. package/dist/selectors.d.mts +10 -0
  336. package/dist/selectors.d.ts +10 -0
  337. package/dist/selectors.js +1636 -0
  338. package/dist/selectors.js.map +1 -0
  339. package/dist/selectors.mjs +207 -0
  340. package/dist/selectors.mjs.map +1 -0
  341. package/dist/store.d.mts +2306 -0
  342. package/dist/store.d.ts +2306 -0
  343. package/dist/store.js +1877 -0
  344. package/dist/store.js.map +1 -0
  345. package/dist/store.mjs +32 -0
  346. package/dist/store.mjs.map +1 -0
  347. package/dist/storehooks.d.mts +4 -0
  348. package/dist/storehooks.d.ts +4 -0
  349. package/dist/storehooks.js +5844 -0
  350. package/dist/storehooks.js.map +1 -0
  351. package/dist/storehooks.mjs +265 -0
  352. package/dist/storehooks.mjs.map +1 -0
  353. package/dist/thunks.d.mts +12 -0
  354. package/dist/thunks.d.ts +12 -0
  355. package/dist/thunks.js +5973 -0
  356. package/dist/thunks.js.map +1 -0
  357. package/dist/thunks.mjs +363 -0
  358. package/dist/thunks.mjs.map +1 -0
  359. package/dist/usersSlice/constants.d.mts +635 -0
  360. package/dist/usersSlice/constants.d.ts +635 -0
  361. package/dist/usersSlice/constants.js +967 -0
  362. package/dist/usersSlice/constants.js.map +1 -0
  363. package/dist/usersSlice/constants.mjs +43 -0
  364. package/dist/usersSlice/constants.mjs.map +1 -0
  365. package/dist/usersSlice/index.d.mts +6993 -0
  366. package/dist/usersSlice/index.d.ts +6993 -0
  367. package/dist/usersSlice/index.js +1054 -0
  368. package/dist/usersSlice/index.js.map +1 -0
  369. package/dist/usersSlice/index.mjs +21 -0
  370. package/dist/usersSlice/index.mjs.map +1 -0
  371. package/dist/usersSlice/selectors.d.mts +209 -0
  372. package/dist/usersSlice/selectors.d.ts +209 -0
  373. package/dist/usersSlice/selectors.js +997 -0
  374. package/dist/usersSlice/selectors.js.map +1 -0
  375. package/dist/usersSlice/selectors.mjs +38 -0
  376. package/dist/usersSlice/selectors.mjs.map +1 -0
  377. package/dist/usersSlice/thunks.d.mts +881 -0
  378. package/dist/usersSlice/thunks.d.ts +881 -0
  379. package/dist/usersSlice/thunks.js +5717 -0
  380. package/dist/usersSlice/thunks.js.map +1 -0
  381. package/dist/usersSlice/thunks.mjs +109 -0
  382. package/dist/usersSlice/thunks.mjs.map +1 -0
  383. package/dist/utils.d.mts +60 -0
  384. package/dist/utils.d.ts +60 -0
  385. package/dist/utils.js +1160 -0
  386. package/dist/utils.js.map +1 -0
  387. package/dist/utils.mjs +49 -0
  388. package/dist/utils.mjs.map +1 -0
  389. package/package.json +22 -5
  390. package/.eslintrc.cjs +0 -9
  391. package/.prettierignore +0 -1
  392. package/CHANGELOG.md +0 -19
  393. package/actions.ts +0 -32
  394. package/api/general-api.test.ts +0 -51
  395. package/api/general-api.ts +0 -60
  396. package/api/types/Deployment.ts +0 -95
  397. package/api/types/DeviceDeployments.ts +0 -31
  398. package/api/types/FilterPredicateInventory.ts +0 -76
  399. package/api/types/Tenant.ts +0 -38
  400. package/api/users-api.ts +0 -34
  401. package/appSlice/constants.ts +0 -166
  402. package/appSlice/reducer.test.ts +0 -97
  403. package/appSlice/selectors.ts +0 -33
  404. package/appSlice/thunks.test.ts +0 -118
  405. package/appSlice/thunks.ts +0 -148
  406. package/auth.test.ts +0 -36
  407. package/auth.ts +0 -82
  408. package/commonConstants.tsx +0 -252
  409. package/commonSelectors.ts +0 -255
  410. package/constants.ts +0 -22
  411. package/deploymentsSlice/constants.ts +0 -175
  412. package/deploymentsSlice/index.ts +0 -145
  413. package/deploymentsSlice/reducer.test.ts +0 -108
  414. package/deploymentsSlice/selectors.ts +0 -58
  415. package/deploymentsSlice/thunks.test.ts +0 -425
  416. package/deploymentsSlice/thunks.ts +0 -382
  417. package/devicesSlice/constants.ts +0 -56
  418. package/devicesSlice/reducer.test.ts +0 -194
  419. package/devicesSlice/selectors.ts +0 -127
  420. package/devicesSlice/thunks.test.tsx +0 -1245
  421. package/devicesSlice/thunks.tsx +0 -1098
  422. package/monitorSlice/constants.ts +0 -17
  423. package/monitorSlice/index.ts +0 -65
  424. package/monitorSlice/reducer.test.ts +0 -79
  425. package/monitorSlice/selectors.ts +0 -15
  426. package/monitorSlice/thunks.test.ts +0 -112
  427. package/monitorSlice/thunks.ts +0 -101
  428. package/onboardingSlice/constants.ts +0 -53
  429. package/onboardingSlice/reducer.test.ts +0 -45
  430. package/onboardingSlice/selectors.ts +0 -15
  431. package/onboardingSlice/thunks.test.ts +0 -235
  432. package/onboardingSlice/thunks.ts +0 -142
  433. package/organizationSlice/constants.ts +0 -82
  434. package/organizationSlice/index.ts +0 -111
  435. package/organizationSlice/reducer.test.ts +0 -78
  436. package/organizationSlice/selectors.ts +0 -45
  437. package/organizationSlice/thunks.test.ts +0 -619
  438. package/organizationSlice/thunks.ts +0 -383
  439. package/releasesSlice/constants.ts +0 -18
  440. package/releasesSlice/reducer.test.ts +0 -78
  441. package/releasesSlice/selectors.ts +0 -33
  442. package/releasesSlice/thunks.test.ts +0 -389
  443. package/releasesSlice/thunks.ts +0 -379
  444. package/selectors.ts +0 -22
  445. package/store.ts +0 -89
  446. package/storehooks.test.tsx +0 -386
  447. package/storehooks.ts +0 -250
  448. package/thunks.ts +0 -21
  449. package/tsconfig.json +0 -11
  450. package/tsup.config.ts +0 -11
  451. package/usersSlice/constants.ts +0 -374
  452. package/usersSlice/reducer.test.ts +0 -141
  453. package/usersSlice/selectors.ts +0 -60
  454. package/usersSlice/thunks.test.ts +0 -660
  455. package/usersSlice/thunks.ts +0 -773
  456. package/utils.test.ts +0 -187
  457. package/utils.ts +0 -249
  458. /package/{api → dist/api}/types/AWSCredentials.ts +0 -0
  459. /package/{api → dist/api}/types/Actor.ts +0 -0
  460. /package/{api → dist/api}/types/Addon.ts +0 -0
  461. /package/{api → dist/api}/types/AddonTenantadm.ts +0 -0
  462. /package/{api → dist/api}/types/Alert.ts +0 -0
  463. /package/{api → dist/api}/types/AlertDetails.ts +0 -0
  464. /package/{api → dist/api}/types/AlertSubject.ts +0 -0
  465. /package/{api → dist/api}/types/ApiBurst.ts +0 -0
  466. /package/{api → dist/api}/types/ApiBurstTenantadm.ts +0 -0
  467. /package/{api → dist/api}/types/ApiLimits.ts +0 -0
  468. /package/{api → dist/api}/types/ApiLimitsTenantadm.ts +0 -0
  469. /package/{api → dist/api}/types/ApiQuota.ts +0 -0
  470. /package/{api → dist/api}/types/ApiQuotaTenantadm.ts +0 -0
  471. /package/{api → dist/api}/types/Artifact.ts +0 -0
  472. /package/{api → dist/api}/types/ArtifactDeployments.ts +0 -0
  473. /package/{api → dist/api}/types/ArtifactInfo.ts +0 -0
  474. /package/{api → dist/api}/types/ArtifactInfoDeployments.ts +0 -0
  475. /package/{api → dist/api}/types/ArtifactLink.ts +0 -0
  476. /package/{api → dist/api}/types/ArtifactTypeInfo.ts +0 -0
  477. /package/{api → dist/api}/types/ArtifactTypeInfoDeployments.ts +0 -0
  478. /package/{api → dist/api}/types/ArtifactUpdate.ts +0 -0
  479. /package/{api → dist/api}/types/ArtifactUploadLink.ts +0 -0
  480. /package/{api → dist/api}/types/Attribute.ts +0 -0
  481. /package/{api → dist/api}/types/AttributeInventory.ts +0 -0
  482. /package/{api → dist/api}/types/AuditLog.ts +0 -0
  483. /package/{api → dist/api}/types/AuthSetDeviceauth.ts +0 -0
  484. /package/{api → dist/api}/types/AutoAuthRequest.ts +0 -0
  485. /package/{api → dist/api}/types/AzureSharedAccessSecret.ts +0 -0
  486. /package/{api → dist/api}/types/BillingInfo.ts +0 -0
  487. /package/{api → dist/api}/types/BinaryDeltaConfiguration.ts +0 -0
  488. /package/{api → dist/api}/types/BinaryDeltaConfigurationDeployments.ts +0 -0
  489. /package/{api → dist/api}/types/BinaryDeltaLimitsDeployments.ts +0 -0
  490. /package/{api → dist/api}/types/CancelRequest.ts +0 -0
  491. /package/{api → dist/api}/types/CardData.ts +0 -0
  492. /package/{api → dist/api}/types/CardSetupData.ts +0 -0
  493. /package/{api → dist/api}/types/CheckoutData.ts +0 -0
  494. /package/{api → dist/api}/types/Configuration.ts +0 -0
  495. /package/{api → dist/api}/types/Count.ts +0 -0
  496. /package/{api → dist/api}/types/Credentials.ts +0 -0
  497. /package/{api → dist/api}/types/DBusSubsystem.ts +0 -0
  498. /package/{api → dist/api}/types/DeltaConfiguration.ts +0 -0
  499. /package/{api → dist/api}/types/DeltaConfigurationDeployments.ts +0 -0
  500. /package/{api → dist/api}/types/DeploymentAuditlogs.ts +0 -0
  501. /package/{api → dist/api}/types/DeploymentIdentifier.ts +0 -0
  502. /package/{api → dist/api}/types/DeploymentPhase.ts +0 -0
  503. /package/{api → dist/api}/types/DeploymentReporting.ts +0 -0
  504. /package/{api → dist/api}/types/DeploymentStatistics.ts +0 -0
  505. /package/{api → dist/api}/types/DeploymentStatusStatistics.ts +0 -0
  506. /package/{api → dist/api}/types/DeviceAuditlogs.ts +0 -0
  507. /package/{api → dist/api}/types/DeviceAuthEvent.ts +0 -0
  508. /package/{api → dist/api}/types/DeviceConfiguration.ts +0 -0
  509. /package/{api → dist/api}/types/DeviceDeployment.ts +0 -0
  510. /package/{api → dist/api}/types/DeviceDeviceauth.ts +0 -0
  511. /package/{api → dist/api}/types/DeviceInventory.ts +0 -0
  512. /package/{api → dist/api}/types/DeviceInventoryInventory.ts +0 -0
  513. /package/{api → dist/api}/types/DeviceReporting.ts +0 -0
  514. /package/{api → dist/api}/types/DeviceState.ts +0 -0
  515. /package/{api → dist/api}/types/DeviceStateDeviceconnect.ts +0 -0
  516. /package/{api → dist/api}/types/DeviceStateIot_manager.ts +0 -0
  517. /package/{api → dist/api}/types/DeviceStatus.ts +0 -0
  518. /package/{api → dist/api}/types/DeviceWithImage.ts +0 -0
  519. /package/{api → dist/api}/types/DirectUploadMetadata.ts +0 -0
  520. /package/{api → dist/api}/types/EmailVerificationCompletion.ts +0 -0
  521. /package/{api → dist/api}/types/EmailVerificationRequest.ts +0 -0
  522. /package/{api → dist/api}/types/ErrorAuditlogs.ts +0 -0
  523. /package/{api → dist/api}/types/ErrorDeployments.ts +0 -0
  524. /package/{api → dist/api}/types/ErrorDeviceauth.ts +0 -0
  525. /package/{api → dist/api}/types/ErrorDeviceconfig.ts +0 -0
  526. /package/{api → dist/api}/types/ErrorDeviceconnect.ts +0 -0
  527. /package/{api → dist/api}/types/ErrorDevicemonitor.ts +0 -0
  528. /package/{api → dist/api}/types/ErrorExt.ts +0 -0
  529. /package/{api → dist/api}/types/ErrorInventory.ts +0 -0
  530. /package/{api → dist/api}/types/ErrorIot_manager.ts +0 -0
  531. /package/{api → dist/api}/types/ErrorNotFound.ts +0 -0
  532. /package/{api → dist/api}/types/ErrorReporting.ts +0 -0
  533. /package/{api → dist/api}/types/ErrorTenantadm.ts +0 -0
  534. /package/{api → dist/api}/types/ErrorUseradm.ts +0 -0
  535. /package/{api → dist/api}/types/Event.ts +0 -0
  536. /package/{api → dist/api}/types/ExternalIdentity.ts +0 -0
  537. /package/{api → dist/api}/types/Features.ts +0 -0
  538. /package/{api → dist/api}/types/FileUpload.ts +0 -0
  539. /package/{api → dist/api}/types/FilterAttribute.ts +0 -0
  540. /package/{api → dist/api}/types/FilterDefinition.ts +0 -0
  541. /package/{api → dist/api}/types/FilterDeployments.ts +0 -0
  542. /package/{api → dist/api}/types/FilterPredicateDeployments.ts +0 -0
  543. /package/{api → dist/api}/types/Group.ts +0 -0
  544. /package/{api → dist/api}/types/HTTP.ts +0 -0
  545. /package/{api → dist/api}/types/IdentityData.ts +0 -0
  546. /package/{api → dist/api}/types/InputParameter.ts +0 -0
  547. /package/{api → dist/api}/types/JobStatus.ts +0 -0
  548. /package/{api → dist/api}/types/Limit.ts +0 -0
  549. /package/{api → dist/api}/types/LimitDeployments.ts +0 -0
  550. /package/{api → dist/api}/types/LimitDeviceauth.ts +0 -0
  551. /package/{api → dist/api}/types/LimitUseradm.ts +0 -0
  552. /package/{api → dist/api}/types/Limits.ts +0 -0
  553. /package/{api → dist/api}/types/LineDescriptor.ts +0 -0
  554. /package/{api → dist/api}/types/LogSubsystem.ts +0 -0
  555. /package/{api → dist/api}/types/LoginOptions.ts +0 -0
  556. /package/{api → dist/api}/types/ManagementAPIConfiguration.ts +0 -0
  557. /package/{api → dist/api}/types/MonitorConfiguration.ts +0 -0
  558. /package/{api → dist/api}/types/NewConfigurationDeployment.ts +0 -0
  559. /package/{api → dist/api}/types/NewConfigurationDeploymentResponse.ts +0 -0
  560. /package/{api → dist/api}/types/NewDeployment.ts +0 -0
  561. /package/{api → dist/api}/types/NewDeploymentForGroup.ts +0 -0
  562. /package/{api → dist/api}/types/NewDeploymentPhase.ts +0 -0
  563. /package/{api → dist/api}/types/NewDeploymentPhaseDeployments.ts +0 -0
  564. /package/{api → dist/api}/types/OwnUserUpdate.ts +0 -0
  565. /package/{api → dist/api}/types/PasswordResetCompletion.ts +0 -0
  566. /package/{api → dist/api}/types/PasswordResetRequest.ts +0 -0
  567. /package/{api → dist/api}/types/Permission.ts +0 -0
  568. /package/{api → dist/api}/types/PermissionObject.ts +0 -0
  569. /package/{api → dist/api}/types/PermissionSet.ts +0 -0
  570. /package/{api → dist/api}/types/PermissionSetWithScope.ts +0 -0
  571. /package/{api → dist/api}/types/PersonalAccessToken.ts +0 -0
  572. /package/{api → dist/api}/types/PersonalAccessTokenRequest.ts +0 -0
  573. /package/{api → dist/api}/types/Plan.ts +0 -0
  574. /package/{api → dist/api}/types/PlanBindingDetails.ts +0 -0
  575. /package/{api → dist/api}/types/PlanChangeRequest.ts +0 -0
  576. /package/{api → dist/api}/types/PlanLimits.ts +0 -0
  577. /package/{api → dist/api}/types/Release.ts +0 -0
  578. /package/{api → dist/api}/types/ReleaseDeployments.ts +0 -0
  579. /package/{api → dist/api}/types/ReleaseUpdate.ts +0 -0
  580. /package/{api → dist/api}/types/Releases.ts +0 -0
  581. /package/{api → dist/api}/types/ReleasesDeleteError.ts +0 -0
  582. /package/{api → dist/api}/types/ReleasesDeployments.ts +0 -0
  583. /package/{api → dist/api}/types/Role.ts +0 -0
  584. /package/{api → dist/api}/types/RolePermission.ts +0 -0
  585. /package/{api → dist/api}/types/RolePermissionObject.ts +0 -0
  586. /package/{api → dist/api}/types/RoleUseradm.ts +0 -0
  587. /package/{api → dist/api}/types/SAMLMetadata.ts +0 -0
  588. /package/{api → dist/api}/types/Scope.ts +0 -0
  589. /package/{api → dist/api}/types/SelectAttribute.ts +0 -0
  590. /package/{api → dist/api}/types/ServiceSubsystem.ts +0 -0
  591. /package/{api → dist/api}/types/SortCriteria.ts +0 -0
  592. /package/{api → dist/api}/types/SsoObject.ts +0 -0
  593. /package/{api → dist/api}/types/StatusDeviceauth.ts +0 -0
  594. /package/{api → dist/api}/types/StorageLimit.ts +0 -0
  595. /package/{api → dist/api}/types/SubscriptionData.ts +0 -0
  596. /package/{api → dist/api}/types/SupportRequest.ts +0 -0
  597. /package/{api → dist/api}/types/Tag.ts +0 -0
  598. /package/{api → dist/api}/types/Tags.ts +0 -0
  599. /package/{api → dist/api}/types/TaskResult.ts +0 -0
  600. /package/{api → dist/api}/types/TaskResultCLI.ts +0 -0
  601. /package/{api → dist/api}/types/TaskResultHTTPRequest.ts +0 -0
  602. /package/{api → dist/api}/types/TaskResultHTTPResponse.ts +0 -0
  603. /package/{api → dist/api}/types/TenantApiLimits.ts +0 -0
  604. /package/{api → dist/api}/types/TenantApiLimitsTenantadm.ts +0 -0
  605. /package/{api → dist/api}/types/TenantIdName.ts +0 -0
  606. /package/{api → dist/api}/types/TenantIdsData.ts +0 -0
  607. /package/{api → dist/api}/types/TenantInfo.ts +0 -0
  608. /package/{api → dist/api}/types/TenantShortInfo.ts +0 -0
  609. /package/{api → dist/api}/types/TenantsIdName.ts +0 -0
  610. /package/{api → dist/api}/types/Update.ts +0 -0
  611. /package/{api → dist/api}/types/UpdateFile.ts +0 -0
  612. /package/{api → dist/api}/types/UpdateFileDeployments.ts +0 -0
  613. /package/{api → dist/api}/types/UpdateTypes.ts +0 -0
  614. /package/{api → dist/api}/types/User.ts +0 -0
  615. /package/{api → dist/api}/types/UserAuditlogs.ts +0 -0
  616. /package/{api → dist/api}/types/UserNew.ts +0 -0
  617. /package/{api → dist/api}/types/UserUpdate.ts +0 -0
  618. /package/{api → dist/api}/types/UserUseradm.ts +0 -0
  619. /package/{api → dist/api}/types/XDeltaArgs.ts +0 -0
  620. /package/{api → dist/api}/types/XDeltaArgsDeployments.ts +0 -0
  621. /package/{api → dist/api}/types/XDeltaArgsLimits.ts +0 -0
  622. /package/{api → dist/api}/types/XDeltaArgsLimitsDeployments.ts +0 -0
@@ -1,383 +0,0 @@
1
- // Copyright 2020 Northern.tech AS
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
- // @ts-nocheck
15
- import storeActions from '@northern.tech/store/actions';
16
- import Api from '@northern.tech/store/api/general-api';
17
- import { Tenant } from '@northern.tech/store/api/types/MenderTypes';
18
- import {
19
- DEVICE_LIST_DEFAULTS,
20
- SORTING_OPTIONS,
21
- TENANT_LIST_DEFAULT,
22
- TIMEOUTS,
23
- deviceAuthV2,
24
- headerNames,
25
- iotManagerBaseURL,
26
- locations
27
- } from '@northern.tech/store/constants';
28
- import { getCurrentSession, getTenantCapabilities, getTenantsList } from '@northern.tech/store/selectors';
29
- import { commonErrorFallback, commonErrorHandler } from '@northern.tech/store/store';
30
- import { setFirstLoginAfterSignup } from '@northern.tech/store/thunks';
31
- import { deepCompare } from '@northern.tech/utils/helpers';
32
- import { createAsyncThunk } from '@reduxjs/toolkit';
33
- import { jwtDecode } from 'jwt-decode';
34
- import hashString from 'md5';
35
- import Cookies from 'universal-cookie';
36
-
37
- import { actions, sliceName } from '.';
38
- import { SSO_TYPES, auditLogsApiUrl, ssoIdpApiUrlv1, tenantadmApiUrlv1, tenantadmApiUrlv2 } from './constants';
39
- import { getAuditlogState, getOrganization } from './selectors';
40
-
41
- const cookies = new Cookies();
42
-
43
- const { setAnnouncement, setSnackbar } = storeActions;
44
- const { page: defaultPage, perPage: defaultPerPage } = DEVICE_LIST_DEFAULTS;
45
-
46
- export const cancelRequest = createAsyncThunk(`${sliceName}/cancelRequest`, (reason, { dispatch, getState }) => {
47
- const { id: tenantId } = getOrganization(getState());
48
- return Api.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/cancel`, { reason }).then(() =>
49
- Promise.resolve(dispatch(setSnackbar({ message: 'Deactivation request was sent successfully', autoHideDuration: TIMEOUTS.fiveSeconds })))
50
- );
51
- });
52
-
53
- export const getTargetLocation = key => {
54
- if (devLocations.includes(window.location.hostname)) {
55
- return '';
56
- }
57
- let subdomainSections = window.location.hostname.substring(0, window.location.hostname.indexOf(locations.us.location)).split('.');
58
- subdomainSections = subdomainSections.splice(0, subdomainSections.length - 1);
59
- if (!subdomainSections.find(section => section === key)) {
60
- subdomainSections = key === locations.us.key ? subdomainSections.filter(section => !locations[section]) : [...subdomainSections, key];
61
- return `https://${[...subdomainSections, ...locations.us.location.split('.')].join('.')}`;
62
- }
63
- return `https://${window.location.hostname}`;
64
- };
65
-
66
- const devLocations = ['localhost', 'docker.mender.io'];
67
- export const createOrganizationTrial = createAsyncThunk(`${sliceName}/createOrganizationTrial`, (data, { dispatch }) => {
68
- const { key } = locations[data.location];
69
- const targetLocation = getTargetLocation(key);
70
- const target = `${targetLocation}${tenantadmApiUrlv2}/tenants/trial`;
71
- return Api.postUnauthorized(target, data)
72
- .catch(err => {
73
- if (err.response.status >= 400 && err.response.status < 500) {
74
- dispatch(setSnackbar({ message: err.response.data.error, autoHideDuration: TIMEOUTS.fiveSeconds }));
75
- return Promise.reject(err);
76
- }
77
- })
78
- .then(({ headers }) => {
79
- cookies.remove('oauth');
80
- cookies.remove('externalID');
81
- cookies.remove('email');
82
- dispatch(setFirstLoginAfterSignup(true));
83
- return new Promise(resolve =>
84
- setTimeout(() => {
85
- window.location.assign(`${targetLocation}${headers.location || ''}`);
86
- return resolve();
87
- }, TIMEOUTS.fiveSeconds)
88
- );
89
- });
90
- });
91
-
92
- export const startCardUpdate = createAsyncThunk(`${sliceName}/startCardUpdate`, (_, { dispatch }) =>
93
- Api.post(`${tenantadmApiUrlv2}/billing/card`)
94
- .then(({ data }) => {
95
- dispatch(actions.receiveSetupIntent(data.intent_id));
96
- return Promise.resolve(data.secret);
97
- })
98
- .catch(err => commonErrorHandler(err, `Updating the card failed:`, dispatch))
99
- );
100
-
101
- export const confirmCardUpdate = createAsyncThunk(`${sliceName}/confirmCardUpdate`, (_, { dispatch, getState }) =>
102
- Api.post(`${tenantadmApiUrlv2}/billing/card/${getState().organization.intentId}/confirm`)
103
- .then(() => Promise.all([dispatch(setSnackbar('Payment card was updated successfully')), dispatch(actions.receiveSetupIntent(null))]))
104
- .catch(err => commonErrorHandler(err, `Updating the card failed:`, dispatch))
105
- );
106
-
107
- export const getCurrentCard = createAsyncThunk(`${sliceName}/getCurrentCard`, (_, { dispatch }) =>
108
- Api.get(`${tenantadmApiUrlv2}/billing`).then(res => {
109
- const { last4, exp_month, exp_year, brand } = res.data.card || {};
110
- return Promise.resolve(dispatch(actions.receiveCurrentCard({ brand, last4, expiration: { month: exp_month, year: exp_year } })));
111
- })
112
- );
113
-
114
- export const startUpgrade = createAsyncThunk(`${sliceName}/startUpgrade`, (tenantId, { dispatch }) =>
115
- Api.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/upgrade/start`)
116
- .then(({ data }) => Promise.resolve(data.secret))
117
- .catch(err => commonErrorHandler(err, `There was an error upgrading your account:`, dispatch))
118
- );
119
-
120
- export const cancelUpgrade = createAsyncThunk(`${sliceName}/cancelUpgrade`, tenantId => Api.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/upgrade/cancel`));
121
-
122
- export const completeUpgrade = createAsyncThunk(`${sliceName}/completeUpgrade`, ({ tenantId, plan }, { dispatch }) =>
123
- Api.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/upgrade/complete`, { plan })
124
- .catch(err => commonErrorHandler(err, `There was an error upgrading your account:`, dispatch))
125
- .then(() => Promise.resolve(dispatch(getUserOrganization())))
126
- );
127
-
128
- const prepareAuditlogQuery = ({ startDate, endDate, user: userFilter, type, detail: detailFilter, sort = {} }) => {
129
- const userId = userFilter?.id || userFilter;
130
- const detail = detailFilter?.id || detailFilter;
131
- const createdAfter = startDate ? `&created_after=${Math.round(Date.parse(startDate) / 1000)}` : '';
132
- const createdBefore = endDate ? `&created_before=${Math.round(Date.parse(endDate) / 1000)}` : '';
133
- const typeSearch = type ? `&object_type=${type.value}`.toLowerCase() : '';
134
- const userSearch = userId ? `&actor_id=${userId}` : '';
135
- const objectSearch = type && detail ? `&${type.queryParameter}=${encodeURIComponent(detail)}` : '';
136
- const { direction = SORTING_OPTIONS.desc } = sort;
137
- return `${createdAfter}${createdBefore}${userSearch}${typeSearch}${objectSearch}&sort=${direction}`;
138
- };
139
-
140
- export const getAuditLogs = createAsyncThunk(`${sliceName}/getAuditLogs`, (selectionState, { dispatch, getState }) => {
141
- const { page, perPage } = selectionState;
142
- const { hasAuditlogs } = getTenantCapabilities(getState());
143
- if (!hasAuditlogs) {
144
- return Promise.resolve();
145
- }
146
- return Api.get(`${auditLogsApiUrl}/logs?page=${page}&per_page=${perPage}${prepareAuditlogQuery(selectionState)}`)
147
- .then(({ data, headers }) => {
148
- let total = headers[headerNames.total];
149
- total = Number(total || data.length);
150
- return Promise.resolve(dispatch(actions.receiveAuditLogs({ events: data, total })));
151
- })
152
- .catch(err => commonErrorHandler(err, `There was an error retrieving audit logs:`, dispatch));
153
- });
154
-
155
- export const getAuditLogsCsvLink = createAsyncThunk(`${sliceName}/getAuditLogsCsvLink`, (_, { getState }) =>
156
- Promise.resolve(`${window.location.origin}${auditLogsApiUrl}/logs/export?limit=20000${prepareAuditlogQuery(getAuditlogState(getState()))}`)
157
- );
158
-
159
- export const setAuditlogsState = createAsyncThunk(`${sliceName}/setAuditlogsState`, (selectionState, { dispatch, getState }) => {
160
- const currentState = getAuditlogState(getState());
161
- let nextState = {
162
- ...currentState,
163
- ...selectionState,
164
- sort: { ...currentState.sort, ...selectionState.sort }
165
- };
166
- let tasks = [];
167
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
168
- const { isLoading: currentLoading, selectedIssue: currentIssue, ...currentRequestState } = currentState;
169
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
170
- const { isLoading: selectionLoading, selectedIssue: selectionIssue, ...selectionRequestState } = nextState;
171
- if (!deepCompare(currentRequestState, selectionRequestState)) {
172
- nextState.isLoading = true;
173
- tasks.push(dispatch(getAuditLogs(nextState)).finally(() => dispatch(actions.setAuditLogState({ isLoading: false }))));
174
- }
175
- tasks.push(dispatch(actions.setAuditLogState(nextState)));
176
- return Promise.all(tasks);
177
- });
178
-
179
- /*
180
- Tenant management + Hosted Mender
181
- */
182
- export const tenantDataDivergedMessage = 'The system detected there is a change in your plan or purchased add-ons. Please log out and log in again';
183
-
184
- export const addTenant = createAsyncThunk(`${sliceName}/createTenant`, (selectionState, { dispatch }) => {
185
- return Api.post(`${tenantadmApiUrlv2}/tenants`, selectionState)
186
- .then(() => Promise.all([dispatch(getTenants()), dispatch(setSnackbar('Tenant was created successfully.'))]))
187
- .catch(err => commonErrorHandler(err, 'There was an error creating tenant', dispatch, commonErrorFallback));
188
- });
189
-
190
- const tenantListRetrieval = async (config): Promise<[Tenant[], number]> => {
191
- const { page, perPage } = config;
192
- const params = new URLSearchParams({ page, per_page: perPage }).toString();
193
- const tenantList = await Api.get(`${tenantadmApiUrlv2}/tenants?${params}`);
194
- const totalCount = tenantList.headers[headerNames.total] || TENANT_LIST_DEFAULT.perPage;
195
- return [tenantList.data, totalCount];
196
- };
197
- export const getTenants = createAsyncThunk(`${sliceName}/getTenants`, async (_, { dispatch, getState }) => {
198
- const currentState = getTenantsList(getState());
199
- const [tenants, pageCount] = await tenantListRetrieval(currentState);
200
- dispatch(actions.setTenantListState({ ...currentState, total: pageCount, tenants }));
201
- });
202
-
203
- export const setTenantsListState = createAsyncThunk(`${sliceName}/setTenantsListState`, async (selectionState: any, { dispatch, getState }) => {
204
- const currentState = getTenantsList(getState());
205
- const nextState = {
206
- ...currentState,
207
- ...selectionState
208
- };
209
- if (!deepCompare(currentState, selectionState)) {
210
- const [tenants, pageCount] = await tenantListRetrieval(nextState);
211
- return dispatch(actions.setTenantListState({ ...nextState, tenants, total: pageCount }));
212
- }
213
- return dispatch(actions.setTenantListState({ ...nextState }));
214
- });
215
-
216
- interface editTenantBody {
217
- name: string;
218
- newLimit: number;
219
- id: string;
220
- }
221
- export const editTenantDeviceLimit = createAsyncThunk(`${sliceName}/editDeviceLimit`, ({ newLimit, id, name }: editTenantBody, { dispatch }) => {
222
- return Api.put(`${tenantadmApiUrlv2}/tenants/${id}/child`, { device_limit: newLimit, name })
223
- .catch(err => commonErrorHandler(err, `Device Limit cannot be changed`, dispatch))
224
- .then(() => Promise.resolve(dispatch(setSnackbar({ message: 'Device Limit was changed successfully', autoHideDuration: TIMEOUTS.fiveSeconds }))))
225
- .then(() => dispatch(getTenants()));
226
- });
227
- export const removeTenant = createAsyncThunk(`${sliceName}/editDeviceLimit`, ({ id }: { id: string }, { dispatch }) => {
228
- return Api.post(`${tenantadmApiUrlv2}/tenants/${id}/remove/start`)
229
- .catch(err => commonErrorHandler(err, `There was an error removing the tenant`, dispatch))
230
- .then(() => {
231
- const tasks = [Promise.resolve(dispatch(setSnackbar({ message: 'Tenant was removed successfully', autoHideDuration: TIMEOUTS.fiveSeconds })))];
232
- tasks.push(dispatch(getTenants()));
233
- tasks.push(setTenantsListState({ selectedTenant: null }));
234
- return Promise.all(tasks);
235
- });
236
- });
237
-
238
- export const getUserOrganization = createAsyncThunk(`${sliceName}/getUserOrganization`, (_, { dispatch, getState }) => {
239
- return Api.get(`${tenantadmApiUrlv1}/user/tenant`).then(res => {
240
- let tasks = [dispatch(actions.setOrganization(res.data))];
241
- const { addons, plan, trial } = res.data;
242
- const { token } = getCurrentSession(getState());
243
- const jwt = jwtDecode(token);
244
- const jwtData = { addons: jwt['mender.addons'], plan: jwt['mender.plan'], trial: jwt['mender.trial'] };
245
- if (!deepCompare({ addons, plan, trial }, jwtData)) {
246
- const hash = hashString(tenantDataDivergedMessage);
247
- cookies.remove(`${jwt.sub}${hash}`);
248
- tasks.push(dispatch(setAnnouncement(tenantDataDivergedMessage)));
249
- }
250
- return Promise.all(tasks);
251
- });
252
- });
253
-
254
- export const sendSupportMessage = createAsyncThunk(`${sliceName}/sendSupportMessage`, (content, { dispatch }) =>
255
- Api.post(`${tenantadmApiUrlv2}/contact/support`, content)
256
- .catch(err => commonErrorHandler(err, 'There was an error sending your request', dispatch, commonErrorFallback))
257
- .then(() => Promise.resolve(dispatch(setSnackbar({ message: 'Your request was sent successfully', autoHideDuration: TIMEOUTS.fiveSeconds }))))
258
- );
259
-
260
- export const requestPlanChange = createAsyncThunk(`${sliceName}/requestPlanChange`, ({ content, tenantId }, { dispatch }) =>
261
- Api.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/plan`, content)
262
- .catch(err => commonErrorHandler(err, 'There was an error sending your request', dispatch, commonErrorFallback))
263
- .then(() => Promise.resolve(dispatch(setSnackbar({ message: 'Your request was sent successfully', autoHideDuration: TIMEOUTS.fiveSeconds }))))
264
- );
265
-
266
- export const downloadLicenseReport = createAsyncThunk(`${sliceName}/downloadLicenseReport`, (_, { dispatch }) =>
267
- Api.get(`${deviceAuthV2}/reports/devices`)
268
- .catch(err => commonErrorHandler(err, 'There was an error downloading the report', dispatch, commonErrorFallback))
269
- .then(res => res.data)
270
- );
271
-
272
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
273
- export const createIntegration = createAsyncThunk(`${sliceName}/createIntegration`, ({ id, ...integration }, { dispatch }) =>
274
- Api.post(`${iotManagerBaseURL}/integrations`, integration)
275
- .catch(err => commonErrorHandler(err, 'There was an error creating the integration', dispatch, commonErrorFallback))
276
- .then(() => Promise.all([dispatch(setSnackbar('The integration was set up successfully')), dispatch(getIntegrations())]))
277
- );
278
-
279
- export const changeIntegration = createAsyncThunk(`${sliceName}/changeIntegration`, ({ id, credentials }, { dispatch }) =>
280
- Api.put(`${iotManagerBaseURL}/integrations/${id}/credentials`, credentials)
281
- .catch(err => commonErrorHandler(err, 'There was an error updating the integration', dispatch, commonErrorFallback))
282
- .then(() => Promise.all([dispatch(setSnackbar('The integration was updated successfully')), dispatch(getIntegrations())]))
283
- );
284
-
285
- export const deleteIntegration = createAsyncThunk(`${sliceName}/deleteIntegration`, ({ id, provider }, { dispatch, getState }) =>
286
- Api.delete(`${iotManagerBaseURL}/integrations/${id}`, {})
287
- .catch(err => commonErrorHandler(err, 'There was an error removing the integration', dispatch, commonErrorFallback))
288
- .then(() => {
289
- const integrations = getState().organization.externalDeviceIntegrations.filter(item => provider !== item.provider);
290
- return Promise.all([
291
- dispatch(setSnackbar('The integration was removed successfully')),
292
- dispatch(actions.receiveExternalDeviceIntegrations(integrations))
293
- ]);
294
- })
295
- );
296
-
297
- export const getIntegrations = createAsyncThunk(`${sliceName}/getIntegrations`, (_, { dispatch, getState }) =>
298
- Api.get(`${iotManagerBaseURL}/integrations`)
299
- .catch(err => commonErrorHandler(err, 'There was an error retrieving the integration', dispatch, commonErrorFallback))
300
- .then(({ data }) => {
301
- const existingIntegrations = getState().organization.externalDeviceIntegrations;
302
- const integrations = data.reduce((accu, item) => {
303
- const existingIntegration = existingIntegrations.find(integration => item.id === integration.id) ?? {};
304
- const integration = { ...existingIntegration, ...item };
305
- accu.push(integration);
306
- return accu;
307
- }, []);
308
- return Promise.resolve(dispatch(actions.receiveExternalDeviceIntegrations(integrations)));
309
- })
310
- );
311
-
312
- export const getWebhookEvents = createAsyncThunk(`${sliceName}/getWebhookEvents`, (config = {}, { dispatch, getState }) => {
313
- const { isFollowUp, page = defaultPage, perPage = defaultPerPage } = config;
314
- return Api.get(`${iotManagerBaseURL}/events?page=${page}&per_page=${perPage}`)
315
- .catch(err => commonErrorHandler(err, 'There was an error retrieving activity for this integration', dispatch, commonErrorFallback))
316
- .then(({ data }) => {
317
- let tasks = [
318
- dispatch(
319
- actions.receiveWebhookEvents({
320
- value: isFollowUp ? getState().organization.webhooks.events : data,
321
- total: (page - 1) * perPage + data.length
322
- })
323
- )
324
- ];
325
- if (data.length >= perPage && !isFollowUp) {
326
- tasks.push(dispatch(getWebhookEvents({ isFollowUp: true, page: page + 1, perPage: 1 })));
327
- }
328
- return Promise.all(tasks);
329
- });
330
- });
331
-
332
- const ssoConfigActions = {
333
- create: { success: 'stored', error: 'storing' },
334
- edit: { success: 'updated', error: 'updating' },
335
- read: { success: '', error: 'retrieving' },
336
- remove: { success: 'removed', error: 'removing' },
337
- readMultiple: { success: '', error: 'retrieving' }
338
- };
339
-
340
- const ssoConfigActionErrorHandler = (err, type) => dispatch =>
341
- commonErrorHandler(err, `There was an error ${ssoConfigActions[type].error} the SSO configuration.`, dispatch, commonErrorFallback);
342
-
343
- const ssoConfigActionSuccessHandler = type => dispatch => dispatch(setSnackbar(`The SSO configuration was ${ssoConfigActions[type].success} successfully`));
344
-
345
- export const storeSsoConfig = createAsyncThunk(`${sliceName}/storeSsoConfig`, ({ config, contentType }, { dispatch }) =>
346
- Api.post(ssoIdpApiUrlv1, config, { headers: { 'Content-Type': contentType, Accept: 'application/json' } })
347
- .catch(err => dispatch(ssoConfigActionErrorHandler(err, 'create')))
348
- .then(() => Promise.all([dispatch(ssoConfigActionSuccessHandler('create')), dispatch(getSsoConfigs())]))
349
- );
350
-
351
- export const changeSsoConfig = createAsyncThunk(`${sliceName}/changeSsoConfig`, ({ config, contentType }, { dispatch }) =>
352
- Api.put(`${ssoIdpApiUrlv1}/${config.id}`, config, { headers: { 'Content-Type': contentType, Accept: 'application/json' } })
353
- .catch(err => dispatch(ssoConfigActionErrorHandler(err, 'edit')))
354
- .then(() => Promise.all([dispatch(ssoConfigActionSuccessHandler('edit')), dispatch(getSsoConfigs())]))
355
- );
356
-
357
- export const deleteSsoConfig = createAsyncThunk(`${sliceName}/deleteSsoConfig`, ({ id }, { dispatch, getState }) =>
358
- Api.delete(`${ssoIdpApiUrlv1}/${id}`)
359
- .catch(err => dispatch(ssoConfigActionErrorHandler(err, 'remove')))
360
- .then(() => {
361
- const configs = getState().organization.ssoConfigs.filter(item => id !== item.id);
362
- return Promise.all([dispatch(ssoConfigActionSuccessHandler('remove')), dispatch(actions.receiveSsoConfigs(configs))]);
363
- })
364
- );
365
-
366
- export const getSsoConfigById = createAsyncThunk(`${sliceName}/getSsoConfigById`, (config, { dispatch }) =>
367
- Api.get(`${ssoIdpApiUrlv1}/${config.id}`)
368
- .catch(err => dispatch(ssoConfigActionErrorHandler(err, 'read')))
369
- .then(({ data, headers }) => {
370
- const sso = Object.values(SSO_TYPES).find(({ contentType }) => contentType === headers['content-type']);
371
- return sso ? Promise.resolve({ ...config, config: data, type: sso.id }) : Promise.reject('Unsupported SSO config content type.');
372
- })
373
- );
374
-
375
- export const getSsoConfigs = createAsyncThunk(`${sliceName}/getSsoConfigs`, (_, { dispatch }) =>
376
- Api.get(ssoIdpApiUrlv1)
377
- .catch(err => dispatch(ssoConfigActionErrorHandler(err, 'readMultiple')))
378
- .then(({ data }) =>
379
- Promise.all(data.map(config => dispatch(getSsoConfigById(config)).unwrap()))
380
- .then(configs => dispatch(actions.receiveSsoConfigs(configs)))
381
- .catch(err => commonErrorHandler(err, err, dispatch, ''))
382
- )
383
- );
@@ -1,18 +0,0 @@
1
- // Copyright 2019 Northern.tech AS
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
- export const ARTIFACT_GENERATION_TYPE = { SINGLE_FILE: 'single_file' };
15
-
16
- export const currentArtifact = 'artifact_name';
17
- export const rootfsImageVersion = 'rootfs-image.version';
18
- export const softwareTitleMap = { [rootfsImageVersion]: { title: 'Root filesystem', priority: 0, key: rootfsImageVersion } };
@@ -1,78 +0,0 @@
1
- // Copyright 2020 Northern.tech AS
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
- // @ts-nocheck
15
- import reducer, { actions, initialState } from '.';
16
-
17
- const testRelease = {
18
- artifacts: [
19
- {
20
- id: '123',
21
- name: 'test',
22
- description: '-',
23
- device_types_compatible: ['test'],
24
- updates: [{ files: [{ size: 123, name: '' }], type_info: { type: 'rootfs-image' } }],
25
- url: ''
26
- }
27
- ],
28
- device_types_compatible: ['test'],
29
- name: 'test'
30
- };
31
- describe('release reducer', () => {
32
- it('should return the initial state', async () => {
33
- expect(reducer(undefined, {})).toEqual(initialState);
34
- });
35
- it('should handle RECEIVE_RELEASE', async () => {
36
- expect(reducer(undefined, { type: actions.receiveRelease, payload: { ...testRelease, name: 'test2' } }).byId.test2).toEqual({
37
- ...testRelease,
38
- name: 'test2'
39
- });
40
- expect(reducer(initialState, { type: actions.receiveRelease, payload: { ...testRelease, name: 'test2' } }).byId.test2).toEqual({
41
- ...testRelease,
42
- name: 'test2'
43
- });
44
- });
45
- it('should handle RECEIVE_RELEASES', async () => {
46
- expect(reducer(undefined, { type: actions.receiveReleases, payload: { test: testRelease, test2: { ...testRelease, name: 'test2' } } }).byId).toEqual({
47
- test: testRelease,
48
- test2: { ...testRelease, name: 'test2' }
49
- });
50
- expect(reducer(initialState, { type: actions.receiveReleases, payload: { test: testRelease, test2: { ...testRelease, name: 'test2' } } }).byId).toEqual({
51
- test: testRelease,
52
- test2: { ...testRelease, name: 'test2' }
53
- });
54
- });
55
- it('should handle RELEASE_REMOVED', async () => {
56
- expect(reducer(undefined, { type: actions.removeRelease, payload: 'test' }).byId).toEqual({});
57
- expect(reducer({ ...initialState, byId: { test: testRelease } }, { type: actions.removeRelease, payload: 'test' }).byId).toEqual({});
58
- expect(
59
- reducer({ ...initialState, byId: { test: testRelease }, selectedRelease: 'test' }, { type: actions.removeRelease, payload: 'test' }).selectedRelease
60
- ).toEqual(null);
61
- expect(
62
- reducer({ ...initialState, byId: { test: testRelease, test2: testRelease }, selectedRelease: 'test2' }, { type: actions.removeRelease, payload: 'test' })
63
- .selectedRelease
64
- ).toEqual('test2');
65
- });
66
- it('should handle SELECTED_RELEASE', async () => {
67
- expect(reducer(undefined, { type: actions.selectedRelease, payload: 'test' }).selectedRelease).toEqual('test');
68
- expect(reducer(initialState, { type: actions.selectedRelease, payload: 'test' }).selectedRelease).toEqual('test');
69
- });
70
- it('should handle SET_RELEASES_LIST_STATE', async () => {
71
- expect(reducer(undefined, { type: actions.setReleaseListState, payload: { something: 'special' } }).releasesList).toEqual({
72
- something: 'special'
73
- });
74
- expect(reducer(initialState, { type: actions.setReleaseListState, payload: { something: 'special' } }).releasesList).toEqual({
75
- something: 'special'
76
- });
77
- });
78
- });
@@ -1,33 +0,0 @@
1
- // Copyright 2023 Northern.tech AS
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
- import { listItemMapper } from '@northern.tech/store/utils';
15
- import { createSelector } from '@reduxjs/toolkit';
16
-
17
- const getSelectedReleaseId = state => state.releases.selectedRelease;
18
- export const getReleasesById = state => state.releases.byId;
19
- export const getReleaseTags = state => state.releases.tags;
20
- export const getReleaseListState = state => state.releases.releasesList;
21
- const getListedReleases = state => state.releases.releasesList.releaseIds;
22
- export const getUpdateTypes = state => state.releases.updateTypes;
23
-
24
- const getReleaseMappingDefaults = () => ({});
25
- export const getReleasesList = createSelector([getReleasesById, getListedReleases, getReleaseMappingDefaults], listItemMapper);
26
-
27
- export const getReleaseTagsById = createSelector([getReleaseTags], releaseTags => releaseTags.reduce((accu, key) => ({ ...accu, [key]: key }), {}));
28
- export const getHasReleases = createSelector(
29
- [getReleaseListState, getReleasesById],
30
- ({ searchTotal, total }, byId) => !!(Object.keys(byId).length || total || searchTotal)
31
- );
32
-
33
- export const getSelectedRelease = createSelector([getReleasesById, getSelectedReleaseId], (byId, id) => byId[id] ?? {});