@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,9 +1,8 @@
1
- import { T as SortOptions } from "../constants-BrGIx40B.cjs";
2
- import { c as SelectionListState, i as DeploymentConfig, l as SelectionState, r as DeploymentByStatusKey, t as Deployment } from "../index-BP0uAq36.cjs";
3
- import { t as Device$1 } from "../index-B64X5ozM.cjs";
4
- import { s as SnackbarContent } from "../index-DwACbyUg.cjs";
5
- import { r as RootState, t as AppDispatch } from "../store-BhRxVhtL.cjs";
6
- import * as _$_reduxjs_toolkit0 from "@reduxjs/toolkit";
1
+ import { T as SortOptions } from "../constants-_p6w8uEp.cjs";
2
+ import { c as SelectionListState, i as DeploymentConfig, l as SelectionState, r as DeploymentByStatusKey, t as Deployment } from "../index-EPmsL6Lb.cjs";
3
+ import { t as Device$1 } from "../index-DbfM03Gj.cjs";
4
+ import { i as SnackbarContent } from "../index-C8QadAm7.cjs";
5
+ import { r as RootState, t as AppDispatch } from "../store-DBUTT4FF.cjs";
7
6
  import { DeploymentV1, NewDeploymentForGroup, NewDeploymentTypeManagement, NewDeploymentV2TypeManagement } from "@northern.tech/types/MenderTypes";
8
7
 
9
8
  //#region src/deploymentsSlice/thunks.d.ts
@@ -19,7 +18,7 @@ type GetDeploymentsByStatusPayload = Partial<SelectionListState> & {
19
18
  sort?: SortOptions;
20
19
  status: DeploymentByStatusKey;
21
20
  };
22
- declare const getDeploymentsByStatus: _$_reduxjs_toolkit0.AsyncThunk<unknown[], GetDeploymentsByStatusPayload, {
21
+ declare const getDeploymentsByStatus: import("@reduxjs/toolkit").AsyncThunk<unknown[], GetDeploymentsByStatusPayload, {
23
22
  dispatch: AppDispatch;
24
23
  state: RootState;
25
24
  extra?: unknown;
@@ -29,7 +28,7 @@ declare const getDeploymentsByStatus: _$_reduxjs_toolkit0.AsyncThunk<unknown[],
29
28
  fulfilledMeta?: unknown;
30
29
  rejectedMeta?: unknown;
31
30
  }>;
32
- declare const createDeployment: _$_reduxjs_toolkit0.AsyncThunk<any, {
31
+ declare const createDeployment: import("@reduxjs/toolkit").AsyncThunk<any, {
33
32
  newDeployment: NewDeploymentTypeManagement | (NewDeploymentForGroup & {
34
33
  group: string;
35
34
  }) | NewDeploymentV2TypeManagement;
@@ -43,7 +42,7 @@ declare const createDeployment: _$_reduxjs_toolkit0.AsyncThunk<any, {
43
42
  fulfilledMeta?: unknown;
44
43
  rejectedMeta?: unknown;
45
44
  }>;
46
- declare const getDeploymentDevices: _$_reduxjs_toolkit0.AsyncThunk<unknown[], {
45
+ declare const getDeploymentDevices: import("@reduxjs/toolkit").AsyncThunk<unknown[], {
47
46
  id: string;
48
47
  page?: number;
49
48
  perPage?: number;
@@ -63,7 +62,7 @@ type GetDeviceDeploymentsPayload = {
63
62
  page?: number;
64
63
  perPage?: number;
65
64
  };
66
- declare const getDeviceDeployments: _$_reduxjs_toolkit0.AsyncThunk<{
65
+ declare const getDeviceDeployments: import("@reduxjs/toolkit").AsyncThunk<{
67
66
  payload: {
68
67
  id: string;
69
68
  } & Partial<Device$1>;
@@ -78,7 +77,7 @@ declare const getDeviceDeployments: _$_reduxjs_toolkit0.AsyncThunk<{
78
77
  fulfilledMeta?: unknown;
79
78
  rejectedMeta?: unknown;
80
79
  }>;
81
- declare const resetDeviceDeployments: _$_reduxjs_toolkit0.AsyncThunk<_$_reduxjs_toolkit0.PayloadAction<{
80
+ declare const resetDeviceDeployments: import("@reduxjs/toolkit").AsyncThunk<import("@reduxjs/toolkit").PayloadAction<{
82
81
  payload: {
83
82
  id: string;
84
83
  } & Partial<Device$1>;
@@ -87,7 +86,7 @@ declare const resetDeviceDeployments: _$_reduxjs_toolkit0.AsyncThunk<_$_reduxjs_
87
86
  arg: GetDeviceDeploymentsPayload;
88
87
  requestId: string;
89
88
  requestStatus: "fulfilled";
90
- }, never> | _$_reduxjs_toolkit0.PayloadAction<unknown, string, {
89
+ }, never> | import("@reduxjs/toolkit").PayloadAction<unknown, string, {
91
90
  arg: GetDeviceDeploymentsPayload;
92
91
  requestId: string;
93
92
  requestStatus: "rejected";
@@ -97,7 +96,7 @@ declare const resetDeviceDeployments: _$_reduxjs_toolkit0.AsyncThunk<_$_reduxjs_
97
96
  rejectedWithValue: true;
98
97
  } | ({
99
98
  rejectedWithValue: false;
100
- } & {})), _$_reduxjs_toolkit0.SerializedError>, string, {
99
+ } & {})), import("@reduxjs/toolkit").SerializedError>, string, {
101
100
  dispatch: AppDispatch;
102
101
  state: RootState;
103
102
  extra?: unknown;
@@ -107,7 +106,7 @@ declare const resetDeviceDeployments: _$_reduxjs_toolkit0.AsyncThunk<_$_reduxjs_
107
106
  fulfilledMeta?: unknown;
108
107
  rejectedMeta?: unknown;
109
108
  }>;
110
- declare const getSingleDeployment: _$_reduxjs_toolkit0.AsyncThunk<{
109
+ declare const getSingleDeployment: import("@reduxjs/toolkit").AsyncThunk<{
111
110
  payload: Deployment;
112
111
  type: "deployments/receivedDeployment";
113
112
  }, string, {
@@ -120,7 +119,7 @@ declare const getSingleDeployment: _$_reduxjs_toolkit0.AsyncThunk<{
120
119
  fulfilledMeta?: unknown;
121
120
  rejectedMeta?: unknown;
122
121
  }>;
123
- declare const getDeviceLog: _$_reduxjs_toolkit0.AsyncThunk<[{
122
+ declare const getDeviceLog: import("@reduxjs/toolkit").AsyncThunk<[{
124
123
  payload: {
125
124
  deviceId: string;
126
125
  id: string;
@@ -140,7 +139,7 @@ declare const getDeviceLog: _$_reduxjs_toolkit0.AsyncThunk<[{
140
139
  fulfilledMeta?: unknown;
141
140
  rejectedMeta?: unknown;
142
141
  }>;
143
- declare const abortDeployment: _$_reduxjs_toolkit0.AsyncThunk<[{
142
+ declare const abortDeployment: import("@reduxjs/toolkit").AsyncThunk<[{
144
143
  payload: Record<string, Deployment>;
145
144
  type: "deployments/receivedDeployments";
146
145
  }, {
@@ -166,7 +165,7 @@ declare const abortDeployment: _$_reduxjs_toolkit0.AsyncThunk<[{
166
165
  fulfilledMeta?: unknown;
167
166
  rejectedMeta?: unknown;
168
167
  }>;
169
- declare const updateDeploymentControlMap: _$_reduxjs_toolkit0.AsyncThunk<_$_reduxjs_toolkit0.PayloadAction<unknown, string, {
168
+ declare const updateDeploymentControlMap: import("@reduxjs/toolkit").AsyncThunk<import("@reduxjs/toolkit").PayloadAction<unknown, string, {
170
169
  arg: string;
171
170
  requestId: string;
172
171
  requestStatus: "rejected";
@@ -176,7 +175,7 @@ declare const updateDeploymentControlMap: _$_reduxjs_toolkit0.AsyncThunk<_$_redu
176
175
  rejectedWithValue: true;
177
176
  } | ({
178
177
  rejectedWithValue: false;
179
- } & {})), _$_reduxjs_toolkit0.SerializedError> | _$_reduxjs_toolkit0.PayloadAction<{
178
+ } & {})), import("@reduxjs/toolkit").SerializedError> | import("@reduxjs/toolkit").PayloadAction<{
180
179
  payload: Deployment;
181
180
  type: "deployments/receivedDeployment";
182
181
  }, string, {
@@ -201,7 +200,7 @@ type SetDeploymentsStatePayload = DeepPartial<SelectionState> & {
201
200
  page?: number;
202
201
  perPage?: number;
203
202
  };
204
- declare const setDeploymentsState: _$_reduxjs_toolkit0.AsyncThunk<unknown[], SetDeploymentsStatePayload, {
203
+ declare const setDeploymentsState: import("@reduxjs/toolkit").AsyncThunk<unknown[], SetDeploymentsStatePayload, {
205
204
  dispatch: AppDispatch;
206
205
  state: RootState;
207
206
  extra?: unknown;
@@ -211,7 +210,7 @@ declare const setDeploymentsState: _$_reduxjs_toolkit0.AsyncThunk<unknown[], Set
211
210
  fulfilledMeta?: unknown;
212
211
  rejectedMeta?: unknown;
213
212
  }>;
214
- declare const getDeploymentsConfig: _$_reduxjs_toolkit0.AsyncThunk<{
213
+ declare const getDeploymentsConfig: import("@reduxjs/toolkit").AsyncThunk<{
215
214
  payload: DeploymentConfig;
216
215
  type: "deployments/setDeploymentsConfig";
217
216
  }, void, {
@@ -224,7 +223,7 @@ declare const getDeploymentsConfig: _$_reduxjs_toolkit0.AsyncThunk<{
224
223
  fulfilledMeta?: unknown;
225
224
  rejectedMeta?: unknown;
226
225
  }>;
227
- declare const saveDeltaDeploymentsConfig: _$_reduxjs_toolkit0.AsyncThunk<unknown, {
226
+ declare const saveDeltaDeploymentsConfig: import("@reduxjs/toolkit").AsyncThunk<unknown, {
228
227
  compressionLevel: number;
229
228
  disableChecksum: boolean;
230
229
  disableDecompression: boolean;
@@ -243,7 +242,7 @@ declare const saveDeltaDeploymentsConfig: _$_reduxjs_toolkit0.AsyncThunk<unknown
243
242
  fulfilledMeta?: unknown;
244
243
  rejectedMeta?: unknown;
245
244
  }>;
246
- declare const generateDeploymentLogAnalysis: _$_reduxjs_toolkit0.AsyncThunk<string | undefined, {
245
+ declare const generateDeploymentLogAnalysis: import("@reduxjs/toolkit").AsyncThunk<string | undefined, {
247
246
  deploymentId: string;
248
247
  deviceId: string;
249
248
  }, {
@@ -1,9 +1,8 @@
1
- import { T as SortOptions } from "../constants-CjO3_FOH.js";
2
- import { c as SelectionListState, i as DeploymentConfig, l as SelectionState, r as DeploymentByStatusKey, t as Deployment } from "../index-CkwVnIqd.js";
3
- import { t as Device$1 } from "../index-BI9O8JWe.js";
4
- import { s as SnackbarContent } from "../index-Bp1WpATs.js";
5
- import { r as RootState, t as AppDispatch } from "../store-BZo47jc-.js";
6
- import * as _$_reduxjs_toolkit0 from "@reduxjs/toolkit";
1
+ import { T as SortOptions } from "../constants-OcdoVk6f.js";
2
+ import { c as SelectionListState, i as DeploymentConfig, l as SelectionState, r as DeploymentByStatusKey, t as Deployment } from "../index-Bb4yvvgG.js";
3
+ import { t as Device$1 } from "../index-CPdMUfRr.js";
4
+ import { i as SnackbarContent } from "../index-BLvjQfGj.js";
5
+ import { r as RootState, t as AppDispatch } from "../store-gkY5P9Uz.js";
7
6
  import { DeploymentV1, NewDeploymentForGroup, NewDeploymentTypeManagement, NewDeploymentV2TypeManagement } from "@northern.tech/types/MenderTypes";
8
7
 
9
8
  //#region src/deploymentsSlice/thunks.d.ts
@@ -19,7 +18,7 @@ type GetDeploymentsByStatusPayload = Partial<SelectionListState> & {
19
18
  sort?: SortOptions;
20
19
  status: DeploymentByStatusKey;
21
20
  };
22
- declare const getDeploymentsByStatus: _$_reduxjs_toolkit0.AsyncThunk<unknown[], GetDeploymentsByStatusPayload, {
21
+ declare const getDeploymentsByStatus: import("@reduxjs/toolkit").AsyncThunk<unknown[], GetDeploymentsByStatusPayload, {
23
22
  dispatch: AppDispatch;
24
23
  state: RootState;
25
24
  extra?: unknown;
@@ -29,7 +28,7 @@ declare const getDeploymentsByStatus: _$_reduxjs_toolkit0.AsyncThunk<unknown[],
29
28
  fulfilledMeta?: unknown;
30
29
  rejectedMeta?: unknown;
31
30
  }>;
32
- declare const createDeployment: _$_reduxjs_toolkit0.AsyncThunk<any, {
31
+ declare const createDeployment: import("@reduxjs/toolkit").AsyncThunk<any, {
33
32
  newDeployment: NewDeploymentTypeManagement | (NewDeploymentForGroup & {
34
33
  group: string;
35
34
  }) | NewDeploymentV2TypeManagement;
@@ -43,7 +42,7 @@ declare const createDeployment: _$_reduxjs_toolkit0.AsyncThunk<any, {
43
42
  fulfilledMeta?: unknown;
44
43
  rejectedMeta?: unknown;
45
44
  }>;
46
- declare const getDeploymentDevices: _$_reduxjs_toolkit0.AsyncThunk<unknown[], {
45
+ declare const getDeploymentDevices: import("@reduxjs/toolkit").AsyncThunk<unknown[], {
47
46
  id: string;
48
47
  page?: number;
49
48
  perPage?: number;
@@ -63,7 +62,7 @@ type GetDeviceDeploymentsPayload = {
63
62
  page?: number;
64
63
  perPage?: number;
65
64
  };
66
- declare const getDeviceDeployments: _$_reduxjs_toolkit0.AsyncThunk<{
65
+ declare const getDeviceDeployments: import("@reduxjs/toolkit").AsyncThunk<{
67
66
  payload: {
68
67
  id: string;
69
68
  } & Partial<Device$1>;
@@ -78,7 +77,7 @@ declare const getDeviceDeployments: _$_reduxjs_toolkit0.AsyncThunk<{
78
77
  fulfilledMeta?: unknown;
79
78
  rejectedMeta?: unknown;
80
79
  }>;
81
- declare const resetDeviceDeployments: _$_reduxjs_toolkit0.AsyncThunk<_$_reduxjs_toolkit0.PayloadAction<{
80
+ declare const resetDeviceDeployments: import("@reduxjs/toolkit").AsyncThunk<import("@reduxjs/toolkit").PayloadAction<{
82
81
  payload: {
83
82
  id: string;
84
83
  } & Partial<Device$1>;
@@ -87,7 +86,7 @@ declare const resetDeviceDeployments: _$_reduxjs_toolkit0.AsyncThunk<_$_reduxjs_
87
86
  arg: GetDeviceDeploymentsPayload;
88
87
  requestId: string;
89
88
  requestStatus: "fulfilled";
90
- }, never> | _$_reduxjs_toolkit0.PayloadAction<unknown, string, {
89
+ }, never> | import("@reduxjs/toolkit").PayloadAction<unknown, string, {
91
90
  arg: GetDeviceDeploymentsPayload;
92
91
  requestId: string;
93
92
  requestStatus: "rejected";
@@ -97,7 +96,7 @@ declare const resetDeviceDeployments: _$_reduxjs_toolkit0.AsyncThunk<_$_reduxjs_
97
96
  rejectedWithValue: true;
98
97
  } | ({
99
98
  rejectedWithValue: false;
100
- } & {})), _$_reduxjs_toolkit0.SerializedError>, string, {
99
+ } & {})), import("@reduxjs/toolkit").SerializedError>, string, {
101
100
  dispatch: AppDispatch;
102
101
  state: RootState;
103
102
  extra?: unknown;
@@ -107,7 +106,7 @@ declare const resetDeviceDeployments: _$_reduxjs_toolkit0.AsyncThunk<_$_reduxjs_
107
106
  fulfilledMeta?: unknown;
108
107
  rejectedMeta?: unknown;
109
108
  }>;
110
- declare const getSingleDeployment: _$_reduxjs_toolkit0.AsyncThunk<{
109
+ declare const getSingleDeployment: import("@reduxjs/toolkit").AsyncThunk<{
111
110
  payload: Deployment;
112
111
  type: "deployments/receivedDeployment";
113
112
  }, string, {
@@ -120,7 +119,7 @@ declare const getSingleDeployment: _$_reduxjs_toolkit0.AsyncThunk<{
120
119
  fulfilledMeta?: unknown;
121
120
  rejectedMeta?: unknown;
122
121
  }>;
123
- declare const getDeviceLog: _$_reduxjs_toolkit0.AsyncThunk<[{
122
+ declare const getDeviceLog: import("@reduxjs/toolkit").AsyncThunk<[{
124
123
  payload: {
125
124
  deviceId: string;
126
125
  id: string;
@@ -140,7 +139,7 @@ declare const getDeviceLog: _$_reduxjs_toolkit0.AsyncThunk<[{
140
139
  fulfilledMeta?: unknown;
141
140
  rejectedMeta?: unknown;
142
141
  }>;
143
- declare const abortDeployment: _$_reduxjs_toolkit0.AsyncThunk<[{
142
+ declare const abortDeployment: import("@reduxjs/toolkit").AsyncThunk<[{
144
143
  payload: Record<string, Deployment>;
145
144
  type: "deployments/receivedDeployments";
146
145
  }, {
@@ -166,7 +165,7 @@ declare const abortDeployment: _$_reduxjs_toolkit0.AsyncThunk<[{
166
165
  fulfilledMeta?: unknown;
167
166
  rejectedMeta?: unknown;
168
167
  }>;
169
- declare const updateDeploymentControlMap: _$_reduxjs_toolkit0.AsyncThunk<_$_reduxjs_toolkit0.PayloadAction<unknown, string, {
168
+ declare const updateDeploymentControlMap: import("@reduxjs/toolkit").AsyncThunk<import("@reduxjs/toolkit").PayloadAction<unknown, string, {
170
169
  arg: string;
171
170
  requestId: string;
172
171
  requestStatus: "rejected";
@@ -176,7 +175,7 @@ declare const updateDeploymentControlMap: _$_reduxjs_toolkit0.AsyncThunk<_$_redu
176
175
  rejectedWithValue: true;
177
176
  } | ({
178
177
  rejectedWithValue: false;
179
- } & {})), _$_reduxjs_toolkit0.SerializedError> | _$_reduxjs_toolkit0.PayloadAction<{
178
+ } & {})), import("@reduxjs/toolkit").SerializedError> | import("@reduxjs/toolkit").PayloadAction<{
180
179
  payload: Deployment;
181
180
  type: "deployments/receivedDeployment";
182
181
  }, string, {
@@ -201,7 +200,7 @@ type SetDeploymentsStatePayload = DeepPartial<SelectionState> & {
201
200
  page?: number;
202
201
  perPage?: number;
203
202
  };
204
- declare const setDeploymentsState: _$_reduxjs_toolkit0.AsyncThunk<unknown[], SetDeploymentsStatePayload, {
203
+ declare const setDeploymentsState: import("@reduxjs/toolkit").AsyncThunk<unknown[], SetDeploymentsStatePayload, {
205
204
  dispatch: AppDispatch;
206
205
  state: RootState;
207
206
  extra?: unknown;
@@ -211,7 +210,7 @@ declare const setDeploymentsState: _$_reduxjs_toolkit0.AsyncThunk<unknown[], Set
211
210
  fulfilledMeta?: unknown;
212
211
  rejectedMeta?: unknown;
213
212
  }>;
214
- declare const getDeploymentsConfig: _$_reduxjs_toolkit0.AsyncThunk<{
213
+ declare const getDeploymentsConfig: import("@reduxjs/toolkit").AsyncThunk<{
215
214
  payload: DeploymentConfig;
216
215
  type: "deployments/setDeploymentsConfig";
217
216
  }, void, {
@@ -224,7 +223,7 @@ declare const getDeploymentsConfig: _$_reduxjs_toolkit0.AsyncThunk<{
224
223
  fulfilledMeta?: unknown;
225
224
  rejectedMeta?: unknown;
226
225
  }>;
227
- declare const saveDeltaDeploymentsConfig: _$_reduxjs_toolkit0.AsyncThunk<unknown, {
226
+ declare const saveDeltaDeploymentsConfig: import("@reduxjs/toolkit").AsyncThunk<unknown, {
228
227
  compressionLevel: number;
229
228
  disableChecksum: boolean;
230
229
  disableDecompression: boolean;
@@ -243,7 +242,7 @@ declare const saveDeltaDeploymentsConfig: _$_reduxjs_toolkit0.AsyncThunk<unknown
243
242
  fulfilledMeta?: unknown;
244
243
  rejectedMeta?: unknown;
245
244
  }>;
246
- declare const generateDeploymentLogAnalysis: _$_reduxjs_toolkit0.AsyncThunk<string | undefined, {
245
+ declare const generateDeploymentLogAnalysis: import("@reduxjs/toolkit").AsyncThunk<string | undefined, {
247
246
  deploymentId: string;
248
247
  deviceId: string;
249
248
  }, {
@@ -1,2 +1,2 @@
1
- import { _t as geoAttributes, dt as DEVICE_DISMISSAL_STATE, ft as DEVICE_MESSAGE_PROTOCOLS, gt as emptyFilter, ht as REPORT_CHART_SIZE_LIMIT, mt as DeviceAuthState, pt as DEVICE_MESSAGE_TYPES, ut as DEVICE_CONNECT_STATES } from "../constants-BrGIx40B.cjs";
1
+ import { _t as geoAttributes, dt as DEVICE_DISMISSAL_STATE, ft as DEVICE_MESSAGE_PROTOCOLS, gt as emptyFilter, ht as REPORT_CHART_SIZE_LIMIT, mt as DeviceAuthState, pt as DEVICE_MESSAGE_TYPES, ut as DEVICE_CONNECT_STATES } from "../constants-_p6w8uEp.cjs";
2
2
  export { DEVICE_CONNECT_STATES, DEVICE_DISMISSAL_STATE, DEVICE_MESSAGE_PROTOCOLS, DEVICE_MESSAGE_TYPES, DeviceAuthState, REPORT_CHART_SIZE_LIMIT, emptyFilter, geoAttributes };
@@ -1,2 +1,2 @@
1
- import { _t as geoAttributes, dt as DEVICE_DISMISSAL_STATE, ft as DEVICE_MESSAGE_PROTOCOLS, gt as emptyFilter, ht as REPORT_CHART_SIZE_LIMIT, mt as DeviceAuthState, pt as DEVICE_MESSAGE_TYPES, ut as DEVICE_CONNECT_STATES } from "../constants-CjO3_FOH.js";
1
+ import { _t as geoAttributes, dt as DEVICE_DISMISSAL_STATE, ft as DEVICE_MESSAGE_PROTOCOLS, gt as emptyFilter, ht as REPORT_CHART_SIZE_LIMIT, mt as DeviceAuthState, pt as DEVICE_MESSAGE_TYPES, ut as DEVICE_CONNECT_STATES } from "../constants-OcdoVk6f.js";
2
2
  export { DEVICE_CONNECT_STATES, DEVICE_DISMISSAL_STATE, DEVICE_MESSAGE_PROTOCOLS, DEVICE_MESSAGE_TYPES, DeviceAuthState, REPORT_CHART_SIZE_LIMIT, emptyFilter, geoAttributes };
@@ -2,7 +2,6 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- require("../chunk-CKQMccvm.cjs");
6
5
  let _reduxjs_toolkit = require("@reduxjs/toolkit");
7
6
  let _northern_tech_utils_helpers = require("@northern.tech/utils/helpers");
8
7
  let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["DEVICE_STATES","DEVICE_LIST_DEFAULTS","SORTING_OPTIONS","duplicateFilter"],"sources":["../../src/devicesSlice/index.ts"],"sourcesContent":["// Copyright 2023 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 {\n Device as BackendDeviceAuth,\n ConnectionState,\n DeviceConfiguration,\n DeviceState,\n DeviceTierLimits,\n MonitorConfiguration,\n Scope,\n SortCriteria,\n Status\n} from '@northern.tech/types/MenderTypes';\n// @ts-nocheck\nimport { deepCompare, duplicateFilter } from '@northern.tech/utils/helpers';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { ALL_DEVICE_STATES, DeviceIssueOptionKey, FilterOperator, SortOptions } from '../constants';\nimport { DEVICE_LIST_DEFAULTS, DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport type { DeviceDeployment } from '../deploymentsSlice';\nimport type { DeviceAuthState } from './constants';\n\nexport const sliceName = 'devices';\nexport type DeviceSelectedAttribute = { attribute: string; scope: string };\nexport type DeviceListState = {\n detailsTab: string;\n deviceIds: string[];\n isLoading: boolean;\n open?: boolean;\n page: number;\n perPage: number;\n refreshTrigger: boolean;\n selectedAttributes: DeviceSelectedAttribute[];\n selectedId?: string;\n selectedIssues: DeviceIssueOptionKey[];\n selection: number[];\n setOnly?: boolean;\n sort: SortOptions & Partial<SortCriteria>;\n state?: DeviceAuthState | typeof ALL_DEVICE_STATES;\n total: number;\n};\ntype DeviceReport = {\n items: { count: number; key: string }[];\n otherCount: number;\n total: number;\n};\nexport type DeviceGroup = { deviceIds?: string[]; filters?: DeviceFilter[]; id?: string; total?: number };\nexport type InventoryAttributes = {\n [key: string]: string | string[];\n artifact_name: string;\n device_type: string[];\n};\n\n// based on the api docs the Record values might be even: \"Supported types: number, string, array of numbers, array of strings\" - but I guess \"string\" or \"string | sting[]\" should be good enough\ntype UiDeviceAttributes = {\n attributes: InventoryAttributes;\n identity?: Record<string, string>;\n monitor?: Record<string, string>;\n system: Record<string, string>;\n tags?: Record<string, string>;\n};\n\nexport type Device = BackendDeviceAuth &\n UiDeviceAttributes & {\n check_in_time_exact?: string;\n check_in_time_rounded?: string;\n config?: DeviceConfiguration;\n connect_status?: ConnectionState['status'];\n connect_updated_ts?: string;\n deploymentsCount?: number;\n deviceDeployments?: DeviceDeployment;\n etag?: string;\n gatewayIds?: string[];\n group?: string;\n id: string;\n isNew?: boolean;\n isOffline?: boolean;\n monitors?: MonitorConfiguration[];\n status: Status;\n twinsByIntegration?: Record<string, DeviceState & { twinError?: string }>;\n };\nexport type DeviceFilter = {\n key: string;\n operator: FilterOperator;\n scope: Scope;\n value: string | string[];\n};\ntype FilteringAttributes = {\n identityAttributes: string[];\n inventoryAttributes: string[];\n systemAttributes: string[];\n tagAttributes: string[];\n};\ntype FilteringAttributesConfig = {\n attributes: Record<string, string[]>;\n count: number;\n limit: number;\n};\n\nexport type DeviceGroups = {\n byId: Record<string, DeviceGroup>;\n selectedGroup?: string;\n};\nexport type DeviceSliceType = {\n byId: Record<string, Device>;\n byStatus: Record<DeviceAuthState, { counts: DeviceTierLimits & { total: number }; deviceIds: string[] }>;\n deviceList: DeviceListState;\n filteringAttributes: FilteringAttributes;\n filteringAttributesConfig: FilteringAttributesConfig;\n filteringAttributesLimit: number;\n filters: DeviceFilter[];\n groups: DeviceGroups;\n limits: DeviceTierLimits;\n reports: DeviceReport[];\n total: number;\n};\nexport const initialState: DeviceSliceType = {\n byId: {\n // [deviceId]: {\n // ...,\n // twinsByIntegration: { [external.provider.id]: twinData }\n // }\n },\n byStatus: {\n [DEVICE_STATES.accepted]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.pending]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.preauth]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.rejected]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } }\n },\n deviceList: {\n deviceIds: [],\n ...DEVICE_LIST_DEFAULTS,\n selectedAttributes: [],\n selectedIssues: [],\n selection: [],\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n },\n state: DEVICE_STATES.accepted,\n total: 0,\n refreshTrigger: false,\n isLoading: false,\n detailsTab: '',\n open: false\n },\n filters: [\n // { key: 'device_type', value: 'raspberry', operator: '$eq', scope: 'inventory' }\n ],\n filteringAttributes: { identityAttributes: [], inventoryAttributes: [], systemAttributes: [], tagAttributes: [] },\n filteringAttributesLimit: 10,\n filteringAttributesConfig: {\n attributes: {\n // inventory: ['some_attribute']\n },\n count: 0,\n limit: 100\n },\n reports: [\n // { items: [{ key: \"someKey\", count: 42 }], otherCount: 123, total: <otherCount + itemsCount> }\n ],\n total: 0,\n limits: {\n standard: 0,\n micro: 0,\n system: 0\n },\n groups: {\n byId: {\n // groupName: { deviceIds: [], total: 0, filters: [] },\n // dynamo: { deviceIds: [], total: 3, filters: [{ a: 1 }] }\n },\n selectedGroup: undefined\n }\n};\n\nexport const devicesSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n receivedGroups: (state, action: PayloadAction<Record<string, DeviceGroup>>) => {\n state.groups.byId = action.payload;\n },\n addToGroup: (state, action: PayloadAction<{ deviceIds: string[]; group: string }>) => {\n const { group, deviceIds } = action.payload;\n const maybeExistingGroup = {\n filters: [],\n deviceIds: [],\n ...state.groups.byId[group]\n };\n state.groups.byId[group] = {\n ...maybeExistingGroup,\n deviceIds: [...maybeExistingGroup.deviceIds, ...deviceIds].filter(duplicateFilter),\n total: (maybeExistingGroup.total || 0) + 1\n };\n },\n removeFromGroup: (state, action: PayloadAction<{ deviceIds: string[]; group: string }>) => {\n const { group, deviceIds: removedIds } = action.payload;\n const { deviceIds = [], total = 0, ...maybeExistingGroup } = state.groups.byId[group] || {};\n const changedGroup = {\n ...maybeExistingGroup,\n deviceIds: deviceIds.filter(id => !removedIds.includes(id)),\n total: Math.max(total - removedIds.length, 0)\n };\n if (changedGroup.total || changedGroup.deviceIds.length) {\n state.groups.byId[group] = changedGroup;\n return;\n } else if (state.groups.selectedGroup === group) {\n state.groups.selectedGroup = undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [group]: removal, ...remainingById } = state.groups.byId;\n state.groups.byId = remainingById;\n },\n addGroup: (state, action: PayloadAction<{ group: DeviceGroup; groupName: string }>) => {\n const { groupName, group } = action.payload;\n state.groups.byId[groupName] = {\n ...state.groups.byId[groupName],\n ...group\n };\n },\n selectGroup: (state, { payload: group }: PayloadAction<string | undefined>) => {\n state.deviceList.deviceIds =\n group && state.groups.byId[group] && state.groups.byId[group].deviceIds && state.groups.byId[group].deviceIds.length > 0\n ? state.groups.byId[group].deviceIds\n : [];\n state.groups.selectedGroup = group;\n },\n removeGroup: (state, action: PayloadAction<string>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [action.payload]: removal, ...remainingById } = state.groups.byId;\n state.groups.byId = remainingById;\n state.groups.selectedGroup = state.groups.selectedGroup === action.payload ? undefined : state.groups.selectedGroup;\n },\n setDeviceListState: (state, action: PayloadAction<Partial<DeviceListState>>) => {\n state.deviceList = {\n ...state.deviceList,\n ...action.payload,\n sort: {\n ...state.deviceList.sort,\n ...action.payload.sort\n }\n };\n },\n setFilterAttributes: (state, action: PayloadAction<FilteringAttributes>) => {\n state.filteringAttributes = action.payload;\n },\n setFilterablesConfig: (state, action: PayloadAction<FilteringAttributesConfig>) => {\n state.filteringAttributesConfig = action.payload;\n },\n receivedDevices: (state, action: PayloadAction<Record<string, Device>>) => {\n state.byId = {\n ...state.byId,\n ...action.payload\n };\n },\n setDeviceFilters: (state, action: PayloadAction<DeviceFilter[]>) => {\n if (deepCompare(action.payload, state.filters)) {\n return;\n }\n state.filters = action.payload.filter(filter => filter.key && filter.operator && filter.scope && typeof filter.value !== 'undefined');\n },\n setDeviceReports: (state, action: PayloadAction<DeviceReport[]>) => {\n state.reports = action.payload;\n },\n setDevicesByStatus: (state, action: PayloadAction<{ deviceIds: string[]; status: DeviceAuthState; total: number }>) => {\n const { status, total, deviceIds } = action.payload;\n if (total) {\n state.byStatus[status].deviceIds = deviceIds;\n state.byStatus[status].counts.total = total;\n }\n },\n setDevicesCountByStatus: (state, action: PayloadAction<{ countsPerTier: DeviceTierLimits; status: DeviceAuthState }>) => {\n const { countsPerTier, status } = action.payload;\n state.byStatus[status].counts = { ...countsPerTier, total: Object.values(countsPerTier).reduce((accu, tieredCount) => (accu += tieredCount), 0) };\n },\n setDeviceLimits: (state, action: PayloadAction<DeviceTierLimits>) => {\n state.limits = action.payload;\n },\n receivedDevice: (state, action: PayloadAction<{ id: string } & Partial<Device>>) => {\n state.byId[action.payload.id] = {\n ...state.byId[action.payload.id],\n ...action.payload\n };\n },\n maybeUpdateDevicesByStatus: (state, action: PayloadAction<{ authId?: string; deviceId: string }>) => {\n const { deviceId, authId } = action.payload;\n const device = state.byId[deviceId];\n const hasMultipleAuthSets = authId && device.auth_sets ? device.auth_sets.filter(authset => authset.id !== authId).length > 0 : false;\n if (!hasMultipleAuthSets && (Object.values(DEVICE_STATES) as string[]).includes(device.status)) {\n const deviceIds = state.byStatus[device.status].deviceIds.filter(id => id !== deviceId);\n const deviceTier = (device.attributes.tier as string) || 'standard';\n state.byStatus[device.status] = {\n deviceIds,\n counts: {\n ...state.byStatus[device.status].counts,\n [deviceTier]: Math.max(0, state.byStatus[device.status].counts[deviceTier] - 1),\n total: Math.max(0, state.byStatus[device.status].counts.total - 1)\n }\n };\n }\n }\n }\n});\n\nexport const actions = devicesSlice.actions;\nexport default devicesSlice.reducer;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["DEVICE_STATES","DEVICE_LIST_DEFAULTS","SORTING_OPTIONS","duplicateFilter"],"sources":["../../src/devicesSlice/index.ts"],"sourcesContent":["// Copyright 2023 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 {\n Device as BackendDeviceAuth,\n ConnectionState,\n DeviceConfiguration,\n DeviceState,\n DeviceTierLimits,\n MonitorConfiguration,\n Scope,\n SortCriteria,\n Status\n} from '@northern.tech/types/MenderTypes';\n// @ts-nocheck\nimport { deepCompare, duplicateFilter } from '@northern.tech/utils/helpers';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { ALL_DEVICE_STATES, DeviceIssueOptionKey, FilterOperator, SortOptions } from '../constants';\nimport { DEVICE_LIST_DEFAULTS, DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport type { DeviceDeployment } from '../deploymentsSlice';\nimport type { DeviceAuthState } from './constants';\n\nexport const sliceName = 'devices';\nexport type DeviceSelectedAttribute = { attribute: string; scope: string };\nexport type DeviceListState = {\n detailsTab: string;\n deviceIds: string[];\n isLoading: boolean;\n open?: boolean;\n page: number;\n perPage: number;\n refreshTrigger: boolean;\n selectedAttributes: DeviceSelectedAttribute[];\n selectedId?: string;\n selectedIssues: DeviceIssueOptionKey[];\n selection: number[];\n setOnly?: boolean;\n sort: SortOptions & Partial<SortCriteria>;\n state?: DeviceAuthState | typeof ALL_DEVICE_STATES;\n total: number;\n};\ntype DeviceReport = {\n items: { count: number; key: string }[];\n otherCount: number;\n total: number;\n};\nexport type DeviceGroup = { deviceIds?: string[]; filters?: DeviceFilter[]; id?: string; total?: number };\nexport type InventoryAttributes = {\n [key: string]: string | string[];\n artifact_name: string;\n device_type: string[];\n};\n\n// based on the api docs the Record values might be even: \"Supported types: number, string, array of numbers, array of strings\" - but I guess \"string\" or \"string | sting[]\" should be good enough\ntype UiDeviceAttributes = {\n attributes: InventoryAttributes;\n identity?: Record<string, string>;\n monitor?: Record<string, string>;\n system: Record<string, string>;\n tags?: Record<string, string>;\n};\n\nexport type Device = BackendDeviceAuth &\n UiDeviceAttributes & {\n check_in_time_exact?: string;\n check_in_time_rounded?: string;\n config?: DeviceConfiguration;\n connect_status?: ConnectionState['status'];\n connect_updated_ts?: string;\n deploymentsCount?: number;\n deviceDeployments?: DeviceDeployment;\n etag?: string;\n gatewayIds?: string[];\n group?: string;\n id: string;\n isNew?: boolean;\n isOffline?: boolean;\n monitors?: MonitorConfiguration[];\n status: Status;\n twinsByIntegration?: Record<string, DeviceState & { twinError?: string }>;\n };\nexport type DeviceFilter = {\n key: string;\n operator: FilterOperator;\n scope: Scope;\n value: string | string[];\n};\ntype FilteringAttributes = {\n identityAttributes: string[];\n inventoryAttributes: string[];\n systemAttributes: string[];\n tagAttributes: string[];\n};\ntype FilteringAttributesConfig = {\n attributes: Record<string, string[]>;\n count: number;\n limit: number;\n};\n\nexport type DeviceGroups = {\n byId: Record<string, DeviceGroup>;\n selectedGroup?: string;\n};\nexport type DeviceSliceType = {\n byId: Record<string, Device>;\n byStatus: Record<DeviceAuthState, { counts: DeviceTierLimits & { total: number }; deviceIds: string[] }>;\n deviceList: DeviceListState;\n filteringAttributes: FilteringAttributes;\n filteringAttributesConfig: FilteringAttributesConfig;\n filteringAttributesLimit: number;\n filters: DeviceFilter[];\n groups: DeviceGroups;\n limits: DeviceTierLimits;\n reports: DeviceReport[];\n total: number;\n};\nexport const initialState: DeviceSliceType = {\n byId: {\n // [deviceId]: {\n // ...,\n // twinsByIntegration: { [external.provider.id]: twinData }\n // }\n },\n byStatus: {\n [DEVICE_STATES.accepted]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.pending]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.preauth]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.rejected]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } }\n },\n deviceList: {\n deviceIds: [],\n ...DEVICE_LIST_DEFAULTS,\n selectedAttributes: [],\n selectedIssues: [],\n selection: [],\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n },\n state: DEVICE_STATES.accepted,\n total: 0,\n refreshTrigger: false,\n isLoading: false,\n detailsTab: '',\n open: false\n },\n filters: [\n // { key: 'device_type', value: 'raspberry', operator: '$eq', scope: 'inventory' }\n ],\n filteringAttributes: { identityAttributes: [], inventoryAttributes: [], systemAttributes: [], tagAttributes: [] },\n filteringAttributesLimit: 10,\n filteringAttributesConfig: {\n attributes: {\n // inventory: ['some_attribute']\n },\n count: 0,\n limit: 100\n },\n reports: [\n // { items: [{ key: \"someKey\", count: 42 }], otherCount: 123, total: <otherCount + itemsCount> }\n ],\n total: 0,\n limits: {\n standard: 0,\n micro: 0,\n system: 0\n },\n groups: {\n byId: {\n // groupName: { deviceIds: [], total: 0, filters: [] },\n // dynamo: { deviceIds: [], total: 3, filters: [{ a: 1 }] }\n },\n selectedGroup: undefined\n }\n};\n\nexport const devicesSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n receivedGroups: (state, action: PayloadAction<Record<string, DeviceGroup>>) => {\n state.groups.byId = action.payload;\n },\n addToGroup: (state, action: PayloadAction<{ deviceIds: string[]; group: string }>) => {\n const { group, deviceIds } = action.payload;\n const maybeExistingGroup = {\n filters: [],\n deviceIds: [],\n ...state.groups.byId[group]\n };\n state.groups.byId[group] = {\n ...maybeExistingGroup,\n deviceIds: [...maybeExistingGroup.deviceIds, ...deviceIds].filter(duplicateFilter),\n total: (maybeExistingGroup.total || 0) + 1\n };\n },\n removeFromGroup: (state, action: PayloadAction<{ deviceIds: string[]; group: string }>) => {\n const { group, deviceIds: removedIds } = action.payload;\n const { deviceIds = [], total = 0, ...maybeExistingGroup } = state.groups.byId[group] || {};\n const changedGroup = {\n ...maybeExistingGroup,\n deviceIds: deviceIds.filter(id => !removedIds.includes(id)),\n total: Math.max(total - removedIds.length, 0)\n };\n if (changedGroup.total || changedGroup.deviceIds.length) {\n state.groups.byId[group] = changedGroup;\n return;\n } else if (state.groups.selectedGroup === group) {\n state.groups.selectedGroup = undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [group]: removal, ...remainingById } = state.groups.byId;\n state.groups.byId = remainingById;\n },\n addGroup: (state, action: PayloadAction<{ group: DeviceGroup; groupName: string }>) => {\n const { groupName, group } = action.payload;\n state.groups.byId[groupName] = {\n ...state.groups.byId[groupName],\n ...group\n };\n },\n selectGroup: (state, { payload: group }: PayloadAction<string | undefined>) => {\n state.deviceList.deviceIds =\n group && state.groups.byId[group] && state.groups.byId[group].deviceIds && state.groups.byId[group].deviceIds.length > 0\n ? state.groups.byId[group].deviceIds\n : [];\n state.groups.selectedGroup = group;\n },\n removeGroup: (state, action: PayloadAction<string>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [action.payload]: removal, ...remainingById } = state.groups.byId;\n state.groups.byId = remainingById;\n state.groups.selectedGroup = state.groups.selectedGroup === action.payload ? undefined : state.groups.selectedGroup;\n },\n setDeviceListState: (state, action: PayloadAction<Partial<DeviceListState>>) => {\n state.deviceList = {\n ...state.deviceList,\n ...action.payload,\n sort: {\n ...state.deviceList.sort,\n ...action.payload.sort\n }\n };\n },\n setFilterAttributes: (state, action: PayloadAction<FilteringAttributes>) => {\n state.filteringAttributes = action.payload;\n },\n setFilterablesConfig: (state, action: PayloadAction<FilteringAttributesConfig>) => {\n state.filteringAttributesConfig = action.payload;\n },\n receivedDevices: (state, action: PayloadAction<Record<string, Device>>) => {\n state.byId = {\n ...state.byId,\n ...action.payload\n };\n },\n setDeviceFilters: (state, action: PayloadAction<DeviceFilter[]>) => {\n if (deepCompare(action.payload, state.filters)) {\n return;\n }\n state.filters = action.payload.filter(filter => filter.key && filter.operator && filter.scope && typeof filter.value !== 'undefined');\n },\n setDeviceReports: (state, action: PayloadAction<DeviceReport[]>) => {\n state.reports = action.payload;\n },\n setDevicesByStatus: (state, action: PayloadAction<{ deviceIds: string[]; status: DeviceAuthState; total: number }>) => {\n const { status, total, deviceIds } = action.payload;\n if (total) {\n state.byStatus[status].deviceIds = deviceIds;\n state.byStatus[status].counts.total = total;\n }\n },\n setDevicesCountByStatus: (state, action: PayloadAction<{ countsPerTier: DeviceTierLimits; status: DeviceAuthState }>) => {\n const { countsPerTier, status } = action.payload;\n state.byStatus[status].counts = { ...countsPerTier, total: Object.values(countsPerTier).reduce((accu, tieredCount) => (accu += tieredCount), 0) };\n },\n setDeviceLimits: (state, action: PayloadAction<DeviceTierLimits>) => {\n state.limits = action.payload;\n },\n receivedDevice: (state, action: PayloadAction<{ id: string } & Partial<Device>>) => {\n state.byId[action.payload.id] = {\n ...state.byId[action.payload.id],\n ...action.payload\n };\n },\n maybeUpdateDevicesByStatus: (state, action: PayloadAction<{ authId?: string; deviceId: string }>) => {\n const { deviceId, authId } = action.payload;\n const device = state.byId[deviceId];\n const hasMultipleAuthSets = authId && device.auth_sets ? device.auth_sets.filter(authset => authset.id !== authId).length > 0 : false;\n if (!hasMultipleAuthSets && (Object.values(DEVICE_STATES) as string[]).includes(device.status)) {\n const deviceIds = state.byStatus[device.status].deviceIds.filter(id => id !== deviceId);\n const deviceTier = (device.attributes.tier as string) || 'standard';\n state.byStatus[device.status] = {\n deviceIds,\n counts: {\n ...state.byStatus[device.status].counts,\n [deviceTier]: Math.max(0, state.byStatus[device.status].counts[deviceTier] - 1),\n total: Math.max(0, state.byStatus[device.status].counts.total - 1)\n }\n };\n }\n }\n }\n});\n\nexport const actions = devicesSlice.actions;\nexport default devicesSlice.reducer;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { a as DeviceListState, c as InventoryAttributes, d as devicesSlice, f as initialState, i as DeviceGroups, l as _default, n as DeviceFilter, o as DeviceSelectedAttribute, p as sliceName, r as DeviceGroup, s as DeviceSliceType, t as Device, u as actions } from "../index-B64X5ozM.cjs";
1
+ import { a as DeviceListState, c as InventoryAttributes, d as devicesSlice, f as initialState, i as DeviceGroups, l as _default, n as DeviceFilter, o as DeviceSelectedAttribute, p as sliceName, r as DeviceGroup, s as DeviceSliceType, t as Device, u as actions } from "../index-DbfM03Gj.cjs";
2
2
  export { Device, DeviceFilter, DeviceGroup, DeviceGroups, DeviceListState, DeviceSelectedAttribute, DeviceSliceType, InventoryAttributes, actions, _default as default, devicesSlice, initialState, sliceName };
@@ -1,2 +1,2 @@
1
- import { a as DeviceListState, c as InventoryAttributes, d as devicesSlice, f as initialState, i as DeviceGroups, l as _default, n as DeviceFilter, o as DeviceSelectedAttribute, p as sliceName, r as DeviceGroup, s as DeviceSliceType, t as Device, u as actions } from "../index-BI9O8JWe.js";
1
+ import { a as DeviceListState, c as InventoryAttributes, d as devicesSlice, f as initialState, i as DeviceGroups, l as _default, n as DeviceFilter, o as DeviceSelectedAttribute, p as sliceName, r as DeviceGroup, s as DeviceSliceType, t as Device, u as actions } from "../index-CPdMUfRr.js";
2
2
  export { Device, DeviceFilter, DeviceGroup, DeviceGroups, DeviceListState, DeviceSelectedAttribute, DeviceSliceType, InventoryAttributes, actions, _default as default, devicesSlice, initialState, sliceName };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/devicesSlice/index.ts"],"sourcesContent":["// Copyright 2023 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 {\n Device as BackendDeviceAuth,\n ConnectionState,\n DeviceConfiguration,\n DeviceState,\n DeviceTierLimits,\n MonitorConfiguration,\n Scope,\n SortCriteria,\n Status\n} from '@northern.tech/types/MenderTypes';\n// @ts-nocheck\nimport { deepCompare, duplicateFilter } from '@northern.tech/utils/helpers';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { ALL_DEVICE_STATES, DeviceIssueOptionKey, FilterOperator, SortOptions } from '../constants';\nimport { DEVICE_LIST_DEFAULTS, DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport type { DeviceDeployment } from '../deploymentsSlice';\nimport type { DeviceAuthState } from './constants';\n\nexport const sliceName = 'devices';\nexport type DeviceSelectedAttribute = { attribute: string; scope: string };\nexport type DeviceListState = {\n detailsTab: string;\n deviceIds: string[];\n isLoading: boolean;\n open?: boolean;\n page: number;\n perPage: number;\n refreshTrigger: boolean;\n selectedAttributes: DeviceSelectedAttribute[];\n selectedId?: string;\n selectedIssues: DeviceIssueOptionKey[];\n selection: number[];\n setOnly?: boolean;\n sort: SortOptions & Partial<SortCriteria>;\n state?: DeviceAuthState | typeof ALL_DEVICE_STATES;\n total: number;\n};\ntype DeviceReport = {\n items: { count: number; key: string }[];\n otherCount: number;\n total: number;\n};\nexport type DeviceGroup = { deviceIds?: string[]; filters?: DeviceFilter[]; id?: string; total?: number };\nexport type InventoryAttributes = {\n [key: string]: string | string[];\n artifact_name: string;\n device_type: string[];\n};\n\n// based on the api docs the Record values might be even: \"Supported types: number, string, array of numbers, array of strings\" - but I guess \"string\" or \"string | sting[]\" should be good enough\ntype UiDeviceAttributes = {\n attributes: InventoryAttributes;\n identity?: Record<string, string>;\n monitor?: Record<string, string>;\n system: Record<string, string>;\n tags?: Record<string, string>;\n};\n\nexport type Device = BackendDeviceAuth &\n UiDeviceAttributes & {\n check_in_time_exact?: string;\n check_in_time_rounded?: string;\n config?: DeviceConfiguration;\n connect_status?: ConnectionState['status'];\n connect_updated_ts?: string;\n deploymentsCount?: number;\n deviceDeployments?: DeviceDeployment;\n etag?: string;\n gatewayIds?: string[];\n group?: string;\n id: string;\n isNew?: boolean;\n isOffline?: boolean;\n monitors?: MonitorConfiguration[];\n status: Status;\n twinsByIntegration?: Record<string, DeviceState & { twinError?: string }>;\n };\nexport type DeviceFilter = {\n key: string;\n operator: FilterOperator;\n scope: Scope;\n value: string | string[];\n};\ntype FilteringAttributes = {\n identityAttributes: string[];\n inventoryAttributes: string[];\n systemAttributes: string[];\n tagAttributes: string[];\n};\ntype FilteringAttributesConfig = {\n attributes: Record<string, string[]>;\n count: number;\n limit: number;\n};\n\nexport type DeviceGroups = {\n byId: Record<string, DeviceGroup>;\n selectedGroup?: string;\n};\nexport type DeviceSliceType = {\n byId: Record<string, Device>;\n byStatus: Record<DeviceAuthState, { counts: DeviceTierLimits & { total: number }; deviceIds: string[] }>;\n deviceList: DeviceListState;\n filteringAttributes: FilteringAttributes;\n filteringAttributesConfig: FilteringAttributesConfig;\n filteringAttributesLimit: number;\n filters: DeviceFilter[];\n groups: DeviceGroups;\n limits: DeviceTierLimits;\n reports: DeviceReport[];\n total: number;\n};\nexport const initialState: DeviceSliceType = {\n byId: {\n // [deviceId]: {\n // ...,\n // twinsByIntegration: { [external.provider.id]: twinData }\n // }\n },\n byStatus: {\n [DEVICE_STATES.accepted]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.pending]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.preauth]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.rejected]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } }\n },\n deviceList: {\n deviceIds: [],\n ...DEVICE_LIST_DEFAULTS,\n selectedAttributes: [],\n selectedIssues: [],\n selection: [],\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n },\n state: DEVICE_STATES.accepted,\n total: 0,\n refreshTrigger: false,\n isLoading: false,\n detailsTab: '',\n open: false\n },\n filters: [\n // { key: 'device_type', value: 'raspberry', operator: '$eq', scope: 'inventory' }\n ],\n filteringAttributes: { identityAttributes: [], inventoryAttributes: [], systemAttributes: [], tagAttributes: [] },\n filteringAttributesLimit: 10,\n filteringAttributesConfig: {\n attributes: {\n // inventory: ['some_attribute']\n },\n count: 0,\n limit: 100\n },\n reports: [\n // { items: [{ key: \"someKey\", count: 42 }], otherCount: 123, total: <otherCount + itemsCount> }\n ],\n total: 0,\n limits: {\n standard: 0,\n micro: 0,\n system: 0\n },\n groups: {\n byId: {\n // groupName: { deviceIds: [], total: 0, filters: [] },\n // dynamo: { deviceIds: [], total: 3, filters: [{ a: 1 }] }\n },\n selectedGroup: undefined\n }\n};\n\nexport const devicesSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n receivedGroups: (state, action: PayloadAction<Record<string, DeviceGroup>>) => {\n state.groups.byId = action.payload;\n },\n addToGroup: (state, action: PayloadAction<{ deviceIds: string[]; group: string }>) => {\n const { group, deviceIds } = action.payload;\n const maybeExistingGroup = {\n filters: [],\n deviceIds: [],\n ...state.groups.byId[group]\n };\n state.groups.byId[group] = {\n ...maybeExistingGroup,\n deviceIds: [...maybeExistingGroup.deviceIds, ...deviceIds].filter(duplicateFilter),\n total: (maybeExistingGroup.total || 0) + 1\n };\n },\n removeFromGroup: (state, action: PayloadAction<{ deviceIds: string[]; group: string }>) => {\n const { group, deviceIds: removedIds } = action.payload;\n const { deviceIds = [], total = 0, ...maybeExistingGroup } = state.groups.byId[group] || {};\n const changedGroup = {\n ...maybeExistingGroup,\n deviceIds: deviceIds.filter(id => !removedIds.includes(id)),\n total: Math.max(total - removedIds.length, 0)\n };\n if (changedGroup.total || changedGroup.deviceIds.length) {\n state.groups.byId[group] = changedGroup;\n return;\n } else if (state.groups.selectedGroup === group) {\n state.groups.selectedGroup = undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [group]: removal, ...remainingById } = state.groups.byId;\n state.groups.byId = remainingById;\n },\n addGroup: (state, action: PayloadAction<{ group: DeviceGroup; groupName: string }>) => {\n const { groupName, group } = action.payload;\n state.groups.byId[groupName] = {\n ...state.groups.byId[groupName],\n ...group\n };\n },\n selectGroup: (state, { payload: group }: PayloadAction<string | undefined>) => {\n state.deviceList.deviceIds =\n group && state.groups.byId[group] && state.groups.byId[group].deviceIds && state.groups.byId[group].deviceIds.length > 0\n ? state.groups.byId[group].deviceIds\n : [];\n state.groups.selectedGroup = group;\n },\n removeGroup: (state, action: PayloadAction<string>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [action.payload]: removal, ...remainingById } = state.groups.byId;\n state.groups.byId = remainingById;\n state.groups.selectedGroup = state.groups.selectedGroup === action.payload ? undefined : state.groups.selectedGroup;\n },\n setDeviceListState: (state, action: PayloadAction<Partial<DeviceListState>>) => {\n state.deviceList = {\n ...state.deviceList,\n ...action.payload,\n sort: {\n ...state.deviceList.sort,\n ...action.payload.sort\n }\n };\n },\n setFilterAttributes: (state, action: PayloadAction<FilteringAttributes>) => {\n state.filteringAttributes = action.payload;\n },\n setFilterablesConfig: (state, action: PayloadAction<FilteringAttributesConfig>) => {\n state.filteringAttributesConfig = action.payload;\n },\n receivedDevices: (state, action: PayloadAction<Record<string, Device>>) => {\n state.byId = {\n ...state.byId,\n ...action.payload\n };\n },\n setDeviceFilters: (state, action: PayloadAction<DeviceFilter[]>) => {\n if (deepCompare(action.payload, state.filters)) {\n return;\n }\n state.filters = action.payload.filter(filter => filter.key && filter.operator && filter.scope && typeof filter.value !== 'undefined');\n },\n setDeviceReports: (state, action: PayloadAction<DeviceReport[]>) => {\n state.reports = action.payload;\n },\n setDevicesByStatus: (state, action: PayloadAction<{ deviceIds: string[]; status: DeviceAuthState; total: number }>) => {\n const { status, total, deviceIds } = action.payload;\n if (total) {\n state.byStatus[status].deviceIds = deviceIds;\n state.byStatus[status].counts.total = total;\n }\n },\n setDevicesCountByStatus: (state, action: PayloadAction<{ countsPerTier: DeviceTierLimits; status: DeviceAuthState }>) => {\n const { countsPerTier, status } = action.payload;\n state.byStatus[status].counts = { ...countsPerTier, total: Object.values(countsPerTier).reduce((accu, tieredCount) => (accu += tieredCount), 0) };\n },\n setDeviceLimits: (state, action: PayloadAction<DeviceTierLimits>) => {\n state.limits = action.payload;\n },\n receivedDevice: (state, action: PayloadAction<{ id: string } & Partial<Device>>) => {\n state.byId[action.payload.id] = {\n ...state.byId[action.payload.id],\n ...action.payload\n };\n },\n maybeUpdateDevicesByStatus: (state, action: PayloadAction<{ authId?: string; deviceId: string }>) => {\n const { deviceId, authId } = action.payload;\n const device = state.byId[deviceId];\n const hasMultipleAuthSets = authId && device.auth_sets ? device.auth_sets.filter(authset => authset.id !== authId).length > 0 : false;\n if (!hasMultipleAuthSets && (Object.values(DEVICE_STATES) as string[]).includes(device.status)) {\n const deviceIds = state.byStatus[device.status].deviceIds.filter(id => id !== deviceId);\n const deviceTier = (device.attributes.tier as string) || 'standard';\n state.byStatus[device.status] = {\n deviceIds,\n counts: {\n ...state.byStatus[device.status].counts,\n [deviceTier]: Math.max(0, state.byStatus[device.status].counts[deviceTier] - 1),\n total: Math.max(0, state.byStatus[device.status].counts.total - 1)\n }\n };\n }\n }\n }\n});\n\nexport const actions = devicesSlice.actions;\nexport default devicesSlice.reducer;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/devicesSlice/index.ts"],"sourcesContent":["// Copyright 2023 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 {\n Device as BackendDeviceAuth,\n ConnectionState,\n DeviceConfiguration,\n DeviceState,\n DeviceTierLimits,\n MonitorConfiguration,\n Scope,\n SortCriteria,\n Status\n} from '@northern.tech/types/MenderTypes';\n// @ts-nocheck\nimport { deepCompare, duplicateFilter } from '@northern.tech/utils/helpers';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { ALL_DEVICE_STATES, DeviceIssueOptionKey, FilterOperator, SortOptions } from '../constants';\nimport { DEVICE_LIST_DEFAULTS, DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport type { DeviceDeployment } from '../deploymentsSlice';\nimport type { DeviceAuthState } from './constants';\n\nexport const sliceName = 'devices';\nexport type DeviceSelectedAttribute = { attribute: string; scope: string };\nexport type DeviceListState = {\n detailsTab: string;\n deviceIds: string[];\n isLoading: boolean;\n open?: boolean;\n page: number;\n perPage: number;\n refreshTrigger: boolean;\n selectedAttributes: DeviceSelectedAttribute[];\n selectedId?: string;\n selectedIssues: DeviceIssueOptionKey[];\n selection: number[];\n setOnly?: boolean;\n sort: SortOptions & Partial<SortCriteria>;\n state?: DeviceAuthState | typeof ALL_DEVICE_STATES;\n total: number;\n};\ntype DeviceReport = {\n items: { count: number; key: string }[];\n otherCount: number;\n total: number;\n};\nexport type DeviceGroup = { deviceIds?: string[]; filters?: DeviceFilter[]; id?: string; total?: number };\nexport type InventoryAttributes = {\n [key: string]: string | string[];\n artifact_name: string;\n device_type: string[];\n};\n\n// based on the api docs the Record values might be even: \"Supported types: number, string, array of numbers, array of strings\" - but I guess \"string\" or \"string | sting[]\" should be good enough\ntype UiDeviceAttributes = {\n attributes: InventoryAttributes;\n identity?: Record<string, string>;\n monitor?: Record<string, string>;\n system: Record<string, string>;\n tags?: Record<string, string>;\n};\n\nexport type Device = BackendDeviceAuth &\n UiDeviceAttributes & {\n check_in_time_exact?: string;\n check_in_time_rounded?: string;\n config?: DeviceConfiguration;\n connect_status?: ConnectionState['status'];\n connect_updated_ts?: string;\n deploymentsCount?: number;\n deviceDeployments?: DeviceDeployment;\n etag?: string;\n gatewayIds?: string[];\n group?: string;\n id: string;\n isNew?: boolean;\n isOffline?: boolean;\n monitors?: MonitorConfiguration[];\n status: Status;\n twinsByIntegration?: Record<string, DeviceState & { twinError?: string }>;\n };\nexport type DeviceFilter = {\n key: string;\n operator: FilterOperator;\n scope: Scope;\n value: string | string[];\n};\ntype FilteringAttributes = {\n identityAttributes: string[];\n inventoryAttributes: string[];\n systemAttributes: string[];\n tagAttributes: string[];\n};\ntype FilteringAttributesConfig = {\n attributes: Record<string, string[]>;\n count: number;\n limit: number;\n};\n\nexport type DeviceGroups = {\n byId: Record<string, DeviceGroup>;\n selectedGroup?: string;\n};\nexport type DeviceSliceType = {\n byId: Record<string, Device>;\n byStatus: Record<DeviceAuthState, { counts: DeviceTierLimits & { total: number }; deviceIds: string[] }>;\n deviceList: DeviceListState;\n filteringAttributes: FilteringAttributes;\n filteringAttributesConfig: FilteringAttributesConfig;\n filteringAttributesLimit: number;\n filters: DeviceFilter[];\n groups: DeviceGroups;\n limits: DeviceTierLimits;\n reports: DeviceReport[];\n total: number;\n};\nexport const initialState: DeviceSliceType = {\n byId: {\n // [deviceId]: {\n // ...,\n // twinsByIntegration: { [external.provider.id]: twinData }\n // }\n },\n byStatus: {\n [DEVICE_STATES.accepted]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.pending]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.preauth]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.rejected]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } }\n },\n deviceList: {\n deviceIds: [],\n ...DEVICE_LIST_DEFAULTS,\n selectedAttributes: [],\n selectedIssues: [],\n selection: [],\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n },\n state: DEVICE_STATES.accepted,\n total: 0,\n refreshTrigger: false,\n isLoading: false,\n detailsTab: '',\n open: false\n },\n filters: [\n // { key: 'device_type', value: 'raspberry', operator: '$eq', scope: 'inventory' }\n ],\n filteringAttributes: { identityAttributes: [], inventoryAttributes: [], systemAttributes: [], tagAttributes: [] },\n filteringAttributesLimit: 10,\n filteringAttributesConfig: {\n attributes: {\n // inventory: ['some_attribute']\n },\n count: 0,\n limit: 100\n },\n reports: [\n // { items: [{ key: \"someKey\", count: 42 }], otherCount: 123, total: <otherCount + itemsCount> }\n ],\n total: 0,\n limits: {\n standard: 0,\n micro: 0,\n system: 0\n },\n groups: {\n byId: {\n // groupName: { deviceIds: [], total: 0, filters: [] },\n // dynamo: { deviceIds: [], total: 3, filters: [{ a: 1 }] }\n },\n selectedGroup: undefined\n }\n};\n\nexport const devicesSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n receivedGroups: (state, action: PayloadAction<Record<string, DeviceGroup>>) => {\n state.groups.byId = action.payload;\n },\n addToGroup: (state, action: PayloadAction<{ deviceIds: string[]; group: string }>) => {\n const { group, deviceIds } = action.payload;\n const maybeExistingGroup = {\n filters: [],\n deviceIds: [],\n ...state.groups.byId[group]\n };\n state.groups.byId[group] = {\n ...maybeExistingGroup,\n deviceIds: [...maybeExistingGroup.deviceIds, ...deviceIds].filter(duplicateFilter),\n total: (maybeExistingGroup.total || 0) + 1\n };\n },\n removeFromGroup: (state, action: PayloadAction<{ deviceIds: string[]; group: string }>) => {\n const { group, deviceIds: removedIds } = action.payload;\n const { deviceIds = [], total = 0, ...maybeExistingGroup } = state.groups.byId[group] || {};\n const changedGroup = {\n ...maybeExistingGroup,\n deviceIds: deviceIds.filter(id => !removedIds.includes(id)),\n total: Math.max(total - removedIds.length, 0)\n };\n if (changedGroup.total || changedGroup.deviceIds.length) {\n state.groups.byId[group] = changedGroup;\n return;\n } else if (state.groups.selectedGroup === group) {\n state.groups.selectedGroup = undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [group]: removal, ...remainingById } = state.groups.byId;\n state.groups.byId = remainingById;\n },\n addGroup: (state, action: PayloadAction<{ group: DeviceGroup; groupName: string }>) => {\n const { groupName, group } = action.payload;\n state.groups.byId[groupName] = {\n ...state.groups.byId[groupName],\n ...group\n };\n },\n selectGroup: (state, { payload: group }: PayloadAction<string | undefined>) => {\n state.deviceList.deviceIds =\n group && state.groups.byId[group] && state.groups.byId[group].deviceIds && state.groups.byId[group].deviceIds.length > 0\n ? state.groups.byId[group].deviceIds\n : [];\n state.groups.selectedGroup = group;\n },\n removeGroup: (state, action: PayloadAction<string>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [action.payload]: removal, ...remainingById } = state.groups.byId;\n state.groups.byId = remainingById;\n state.groups.selectedGroup = state.groups.selectedGroup === action.payload ? undefined : state.groups.selectedGroup;\n },\n setDeviceListState: (state, action: PayloadAction<Partial<DeviceListState>>) => {\n state.deviceList = {\n ...state.deviceList,\n ...action.payload,\n sort: {\n ...state.deviceList.sort,\n ...action.payload.sort\n }\n };\n },\n setFilterAttributes: (state, action: PayloadAction<FilteringAttributes>) => {\n state.filteringAttributes = action.payload;\n },\n setFilterablesConfig: (state, action: PayloadAction<FilteringAttributesConfig>) => {\n state.filteringAttributesConfig = action.payload;\n },\n receivedDevices: (state, action: PayloadAction<Record<string, Device>>) => {\n state.byId = {\n ...state.byId,\n ...action.payload\n };\n },\n setDeviceFilters: (state, action: PayloadAction<DeviceFilter[]>) => {\n if (deepCompare(action.payload, state.filters)) {\n return;\n }\n state.filters = action.payload.filter(filter => filter.key && filter.operator && filter.scope && typeof filter.value !== 'undefined');\n },\n setDeviceReports: (state, action: PayloadAction<DeviceReport[]>) => {\n state.reports = action.payload;\n },\n setDevicesByStatus: (state, action: PayloadAction<{ deviceIds: string[]; status: DeviceAuthState; total: number }>) => {\n const { status, total, deviceIds } = action.payload;\n if (total) {\n state.byStatus[status].deviceIds = deviceIds;\n state.byStatus[status].counts.total = total;\n }\n },\n setDevicesCountByStatus: (state, action: PayloadAction<{ countsPerTier: DeviceTierLimits; status: DeviceAuthState }>) => {\n const { countsPerTier, status } = action.payload;\n state.byStatus[status].counts = { ...countsPerTier, total: Object.values(countsPerTier).reduce((accu, tieredCount) => (accu += tieredCount), 0) };\n },\n setDeviceLimits: (state, action: PayloadAction<DeviceTierLimits>) => {\n state.limits = action.payload;\n },\n receivedDevice: (state, action: PayloadAction<{ id: string } & Partial<Device>>) => {\n state.byId[action.payload.id] = {\n ...state.byId[action.payload.id],\n ...action.payload\n };\n },\n maybeUpdateDevicesByStatus: (state, action: PayloadAction<{ authId?: string; deviceId: string }>) => {\n const { deviceId, authId } = action.payload;\n const device = state.byId[deviceId];\n const hasMultipleAuthSets = authId && device.auth_sets ? device.auth_sets.filter(authset => authset.id !== authId).length > 0 : false;\n if (!hasMultipleAuthSets && (Object.values(DEVICE_STATES) as string[]).includes(device.status)) {\n const deviceIds = state.byStatus[device.status].deviceIds.filter(id => id !== deviceId);\n const deviceTier = (device.attributes.tier as string) || 'standard';\n state.byStatus[device.status] = {\n deviceIds,\n counts: {\n ...state.byStatus[device.status].counts,\n [deviceTier]: Math.max(0, state.byStatus[device.status].counts[deviceTier] - 1),\n total: Math.max(0, state.byStatus[device.status].counts.total - 1)\n }\n };\n }\n }\n }\n});\n\nexport const actions = devicesSlice.actions;\nexport default devicesSlice.reducer;\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- require("../chunk-CKQMccvm.cjs");
3
2
  const require_devicesSlice_index = require("./index.cjs");
4
3
  let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
5
4
  //#region src/devicesSlice/mocks.ts
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.cjs","names":["initialState","DEVICE_STATES","SORTING_OPTIONS"],"sources":["../../src/devicesSlice/mocks.ts"],"sourcesContent":["// Copyright 2025 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 { DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport { initialState } from './index';\n\nconst deviceTypes = { qemu: 'qemux86-64' };\nconst checkInTimeRounded = '2019-01-01T00:00:00.000Z';\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\nconst defaultMacAddress = 'dc:a6:32:12:ad:bf';\nconst defaultCreationDate = '2019-01-13T06:25:00.000Z';\n\nexport const mockState = {\n ...initialState,\n byId: {\n a1: {\n id: 'a1',\n attributes: {\n device_type: ['raspberrypi4'],\n ipv4_wlan0: '192.168.10.141/24'\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n b1: {\n id: 'b1',\n attributes: {\n ipv4_wlan0: '192.168.10.141/24',\n device_type: [deviceTypes.qemu]\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n c1: {\n id: 'c1',\n auth_sets: [],\n attributes: {\n device_type: ['qemux86-128']\n }\n }\n },\n byStatus: {\n accepted: { deviceIds: ['a1', 'b1'], counts: { micro: 0, standard: 2, system: 0 } },\n pending: { deviceIds: ['c1'], counts: { micro: 0, standard: 1, system: 0 } },\n preauthorized: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } },\n rejected: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } }\n },\n deviceList: {\n deviceIds: [],\n isLoading: false,\n page: 1,\n perPage: 20,\n selectedAttributes: [],\n selectedIssues: [],\n selection: [],\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n },\n state: DEVICE_STATES.accepted,\n total: 0\n },\n filteringAttributes: {\n identityAttributes: ['mac'],\n inventoryAttributes: ['artifact_name'],\n systemAttributes: [],\n tagAttributes: []\n },\n filteringAttributesLimit: 10,\n filters: [],\n groups: {\n byId: {\n testGroup: {\n deviceIds: ['a1', 'b1'],\n filters: [],\n total: 2\n },\n testGroupDynamic: {\n id: 'filter1',\n name: 'filter1',\n filters: [{ scope: 'system', key: 'group', operator: '$eq', value: 'things' }]\n } as const\n },\n selectedGroup: undefined\n },\n limits: { standard: 500, micro: 0, system: 0 }\n};\n"],"mappings":";;;;;AAgBA,MAAM,cAAc,EAAE,MAAM,cAAc;AAC1C,MAAM,qBAAqB;AAC3B,MAAM,mBAAmB;AACzB,MAAM,oBAAoB;AAC1B,MAAM,sBAAsB;AAE5B,MAAa,YAAY;CACvB,GAAGA,2BAAAA;CACH,MAAM;EACJ,IAAI;GACF,IAAI;GACJ,YAAY;IACV,aAAa,CAAC,eAAe;IAC7B,YAAY;IACb;GACD,QAAQ,EACN,eAAe,oBAChB;GACD,eAAe;GACf,qBAAqB;GACrB,uBAAuB;GACvB,eAAe,EAAE,KAAK,mBAAmB;GACzC,QAAQC,+BAAAA,cAAc;GACtB,iBAAiB;GACjB,YAAY;GACZ,YAAY;GACZ,WAAW,CACT;IACE,IAAI;IACJ,eAAe,EAAE,KAAK,mBAAmB;IACzC,QAAQ;IACR,IAAI;IACJ,QAAQA,+BAAAA,cAAc;IACvB,CACF;GACF;EACD,IAAI;GACF,IAAI;GACJ,YAAY;IACV,YAAY;IACZ,aAAa,CAAC,YAAY,KAAK;IAChC;GACD,QAAQ,EACN,eAAe,oBAChB;GACD,eAAe;GACf,qBAAqB;GACrB,uBAAuB;GACvB,eAAe,EAAE,KAAK,mBAAmB;GACzC,QAAQA,+BAAAA,cAAc;GACtB,iBAAiB;GACjB,YAAY;GACZ,YAAY;GACZ,WAAW,CACT;IACE,IAAI;IACJ,eAAe,EAAE,KAAK,mBAAmB;IACzC,QAAQ;IACR,IAAI;IACJ,QAAQA,+BAAAA,cAAc;IACvB,CACF;GACF;EACD,IAAI;GACF,IAAI;GACJ,WAAW,EAAE;GACb,YAAY,EACV,aAAa,CAAC,cAAc,EAC7B;GACF;EACF;CACD,UAAU;EACR,UAAU;GAAE,WAAW,CAAC,MAAM,KAAK;GAAE,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;IAAG;GAAE;EACnF,SAAS;GAAE,WAAW,CAAC,KAAK;GAAE,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;IAAG;GAAE;EAC5E,eAAe;GAAE,WAAW,EAAE;GAAE,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;IAAG;GAAE;EAC9E,UAAU;GAAE,WAAW,EAAE;GAAE,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;IAAG;GAAE;EAC1E;CACD,YAAY;EACV,WAAW,EAAE;EACb,WAAW;EACX,MAAM;EACN,SAAS;EACT,oBAAoB,EAAE;EACtB,gBAAgB,EAAE;EAClB,WAAW,EAAE;EACb,MAAM,EACJ,WAAWC,+BAAAA,gBAAgB,MAG5B;EACD,OAAOD,+BAAAA,cAAc;EACrB,OAAO;EACR;CACD,qBAAqB;EACnB,oBAAoB,CAAC,MAAM;EAC3B,qBAAqB,CAAC,gBAAgB;EACtC,kBAAkB,EAAE;EACpB,eAAe,EAAE;EAClB;CACD,0BAA0B;CAC1B,SAAS,EAAE;CACX,QAAQ;EACN,MAAM;GACJ,WAAW;IACT,WAAW,CAAC,MAAM,KAAK;IACvB,SAAS,EAAE;IACX,OAAO;IACR;GACD,kBAAkB;IAChB,IAAI;IACJ,MAAM;IACN,SAAS,CAAC;KAAE,OAAO;KAAU,KAAK;KAAS,UAAU;KAAO,OAAO;KAAU,CAAC;IAC/E;GACF;EACD,eAAe,KAAA;EAChB;CACD,QAAQ;EAAE,UAAU;EAAK,OAAO;EAAG,QAAQ;EAAG;CAC/C"}
1
+ {"version":3,"file":"mocks.cjs","names":["initialState","DEVICE_STATES","SORTING_OPTIONS"],"sources":["../../src/devicesSlice/mocks.ts"],"sourcesContent":["// Copyright 2025 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 { DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport { initialState } from './index';\n\nconst deviceTypes = { qemu: 'qemux86-64' };\nconst checkInTimeRounded = '2019-01-01T00:00:00.000Z';\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\nconst defaultMacAddress = 'dc:a6:32:12:ad:bf';\nconst defaultCreationDate = '2019-01-13T06:25:00.000Z';\n\nexport const mockState = {\n ...initialState,\n byId: {\n a1: {\n id: 'a1',\n attributes: {\n device_type: ['raspberrypi4'],\n ipv4_wlan0: '192.168.10.141/24'\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n b1: {\n id: 'b1',\n attributes: {\n ipv4_wlan0: '192.168.10.141/24',\n device_type: [deviceTypes.qemu]\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n c1: {\n id: 'c1',\n auth_sets: [],\n attributes: {\n device_type: ['qemux86-128']\n }\n }\n },\n byStatus: {\n accepted: { deviceIds: ['a1', 'b1'], counts: { micro: 0, standard: 2, system: 0 } },\n pending: { deviceIds: ['c1'], counts: { micro: 0, standard: 1, system: 0 } },\n preauthorized: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } },\n rejected: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } }\n },\n deviceList: {\n deviceIds: [],\n isLoading: false,\n page: 1,\n perPage: 20,\n selectedAttributes: [],\n selectedIssues: [],\n selection: [],\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n },\n state: DEVICE_STATES.accepted,\n total: 0\n },\n filteringAttributes: {\n identityAttributes: ['mac'],\n inventoryAttributes: ['artifact_name'],\n systemAttributes: [],\n tagAttributes: []\n },\n filteringAttributesLimit: 10,\n filters: [],\n groups: {\n byId: {\n testGroup: {\n deviceIds: ['a1', 'b1'],\n filters: [],\n total: 2\n },\n testGroupDynamic: {\n id: 'filter1',\n name: 'filter1',\n filters: [{ scope: 'system', key: 'group', operator: '$eq', value: 'things' }]\n } as const\n },\n selectedGroup: undefined\n },\n limits: { standard: 500, micro: 0, system: 0 }\n};\n"],"mappings":";;;;AAgBA,MAAM,cAAc,EAAE,MAAM,aAAa;AACzC,MAAM,qBAAqB;AAC3B,MAAM,mBAAmB;AACzB,MAAM,oBAAoB;AAC1B,MAAM,sBAAsB;AAE5B,MAAa,YAAY;CACvB,GAAGA,2BAAAA;CACH,MAAM;EACJ,IAAI;GACF,IAAI;GACJ,YAAY;IACV,aAAa,CAAC,cAAc;IAC5B,YAAY;GACd;GACA,QAAQ,EACN,eAAe,mBACjB;GACA,eAAe;GACf,qBAAqB;GACrB,uBAAuB;GACvB,eAAe,EAAE,KAAK,kBAAkB;GACxC,QAAQC,+BAAAA,cAAc;GACtB,iBAAiB;GACjB,YAAY;GACZ,YAAY;GACZ,WAAW,CACT;IACE,IAAI;IACJ,eAAe,EAAE,KAAK,kBAAkB;IACxC,QAAQ;IACR,IAAI;IACJ,QAAQA,+BAAAA,cAAc;GACxB,CACF;EACF;EACA,IAAI;GACF,IAAI;GACJ,YAAY;IACV,YAAY;IACZ,aAAa,CAAC,YAAY,IAAI;GAChC;GACA,QAAQ,EACN,eAAe,mBACjB;GACA,eAAe;GACf,qBAAqB;GACrB,uBAAuB;GACvB,eAAe,EAAE,KAAK,kBAAkB;GACxC,QAAQA,+BAAAA,cAAc;GACtB,iBAAiB;GACjB,YAAY;GACZ,YAAY;GACZ,WAAW,CACT;IACE,IAAI;IACJ,eAAe,EAAE,KAAK,kBAAkB;IACxC,QAAQ;IACR,IAAI;IACJ,QAAQA,+BAAAA,cAAc;GACxB,CACF;EACF;EACA,IAAI;GACF,IAAI;GACJ,WAAW,CAAC;GACZ,YAAY,EACV,aAAa,CAAC,aAAa,EAC7B;EACF;CACF;CACA,UAAU;EACR,UAAU;GAAE,WAAW,CAAC,MAAM,IAAI;GAAG,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;GAAE;EAAE;EAClF,SAAS;GAAE,WAAW,CAAC,IAAI;GAAG,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;GAAE;EAAE;EAC3E,eAAe;GAAE,WAAW,CAAC;GAAG,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;GAAE;EAAE;EAC7E,UAAU;GAAE,WAAW,CAAC;GAAG,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;GAAE;EAAE;CAC1E;CACA,YAAY;EACV,WAAW,CAAC;EACZ,WAAW;EACX,MAAM;EACN,SAAS;EACT,oBAAoB,CAAC;EACrB,gBAAgB,CAAC;EACjB,WAAW,CAAC;EACZ,MAAM,EACJ,WAAWC,+BAAAA,gBAAgB,KAG7B;EACA,OAAOD,+BAAAA,cAAc;EACrB,OAAO;CACT;CACA,qBAAqB;EACnB,oBAAoB,CAAC,KAAK;EAC1B,qBAAqB,CAAC,eAAe;EACrC,kBAAkB,CAAC;EACnB,eAAe,CAAC;CAClB;CACA,0BAA0B;CAC1B,SAAS,CAAC;CACV,QAAQ;EACN,MAAM;GACJ,WAAW;IACT,WAAW,CAAC,MAAM,IAAI;IACtB,SAAS,CAAC;IACV,OAAO;GACT;GACA,kBAAkB;IAChB,IAAI;IACJ,MAAM;IACN,SAAS,CAAC;KAAE,OAAO;KAAU,KAAK;KAAS,UAAU;KAAO,OAAO;IAAS,CAAC;GAC/E;EACF;EACA,eAAe,KAAA;CACjB;CACA,QAAQ;EAAE,UAAU;EAAK,OAAO;EAAG,QAAQ;CAAE;AAC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.js","names":[],"sources":["../../src/devicesSlice/mocks.ts"],"sourcesContent":["// Copyright 2025 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 { DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport { initialState } from './index';\n\nconst deviceTypes = { qemu: 'qemux86-64' };\nconst checkInTimeRounded = '2019-01-01T00:00:00.000Z';\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\nconst defaultMacAddress = 'dc:a6:32:12:ad:bf';\nconst defaultCreationDate = '2019-01-13T06:25:00.000Z';\n\nexport const mockState = {\n ...initialState,\n byId: {\n a1: {\n id: 'a1',\n attributes: {\n device_type: ['raspberrypi4'],\n ipv4_wlan0: '192.168.10.141/24'\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n b1: {\n id: 'b1',\n attributes: {\n ipv4_wlan0: '192.168.10.141/24',\n device_type: [deviceTypes.qemu]\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n c1: {\n id: 'c1',\n auth_sets: [],\n attributes: {\n device_type: ['qemux86-128']\n }\n }\n },\n byStatus: {\n accepted: { deviceIds: ['a1', 'b1'], counts: { micro: 0, standard: 2, system: 0 } },\n pending: { deviceIds: ['c1'], counts: { micro: 0, standard: 1, system: 0 } },\n preauthorized: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } },\n rejected: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } }\n },\n deviceList: {\n deviceIds: [],\n isLoading: false,\n page: 1,\n perPage: 20,\n selectedAttributes: [],\n selectedIssues: [],\n selection: [],\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n },\n state: DEVICE_STATES.accepted,\n total: 0\n },\n filteringAttributes: {\n identityAttributes: ['mac'],\n inventoryAttributes: ['artifact_name'],\n systemAttributes: [],\n tagAttributes: []\n },\n filteringAttributesLimit: 10,\n filters: [],\n groups: {\n byId: {\n testGroup: {\n deviceIds: ['a1', 'b1'],\n filters: [],\n total: 2\n },\n testGroupDynamic: {\n id: 'filter1',\n name: 'filter1',\n filters: [{ scope: 'system', key: 'group', operator: '$eq', value: 'things' }]\n } as const\n },\n selectedGroup: undefined\n },\n limits: { standard: 500, micro: 0, system: 0 }\n};\n"],"mappings":";;;AAgBA,MAAM,cAAc,EAAE,MAAM,cAAc;AAC1C,MAAM,qBAAqB;AAC3B,MAAM,mBAAmB;AACzB,MAAM,oBAAoB;AAC1B,MAAM,sBAAsB;AAE5B,MAAa,YAAY;CACvB,GAAG;CACH,MAAM;EACJ,IAAI;GACF,IAAI;GACJ,YAAY;IACV,aAAa,CAAC,eAAe;IAC7B,YAAY;IACb;GACD,QAAQ,EACN,eAAe,oBAChB;GACD,eAAe;GACf,qBAAqB;GACrB,uBAAuB;GACvB,eAAe,EAAE,KAAK,mBAAmB;GACzC,QAAQ,cAAc;GACtB,iBAAiB;GACjB,YAAY;GACZ,YAAY;GACZ,WAAW,CACT;IACE,IAAI;IACJ,eAAe,EAAE,KAAK,mBAAmB;IACzC,QAAQ;IACR,IAAI;IACJ,QAAQ,cAAc;IACvB,CACF;GACF;EACD,IAAI;GACF,IAAI;GACJ,YAAY;IACV,YAAY;IACZ,aAAa,CAAC,YAAY,KAAK;IAChC;GACD,QAAQ,EACN,eAAe,oBAChB;GACD,eAAe;GACf,qBAAqB;GACrB,uBAAuB;GACvB,eAAe,EAAE,KAAK,mBAAmB;GACzC,QAAQ,cAAc;GACtB,iBAAiB;GACjB,YAAY;GACZ,YAAY;GACZ,WAAW,CACT;IACE,IAAI;IACJ,eAAe,EAAE,KAAK,mBAAmB;IACzC,QAAQ;IACR,IAAI;IACJ,QAAQ,cAAc;IACvB,CACF;GACF;EACD,IAAI;GACF,IAAI;GACJ,WAAW,EAAE;GACb,YAAY,EACV,aAAa,CAAC,cAAc,EAC7B;GACF;EACF;CACD,UAAU;EACR,UAAU;GAAE,WAAW,CAAC,MAAM,KAAK;GAAE,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;IAAG;GAAE;EACnF,SAAS;GAAE,WAAW,CAAC,KAAK;GAAE,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;IAAG;GAAE;EAC5E,eAAe;GAAE,WAAW,EAAE;GAAE,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;IAAG;GAAE;EAC9E,UAAU;GAAE,WAAW,EAAE;GAAE,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;IAAG;GAAE;EAC1E;CACD,YAAY;EACV,WAAW,EAAE;EACb,WAAW;EACX,MAAM;EACN,SAAS;EACT,oBAAoB,EAAE;EACtB,gBAAgB,EAAE;EAClB,WAAW,EAAE;EACb,MAAM,EACJ,WAAW,gBAAgB,MAG5B;EACD,OAAO,cAAc;EACrB,OAAO;EACR;CACD,qBAAqB;EACnB,oBAAoB,CAAC,MAAM;EAC3B,qBAAqB,CAAC,gBAAgB;EACtC,kBAAkB,EAAE;EACpB,eAAe,EAAE;EAClB;CACD,0BAA0B;CAC1B,SAAS,EAAE;CACX,QAAQ;EACN,MAAM;GACJ,WAAW;IACT,WAAW,CAAC,MAAM,KAAK;IACvB,SAAS,EAAE;IACX,OAAO;IACR;GACD,kBAAkB;IAChB,IAAI;IACJ,MAAM;IACN,SAAS,CAAC;KAAE,OAAO;KAAU,KAAK;KAAS,UAAU;KAAO,OAAO;KAAU,CAAC;IAC/E;GACF;EACD,eAAe,KAAA;EAChB;CACD,QAAQ;EAAE,UAAU;EAAK,OAAO;EAAG,QAAQ;EAAG;CAC/C"}
1
+ {"version":3,"file":"mocks.js","names":[],"sources":["../../src/devicesSlice/mocks.ts"],"sourcesContent":["// Copyright 2025 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 { DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport { initialState } from './index';\n\nconst deviceTypes = { qemu: 'qemux86-64' };\nconst checkInTimeRounded = '2019-01-01T00:00:00.000Z';\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\nconst defaultMacAddress = 'dc:a6:32:12:ad:bf';\nconst defaultCreationDate = '2019-01-13T06:25:00.000Z';\n\nexport const mockState = {\n ...initialState,\n byId: {\n a1: {\n id: 'a1',\n attributes: {\n device_type: ['raspberrypi4'],\n ipv4_wlan0: '192.168.10.141/24'\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n b1: {\n id: 'b1',\n attributes: {\n ipv4_wlan0: '192.168.10.141/24',\n device_type: [deviceTypes.qemu]\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n c1: {\n id: 'c1',\n auth_sets: [],\n attributes: {\n device_type: ['qemux86-128']\n }\n }\n },\n byStatus: {\n accepted: { deviceIds: ['a1', 'b1'], counts: { micro: 0, standard: 2, system: 0 } },\n pending: { deviceIds: ['c1'], counts: { micro: 0, standard: 1, system: 0 } },\n preauthorized: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } },\n rejected: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } }\n },\n deviceList: {\n deviceIds: [],\n isLoading: false,\n page: 1,\n perPage: 20,\n selectedAttributes: [],\n selectedIssues: [],\n selection: [],\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n },\n state: DEVICE_STATES.accepted,\n total: 0\n },\n filteringAttributes: {\n identityAttributes: ['mac'],\n inventoryAttributes: ['artifact_name'],\n systemAttributes: [],\n tagAttributes: []\n },\n filteringAttributesLimit: 10,\n filters: [],\n groups: {\n byId: {\n testGroup: {\n deviceIds: ['a1', 'b1'],\n filters: [],\n total: 2\n },\n testGroupDynamic: {\n id: 'filter1',\n name: 'filter1',\n filters: [{ scope: 'system', key: 'group', operator: '$eq', value: 'things' }]\n } as const\n },\n selectedGroup: undefined\n },\n limits: { standard: 500, micro: 0, system: 0 }\n};\n"],"mappings":";;;AAgBA,MAAM,cAAc,EAAE,MAAM,aAAa;AACzC,MAAM,qBAAqB;AAC3B,MAAM,mBAAmB;AACzB,MAAM,oBAAoB;AAC1B,MAAM,sBAAsB;AAE5B,MAAa,YAAY;CACvB,GAAG;CACH,MAAM;EACJ,IAAI;GACF,IAAI;GACJ,YAAY;IACV,aAAa,CAAC,cAAc;IAC5B,YAAY;GACd;GACA,QAAQ,EACN,eAAe,mBACjB;GACA,eAAe;GACf,qBAAqB;GACrB,uBAAuB;GACvB,eAAe,EAAE,KAAK,kBAAkB;GACxC,QAAQ,cAAc;GACtB,iBAAiB;GACjB,YAAY;GACZ,YAAY;GACZ,WAAW,CACT;IACE,IAAI;IACJ,eAAe,EAAE,KAAK,kBAAkB;IACxC,QAAQ;IACR,IAAI;IACJ,QAAQ,cAAc;GACxB,CACF;EACF;EACA,IAAI;GACF,IAAI;GACJ,YAAY;IACV,YAAY;IACZ,aAAa,CAAC,YAAY,IAAI;GAChC;GACA,QAAQ,EACN,eAAe,mBACjB;GACA,eAAe;GACf,qBAAqB;GACrB,uBAAuB;GACvB,eAAe,EAAE,KAAK,kBAAkB;GACxC,QAAQ,cAAc;GACtB,iBAAiB;GACjB,YAAY;GACZ,YAAY;GACZ,WAAW,CACT;IACE,IAAI;IACJ,eAAe,EAAE,KAAK,kBAAkB;IACxC,QAAQ;IACR,IAAI;IACJ,QAAQ,cAAc;GACxB,CACF;EACF;EACA,IAAI;GACF,IAAI;GACJ,WAAW,CAAC;GACZ,YAAY,EACV,aAAa,CAAC,aAAa,EAC7B;EACF;CACF;CACA,UAAU;EACR,UAAU;GAAE,WAAW,CAAC,MAAM,IAAI;GAAG,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;GAAE;EAAE;EAClF,SAAS;GAAE,WAAW,CAAC,IAAI;GAAG,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;GAAE;EAAE;EAC3E,eAAe;GAAE,WAAW,CAAC;GAAG,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;GAAE;EAAE;EAC7E,UAAU;GAAE,WAAW,CAAC;GAAG,QAAQ;IAAE,OAAO;IAAG,UAAU;IAAG,QAAQ;GAAE;EAAE;CAC1E;CACA,YAAY;EACV,WAAW,CAAC;EACZ,WAAW;EACX,MAAM;EACN,SAAS;EACT,oBAAoB,CAAC;EACrB,gBAAgB,CAAC;EACjB,WAAW,CAAC;EACZ,MAAM,EACJ,WAAW,gBAAgB,KAG7B;EACA,OAAO,cAAc;EACrB,OAAO;CACT;CACA,qBAAqB;EACnB,oBAAoB,CAAC,KAAK;EAC1B,qBAAqB,CAAC,eAAe;EACrC,kBAAkB,CAAC;EACnB,eAAe,CAAC;CAClB;CACA,0BAA0B;CAC1B,SAAS,CAAC;CACV,QAAQ;EACN,MAAM;GACJ,WAAW;IACT,WAAW,CAAC,MAAM,IAAI;IACtB,SAAS,CAAC;IACV,OAAO;GACT;GACA,kBAAkB;IAChB,IAAI;IACJ,MAAM;IACN,SAAS,CAAC;KAAE,OAAO;KAAU,KAAK;KAAS,UAAU;KAAO,OAAO;IAAS,CAAC;GAC/E;EACF;EACA,eAAe,KAAA;CACjB;CACA,QAAQ;EAAE,UAAU;EAAK,OAAO;EAAG,QAAQ;CAAE;AAC/C"}
@@ -1,5 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- require("../chunk-CKQMccvm.cjs");
3
2
  const require_constants = require("../constants.cjs");
4
3
  let _reduxjs_toolkit = require("@reduxjs/toolkit");
5
4
  let _northern_tech_utils_helpers = require("@northern.tech/utils/helpers");