@northern.tech/store 0.36.0 → 0.36.2
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.
- package/dist/actions.cjs.map +1 -1
- package/dist/actions.d.cts +123 -134
- package/dist/actions.d.ts +123 -134
- package/dist/actions.js.map +1 -1
- package/dist/api/general-api.cjs +1 -1
- package/dist/api/general-api.cjs.map +1 -1
- package/dist/api/general-api.d.cts +9 -10
- package/dist/api/general-api.d.ts +9 -10
- package/dist/api/general-api.js.map +1 -1
- package/dist/api/users-api.cjs +1 -1
- package/dist/api/users-api.cjs.map +1 -1
- package/dist/api/users-api.d.cts +1 -2
- package/dist/api/users-api.d.ts +1 -2
- package/dist/api/users-api.js.map +1 -1
- package/dist/appSlice/constants.cjs +0 -1
- package/dist/appSlice/constants.cjs.map +1 -1
- package/dist/appSlice/constants.d.cts +1 -1
- package/dist/appSlice/constants.d.ts +1 -1
- package/dist/appSlice/constants.js.map +1 -1
- package/dist/appSlice/index.cjs +2 -4
- package/dist/appSlice/index.cjs.map +1 -1
- package/dist/appSlice/index.d.cts +2 -2
- package/dist/appSlice/index.d.ts +2 -2
- package/dist/appSlice/index.js +2 -3
- package/dist/appSlice/index.js.map +1 -1
- package/dist/appSlice/mocks.cjs.map +1 -1
- package/dist/appSlice/mocks.d.cts +1 -1
- package/dist/appSlice/mocks.d.ts +1 -1
- package/dist/appSlice/mocks.js.map +1 -1
- package/dist/appSlice/selectors.cjs +2 -6
- package/dist/appSlice/selectors.cjs.map +1 -1
- package/dist/appSlice/selectors.d.cts +35 -128
- package/dist/appSlice/selectors.d.ts +35 -128
- package/dist/appSlice/selectors.js +2 -5
- package/dist/appSlice/selectors.js.map +1 -1
- package/dist/appSlice/thunks.cjs +0 -1
- package/dist/appSlice/thunks.d.cts +6 -31
- package/dist/appSlice/thunks.d.ts +6 -31
- package/dist/appSlice/thunks.js +2 -2
- package/dist/auth.cjs +1 -1
- package/dist/auth.cjs.map +1 -1
- package/dist/auth.d.cts +1 -1
- package/dist/auth.d.ts +1 -1
- package/dist/auth.js.map +1 -1
- package/dist/commonConstants.d.cts +1 -1
- package/dist/commonConstants.d.ts +1 -1
- package/dist/commonSelectors.cjs +1 -1
- package/dist/commonSelectors.cjs.map +1 -1
- package/dist/commonSelectors.d.cts +164 -166
- package/dist/commonSelectors.d.ts +164 -166
- package/dist/commonSelectors.js.map +1 -1
- package/dist/{constants-CIx3fnBv.d.cts → constants-6kYRTdox.d.cts} +1 -1
- package/dist/{constants-BciiayPt.d.ts → constants-6kYRTdox.d.ts} +1 -1
- package/dist/{constants-BIIEMVoG.d.ts → constants-B_7FCJQX.d.cts} +3 -6
- package/dist/{constants-BFTS6mge.d.cts → constants-B_7FCJQX.d.ts} +3 -6
- package/dist/{constants-D41U_jbR.d.cts → constants-BwKiHHaB.d.cts} +1 -1
- package/dist/{constants-5cdwz1iH.d.ts → constants-BwKiHHaB.d.ts} +1 -1
- package/dist/{constants-DK7fI3Rh.d.cts → constants-Db_RBdlV.d.cts} +1 -1
- package/dist/{constants-BWEsNG5c.d.ts → constants-Db_RBdlV.d.ts} +1 -1
- package/dist/{constants-CNhpIMME.d.cts → constants-OZiiFKiA.d.cts} +1 -1
- package/dist/{constants-y2XVLQWf.d.ts → constants-OZiiFKiA.d.ts} +1 -1
- package/dist/{constants-CjO3_FOH.d.ts → constants-OcdoVk6f.d.ts} +3 -4
- package/dist/{constants-G3wymKIl.d.cts → constants-Sn4gnNA3.d.cts} +1 -1
- package/dist/{constants-Cpgyuy_r.d.ts → constants-Sn4gnNA3.d.ts} +1 -1
- package/dist/{constants-BrGIx40B.d.cts → constants-_p6w8uEp.d.cts} +3 -4
- package/dist/constants.cjs +0 -1
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +8 -8
- package/dist/constants.d.ts +8 -8
- package/dist/constants.js.map +1 -1
- package/dist/deploymentsSlice/constants.d.cts +1 -1
- package/dist/deploymentsSlice/constants.d.ts +1 -1
- package/dist/deploymentsSlice/index.cjs +0 -1
- package/dist/deploymentsSlice/index.cjs.map +1 -1
- package/dist/deploymentsSlice/index.d.cts +1 -1
- package/dist/deploymentsSlice/index.d.ts +1 -1
- package/dist/deploymentsSlice/index.js.map +1 -1
- package/dist/deploymentsSlice/mocks.cjs.map +1 -1
- package/dist/deploymentsSlice/mocks.d.cts +1 -1
- package/dist/deploymentsSlice/mocks.d.ts +1 -1
- package/dist/deploymentsSlice/mocks.js.map +1 -1
- package/dist/deploymentsSlice/selectors.cjs +0 -1
- package/dist/deploymentsSlice/selectors.cjs.map +1 -1
- package/dist/deploymentsSlice/selectors.d.cts +15 -16
- package/dist/deploymentsSlice/selectors.d.ts +15 -16
- package/dist/deploymentsSlice/selectors.js.map +1 -1
- package/dist/deploymentsSlice/thunks.d.cts +21 -22
- package/dist/deploymentsSlice/thunks.d.ts +21 -22
- package/dist/devicesSlice/constants.d.cts +1 -1
- package/dist/devicesSlice/constants.d.ts +1 -1
- package/dist/devicesSlice/index.cjs +0 -1
- package/dist/devicesSlice/index.cjs.map +1 -1
- package/dist/devicesSlice/index.d.cts +1 -1
- package/dist/devicesSlice/index.d.ts +1 -1
- package/dist/devicesSlice/index.js.map +1 -1
- package/dist/devicesSlice/mocks.cjs +0 -1
- package/dist/devicesSlice/mocks.cjs.map +1 -1
- package/dist/devicesSlice/mocks.js.map +1 -1
- package/dist/devicesSlice/selectors.cjs +0 -1
- package/dist/devicesSlice/selectors.cjs.map +1 -1
- package/dist/devicesSlice/selectors.d.cts +79 -81
- package/dist/devicesSlice/selectors.d.ts +79 -81
- package/dist/devicesSlice/selectors.js.map +1 -1
- package/dist/devicesSlice/thunks.d.cts +67 -69
- package/dist/devicesSlice/thunks.d.ts +67 -69
- package/dist/{index-DUvrw_Ed.d.ts → index-5Q-iI4EB.d.cts} +17 -20
- package/dist/index-BBsUj1a8.d.ts +68 -0
- package/dist/index-BLvjQfGj.d.ts +119 -0
- package/dist/{index-BP0uAq36.d.cts → index-Bb4yvvgG.d.ts} +25 -28
- package/dist/index-Bj3OArhr.d.cts +68 -0
- package/dist/{index-CT5hgXm9.d.cts → index-ByfjrTdH.d.ts} +16 -19
- package/dist/index-C8QadAm7.d.cts +119 -0
- package/dist/{index-BI9O8JWe.d.ts → index-CPdMUfRr.d.ts} +41 -44
- package/dist/index-CSk4ENmk.d.cts +149 -0
- package/dist/index-Cf81vLTi.d.ts +149 -0
- package/dist/index-DBUt8xVc.d.cts +61 -0
- package/dist/index-DBUt8xVc.d.ts +61 -0
- package/dist/index-DLDY7bNT.d.ts +165 -0
- package/dist/{index-B64X5ozM.d.cts → index-DbfM03Gj.d.cts} +42 -45
- package/dist/{index-CkwVnIqd.d.ts → index-EPmsL6Lb.d.cts} +26 -29
- package/dist/index-Zs9RnVoR.d.cts +165 -0
- package/dist/liststatehook.cjs +5 -6
- package/dist/liststatehook.cjs.map +1 -1
- package/dist/liststatehook.d.cts +1 -1
- package/dist/liststatehook.d.ts +1 -1
- package/dist/liststatehook.js +1 -1
- package/dist/liststatehook.js.map +1 -1
- package/dist/locationutils.cjs +0 -1
- package/dist/locationutils.cjs.map +1 -1
- package/dist/locationutils.d.cts +3 -3
- package/dist/locationutils.d.ts +3 -3
- package/dist/locationutils.js.map +1 -1
- package/dist/monitorSlice/constants.d.cts +1 -1
- package/dist/monitorSlice/constants.d.ts +1 -1
- package/dist/monitorSlice/index.cjs +0 -1
- package/dist/monitorSlice/index.cjs.map +1 -1
- package/dist/monitorSlice/index.d.cts +1 -1
- package/dist/monitorSlice/index.d.ts +1 -1
- package/dist/monitorSlice/index.js.map +1 -1
- package/dist/monitorSlice/mocks.cjs +0 -1
- package/dist/monitorSlice/mocks.cjs.map +1 -1
- package/dist/monitorSlice/mocks.d.cts +1 -1
- package/dist/monitorSlice/mocks.d.ts +1 -1
- package/dist/monitorSlice/mocks.js.map +1 -1
- package/dist/monitorSlice/selectors.d.cts +1 -1
- package/dist/monitorSlice/selectors.d.ts +1 -1
- package/dist/monitorSlice/thunks.cjs +1 -3
- package/dist/monitorSlice/thunks.cjs.map +1 -1
- package/dist/monitorSlice/thunks.d.cts +11 -13
- package/dist/monitorSlice/thunks.d.ts +11 -13
- package/dist/monitorSlice/thunks.js +1 -2
- package/dist/monitorSlice/thunks.js.map +1 -1
- package/dist/onboardingSlice/constants.cjs.map +1 -1
- package/dist/onboardingSlice/constants.d.cts +1 -1
- package/dist/onboardingSlice/constants.d.ts +1 -1
- package/dist/onboardingSlice/constants.js.map +1 -1
- package/dist/onboardingSlice/index.cjs +0 -1
- package/dist/onboardingSlice/index.cjs.map +1 -1
- package/dist/onboardingSlice/index.d.cts +1 -1
- package/dist/onboardingSlice/index.d.ts +1 -1
- package/dist/onboardingSlice/index.js.map +1 -1
- package/dist/onboardingSlice/mocks.cjs.map +1 -1
- package/dist/onboardingSlice/mocks.d.cts +1 -1
- package/dist/onboardingSlice/mocks.d.ts +1 -1
- package/dist/onboardingSlice/mocks.js.map +1 -1
- package/dist/onboardingSlice/selectors.d.cts +2 -2
- package/dist/onboardingSlice/selectors.d.ts +2 -2
- package/dist/onboardingSlice/thunks.d.cts +22 -23
- package/dist/onboardingSlice/thunks.d.ts +22 -23
- package/dist/organizationSlice/constants.d.cts +1 -1
- package/dist/organizationSlice/constants.d.ts +1 -1
- package/dist/organizationSlice/index.cjs +0 -1
- package/dist/organizationSlice/index.cjs.map +1 -1
- package/dist/organizationSlice/index.d.cts +1 -1
- package/dist/organizationSlice/index.d.ts +1 -1
- package/dist/organizationSlice/index.js.map +1 -1
- package/dist/organizationSlice/mocks.cjs +0 -1
- package/dist/organizationSlice/mocks.cjs.map +1 -1
- package/dist/organizationSlice/mocks.d.cts +3 -4
- package/dist/organizationSlice/mocks.d.ts +3 -4
- package/dist/organizationSlice/mocks.js.map +1 -1
- package/dist/organizationSlice/selectors.cjs +0 -1
- package/dist/organizationSlice/selectors.cjs.map +1 -1
- package/dist/organizationSlice/selectors.d.cts +78 -81
- package/dist/organizationSlice/selectors.d.ts +78 -81
- package/dist/organizationSlice/selectors.js.map +1 -1
- package/dist/organizationSlice/thunks.d.cts +69 -72
- package/dist/organizationSlice/thunks.d.ts +69 -72
- package/dist/organizationSlice/types.d.cts +1 -1
- package/dist/organizationSlice/types.d.ts +1 -1
- package/dist/releasesSlice/constants.cjs.map +1 -1
- package/dist/releasesSlice/constants.d.cts +1 -1
- package/dist/releasesSlice/constants.d.ts +1 -1
- package/dist/releasesSlice/constants.js.map +1 -1
- package/dist/releasesSlice/index.cjs +0 -1
- package/dist/releasesSlice/index.cjs.map +1 -1
- package/dist/releasesSlice/index.d.cts +1 -1
- package/dist/releasesSlice/index.d.ts +1 -1
- package/dist/releasesSlice/index.js.map +1 -1
- package/dist/releasesSlice/mocks.cjs +0 -1
- package/dist/releasesSlice/mocks.cjs.map +1 -1
- package/dist/releasesSlice/mocks.d.cts +3 -6
- package/dist/releasesSlice/mocks.d.ts +3 -6
- package/dist/releasesSlice/mocks.js.map +1 -1
- package/dist/releasesSlice/selectors.cjs +0 -1
- package/dist/releasesSlice/selectors.cjs.map +1 -1
- package/dist/releasesSlice/selectors.d.cts +107 -110
- package/dist/releasesSlice/selectors.d.ts +107 -110
- package/dist/releasesSlice/selectors.js.map +1 -1
- package/dist/releasesSlice/thunks.cjs +4 -5
- package/dist/releasesSlice/thunks.cjs.map +1 -1
- package/dist/releasesSlice/thunks.d.cts +52 -55
- package/dist/releasesSlice/thunks.d.ts +52 -55
- package/dist/releasesSlice/thunks.js +3 -4
- package/dist/releasesSlice/thunks.js.map +1 -1
- package/dist/sockethook.cjs +1 -1
- package/dist/sockethook.cjs.map +1 -1
- package/dist/sockethook.js.map +1 -1
- package/dist/{store-BZo47jc-.d.ts → store-Co2ptTSm.d.ts} +30 -35
- package/dist/{store-BhRxVhtL.d.cts → store-Dd0Y2JCN.d.cts} +30 -35
- package/dist/store.cjs +0 -1
- package/dist/store.cjs.map +1 -1
- package/dist/store.d.cts +3 -3
- package/dist/store.d.ts +3 -3
- package/dist/store.js.map +1 -1
- package/dist/storehooks.cjs +6 -14
- package/dist/storehooks.cjs.map +1 -1
- package/dist/storehooks.d.cts +6 -43
- package/dist/storehooks.d.ts +6 -43
- package/dist/storehooks.js +7 -15
- package/dist/storehooks.js.map +1 -1
- package/dist/thunks.cjs +4 -44
- package/dist/thunks.cjs.map +1 -1
- package/dist/thunks.d.cts +2 -2
- package/dist/thunks.d.ts +2 -2
- package/dist/thunks.js +5 -44
- package/dist/thunks.js.map +1 -1
- package/dist/{types-COdPU2QQ.d.cts → types-B33vKVhi.d.cts} +4 -4
- package/dist/{types-BPyM8Inu.d.ts → types-BjtmX60L.d.ts} +4 -4
- package/dist/useDeploymentDevice.cjs +1 -1
- package/dist/useDeploymentDevice.cjs.map +1 -1
- package/dist/useDeploymentDevice.js.map +1 -1
- package/dist/usersSlice/constants.d.cts +1 -1
- package/dist/usersSlice/constants.d.ts +1 -1
- package/dist/usersSlice/index.cjs +0 -1
- package/dist/usersSlice/index.cjs.map +1 -1
- package/dist/usersSlice/index.d.cts +1 -1
- package/dist/usersSlice/index.d.ts +1 -1
- package/dist/usersSlice/index.js.map +1 -1
- package/dist/usersSlice/mocks.cjs +0 -1
- package/dist/usersSlice/mocks.cjs.map +1 -1
- package/dist/usersSlice/mocks.d.cts +4 -6
- package/dist/usersSlice/mocks.d.ts +4 -6
- package/dist/usersSlice/mocks.js.map +1 -1
- package/dist/usersSlice/selectors.cjs +0 -1
- package/dist/usersSlice/selectors.cjs.map +1 -1
- package/dist/usersSlice/selectors.d.cts +44 -47
- package/dist/usersSlice/selectors.d.ts +44 -47
- package/dist/usersSlice/selectors.js.map +1 -1
- package/dist/usersSlice/thunks.d.cts +92 -95
- package/dist/usersSlice/thunks.d.ts +92 -95
- package/dist/{utils-CHBWS_tH.d.ts → utils-C_9XEfi_.d.ts} +8 -9
- package/dist/{utils-Do9z5TL1.d.cts → utils-DbXmZmGq.d.cts} +8 -9
- package/dist/utils.cjs +0 -3
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +2 -2
- package/dist/utils.d.ts +2 -2
- package/dist/utils.js +1 -2
- package/dist/utils.js.map +1 -1
- package/package.json +7 -7
- package/dist/index-B3IF6ur9.d.cts +0 -168
- package/dist/index-BFlHWzjv.d.cts +0 -152
- package/dist/index-BbaS7MzW.d.cts +0 -71
- package/dist/index-Bp1WpATs.d.ts +0 -154
- package/dist/index-C6wNUfiV.d.ts +0 -71
- package/dist/index-CJkrL0oA.d.ts +0 -64
- package/dist/index-DaD3yorF.d.ts +0 -168
- package/dist/index-DwACbyUg.d.cts +0 -154
- package/dist/index-UPc3wvVd.d.cts +0 -64
- package/dist/index-ez3oxfRo.d.ts +0 -152
- /package/dist/{chunk-CKQMccvm.cjs → chunk-D6vf50IK.cjs} +0 -0
|
@@ -1,28 +1,19 @@
|
|
|
1
|
-
import { o as UserSliceType } from "../index-
|
|
2
|
-
import { i as ReleaseSliceType } from "../index-
|
|
3
|
-
import { n as OnboardingSliceType } from "../index-
|
|
4
|
-
import { o as DeploymentsSliceType } from "../index-
|
|
5
|
-
import { s as DeviceSliceType } from "../index-
|
|
6
|
-
import { a as
|
|
7
|
-
import { t as MonitorSliceType } from "../index-
|
|
8
|
-
import { t as OrganizationSliceType } from "../index-
|
|
9
|
-
import { r as RootState } from "../store-
|
|
10
|
-
import * as _$reselect from "reselect";
|
|
1
|
+
import { o as UserSliceType } from "../index-Cf81vLTi.js";
|
|
2
|
+
import { i as ReleaseSliceType } from "../index-DLDY7bNT.js";
|
|
3
|
+
import { n as OnboardingSliceType } from "../index-DBUt8xVc.js";
|
|
4
|
+
import { o as DeploymentsSliceType } from "../index-Bb4yvvgG.js";
|
|
5
|
+
import { s as DeviceSliceType } from "../index-CPdMUfRr.js";
|
|
6
|
+
import { a as Upload, i as SnackbarContent, n as SearchState, r as SentryConfig, t as AppSliceType } from "../index-BLvjQfGj.js";
|
|
7
|
+
import { t as MonitorSliceType } from "../index-ByfjrTdH.js";
|
|
8
|
+
import { t as OrganizationSliceType } from "../index-BBsUj1a8.js";
|
|
9
|
+
import { r as RootState } from "../store-Co2ptTSm.js";
|
|
11
10
|
|
|
12
11
|
//#region src/appSlice/selectors.d.ts
|
|
13
12
|
declare const getDocsVersion: (state: RootState) => string;
|
|
14
13
|
declare const getFeatures: (state: RootState) => Record<string, boolean>;
|
|
15
14
|
declare const getFullVersionInformation: (state: RootState) => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
repos: Record<string, string>;
|
|
19
|
-
} | undefined;
|
|
20
|
-
backend?: string;
|
|
21
|
-
GUI?: string;
|
|
22
|
-
latestRelease?: {
|
|
23
|
-
releaseDate: string;
|
|
24
|
-
repos: Record<string, string>;
|
|
25
|
-
};
|
|
15
|
+
docsVersion?: string;
|
|
16
|
+
version?: string;
|
|
26
17
|
};
|
|
27
18
|
declare const getSearchState: (state: RootState) => SearchState;
|
|
28
19
|
declare const getUploads: (state: RootState) => Record<string, Upload>;
|
|
@@ -64,8 +55,8 @@ declare const getIsUploading: ((state: {
|
|
|
64
55
|
dependencyRecomputations: () => number;
|
|
65
56
|
resetDependencyRecomputations: () => void;
|
|
66
57
|
} & {
|
|
67
|
-
memoize: typeof
|
|
68
|
-
argsMemoize: typeof
|
|
58
|
+
memoize: typeof import("reselect").weakMapMemoize;
|
|
59
|
+
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
69
60
|
};
|
|
70
61
|
declare const getSearchedDevices: ((state: {
|
|
71
62
|
app: AppSliceType;
|
|
@@ -94,8 +85,8 @@ declare const getSearchedDevices: ((state: {
|
|
|
94
85
|
dependencyRecomputations: () => number;
|
|
95
86
|
resetDependencyRecomputations: () => void;
|
|
96
87
|
} & {
|
|
97
|
-
memoize: typeof
|
|
98
|
-
argsMemoize: typeof
|
|
88
|
+
memoize: typeof import("reselect").weakMapMemoize;
|
|
89
|
+
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
99
90
|
};
|
|
100
91
|
declare const getVersionInformation: ((state: {
|
|
101
92
|
app: AppSliceType;
|
|
@@ -107,102 +98,42 @@ declare const getVersionInformation: ((state: {
|
|
|
107
98
|
releases: ReleaseSliceType;
|
|
108
99
|
users: UserSliceType;
|
|
109
100
|
}) => {
|
|
110
|
-
|
|
111
|
-
releaseDate: string;
|
|
112
|
-
repos: Record<string, string>;
|
|
113
|
-
} | undefined;
|
|
114
|
-
backend?: string;
|
|
115
|
-
GUI?: string;
|
|
116
|
-
latestRelease?: {
|
|
117
|
-
releaseDate: string;
|
|
118
|
-
repos: Record<string, string>;
|
|
119
|
-
};
|
|
101
|
+
docsVersion?: string;
|
|
120
102
|
}) & {
|
|
121
103
|
clearCache: () => void;
|
|
122
104
|
resultsCount: () => number;
|
|
123
105
|
resetResultsCount: () => void;
|
|
124
106
|
} & {
|
|
125
107
|
resultFunc: (resultFuncArgs_0: {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
repos: Record<string, string>;
|
|
129
|
-
} | undefined;
|
|
130
|
-
backend?: string;
|
|
131
|
-
GUI?: string;
|
|
132
|
-
latestRelease?: {
|
|
133
|
-
releaseDate: string;
|
|
134
|
-
repos: Record<string, string>;
|
|
135
|
-
};
|
|
108
|
+
docsVersion?: string;
|
|
109
|
+
version?: string;
|
|
136
110
|
}, resultFuncArgs_1: Record<string, boolean>) => {
|
|
137
|
-
|
|
138
|
-
releaseDate: string;
|
|
139
|
-
repos: Record<string, string>;
|
|
140
|
-
} | undefined;
|
|
141
|
-
backend?: string;
|
|
142
|
-
GUI?: string;
|
|
143
|
-
latestRelease?: {
|
|
144
|
-
releaseDate: string;
|
|
145
|
-
repos: Record<string, string>;
|
|
146
|
-
};
|
|
111
|
+
docsVersion?: string;
|
|
147
112
|
};
|
|
148
113
|
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
repos: Record<string, string>;
|
|
152
|
-
} | undefined;
|
|
153
|
-
backend?: string;
|
|
154
|
-
GUI?: string;
|
|
155
|
-
latestRelease?: {
|
|
156
|
-
releaseDate: string;
|
|
157
|
-
repos: Record<string, string>;
|
|
158
|
-
};
|
|
114
|
+
docsVersion?: string;
|
|
115
|
+
version?: string;
|
|
159
116
|
}, resultFuncArgs_1: Record<string, boolean>) => {
|
|
160
|
-
|
|
161
|
-
releaseDate: string;
|
|
162
|
-
repos: Record<string, string>;
|
|
163
|
-
} | undefined;
|
|
164
|
-
backend?: string;
|
|
165
|
-
GUI?: string;
|
|
166
|
-
latestRelease?: {
|
|
167
|
-
releaseDate: string;
|
|
168
|
-
repos: Record<string, string>;
|
|
169
|
-
};
|
|
117
|
+
docsVersion?: string;
|
|
170
118
|
}) & {
|
|
171
119
|
clearCache: () => void;
|
|
172
120
|
resultsCount: () => number;
|
|
173
121
|
resetResultsCount: () => void;
|
|
174
122
|
};
|
|
175
123
|
lastResult: () => {
|
|
176
|
-
|
|
177
|
-
releaseDate: string;
|
|
178
|
-
repos: Record<string, string>;
|
|
179
|
-
} | undefined;
|
|
180
|
-
backend?: string;
|
|
181
|
-
GUI?: string;
|
|
182
|
-
latestRelease?: {
|
|
183
|
-
releaseDate: string;
|
|
184
|
-
repos: Record<string, string>;
|
|
185
|
-
};
|
|
124
|
+
docsVersion?: string;
|
|
186
125
|
};
|
|
187
126
|
dependencies: [(state: RootState) => {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
repos: Record<string, string>;
|
|
191
|
-
} | undefined;
|
|
192
|
-
backend?: string;
|
|
193
|
-
GUI?: string;
|
|
194
|
-
latestRelease?: {
|
|
195
|
-
releaseDate: string;
|
|
196
|
-
repos: Record<string, string>;
|
|
197
|
-
};
|
|
127
|
+
docsVersion?: string;
|
|
128
|
+
version?: string;
|
|
198
129
|
}, (state: RootState) => Record<string, boolean>];
|
|
199
130
|
recomputations: () => number;
|
|
200
131
|
resetRecomputations: () => void;
|
|
201
132
|
dependencyRecomputations: () => number;
|
|
202
133
|
resetDependencyRecomputations: () => void;
|
|
203
134
|
} & {
|
|
204
|
-
memoize: typeof
|
|
205
|
-
argsMemoize: typeof
|
|
135
|
+
memoize: typeof import("reselect").weakMapMemoize;
|
|
136
|
+
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
206
137
|
};
|
|
207
138
|
declare const getIsPreview: ((state: {
|
|
208
139
|
app: AppSliceType;
|
|
@@ -219,28 +150,12 @@ declare const getIsPreview: ((state: {
|
|
|
219
150
|
resetResultsCount: () => void;
|
|
220
151
|
} & {
|
|
221
152
|
resultFunc: (resultFuncArgs_0: {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
repos: Record<string, string>;
|
|
225
|
-
} | undefined;
|
|
226
|
-
backend?: string;
|
|
227
|
-
GUI?: string;
|
|
228
|
-
latestRelease?: {
|
|
229
|
-
releaseDate: string;
|
|
230
|
-
repos: Record<string, string>;
|
|
231
|
-
};
|
|
153
|
+
docsVersion?: string;
|
|
154
|
+
version?: string;
|
|
232
155
|
}) => boolean;
|
|
233
156
|
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
repos: Record<string, string>;
|
|
237
|
-
} | undefined;
|
|
238
|
-
backend?: string;
|
|
239
|
-
GUI?: string;
|
|
240
|
-
latestRelease?: {
|
|
241
|
-
releaseDate: string;
|
|
242
|
-
repos: Record<string, string>;
|
|
243
|
-
};
|
|
157
|
+
docsVersion?: string;
|
|
158
|
+
version?: string;
|
|
244
159
|
}) => boolean) & {
|
|
245
160
|
clearCache: () => void;
|
|
246
161
|
resultsCount: () => number;
|
|
@@ -248,24 +163,16 @@ declare const getIsPreview: ((state: {
|
|
|
248
163
|
};
|
|
249
164
|
lastResult: () => boolean;
|
|
250
165
|
dependencies: [(state: RootState) => {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
repos: Record<string, string>;
|
|
254
|
-
} | undefined;
|
|
255
|
-
backend?: string;
|
|
256
|
-
GUI?: string;
|
|
257
|
-
latestRelease?: {
|
|
258
|
-
releaseDate: string;
|
|
259
|
-
repos: Record<string, string>;
|
|
260
|
-
};
|
|
166
|
+
docsVersion?: string;
|
|
167
|
+
version?: string;
|
|
261
168
|
}];
|
|
262
169
|
recomputations: () => number;
|
|
263
170
|
resetRecomputations: () => void;
|
|
264
171
|
dependencyRecomputations: () => number;
|
|
265
172
|
resetDependencyRecomputations: () => void;
|
|
266
173
|
} & {
|
|
267
|
-
memoize: typeof
|
|
268
|
-
argsMemoize: typeof
|
|
174
|
+
memoize: typeof import("reselect").weakMapMemoize;
|
|
175
|
+
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
269
176
|
};
|
|
270
177
|
//#endregion
|
|
271
178
|
export { getAppInitDone, getCommit, getDocsVersion, getFeatures, getFeedbackProbability, getFullVersionInformation, getHostAddress, getHostedAnnouncement, getIsFirstLogin, getIsPreview, getIsUploading, getRecaptchaKey, getSearchState, getSearchedDevices, getSentryConfig, getSnackbar, getStripeKey, getTrackerCode, getUploads, getVersionInformation };
|
|
@@ -19,11 +19,8 @@ const getFeedbackProbability = (state) => state.app.feedbackProbability;
|
|
|
19
19
|
const getAppInitDone = (state) => state.app.appInitDone;
|
|
20
20
|
const getIsUploading = createSelector([getUploads], (uploadsById) => !!Object.keys(uploadsById).length);
|
|
21
21
|
const getSearchedDevices = createSelector([getSearchState], ({ deviceIds }) => deviceIds);
|
|
22
|
-
const getVersionInformation = createSelector([getFullVersionInformation, getFeatures], ({
|
|
23
|
-
|
|
24
|
-
Integration
|
|
25
|
-
});
|
|
26
|
-
const getIsPreview = createSelector([getFullVersionInformation], ({ Integration }) => versionCompare(Integration, "next") > -1);
|
|
22
|
+
const getVersionInformation = createSelector([getFullVersionInformation, getFeatures], ({ version, ...remainder }, { isHosted }) => isHosted && version !== "next" ? remainder : { ...remainder });
|
|
23
|
+
const getIsPreview = createSelector([getFullVersionInformation], ({ version }) => versionCompare(version, "next") > -1);
|
|
27
24
|
//#endregion
|
|
28
25
|
export { getAppInitDone, getCommit, getDocsVersion, getFeatures, getFeedbackProbability, getFullVersionInformation, getHostAddress, getHostedAnnouncement, getIsFirstLogin, getIsPreview, getIsUploading, getRecaptchaKey, getSearchState, getSearchedDevices, getSentryConfig, getSnackbar, getStripeKey, getTrackerCode, getUploads, getVersionInformation };
|
|
29
26
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectors.js","names":[],"sources":["../../src/appSlice/selectors.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 { versionCompare } from '@northern.tech/utils/helpers';\nimport { createSelector } from '@reduxjs/toolkit';\n\nimport type { RootState } from '../store';\n\nexport const getDocsVersion = (state: RootState) => state.app.docsVersion;\nexport const getFeatures = (state: RootState) => state.app.features;\nexport const getFullVersionInformation = (state: RootState) => state.app.versionInformation;\nexport const getSearchState = (state: RootState) => state.app.searchState;\nexport const getUploads = (state: RootState) => state.app.uploadsById;\nexport const getSnackbar = (state: RootState) => state.app.snackbar;\nexport const getHostAddress = (state: RootState) => state.app.hostAddress;\nexport const getHostedAnnouncement = (state: RootState) => state.app.hostedAnnouncement;\nexport const getRecaptchaKey = (state: RootState) => state.app.recaptchaSiteKey;\nexport const getStripeKey = (state: RootState) => state.app.stripeAPIKey;\nexport const getTrackerCode = (state: RootState) => state.app.trackerCode;\nexport const getSentryConfig = (state: RootState) => state.app.sentry;\nexport const getCommit = (state: RootState) => state.app.commit;\nexport const getIsFirstLogin = (state: RootState) => state.app.firstLoginAfterSignup;\nexport const getFeedbackProbability = (state: RootState) => state.app.feedbackProbability;\nexport const getAppInitDone = (state: RootState) => state.app.appInitDone;\n\nexport const getIsUploading = createSelector([getUploads], uploadsById => !!Object.keys(uploadsById).length);\nexport const getSearchedDevices = createSelector([getSearchState], ({ deviceIds }) => deviceIds);\nexport const getVersionInformation = createSelector([getFullVersionInformation, getFeatures], ({
|
|
1
|
+
{"version":3,"file":"selectors.js","names":[],"sources":["../../src/appSlice/selectors.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 { versionCompare } from '@northern.tech/utils/helpers';\nimport { createSelector } from '@reduxjs/toolkit';\n\nimport type { RootState } from '../store';\n\nexport const getDocsVersion = (state: RootState) => state.app.docsVersion;\nexport const getFeatures = (state: RootState) => state.app.features;\nexport const getFullVersionInformation = (state: RootState) => state.app.versionInformation;\nexport const getSearchState = (state: RootState) => state.app.searchState;\nexport const getUploads = (state: RootState) => state.app.uploadsById;\nexport const getSnackbar = (state: RootState) => state.app.snackbar;\nexport const getHostAddress = (state: RootState) => state.app.hostAddress;\nexport const getHostedAnnouncement = (state: RootState) => state.app.hostedAnnouncement;\nexport const getRecaptchaKey = (state: RootState) => state.app.recaptchaSiteKey;\nexport const getStripeKey = (state: RootState) => state.app.stripeAPIKey;\nexport const getTrackerCode = (state: RootState) => state.app.trackerCode;\nexport const getSentryConfig = (state: RootState) => state.app.sentry;\nexport const getCommit = (state: RootState) => state.app.commit;\nexport const getIsFirstLogin = (state: RootState) => state.app.firstLoginAfterSignup;\nexport const getFeedbackProbability = (state: RootState) => state.app.feedbackProbability;\nexport const getAppInitDone = (state: RootState) => state.app.appInitDone;\n\nexport const getIsUploading = createSelector([getUploads], uploadsById => !!Object.keys(uploadsById).length);\nexport const getSearchedDevices = createSelector([getSearchState], ({ deviceIds }) => deviceIds);\nexport const getVersionInformation = createSelector([getFullVersionInformation, getFeatures], ({ version, ...remainder }, { isHosted }) =>\n isHosted && version !== 'next' ? remainder : { ...remainder }\n);\nexport const getIsPreview = createSelector([getFullVersionInformation], ({ version }) => versionCompare(version, 'next') > -1);\n"],"mappings":";;;AAkBA,MAAa,kBAAkB,UAAqB,MAAM,IAAI;AAC9D,MAAa,eAAe,UAAqB,MAAM,IAAI;AAC3D,MAAa,6BAA6B,UAAqB,MAAM,IAAI;AACzE,MAAa,kBAAkB,UAAqB,MAAM,IAAI;AAC9D,MAAa,cAAc,UAAqB,MAAM,IAAI;AAC1D,MAAa,eAAe,UAAqB,MAAM,IAAI;AAC3D,MAAa,kBAAkB,UAAqB,MAAM,IAAI;AAC9D,MAAa,yBAAyB,UAAqB,MAAM,IAAI;AACrE,MAAa,mBAAmB,UAAqB,MAAM,IAAI;AAC/D,MAAa,gBAAgB,UAAqB,MAAM,IAAI;AAC5D,MAAa,kBAAkB,UAAqB,MAAM,IAAI;AAC9D,MAAa,mBAAmB,UAAqB,MAAM,IAAI;AAC/D,MAAa,aAAa,UAAqB,MAAM,IAAI;AACzD,MAAa,mBAAmB,UAAqB,MAAM,IAAI;AAC/D,MAAa,0BAA0B,UAAqB,MAAM,IAAI;AACtE,MAAa,kBAAkB,UAAqB,MAAM,IAAI;AAE9D,MAAa,iBAAiB,eAAe,CAAC,UAAU,IAAG,gBAAe,CAAC,CAAC,OAAO,KAAK,WAAW,EAAE,MAAM;AAC3G,MAAa,qBAAqB,eAAe,CAAC,cAAc,IAAI,EAAE,gBAAgB,SAAS;AAC/F,MAAa,wBAAwB,eAAe,CAAC,2BAA2B,WAAW,IAAI,EAAE,SAAS,GAAG,aAAa,EAAE,eAC1H,YAAY,YAAY,SAAS,YAAY,EAAE,GAAG,UAAU,CAC9D;AACA,MAAa,eAAe,eAAe,CAAC,yBAAyB,IAAI,EAAE,cAAc,eAAe,SAAS,MAAM,IAAI,EAAE"}
|
package/dist/appSlice/thunks.cjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_thunks = require("../thunks.cjs");
|
|
3
|
-
exports.getLatestReleaseInfo = require_thunks.getLatestReleaseInfo;
|
|
4
3
|
exports.setFirstLoginAfterSignup = require_thunks.setFirstLoginAfterSignup;
|
|
5
4
|
exports.setOfflineThreshold = require_thunks.setOfflineThreshold;
|
|
6
5
|
exports.setSearchState = require_thunks.setSearchState;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r as RootState, t as AppDispatch } from "../store-
|
|
3
|
-
import * as _$_reduxjs_toolkit0 from "@reduxjs/toolkit";
|
|
1
|
+
import { n as SearchState } from "../index-C8QadAm7.cjs";
|
|
2
|
+
import { r as RootState, t as AppDispatch } from "../store-Dd0Y2JCN.cjs";
|
|
4
3
|
|
|
5
4
|
//#region src/appSlice/thunks.d.ts
|
|
6
|
-
declare const setFirstLoginAfterSignup:
|
|
5
|
+
declare const setFirstLoginAfterSignup: import("@reduxjs/toolkit").AsyncThunk<void, boolean, {
|
|
7
6
|
dispatch: AppDispatch;
|
|
8
7
|
state: RootState;
|
|
9
8
|
extra?: unknown;
|
|
@@ -13,7 +12,7 @@ declare const setFirstLoginAfterSignup: _$_reduxjs_toolkit0.AsyncThunk<void, boo
|
|
|
13
12
|
fulfilledMeta?: unknown;
|
|
14
13
|
rejectedMeta?: unknown;
|
|
15
14
|
}>;
|
|
16
|
-
declare const setOfflineThreshold:
|
|
15
|
+
declare const setOfflineThreshold: import("@reduxjs/toolkit").AsyncThunk<{
|
|
17
16
|
payload: string;
|
|
18
17
|
type: "app/setOfflineThreshold";
|
|
19
18
|
} | undefined, void, {
|
|
@@ -26,31 +25,7 @@ declare const setOfflineThreshold: _$_reduxjs_toolkit0.AsyncThunk<{
|
|
|
26
25
|
fulfilledMeta?: unknown;
|
|
27
26
|
rejectedMeta?: unknown;
|
|
28
27
|
}>;
|
|
29
|
-
declare const
|
|
30
|
-
payload: {
|
|
31
|
-
[key: string]: string | {
|
|
32
|
-
releaseDate: string;
|
|
33
|
-
repos: Record<string, string>;
|
|
34
|
-
} | undefined;
|
|
35
|
-
backend?: string;
|
|
36
|
-
GUI?: string;
|
|
37
|
-
latestRelease?: {
|
|
38
|
-
releaseDate: string;
|
|
39
|
-
repos: Record<string, string>;
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
type: "app/setVersionInformation";
|
|
43
|
-
} | undefined, void, {
|
|
44
|
-
dispatch: AppDispatch;
|
|
45
|
-
state: RootState;
|
|
46
|
-
extra?: unknown;
|
|
47
|
-
rejectValue?: unknown;
|
|
48
|
-
serializedErrorType?: unknown;
|
|
49
|
-
pendingMeta?: unknown;
|
|
50
|
-
fulfilledMeta?: unknown;
|
|
51
|
-
rejectedMeta?: unknown;
|
|
52
|
-
}>;
|
|
53
|
-
declare const setSearchState: _$_reduxjs_toolkit0.AsyncThunk<unknown[], Partial<SearchState>, {
|
|
28
|
+
declare const setSearchState: import("@reduxjs/toolkit").AsyncThunk<unknown[], Partial<SearchState>, {
|
|
54
29
|
dispatch: AppDispatch;
|
|
55
30
|
state: RootState;
|
|
56
31
|
extra?: unknown;
|
|
@@ -61,5 +36,5 @@ declare const setSearchState: _$_reduxjs_toolkit0.AsyncThunk<unknown[], Partial<
|
|
|
61
36
|
rejectedMeta?: unknown;
|
|
62
37
|
}>;
|
|
63
38
|
//#endregion
|
|
64
|
-
export {
|
|
39
|
+
export { setFirstLoginAfterSignup, setOfflineThreshold, setSearchState };
|
|
65
40
|
//# sourceMappingURL=thunks.d.cts.map
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r as RootState, t as AppDispatch } from "../store-
|
|
3
|
-
import * as _$_reduxjs_toolkit0 from "@reduxjs/toolkit";
|
|
1
|
+
import { n as SearchState } from "../index-BLvjQfGj.js";
|
|
2
|
+
import { r as RootState, t as AppDispatch } from "../store-Co2ptTSm.js";
|
|
4
3
|
|
|
5
4
|
//#region src/appSlice/thunks.d.ts
|
|
6
|
-
declare const setFirstLoginAfterSignup:
|
|
5
|
+
declare const setFirstLoginAfterSignup: import("@reduxjs/toolkit").AsyncThunk<void, boolean, {
|
|
7
6
|
dispatch: AppDispatch;
|
|
8
7
|
state: RootState;
|
|
9
8
|
extra?: unknown;
|
|
@@ -13,7 +12,7 @@ declare const setFirstLoginAfterSignup: _$_reduxjs_toolkit0.AsyncThunk<void, boo
|
|
|
13
12
|
fulfilledMeta?: unknown;
|
|
14
13
|
rejectedMeta?: unknown;
|
|
15
14
|
}>;
|
|
16
|
-
declare const setOfflineThreshold:
|
|
15
|
+
declare const setOfflineThreshold: import("@reduxjs/toolkit").AsyncThunk<{
|
|
17
16
|
payload: string;
|
|
18
17
|
type: "app/setOfflineThreshold";
|
|
19
18
|
} | undefined, void, {
|
|
@@ -26,31 +25,7 @@ declare const setOfflineThreshold: _$_reduxjs_toolkit0.AsyncThunk<{
|
|
|
26
25
|
fulfilledMeta?: unknown;
|
|
27
26
|
rejectedMeta?: unknown;
|
|
28
27
|
}>;
|
|
29
|
-
declare const
|
|
30
|
-
payload: {
|
|
31
|
-
[key: string]: string | {
|
|
32
|
-
releaseDate: string;
|
|
33
|
-
repos: Record<string, string>;
|
|
34
|
-
} | undefined;
|
|
35
|
-
backend?: string;
|
|
36
|
-
GUI?: string;
|
|
37
|
-
latestRelease?: {
|
|
38
|
-
releaseDate: string;
|
|
39
|
-
repos: Record<string, string>;
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
type: "app/setVersionInformation";
|
|
43
|
-
} | undefined, void, {
|
|
44
|
-
dispatch: AppDispatch;
|
|
45
|
-
state: RootState;
|
|
46
|
-
extra?: unknown;
|
|
47
|
-
rejectValue?: unknown;
|
|
48
|
-
serializedErrorType?: unknown;
|
|
49
|
-
pendingMeta?: unknown;
|
|
50
|
-
fulfilledMeta?: unknown;
|
|
51
|
-
rejectedMeta?: unknown;
|
|
52
|
-
}>;
|
|
53
|
-
declare const setSearchState: _$_reduxjs_toolkit0.AsyncThunk<unknown[], Partial<SearchState>, {
|
|
28
|
+
declare const setSearchState: import("@reduxjs/toolkit").AsyncThunk<unknown[], Partial<SearchState>, {
|
|
54
29
|
dispatch: AppDispatch;
|
|
55
30
|
state: RootState;
|
|
56
31
|
extra?: unknown;
|
|
@@ -61,5 +36,5 @@ declare const setSearchState: _$_reduxjs_toolkit0.AsyncThunk<unknown[], Partial<
|
|
|
61
36
|
rejectedMeta?: unknown;
|
|
62
37
|
}>;
|
|
63
38
|
//#endregion
|
|
64
|
-
export {
|
|
39
|
+
export { setFirstLoginAfterSignup, setOfflineThreshold, setSearchState };
|
|
65
40
|
//# sourceMappingURL=thunks.d.ts.map
|
package/dist/appSlice/thunks.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { setFirstLoginAfterSignup, setOfflineThreshold, setSearchState } from "../thunks.js";
|
|
2
|
+
export { setFirstLoginAfterSignup, setOfflineThreshold, setSearchState };
|
package/dist/auth.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_chunk = require("./chunk-
|
|
2
|
+
const require_chunk = require("./chunk-D6vf50IK.cjs");
|
|
3
3
|
const require_constants = require("./constants.cjs");
|
|
4
4
|
let universal_cookie = require("universal-cookie");
|
|
5
5
|
universal_cookie = require_chunk.__toESM(universal_cookie, 1);
|
package/dist/auth.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.cjs","names":["Cookies","maxSessionAge","TIMEOUTS"],"sources":["../src/auth.ts"],"sourcesContent":["// Copyright 2016 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 Cookies from 'universal-cookie';\n\nimport { TIMEOUTS, maxSessionAge } from './constants';\nimport type { UserSession } from './usersSlice';\n\nconst cookies = new Cookies();\n\nconst emptySession = Object.freeze({ token: '', expiresAt: undefined }) as Readonly<UserSession>;\n\nlet tokenCache = '';\n\nexport const getSessionInfo = (): UserSession => {\n let sessionInfo = { ...emptySession } as UserSession;\n try {\n sessionInfo = JSON.parse(window.localStorage.getItem('JWT') ?? '');\n } catch {\n // most likely not logged in - nothing to do here\n }\n\n // check for cookie first to handles sso login while an old/expired token may still exist in cache/ localStorage\n const jwtTokenFromCookie = cookies.get('JWT', { doNotParse: true }) ?? '';\n if (jwtTokenFromCookie) {\n setSessionInfo({ token: jwtTokenFromCookie });\n cookies.remove('JWT');\n cookies.remove('JWT', { path: '/' });\n return { token: jwtTokenFromCookie, expiresAt: undefined };\n }\n if (sessionInfo.expiresAt && new Date(sessionInfo.expiresAt) < new Date()) {\n cleanUp();\n return { ...emptySession };\n }\n sessionInfo.token = sessionInfo.token || '';\n tokenCache = sessionInfo.token;\n return sessionInfo;\n};\n\nexport const getToken = () => (tokenCache ? tokenCache : getSessionInfo().token);\n\nexport const setSessionInfo = ({ token, expiresAt }: UserSession) => {\n tokenCache = token;\n window.localStorage.setItem('JWT', JSON.stringify({ token, expiresAt }));\n};\n\nexport const cleanUp = () => {\n tokenCache = '';\n cookies.remove('JWT');\n cookies.remove('JWT', { path: '/' });\n window.localStorage.removeItem('JWT');\n window.localStorage.removeItem('oauth');\n};\n\nexport const updateMaxAge = ({ expiresAt, token }) => {\n const oAuthExpiration = Number(window.localStorage.getItem('oauth'));\n let updateWithOAuth = false;\n if (oAuthExpiration) {\n const soon = Date.now() + maxSessionAge * TIMEOUTS.oneSecond;\n updateWithOAuth = oAuthExpiration <= soon;\n if (updateWithOAuth) {\n window.localStorage.removeItem('oauth');\n }\n }\n if (token && expiresAt && (!oAuthExpiration || updateWithOAuth)) {\n const expiration = new Date();\n expiration.setSeconds(expiration.getSeconds() + maxSessionAge);\n setSessionInfo({ token, expiresAt: expiration.toISOString() });\n }\n};\n"],"mappings":";;;;;;;AAkBA,MAAM,UAAU,IAAIA,iBAAAA,
|
|
1
|
+
{"version":3,"file":"auth.cjs","names":["Cookies","maxSessionAge","TIMEOUTS"],"sources":["../src/auth.ts"],"sourcesContent":["// Copyright 2016 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 Cookies from 'universal-cookie';\n\nimport { TIMEOUTS, maxSessionAge } from './constants';\nimport type { UserSession } from './usersSlice';\n\nconst cookies = new Cookies();\n\nconst emptySession = Object.freeze({ token: '', expiresAt: undefined }) as Readonly<UserSession>;\n\nlet tokenCache = '';\n\nexport const getSessionInfo = (): UserSession => {\n let sessionInfo = { ...emptySession } as UserSession;\n try {\n sessionInfo = JSON.parse(window.localStorage.getItem('JWT') ?? '');\n } catch {\n // most likely not logged in - nothing to do here\n }\n\n // check for cookie first to handles sso login while an old/expired token may still exist in cache/ localStorage\n const jwtTokenFromCookie = cookies.get('JWT', { doNotParse: true }) ?? '';\n if (jwtTokenFromCookie) {\n setSessionInfo({ token: jwtTokenFromCookie });\n cookies.remove('JWT');\n cookies.remove('JWT', { path: '/' });\n return { token: jwtTokenFromCookie, expiresAt: undefined };\n }\n if (sessionInfo.expiresAt && new Date(sessionInfo.expiresAt) < new Date()) {\n cleanUp();\n return { ...emptySession };\n }\n sessionInfo.token = sessionInfo.token || '';\n tokenCache = sessionInfo.token;\n return sessionInfo;\n};\n\nexport const getToken = () => (tokenCache ? tokenCache : getSessionInfo().token);\n\nexport const setSessionInfo = ({ token, expiresAt }: UserSession) => {\n tokenCache = token;\n window.localStorage.setItem('JWT', JSON.stringify({ token, expiresAt }));\n};\n\nexport const cleanUp = () => {\n tokenCache = '';\n cookies.remove('JWT');\n cookies.remove('JWT', { path: '/' });\n window.localStorage.removeItem('JWT');\n window.localStorage.removeItem('oauth');\n};\n\nexport const updateMaxAge = ({ expiresAt, token }) => {\n const oAuthExpiration = Number(window.localStorage.getItem('oauth'));\n let updateWithOAuth = false;\n if (oAuthExpiration) {\n const soon = Date.now() + maxSessionAge * TIMEOUTS.oneSecond;\n updateWithOAuth = oAuthExpiration <= soon;\n if (updateWithOAuth) {\n window.localStorage.removeItem('oauth');\n }\n }\n if (token && expiresAt && (!oAuthExpiration || updateWithOAuth)) {\n const expiration = new Date();\n expiration.setSeconds(expiration.getSeconds() + maxSessionAge);\n setSessionInfo({ token, expiresAt: expiration.toISOString() });\n }\n};\n"],"mappings":";;;;;;;AAkBA,MAAM,UAAU,IAAIA,iBAAAA,QAAQ;AAE5B,MAAM,eAAe,OAAO,OAAO;CAAE,OAAO;CAAI,WAAW,KAAA;AAAU,CAAC;AAEtE,IAAI,aAAa;AAEjB,MAAa,uBAAoC;CAC/C,IAAI,cAAc,EAAE,GAAG,aAAa;CACpC,IAAI;EACF,cAAc,KAAK,MAAM,OAAO,aAAa,QAAQ,KAAK,KAAK,EAAE;CACnE,QAAQ,CAER;CAGA,MAAM,qBAAqB,QAAQ,IAAI,OAAO,EAAE,YAAY,KAAK,CAAC,KAAK;CACvE,IAAI,oBAAoB;EACtB,eAAe,EAAE,OAAO,mBAAmB,CAAC;EAC5C,QAAQ,OAAO,KAAK;EACpB,QAAQ,OAAO,OAAO,EAAE,MAAM,IAAI,CAAC;EACnC,OAAO;GAAE,OAAO;GAAoB,WAAW,KAAA;EAAU;CAC3D;CACA,IAAI,YAAY,aAAa,IAAI,KAAK,YAAY,SAAS,oBAAI,IAAI,KAAK,GAAG;EACzE,QAAQ;EACR,OAAO,EAAE,GAAG,aAAa;CAC3B;CACA,YAAY,QAAQ,YAAY,SAAS;CACzC,aAAa,YAAY;CACzB,OAAO;AACT;AAEA,MAAa,iBAAkB,aAAa,aAAa,eAAe,EAAE;AAE1E,MAAa,kBAAkB,EAAE,OAAO,gBAA6B;CACnE,aAAa;CACb,OAAO,aAAa,QAAQ,OAAO,KAAK,UAAU;EAAE;EAAO;CAAU,CAAC,CAAC;AACzE;AAEA,MAAa,gBAAgB;CAC3B,aAAa;CACb,QAAQ,OAAO,KAAK;CACpB,QAAQ,OAAO,OAAO,EAAE,MAAM,IAAI,CAAC;CACnC,OAAO,aAAa,WAAW,KAAK;CACpC,OAAO,aAAa,WAAW,OAAO;AACxC;AAEA,MAAa,gBAAgB,EAAE,WAAW,YAAY;CACpD,MAAM,kBAAkB,OAAO,OAAO,aAAa,QAAQ,OAAO,CAAC;CACnE,IAAI,kBAAkB;CACtB,IAAI,iBAAiB;EAEnB,kBAAkB,mBADL,KAAK,IAAI,IAAIC,+BAAAA,gBAAgBC,kBAAAA,SAAS;EAEnD,IAAI,iBACF,OAAO,aAAa,WAAW,OAAO;CAE1C;CACA,IAAI,SAAS,cAAc,CAAC,mBAAmB,kBAAkB;EAC/D,MAAM,6BAAa,IAAI,KAAK;EAC5B,WAAW,WAAW,WAAW,WAAW,IAAID,+BAAAA,aAAa;EAC7D,eAAe;GAAE;GAAO,WAAW,WAAW,YAAY;EAAE,CAAC;CAC/D;AACF"}
|
package/dist/auth.d.cts
CHANGED
package/dist/auth.d.ts
CHANGED
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","names":[],"sources":["../src/auth.ts"],"sourcesContent":["// Copyright 2016 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 Cookies from 'universal-cookie';\n\nimport { TIMEOUTS, maxSessionAge } from './constants';\nimport type { UserSession } from './usersSlice';\n\nconst cookies = new Cookies();\n\nconst emptySession = Object.freeze({ token: '', expiresAt: undefined }) as Readonly<UserSession>;\n\nlet tokenCache = '';\n\nexport const getSessionInfo = (): UserSession => {\n let sessionInfo = { ...emptySession } as UserSession;\n try {\n sessionInfo = JSON.parse(window.localStorage.getItem('JWT') ?? '');\n } catch {\n // most likely not logged in - nothing to do here\n }\n\n // check for cookie first to handles sso login while an old/expired token may still exist in cache/ localStorage\n const jwtTokenFromCookie = cookies.get('JWT', { doNotParse: true }) ?? '';\n if (jwtTokenFromCookie) {\n setSessionInfo({ token: jwtTokenFromCookie });\n cookies.remove('JWT');\n cookies.remove('JWT', { path: '/' });\n return { token: jwtTokenFromCookie, expiresAt: undefined };\n }\n if (sessionInfo.expiresAt && new Date(sessionInfo.expiresAt) < new Date()) {\n cleanUp();\n return { ...emptySession };\n }\n sessionInfo.token = sessionInfo.token || '';\n tokenCache = sessionInfo.token;\n return sessionInfo;\n};\n\nexport const getToken = () => (tokenCache ? tokenCache : getSessionInfo().token);\n\nexport const setSessionInfo = ({ token, expiresAt }: UserSession) => {\n tokenCache = token;\n window.localStorage.setItem('JWT', JSON.stringify({ token, expiresAt }));\n};\n\nexport const cleanUp = () => {\n tokenCache = '';\n cookies.remove('JWT');\n cookies.remove('JWT', { path: '/' });\n window.localStorage.removeItem('JWT');\n window.localStorage.removeItem('oauth');\n};\n\nexport const updateMaxAge = ({ expiresAt, token }) => {\n const oAuthExpiration = Number(window.localStorage.getItem('oauth'));\n let updateWithOAuth = false;\n if (oAuthExpiration) {\n const soon = Date.now() + maxSessionAge * TIMEOUTS.oneSecond;\n updateWithOAuth = oAuthExpiration <= soon;\n if (updateWithOAuth) {\n window.localStorage.removeItem('oauth');\n }\n }\n if (token && expiresAt && (!oAuthExpiration || updateWithOAuth)) {\n const expiration = new Date();\n expiration.setSeconds(expiration.getSeconds() + maxSessionAge);\n setSessionInfo({ token, expiresAt: expiration.toISOString() });\n }\n};\n"],"mappings":";;;AAkBA,MAAM,UAAU,IAAI,
|
|
1
|
+
{"version":3,"file":"auth.js","names":[],"sources":["../src/auth.ts"],"sourcesContent":["// Copyright 2016 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 Cookies from 'universal-cookie';\n\nimport { TIMEOUTS, maxSessionAge } from './constants';\nimport type { UserSession } from './usersSlice';\n\nconst cookies = new Cookies();\n\nconst emptySession = Object.freeze({ token: '', expiresAt: undefined }) as Readonly<UserSession>;\n\nlet tokenCache = '';\n\nexport const getSessionInfo = (): UserSession => {\n let sessionInfo = { ...emptySession } as UserSession;\n try {\n sessionInfo = JSON.parse(window.localStorage.getItem('JWT') ?? '');\n } catch {\n // most likely not logged in - nothing to do here\n }\n\n // check for cookie first to handles sso login while an old/expired token may still exist in cache/ localStorage\n const jwtTokenFromCookie = cookies.get('JWT', { doNotParse: true }) ?? '';\n if (jwtTokenFromCookie) {\n setSessionInfo({ token: jwtTokenFromCookie });\n cookies.remove('JWT');\n cookies.remove('JWT', { path: '/' });\n return { token: jwtTokenFromCookie, expiresAt: undefined };\n }\n if (sessionInfo.expiresAt && new Date(sessionInfo.expiresAt) < new Date()) {\n cleanUp();\n return { ...emptySession };\n }\n sessionInfo.token = sessionInfo.token || '';\n tokenCache = sessionInfo.token;\n return sessionInfo;\n};\n\nexport const getToken = () => (tokenCache ? tokenCache : getSessionInfo().token);\n\nexport const setSessionInfo = ({ token, expiresAt }: UserSession) => {\n tokenCache = token;\n window.localStorage.setItem('JWT', JSON.stringify({ token, expiresAt }));\n};\n\nexport const cleanUp = () => {\n tokenCache = '';\n cookies.remove('JWT');\n cookies.remove('JWT', { path: '/' });\n window.localStorage.removeItem('JWT');\n window.localStorage.removeItem('oauth');\n};\n\nexport const updateMaxAge = ({ expiresAt, token }) => {\n const oAuthExpiration = Number(window.localStorage.getItem('oauth'));\n let updateWithOAuth = false;\n if (oAuthExpiration) {\n const soon = Date.now() + maxSessionAge * TIMEOUTS.oneSecond;\n updateWithOAuth = oAuthExpiration <= soon;\n if (updateWithOAuth) {\n window.localStorage.removeItem('oauth');\n }\n }\n if (token && expiresAt && (!oAuthExpiration || updateWithOAuth)) {\n const expiration = new Date();\n expiration.setSeconds(expiration.getSeconds() + maxSessionAge);\n setSessionInfo({ token, expiresAt: expiration.toISOString() });\n }\n};\n"],"mappings":";;;AAkBA,MAAM,UAAU,IAAI,QAAQ;AAE5B,MAAM,eAAe,OAAO,OAAO;CAAE,OAAO;CAAI,WAAW,KAAA;AAAU,CAAC;AAEtE,IAAI,aAAa;AAEjB,MAAa,uBAAoC;CAC/C,IAAI,cAAc,EAAE,GAAG,aAAa;CACpC,IAAI;EACF,cAAc,KAAK,MAAM,OAAO,aAAa,QAAQ,KAAK,KAAK,EAAE;CACnE,QAAQ,CAER;CAGA,MAAM,qBAAqB,QAAQ,IAAI,OAAO,EAAE,YAAY,KAAK,CAAC,KAAK;CACvE,IAAI,oBAAoB;EACtB,eAAe,EAAE,OAAO,mBAAmB,CAAC;EAC5C,QAAQ,OAAO,KAAK;EACpB,QAAQ,OAAO,OAAO,EAAE,MAAM,IAAI,CAAC;EACnC,OAAO;GAAE,OAAO;GAAoB,WAAW,KAAA;EAAU;CAC3D;CACA,IAAI,YAAY,aAAa,IAAI,KAAK,YAAY,SAAS,oBAAI,IAAI,KAAK,GAAG;EACzE,QAAQ;EACR,OAAO,EAAE,GAAG,aAAa;CAC3B;CACA,YAAY,QAAQ,YAAY,SAAS;CACzC,aAAa,YAAY;CACzB,OAAO;AACT;AAEA,MAAa,iBAAkB,aAAa,aAAa,eAAe,EAAE;AAE1E,MAAa,kBAAkB,EAAE,OAAO,gBAA6B;CACnE,aAAa;CACb,OAAO,aAAa,QAAQ,OAAO,KAAK,UAAU;EAAE;EAAO;CAAU,CAAC,CAAC;AACzE;AAEA,MAAa,gBAAgB;CAC3B,aAAa;CACb,QAAQ,OAAO,KAAK;CACpB,QAAQ,OAAO,OAAO,EAAE,MAAM,IAAI,CAAC;CACnC,OAAO,aAAa,WAAW,KAAK;CACpC,OAAO,aAAa,WAAW,OAAO;AACxC;AAEA,MAAa,gBAAgB,EAAE,WAAW,YAAY;CACpD,MAAM,kBAAkB,OAAO,OAAO,aAAa,QAAQ,OAAO,CAAC;CACnE,IAAI,kBAAkB;CACtB,IAAI,iBAAiB;EAEnB,kBAAkB,mBADL,KAAK,IAAI,IAAI,gBAAgB,SAAS;EAEnD,IAAI,iBACF,OAAO,aAAa,WAAW,OAAO;CAE1C;CACA,IAAI,SAAS,cAAc,CAAC,mBAAmB,kBAAkB;EAC/D,MAAM,6BAAa,IAAI,KAAK;EAC5B,WAAW,WAAW,WAAW,WAAW,IAAI,aAAa;EAC7D,eAAe;GAAE;GAAO,WAAW,WAAW,YAAY;EAAE,CAAC;CAC/D;AACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { At as emptyWebhook, Ct as MAX_PAGE_SIZE, Dt as countries, Et as Webhook, Mt as timeUnits, Ot as credentialTypes, St as IdAttribute, Tt as UNGROUPED_GROUP, bt as EXTERNAL_PROVIDER, jt as productOrder, kt as defaultIdAttribute, vt as DEVICE_LIST_MAXIMUM_LENGTH, wt as TIMEOUTS, xt as FilterOperator, yt as DEVICE_ONLINE_CUTOFF } from "./constants-
|
|
1
|
+
import { At as emptyWebhook, Ct as MAX_PAGE_SIZE, Dt as countries, Et as Webhook, Mt as timeUnits, Ot as credentialTypes, St as IdAttribute, Tt as UNGROUPED_GROUP, bt as EXTERNAL_PROVIDER, jt as productOrder, kt as defaultIdAttribute, vt as DEVICE_LIST_MAXIMUM_LENGTH, wt as TIMEOUTS, xt as FilterOperator, yt as DEVICE_ONLINE_CUTOFF } from "./constants-_p6w8uEp.cjs";
|
|
2
2
|
export { DEVICE_LIST_MAXIMUM_LENGTH, DEVICE_ONLINE_CUTOFF, EXTERNAL_PROVIDER, FilterOperator, IdAttribute, MAX_PAGE_SIZE, TIMEOUTS, UNGROUPED_GROUP, Webhook, countries, credentialTypes, defaultIdAttribute, emptyWebhook, productOrder, timeUnits };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { At as emptyWebhook, Ct as MAX_PAGE_SIZE, Dt as countries, Et as Webhook, Mt as timeUnits, Ot as credentialTypes, St as IdAttribute, Tt as UNGROUPED_GROUP, bt as EXTERNAL_PROVIDER, jt as productOrder, kt as defaultIdAttribute, vt as DEVICE_LIST_MAXIMUM_LENGTH, wt as TIMEOUTS, xt as FilterOperator, yt as DEVICE_ONLINE_CUTOFF } from "./constants-
|
|
1
|
+
import { At as emptyWebhook, Ct as MAX_PAGE_SIZE, Dt as countries, Et as Webhook, Mt as timeUnits, Ot as credentialTypes, St as IdAttribute, Tt as UNGROUPED_GROUP, bt as EXTERNAL_PROVIDER, jt as productOrder, kt as defaultIdAttribute, vt as DEVICE_LIST_MAXIMUM_LENGTH, wt as TIMEOUTS, xt as FilterOperator, yt as DEVICE_ONLINE_CUTOFF } from "./constants-OcdoVk6f.js";
|
|
2
2
|
export { DEVICE_LIST_MAXIMUM_LENGTH, DEVICE_ONLINE_CUTOFF, EXTERNAL_PROVIDER, FilterOperator, IdAttribute, MAX_PAGE_SIZE, TIMEOUTS, UNGROUPED_GROUP, Webhook, countries, credentialTypes, defaultIdAttribute, emptyWebhook, productOrder, timeUnits };
|
package/dist/commonSelectors.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_chunk = require("./chunk-
|
|
2
|
+
const require_chunk = require("./chunk-D6vf50IK.cjs");
|
|
3
3
|
const require_appSlice_constants = require("./appSlice/constants.cjs");
|
|
4
4
|
const require_onboardingSlice_constants = require("./onboardingSlice/constants.cjs");
|
|
5
5
|
const require_constants = require("./constants.cjs");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commonSelectors.cjs","names":["getOrganization","getFeatures","PLANS","getCurrentUser","getRolesById","rolesByName","mapUserRolesToUiPermissions","getIsServiceProvider","uiPermissionsById","ADDONS","getGlobalSettings","getFilteringAttributes","ATTRIBUTE_SCOPES","getOnboarding","getUserSettings","onboardingSteps","getDevicesById","getDeviceById","getDeploymentsById","getDeploymentsSelectionState","getReleasesById","getSelectedDeploymentDeviceIds","getIssueCountsByType","DEVICE_ISSUE_OPTIONS","getGroupsById","UNGROUPED_GROUP","ALL_DEVICES","defaultReports","getListedDevices","getSearchedDevices","listItemMapper","getAuditLogEntry","getRolesList","rolesById","serviceProviderRolesById","getHas2FA","getUserSettingsInitialized","getSecurityAlertDismissedTimestamp"],"sources":["../src/commonSelectors.ts"],"sourcesContent":["// Copyright 2024 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport type { AuditLog as AuditLogEvent } from '@northern.tech/types/types.gen';\nimport type { DeviceIssueOption } from '@northern.tech/utils/constants';\nimport { attributeDuplicateFilter, getDemoDeviceAddress as getDemoDeviceAddressHelper } from '@northern.tech/utils/helpers';\nimport { createSelector } from '@reduxjs/toolkit';\nimport dayjs from 'dayjs';\n\nimport { ADDONS, PLANS, defaultReports } from './appSlice/constants';\nimport { getFeatures, getSearchedDevices } from './appSlice/selectors';\nimport { DEVICE_LIST_MAXIMUM_LENGTH, UNGROUPED_GROUP } from './commonConstants';\nimport { ALL_DEVICES, ATTRIBUTE_SCOPES, DEVICE_ISSUE_OPTIONS, rolesById, rolesByName, serviceProviderRolesById, uiPermissionsById } from './constants';\nimport type { Role } from './constants';\nimport type { Deployment } from './deploymentsSlice';\nimport { getDeploymentsById, getDeploymentsSelectionState, getSelectedDeploymentDeviceIds } from './deploymentsSlice/selectors';\nimport type { Device, DeviceGroup } from './devicesSlice';\nimport { getDeviceById, getDevicesById, getFilteringAttributes, getGroupsById, getListedDevices } from './devicesSlice/selectors';\nimport { getIssueCountsByType } from './monitorSlice/selectors';\nimport { onboardingSteps } from './onboardingSlice/constants';\nimport { getOnboarding } from './onboardingSlice/selectors';\nimport { getAuditLogEntry, getIsServiceProvider, getOrganization } from './organizationSlice/selectors';\nimport { getReleasesById } from './releasesSlice/selectors';\nimport {\n getCurrentUser,\n getGlobalSettings,\n getHas2FA,\n getRolesById,\n getRolesList,\n getSecurityAlertDismissedTimestamp,\n getUserSettings,\n getUserSettingsInitialized\n} from './usersSlice/selectors';\nimport { listItemMapper, mapUserRolesToUiPermissions } from './utils';\n\nexport const getIsEnterprise = createSelector(\n [getOrganization, getFeatures],\n ({ plan = PLANS.os.id }, { isEnterprise, isHosted }) => isEnterprise || (isHosted && plan === PLANS.enterprise.id)\n);\n\nexport const getUserRoles = createSelector([getCurrentUser, getRolesById, getIsEnterprise], (currentUser, rolesById, isEnterprise) => {\n const isAdmin = currentUser.roles?.length ? currentUser.roles.some(role => role === rolesByName.admin) : !isEnterprise;\n const uiPermissions = isAdmin ? mapUserRolesToUiPermissions([rolesByName.admin], rolesById) : mapUserRolesToUiPermissions(currentUser.roles || [], rolesById);\n return { isAdmin, uiPermissions };\n});\n\nconst hasPermission = (thing: Record<string, string[]>, permission: string): boolean =>\n Object.values(thing).some(permissions => permissions.includes(permission));\n\nexport const getUserCapabilities = createSelector([getUserRoles, getIsServiceProvider], ({ uiPermissions }, isServiceProvider) => {\n const canManageReleases = hasPermission(uiPermissions.releases, uiPermissionsById.manage.value);\n const canReadReleases = canManageReleases || hasPermission(uiPermissions.releases, uiPermissionsById.read.value);\n const canUploadReleases = canManageReleases || hasPermission(uiPermissions.releases, uiPermissionsById.upload.value);\n\n const canAuditlog = uiPermissions.auditlog.includes(uiPermissionsById.read.value);\n\n const canReadUsers = uiPermissions.userManagement.includes(uiPermissionsById.read.value);\n const canManageUsers = uiPermissions.userManagement.includes(uiPermissionsById.manage.value);\n\n const canReadDevices = hasPermission(uiPermissions.groups, uiPermissionsById.read.value);\n const canWriteDevices = Object.values(uiPermissions.groups).some(\n groupPermissions => groupPermissions.includes(uiPermissionsById.read.value) && groupPermissions.length > 1\n );\n const canTroubleshoot = hasPermission(uiPermissions.groups, uiPermissionsById.connect.value);\n const canManageDevices = hasPermission(uiPermissions.groups, uiPermissionsById.manage.value);\n const canConfigure = hasPermission(uiPermissions.groups, uiPermissionsById.configure.value);\n\n const canDeploy =\n (uiPermissions.deployments?.includes(uiPermissionsById.deploy.value) ?? false) || hasPermission(uiPermissions.groups, uiPermissionsById.deploy.value);\n const canReadDeployments = uiPermissions.deployments?.includes(uiPermissionsById.read.value) ?? false;\n\n return {\n canAuditlog,\n canConfigure,\n canDeploy,\n canManageDevices,\n canManageReleases,\n canManageUsers,\n canReadDeployments,\n canReadDevices,\n canReadReleases,\n canReadUsers,\n canTroubleshoot,\n canUploadReleases,\n canWriteDevices,\n groupsPermissions: uiPermissions.groups,\n releasesPermissions: uiPermissions.releases,\n SPTenant: isServiceProvider\n };\n});\n\nexport const getTenantCapabilities = createSelector(\n [getFeatures, getOrganization, getIsEnterprise],\n (\n {\n hasAuditlogs: isAuditlogEnabled,\n hasDeviceConfig: isDeviceConfigEnabled,\n hasDeviceConnect: isDeviceConnectEnabled,\n hasMonitor: isMonitorEnabled,\n isHosted\n },\n { addons = [], plan = PLANS.os.id },\n isEnterprise\n ) => {\n const canDelta = isEnterprise || plan === PLANS.professional.id;\n const hasAuditlogs = isAuditlogEnabled && isEnterprise;\n const hasDeviceConfig = addons.some(addon => addon.name === ADDONS.configure.id && addon.enabled) || (isDeviceConfigEnabled && !isHosted);\n const hasDeviceConnect = addons.some(addon => addon.name === ADDONS.troubleshoot.id && addon.enabled) || (isDeviceConnectEnabled && !isHosted);\n const hasMonitor = isMonitorEnabled && addons.some(addon => addon.name === ADDONS.monitor.id && addon.enabled);\n return {\n canDelta,\n canRetry: canDelta,\n canSchedule: canDelta,\n hasAuditlogs,\n hasDeviceConfig,\n hasDeviceConnect,\n hasFullFiltering: canDelta,\n hasMonitor,\n isEnterprise,\n plan\n };\n }\n);\n\nexport const getFilterAttributes = createSelector(\n [getGlobalSettings, getFilteringAttributes],\n ({ previousFilters }, { identityAttributes, inventoryAttributes, systemAttributes, tagAttributes }) => {\n const deviceNameAttribute = { key: 'name', value: 'Name', scope: ATTRIBUTE_SCOPES.tags, category: ATTRIBUTE_SCOPES.tags, priority: 1 };\n const deviceIdAttribute = { key: 'id', value: 'Device ID', scope: ATTRIBUTE_SCOPES.identity, category: ATTRIBUTE_SCOPES.identity, priority: 1 };\n const checkInAttribute = { key: 'check_in_time', value: 'Latest activity', scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPES.system, priority: 4 };\n const updateAttribute = { ...checkInAttribute, key: 'updated_ts', value: 'Last inventory update' };\n const firstRequestAttribute = { key: 'created_ts', value: 'First request', scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPES.system, priority: 4 };\n const attributes = [\n ...previousFilters.map(item => ({\n ...item,\n value: deviceIdAttribute.key === item.key ? deviceIdAttribute.value : item.key,\n category: 'recently used',\n priority: 0\n })),\n deviceNameAttribute,\n deviceIdAttribute,\n ...identityAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.identity, category: ATTRIBUTE_SCOPES.identity, priority: 1 })),\n ...inventoryAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.inventory, category: ATTRIBUTE_SCOPES.inventory, priority: 2 })),\n ...tagAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.tags, category: ATTRIBUTE_SCOPES.tags, priority: 3 })),\n checkInAttribute,\n updateAttribute,\n firstRequestAttribute,\n ...systemAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPES.system, priority: 4 }))\n ];\n return attributeDuplicateFilter(attributes, 'key');\n }\n);\n\nexport const getOnboardingState = createSelector([getOnboarding, getUserSettings], ({ complete, progress, showTips, ...remainder }, { onboarding = {} }) => ({\n ...remainder,\n ...onboarding,\n complete: onboarding.complete || complete,\n progress:\n Object.keys(onboardingSteps).findIndex(step => step === progress) > Object.keys(onboardingSteps).findIndex(step => step === onboarding.progress)\n ? progress\n : onboarding.progress,\n showTips: !onboarding.showTips ? onboarding.showTips : showTips\n}));\n\nexport const getDemoDeviceAddress = createSelector([getDevicesById, getOnboarding], (devicesById, { approach, demoArtifactPort }) => {\n const demoDeviceAddress = `http://${getDemoDeviceAddressHelper(Object.values(devicesById), approach)}`;\n return demoArtifactPort ? `${demoDeviceAddress}:${demoArtifactPort}` : demoDeviceAddress;\n});\n\nexport const getDeviceConfigDeployment = createSelector([getDeviceById, getDeploymentsById], (device, deploymentsById) => {\n const { config = {} } = device;\n const { deployment_id: configDeploymentId = '' } = config;\n const deviceConfigDeployment = deploymentsById[configDeploymentId] ?? {};\n return { device, deviceConfigDeployment };\n});\n\nexport const getDeploymentRelease = createSelector(\n [getDeploymentsById, getDeploymentsSelectionState, getReleasesById],\n (deploymentsById, { selectedId = '' }, releasesById) => {\n const deployment = deploymentsById[selectedId] ?? {};\n return deployment?.artifact_name && releasesById[deployment.artifact_name] ? releasesById[deployment.artifact_name] : { device_types_compatible: [] };\n }\n);\n\nexport const getSelectedDeploymentData = createSelector(\n [getDeploymentsById, getDeploymentsSelectionState, getDevicesById, getSelectedDeploymentDeviceIds],\n (deploymentsById, { selectedId = '' }, devicesById, selectedDeviceIds) => {\n const deployment = deploymentsById[selectedId] ?? {};\n const { devices = {} } = deployment as Deployment;\n return {\n deployment,\n selectedDevices: selectedDeviceIds.map(deviceId => ({ ...devicesById[deviceId], ...(devices[deviceId] ?? {}) }))\n };\n }\n);\n\nexport const getAvailableIssueOptionsByType = createSelector([getTenantCapabilities, getIssueCountsByType], ({ hasFullFiltering, hasMonitor }, issueCounts) =>\n Object.values<DeviceIssueOption>(DEVICE_ISSUE_OPTIONS).reduce(\n (accu, { isCategory, key, needsFullFiltering, needsMonitor, title }) => {\n if (isCategory || (needsFullFiltering && !hasFullFiltering) || (needsMonitor && !hasMonitor)) {\n return accu;\n }\n accu[key] = { count: issueCounts[key].filtered, key, title };\n return accu;\n },\n {} as Record<string, { count: number; key: string; title: string }>\n )\n);\n\nexport const getGroupNames = createSelector([getGroupsById, getUserRoles], (groupsById, { uiPermissions }) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [UNGROUPED_GROUP.id]: ungrouped, ...groups } = groupsById;\n return Object.keys(\n Object.entries(groups).reduce(\n (accu, [groupName, group]) => {\n if (group.filters || uiPermissions.groups[ALL_DEVICES]) {\n accu[groupName] = group;\n }\n return accu;\n },\n { ...uiPermissions.groups } as Record<string, DeviceGroup>\n )\n ).sort();\n});\n\nexport const getDeviceReportsForUser = createSelector(\n [getUserSettings, getCurrentUser, getGlobalSettings, getDevicesById],\n ({ reports }, { id: currentUserId }, globalSettings, devicesById) =>\n reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : [])\n);\n\nconst listTypeDeviceIdMap = {\n deviceList: getListedDevices,\n search: getSearchedDevices\n};\nconst deviceMapDefault = { defaultObject: { auth_sets: [] }, cutOffSize: DEVICE_LIST_MAXIMUM_LENGTH };\nconst getDeviceMappingDefaults = () => deviceMapDefault;\n\nexport const getMappedDevicesList = createSelector(\n [getDevicesById, (state, listType) => listTypeDeviceIdMap[listType](state), getDeviceMappingDefaults],\n listItemMapper\n);\n\nexport const getAuditlogDevice = createSelector([getAuditLogEntry, getDevicesById], (auditlogEvent, devicesById) => {\n let auditlogDevice: Partial<Device> = {};\n if (auditlogEvent) {\n const { object } = auditlogEvent as AuditLogEvent;\n const objectData = object as AuditLogEvent['object'] | undefined;\n if (objectData?.type === 'device' && objectData.id) {\n auditlogDevice = { id: objectData.id, ...(objectData.device ?? {}) } as Device;\n }\n }\n return { ...auditlogDevice, ...(auditlogDevice.id ? devicesById[auditlogDevice.id] : {}) };\n});\n\ntype RoleItem = Role | { value: string };\nexport const getRelevantRoles = createSelector([getOrganization, getRolesList], ({ service_provider }, roles) => {\n if (service_provider) {\n return roles.reduce(\n (accu, role) => {\n if (rolesById[role.value as keyof typeof rolesById]) {\n return accu;\n }\n accu.push(role);\n return accu;\n },\n [...Object.values(serviceProviderRolesById)] as RoleItem[]\n );\n }\n return Object.keys(rolesById)\n .reverse()\n .reduce((accu, key) => {\n const index = accu.findIndex(({ value }) => value === key);\n if (index >= 0) {\n accu = [accu[index], ...accu.filter((_, itemIndex) => index !== itemIndex)];\n }\n return accu;\n }, roles);\n});\n\nexport const getShowSecurityAlert = createSelector(\n [getCurrentUser, getHas2FA, getFeatures, getIsEnterprise, getUserSettingsInitialized, getSecurityAlertDismissedTimestamp],\n (currentUser, has2FA, features, isEnterprise, settingsInitialized, dismissedTimestamp) => {\n const isOAuth2 = !!currentUser?.sso?.length;\n const userVerified = !!currentUser.verified;\n\n const isHosted = features?.isHosted;\n const canHave2FA = isEnterprise || isHosted;\n const secureOAuthUser = isOAuth2 && userVerified;\n if (!currentUser || !settingsInitialized || has2FA || !canHave2FA || secureOAuthUser) {\n return false;\n }\n\n if (dismissedTimestamp === null) {\n return true;\n }\n\n const today = dayjs();\n const dismissedMonthAgo = today.diff(dismissedTimestamp, 'months');\n\n return dismissedMonthAgo > 0;\n }\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA6CA,MAAa,mBAAA,GAAA,iBAAA,gBACX,CAACA,oCAAAA,iBAAiBC,2BAAAA,YAAY,GAC7B,EAAE,OAAOC,2BAAAA,MAAM,GAAG,MAAM,EAAE,cAAc,eAAe,gBAAiB,YAAY,SAASA,2BAAAA,MAAM,WAAW,GAChH;AAED,MAAa,gBAAA,GAAA,iBAAA,gBAA8B;CAACC,6BAAAA;CAAgBC,6BAAAA;CAAc;CAAgB,GAAG,aAAa,WAAW,iBAAiB;CACpI,MAAM,UAAU,YAAY,OAAO,SAAS,YAAY,MAAM,MAAK,SAAQ,SAASC,+BAAAA,YAAY,MAAM,GAAG,CAAC;CAE1G,OAAO;EAAE;EAAS,eADI,UAAUC,cAAAA,4BAA4B,CAACD,+BAAAA,YAAY,MAAM,EAAE,UAAU,GAAGC,cAAAA,4BAA4B,YAAY,SAAS,EAAE,EAAE,UAAU;EAC5H;EACjC;AAEF,MAAM,iBAAiB,OAAiC,eACtD,OAAO,OAAO,MAAM,CAAC,MAAK,gBAAe,YAAY,SAAS,WAAW,CAAC;AAE5E,MAAa,uBAAA,GAAA,iBAAA,gBAAqC,CAAC,cAAcC,oCAAAA,qBAAqB,GAAG,EAAE,iBAAiB,sBAAsB;CAChI,MAAM,oBAAoB,cAAc,cAAc,UAAUC,+BAAAA,kBAAkB,OAAO,MAAM;CAC/F,MAAM,kBAAkB,qBAAqB,cAAc,cAAc,UAAUA,+BAAAA,kBAAkB,KAAK,MAAM;CAChH,MAAM,oBAAoB,qBAAqB,cAAc,cAAc,UAAUA,+BAAAA,kBAAkB,OAAO,MAAM;CAEpH,MAAM,cAAc,cAAc,SAAS,SAASA,+BAAAA,kBAAkB,KAAK,MAAM;CAEjF,MAAM,eAAe,cAAc,eAAe,SAASA,+BAAAA,kBAAkB,KAAK,MAAM;CACxF,MAAM,iBAAiB,cAAc,eAAe,SAASA,+BAAAA,kBAAkB,OAAO,MAAM;CAE5F,MAAM,iBAAiB,cAAc,cAAc,QAAQA,+BAAAA,kBAAkB,KAAK,MAAM;CACxF,MAAM,kBAAkB,OAAO,OAAO,cAAc,OAAO,CAAC,MAC1D,qBAAoB,iBAAiB,SAASA,+BAAAA,kBAAkB,KAAK,MAAM,IAAI,iBAAiB,SAAS,EAC1G;CACD,MAAM,kBAAkB,cAAc,cAAc,QAAQA,+BAAAA,kBAAkB,QAAQ,MAAM;CAC5F,MAAM,mBAAmB,cAAc,cAAc,QAAQA,+BAAAA,kBAAkB,OAAO,MAAM;CAO5F,OAAO;EACL;EACA,cARmB,cAAc,cAAc,QAAQA,+BAAAA,kBAAkB,UAAU,MAQvE;EACZ,YANC,cAAc,aAAa,SAASA,+BAAAA,kBAAkB,OAAO,MAAM,IAAI,UAAU,cAAc,cAAc,QAAQA,+BAAAA,kBAAkB,OAAO,MAAM;EAOrJ;EACA;EACA;EACA,oBATyB,cAAc,aAAa,SAASA,+BAAAA,kBAAkB,KAAK,MAAM,IAAI;EAU9F;EACA;EACA;EACA;EACA;EACA;EACA,mBAAmB,cAAc;EACjC,qBAAqB,cAAc;EACnC,UAAU;EACX;EACD;AAEF,MAAa,yBAAA,GAAA,iBAAA,gBACX;CAACP,2BAAAA;CAAaD,oCAAAA;CAAiB;CAAgB,GAE7C,EACE,cAAc,mBACd,iBAAiB,uBACjB,kBAAkB,wBAClB,YAAY,kBACZ,YAEF,EAAE,SAAS,EAAE,EAAE,OAAOE,2BAAAA,MAAM,GAAG,MAC/B,iBACG;CACH,MAAM,WAAW,gBAAgB,SAASA,2BAAAA,MAAM,aAAa;CAK7D,OAAO;EACL;EACA,UAAU;EACV,aAAa;EACb,cARmB,qBAAqB;EASxC,iBARsB,OAAO,MAAK,UAAS,MAAM,SAASO,2BAAAA,OAAO,UAAU,MAAM,MAAM,QAAQ,IAAK,yBAAyB,CAAC;EAS9H,kBARuB,OAAO,MAAK,UAAS,MAAM,SAASA,2BAAAA,OAAO,aAAa,MAAM,MAAM,QAAQ,IAAK,0BAA0B,CAAC;EASnI,kBAAkB;EAClB,YATiB,oBAAoB,OAAO,MAAK,UAAS,MAAM,SAASA,2BAAAA,OAAO,QAAQ,MAAM,MAAM,QAAQ;EAU5G;EACA;EACD;EAEJ;AAED,MAAa,uBAAA,GAAA,iBAAA,gBACX,CAACC,6BAAAA,mBAAmBC,+BAAAA,uBAAuB,GAC1C,EAAE,mBAAmB,EAAE,oBAAoB,qBAAqB,kBAAkB,oBAAoB;CACrG,MAAM,sBAAsB;EAAE,KAAK;EAAQ,OAAO;EAAQ,OAAOC,+BAAAA,iBAAiB;EAAM,UAAUA,+BAAAA,iBAAiB;EAAM,UAAU;EAAG;CACtI,MAAM,oBAAoB;EAAE,KAAK;EAAM,OAAO;EAAa,OAAOA,+BAAAA,iBAAiB;EAAU,UAAUA,+BAAAA,iBAAiB;EAAU,UAAU;EAAG;CAC/I,MAAM,mBAAmB;EAAE,KAAK;EAAiB,OAAO;EAAmB,OAAOA,+BAAAA,iBAAiB;EAAQ,UAAUA,+BAAAA,iBAAiB;EAAQ,UAAU;EAAG;CAC3J,MAAM,kBAAkB;EAAE,GAAG;EAAkB,KAAK;EAAc,OAAO;EAAyB;CAClG,MAAM,wBAAwB;EAAE,KAAK;EAAc,OAAO;EAAiB,OAAOA,+BAAAA,iBAAiB;EAAQ,UAAUA,+BAAAA,iBAAiB;EAAQ,UAAU;EAAG;CAkB3J,QAAA,GAAA,6BAAA,0BAAgC;EAhB9B,GAAG,gBAAgB,KAAI,UAAS;GAC9B,GAAG;GACH,OAAO,kBAAkB,QAAQ,KAAK,MAAM,kBAAkB,QAAQ,KAAK;GAC3E,UAAU;GACV,UAAU;GACX,EAAE;EACH;EACA;EACA,GAAG,mBAAmB,KAAI,UAAS;GAAE,KAAK;GAAM,OAAO;GAAM,OAAOA,+BAAAA,iBAAiB;GAAU,UAAUA,+BAAAA,iBAAiB;GAAU,UAAU;GAAG,EAAE;EACnJ,GAAG,oBAAoB,KAAI,UAAS;GAAE,KAAK;GAAM,OAAO;GAAM,OAAOA,+BAAAA,iBAAiB;GAAW,UAAUA,+BAAAA,iBAAiB;GAAW,UAAU;GAAG,EAAE;EACtJ,GAAG,cAAc,KAAI,UAAS;GAAE,KAAK;GAAM,OAAO;GAAM,OAAOA,+BAAAA,iBAAiB;GAAM,UAAUA,+BAAAA,iBAAiB;GAAM,UAAU;GAAG,EAAE;EACtI;EACA;EACA;EACA,GAAG,iBAAiB,KAAI,UAAS;GAAE,KAAK;GAAM,OAAO;GAAM,OAAOA,+BAAAA,iBAAiB;GAAQ,UAAUA,+BAAAA,iBAAiB;GAAQ,UAAU;GAAG,EAAE;EAErG,EAAE,MAAM;EAErD;AAED,MAAa,sBAAA,GAAA,iBAAA,gBAAoC,CAACC,kCAAAA,eAAeC,6BAAAA,gBAAgB,GAAG,EAAE,UAAU,UAAU,UAAU,GAAG,aAAa,EAAE,aAAa,EAAE,QAAQ;CAC3J,GAAG;CACH,GAAG;CACH,UAAU,WAAW,YAAY;CACjC,UACE,OAAO,KAAKC,kCAAAA,gBAAgB,CAAC,WAAU,SAAQ,SAAS,SAAS,GAAG,OAAO,KAAKA,kCAAAA,gBAAgB,CAAC,WAAU,SAAQ,SAAS,WAAW,SAAS,GAC5I,WACA,WAAW;CACjB,UAAU,CAAC,WAAW,WAAW,WAAW,WAAW;CACxD,EAAE;AAEH,MAAa,wBAAA,GAAA,iBAAA,gBAAsC,CAACC,+BAAAA,gBAAgBH,kCAAAA,cAAc,GAAG,aAAa,EAAE,UAAU,uBAAuB;CACnI,MAAM,oBAAoB,WAAA,GAAA,6BAAA,sBAAqC,OAAO,OAAO,YAAY,EAAE,SAAS;CACpG,OAAO,mBAAmB,GAAG,kBAAkB,GAAG,qBAAqB;EACvE;AAEF,MAAa,6BAAA,GAAA,iBAAA,gBAA2C,CAACI,+BAAAA,eAAeC,mCAAAA,mBAAmB,GAAG,QAAQ,oBAAoB;CACxH,MAAM,EAAE,SAAS,EAAE,KAAK;CACxB,MAAM,EAAE,eAAe,qBAAqB,OAAO;CAEnD,OAAO;EAAE;EAAQ,wBADc,gBAAgB,uBAAuB,EAAE;EAC/B;EACzC;AAEF,MAAa,wBAAA,GAAA,iBAAA,gBACX;CAACA,mCAAAA;CAAoBC,mCAAAA;CAA8BC,gCAAAA;CAAgB,GAClE,iBAAiB,EAAE,aAAa,MAAM,iBAAiB;CACtD,MAAM,aAAa,gBAAgB,eAAe,EAAE;CACpD,OAAO,YAAY,iBAAiB,aAAa,WAAW,iBAAiB,aAAa,WAAW,iBAAiB,EAAE,yBAAyB,EAAE,EAAE;EAExJ;AAED,MAAa,6BAAA,GAAA,iBAAA,gBACX;CAACF,mCAAAA;CAAoBC,mCAAAA;CAA8BH,+BAAAA;CAAgBK,mCAAAA;CAA+B,GACjG,iBAAiB,EAAE,aAAa,MAAM,aAAa,sBAAsB;CACxE,MAAM,aAAa,gBAAgB,eAAe,EAAE;CACpD,MAAM,EAAE,UAAU,EAAE,KAAK;CACzB,OAAO;EACL;EACA,iBAAiB,kBAAkB,KAAI,cAAa;GAAE,GAAG,YAAY;GAAW,GAAI,QAAQ,aAAa,EAAE;GAAG,EAAE;EACjH;EAEJ;AAED,MAAa,kCAAA,GAAA,iBAAA,gBAAgD,CAAC,uBAAuBC,+BAAAA,qBAAqB,GAAG,EAAE,kBAAkB,cAAc,gBAC7I,OAAO,OAA0BC,+BAAAA,qBAAqB,CAAC,QACpD,MAAM,EAAE,YAAY,KAAK,oBAAoB,cAAc,YAAY;CACtE,IAAI,cAAe,sBAAsB,CAAC,oBAAsB,gBAAgB,CAAC,YAC/E,OAAO;CAET,KAAK,OAAO;EAAE,OAAO,YAAY,KAAK;EAAU;EAAK;EAAO;CAC5D,OAAO;GAET,EAAE,CACH,CACF;AAED,MAAa,iBAAA,GAAA,iBAAA,gBAA+B,CAACC,+BAAAA,eAAe,aAAa,GAAG,YAAY,EAAE,oBAAoB;CAE5G,MAAM,GAAGC,kBAAAA,gBAAgB,KAAK,WAAW,GAAG,WAAW;CACvD,OAAO,OAAO,KACZ,OAAO,QAAQ,OAAO,CAAC,QACpB,MAAM,CAAC,WAAW,WAAW;EAC5B,IAAI,MAAM,WAAW,cAAc,OAAOC,+BAAAA,cACxC,KAAK,aAAa;EAEpB,OAAO;IAET,EAAE,GAAG,cAAc,QAAQ,CAC5B,CACF,CAAC,MAAM;EACR;AAEF,MAAa,2BAAA,GAAA,iBAAA,gBACX;CAACZ,6BAAAA;CAAiBX,6BAAAA;CAAgBO,6BAAAA;CAAmBM,+BAAAA;CAAe,GACnE,EAAE,WAAW,EAAE,IAAI,iBAAiB,gBAAgB,gBACnD,WAAW,eAAe,GAAG,cAAc,eAAe,OAAO,KAAK,YAAY,CAAC,SAASW,2BAAAA,iBAAiB,EAAE,EAClH;AAED,MAAM,sBAAsB;CAC1B,YAAYC,+BAAAA;CACZ,QAAQC,2BAAAA;CACT;AACD,MAAM,mBAAmB;CAAE,eAAe,EAAE,WAAW,EAAE,EAAE;CAAE,YAAA;CAAwC;AACrG,MAAM,iCAAiC;AAEvC,MAAa,wBAAA,GAAA,iBAAA,gBACX;CAACb,+BAAAA;EAAiB,OAAO,aAAa,oBAAoB,UAAU,MAAM;CAAE;CAAyB,EACrGc,cAAAA,eACD;AAED,MAAa,qBAAA,GAAA,iBAAA,gBAAmC,CAACC,oCAAAA,kBAAkBf,+BAAAA,eAAe,GAAG,eAAe,gBAAgB;CAClH,IAAI,iBAAkC,EAAE;CACxC,IAAI,eAAe;EACjB,MAAM,EAAE,WAAW;EACnB,MAAM,aAAa;EACnB,IAAI,YAAY,SAAS,YAAY,WAAW,IAC9C,iBAAiB;GAAE,IAAI,WAAW;GAAI,GAAI,WAAW,UAAU,EAAE;GAAG;;CAGxE,OAAO;EAAE,GAAG;EAAgB,GAAI,eAAe,KAAK,YAAY,eAAe,MAAM,EAAE;EAAG;EAC1F;AAGF,MAAa,oBAAA,GAAA,iBAAA,gBAAkC,CAAChB,oCAAAA,iBAAiBgC,6BAAAA,aAAa,GAAG,EAAE,oBAAoB,UAAU;CAC/G,IAAI,kBACF,OAAO,MAAM,QACV,MAAM,SAAS;EACd,IAAIC,+BAAAA,UAAU,KAAK,QACjB,OAAO;EAET,KAAK,KAAK,KAAK;EACf,OAAO;IAET,CAAC,GAAG,OAAO,OAAOC,+BAAAA,yBAAyB,CAAC,CAC7C;CAEH,OAAO,OAAO,KAAKD,+BAAAA,UAAU,CAC1B,SAAS,CACT,QAAQ,MAAM,QAAQ;EACrB,MAAM,QAAQ,KAAK,WAAW,EAAE,YAAY,UAAU,IAAI;EAC1D,IAAI,SAAS,GACX,OAAO,CAAC,KAAK,QAAQ,GAAG,KAAK,QAAQ,GAAG,cAAc,UAAU,UAAU,CAAC;EAE7E,OAAO;IACN,MAAM;EACX;AAEF,MAAa,wBAAA,GAAA,iBAAA,gBACX;CAAC9B,6BAAAA;CAAgBgC,6BAAAA;CAAWlC,2BAAAA;CAAa;CAAiBmC,6BAAAA;CAA4BC,6BAAAA;CAAmC,GACxH,aAAa,QAAQ,UAAU,cAAc,qBAAqB,uBAAuB;CACxF,MAAM,WAAW,CAAC,CAAC,aAAa,KAAK;CACrC,MAAM,eAAe,CAAC,CAAC,YAAY;CAEnC,MAAM,WAAW,UAAU;CAG3B,IAAI,CAAC,eAAe,CAAC,uBAAuB,UAAU,EAFnC,gBAAgB,aACX,YAAY,cAElC,OAAO;CAGT,IAAI,uBAAuB,MACzB,OAAO;CAMT,QAAA,GAAA,MAAA,UAF+B,CAAC,KAAK,oBAAoB,SAEjC,GAAG;EAE9B"}
|
|
1
|
+
{"version":3,"file":"commonSelectors.cjs","names":["getOrganization","getFeatures","PLANS","getCurrentUser","getRolesById","rolesByName","mapUserRolesToUiPermissions","getIsServiceProvider","uiPermissionsById","ADDONS","getGlobalSettings","getFilteringAttributes","ATTRIBUTE_SCOPES","getOnboarding","getUserSettings","onboardingSteps","getDevicesById","getDeviceById","getDeploymentsById","getDeploymentsSelectionState","getReleasesById","getSelectedDeploymentDeviceIds","getIssueCountsByType","DEVICE_ISSUE_OPTIONS","getGroupsById","UNGROUPED_GROUP","ALL_DEVICES","defaultReports","getListedDevices","getSearchedDevices","listItemMapper","getAuditLogEntry","getRolesList","rolesById","serviceProviderRolesById","getHas2FA","getUserSettingsInitialized","getSecurityAlertDismissedTimestamp"],"sources":["../src/commonSelectors.ts"],"sourcesContent":["// Copyright 2024 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport type { AuditLog as AuditLogEvent } from '@northern.tech/types/types.gen';\nimport type { DeviceIssueOption } from '@northern.tech/utils/constants';\nimport { attributeDuplicateFilter, getDemoDeviceAddress as getDemoDeviceAddressHelper } from '@northern.tech/utils/helpers';\nimport { createSelector } from '@reduxjs/toolkit';\nimport dayjs from 'dayjs';\n\nimport { ADDONS, PLANS, defaultReports } from './appSlice/constants';\nimport { getFeatures, getSearchedDevices } from './appSlice/selectors';\nimport { DEVICE_LIST_MAXIMUM_LENGTH, UNGROUPED_GROUP } from './commonConstants';\nimport { ALL_DEVICES, ATTRIBUTE_SCOPES, DEVICE_ISSUE_OPTIONS, rolesById, rolesByName, serviceProviderRolesById, uiPermissionsById } from './constants';\nimport type { Role } from './constants';\nimport type { Deployment } from './deploymentsSlice';\nimport { getDeploymentsById, getDeploymentsSelectionState, getSelectedDeploymentDeviceIds } from './deploymentsSlice/selectors';\nimport type { Device, DeviceGroup } from './devicesSlice';\nimport { getDeviceById, getDevicesById, getFilteringAttributes, getGroupsById, getListedDevices } from './devicesSlice/selectors';\nimport { getIssueCountsByType } from './monitorSlice/selectors';\nimport { onboardingSteps } from './onboardingSlice/constants';\nimport { getOnboarding } from './onboardingSlice/selectors';\nimport { getAuditLogEntry, getIsServiceProvider, getOrganization } from './organizationSlice/selectors';\nimport { getReleasesById } from './releasesSlice/selectors';\nimport {\n getCurrentUser,\n getGlobalSettings,\n getHas2FA,\n getRolesById,\n getRolesList,\n getSecurityAlertDismissedTimestamp,\n getUserSettings,\n getUserSettingsInitialized\n} from './usersSlice/selectors';\nimport { listItemMapper, mapUserRolesToUiPermissions } from './utils';\n\nexport const getIsEnterprise = createSelector(\n [getOrganization, getFeatures],\n ({ plan = PLANS.os.id }, { isEnterprise, isHosted }) => isEnterprise || (isHosted && plan === PLANS.enterprise.id)\n);\n\nexport const getUserRoles = createSelector([getCurrentUser, getRolesById, getIsEnterprise], (currentUser, rolesById, isEnterprise) => {\n const isAdmin = currentUser.roles?.length ? currentUser.roles.some(role => role === rolesByName.admin) : !isEnterprise;\n const uiPermissions = isAdmin ? mapUserRolesToUiPermissions([rolesByName.admin], rolesById) : mapUserRolesToUiPermissions(currentUser.roles || [], rolesById);\n return { isAdmin, uiPermissions };\n});\n\nconst hasPermission = (thing: Record<string, string[]>, permission: string): boolean =>\n Object.values(thing).some(permissions => permissions.includes(permission));\n\nexport const getUserCapabilities = createSelector([getUserRoles, getIsServiceProvider], ({ uiPermissions }, isServiceProvider) => {\n const canManageReleases = hasPermission(uiPermissions.releases, uiPermissionsById.manage.value);\n const canReadReleases = canManageReleases || hasPermission(uiPermissions.releases, uiPermissionsById.read.value);\n const canUploadReleases = canManageReleases || hasPermission(uiPermissions.releases, uiPermissionsById.upload.value);\n\n const canAuditlog = uiPermissions.auditlog.includes(uiPermissionsById.read.value);\n\n const canReadUsers = uiPermissions.userManagement.includes(uiPermissionsById.read.value);\n const canManageUsers = uiPermissions.userManagement.includes(uiPermissionsById.manage.value);\n\n const canReadDevices = hasPermission(uiPermissions.groups, uiPermissionsById.read.value);\n const canWriteDevices = Object.values(uiPermissions.groups).some(\n groupPermissions => groupPermissions.includes(uiPermissionsById.read.value) && groupPermissions.length > 1\n );\n const canTroubleshoot = hasPermission(uiPermissions.groups, uiPermissionsById.connect.value);\n const canManageDevices = hasPermission(uiPermissions.groups, uiPermissionsById.manage.value);\n const canConfigure = hasPermission(uiPermissions.groups, uiPermissionsById.configure.value);\n\n const canDeploy =\n (uiPermissions.deployments?.includes(uiPermissionsById.deploy.value) ?? false) || hasPermission(uiPermissions.groups, uiPermissionsById.deploy.value);\n const canReadDeployments = uiPermissions.deployments?.includes(uiPermissionsById.read.value) ?? false;\n\n return {\n canAuditlog,\n canConfigure,\n canDeploy,\n canManageDevices,\n canManageReleases,\n canManageUsers,\n canReadDeployments,\n canReadDevices,\n canReadReleases,\n canReadUsers,\n canTroubleshoot,\n canUploadReleases,\n canWriteDevices,\n groupsPermissions: uiPermissions.groups,\n releasesPermissions: uiPermissions.releases,\n SPTenant: isServiceProvider\n };\n});\n\nexport const getTenantCapabilities = createSelector(\n [getFeatures, getOrganization, getIsEnterprise],\n (\n {\n hasAuditlogs: isAuditlogEnabled,\n hasDeviceConfig: isDeviceConfigEnabled,\n hasDeviceConnect: isDeviceConnectEnabled,\n hasMonitor: isMonitorEnabled,\n isHosted\n },\n { addons = [], plan = PLANS.os.id },\n isEnterprise\n ) => {\n const canDelta = isEnterprise || plan === PLANS.professional.id;\n const hasAuditlogs = isAuditlogEnabled && isEnterprise;\n const hasDeviceConfig = addons.some(addon => addon.name === ADDONS.configure.id && addon.enabled) || (isDeviceConfigEnabled && !isHosted);\n const hasDeviceConnect = addons.some(addon => addon.name === ADDONS.troubleshoot.id && addon.enabled) || (isDeviceConnectEnabled && !isHosted);\n const hasMonitor = isMonitorEnabled && addons.some(addon => addon.name === ADDONS.monitor.id && addon.enabled);\n return {\n canDelta,\n canRetry: canDelta,\n canSchedule: canDelta,\n hasAuditlogs,\n hasDeviceConfig,\n hasDeviceConnect,\n hasFullFiltering: canDelta,\n hasMonitor,\n isEnterprise,\n plan\n };\n }\n);\n\nexport const getFilterAttributes = createSelector(\n [getGlobalSettings, getFilteringAttributes],\n ({ previousFilters }, { identityAttributes, inventoryAttributes, systemAttributes, tagAttributes }) => {\n const deviceNameAttribute = { key: 'name', value: 'Name', scope: ATTRIBUTE_SCOPES.tags, category: ATTRIBUTE_SCOPES.tags, priority: 1 };\n const deviceIdAttribute = { key: 'id', value: 'Device ID', scope: ATTRIBUTE_SCOPES.identity, category: ATTRIBUTE_SCOPES.identity, priority: 1 };\n const checkInAttribute = { key: 'check_in_time', value: 'Latest activity', scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPES.system, priority: 4 };\n const updateAttribute = { ...checkInAttribute, key: 'updated_ts', value: 'Last inventory update' };\n const firstRequestAttribute = { key: 'created_ts', value: 'First request', scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPES.system, priority: 4 };\n const attributes = [\n ...previousFilters.map(item => ({\n ...item,\n value: deviceIdAttribute.key === item.key ? deviceIdAttribute.value : item.key,\n category: 'recently used',\n priority: 0\n })),\n deviceNameAttribute,\n deviceIdAttribute,\n ...identityAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.identity, category: ATTRIBUTE_SCOPES.identity, priority: 1 })),\n ...inventoryAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.inventory, category: ATTRIBUTE_SCOPES.inventory, priority: 2 })),\n ...tagAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.tags, category: ATTRIBUTE_SCOPES.tags, priority: 3 })),\n checkInAttribute,\n updateAttribute,\n firstRequestAttribute,\n ...systemAttributes.map(item => ({ key: item, value: item, scope: ATTRIBUTE_SCOPES.system, category: ATTRIBUTE_SCOPES.system, priority: 4 }))\n ];\n return attributeDuplicateFilter(attributes, 'key');\n }\n);\n\nexport const getOnboardingState = createSelector([getOnboarding, getUserSettings], ({ complete, progress, showTips, ...remainder }, { onboarding = {} }) => ({\n ...remainder,\n ...onboarding,\n complete: onboarding.complete || complete,\n progress:\n Object.keys(onboardingSteps).findIndex(step => step === progress) > Object.keys(onboardingSteps).findIndex(step => step === onboarding.progress)\n ? progress\n : onboarding.progress,\n showTips: !onboarding.showTips ? onboarding.showTips : showTips\n}));\n\nexport const getDemoDeviceAddress = createSelector([getDevicesById, getOnboarding], (devicesById, { approach, demoArtifactPort }) => {\n const demoDeviceAddress = `http://${getDemoDeviceAddressHelper(Object.values(devicesById), approach)}`;\n return demoArtifactPort ? `${demoDeviceAddress}:${demoArtifactPort}` : demoDeviceAddress;\n});\n\nexport const getDeviceConfigDeployment = createSelector([getDeviceById, getDeploymentsById], (device, deploymentsById) => {\n const { config = {} } = device;\n const { deployment_id: configDeploymentId = '' } = config;\n const deviceConfigDeployment = deploymentsById[configDeploymentId] ?? {};\n return { device, deviceConfigDeployment };\n});\n\nexport const getDeploymentRelease = createSelector(\n [getDeploymentsById, getDeploymentsSelectionState, getReleasesById],\n (deploymentsById, { selectedId = '' }, releasesById) => {\n const deployment = deploymentsById[selectedId] ?? {};\n return deployment?.artifact_name && releasesById[deployment.artifact_name] ? releasesById[deployment.artifact_name] : { device_types_compatible: [] };\n }\n);\n\nexport const getSelectedDeploymentData = createSelector(\n [getDeploymentsById, getDeploymentsSelectionState, getDevicesById, getSelectedDeploymentDeviceIds],\n (deploymentsById, { selectedId = '' }, devicesById, selectedDeviceIds) => {\n const deployment = deploymentsById[selectedId] ?? {};\n const { devices = {} } = deployment as Deployment;\n return {\n deployment,\n selectedDevices: selectedDeviceIds.map(deviceId => ({ ...devicesById[deviceId], ...(devices[deviceId] ?? {}) }))\n };\n }\n);\n\nexport const getAvailableIssueOptionsByType = createSelector([getTenantCapabilities, getIssueCountsByType], ({ hasFullFiltering, hasMonitor }, issueCounts) =>\n Object.values<DeviceIssueOption>(DEVICE_ISSUE_OPTIONS).reduce(\n (accu, { isCategory, key, needsFullFiltering, needsMonitor, title }) => {\n if (isCategory || (needsFullFiltering && !hasFullFiltering) || (needsMonitor && !hasMonitor)) {\n return accu;\n }\n accu[key] = { count: issueCounts[key].filtered, key, title };\n return accu;\n },\n {} as Record<string, { count: number; key: string; title: string }>\n )\n);\n\nexport const getGroupNames = createSelector([getGroupsById, getUserRoles], (groupsById, { uiPermissions }) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [UNGROUPED_GROUP.id]: ungrouped, ...groups } = groupsById;\n return Object.keys(\n Object.entries(groups).reduce(\n (accu, [groupName, group]) => {\n if (group.filters || uiPermissions.groups[ALL_DEVICES]) {\n accu[groupName] = group;\n }\n return accu;\n },\n { ...uiPermissions.groups } as Record<string, DeviceGroup>\n )\n ).sort();\n});\n\nexport const getDeviceReportsForUser = createSelector(\n [getUserSettings, getCurrentUser, getGlobalSettings, getDevicesById],\n ({ reports }, { id: currentUserId }, globalSettings, devicesById) =>\n reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : [])\n);\n\nconst listTypeDeviceIdMap = {\n deviceList: getListedDevices,\n search: getSearchedDevices\n};\nconst deviceMapDefault = { defaultObject: { auth_sets: [] }, cutOffSize: DEVICE_LIST_MAXIMUM_LENGTH };\nconst getDeviceMappingDefaults = () => deviceMapDefault;\n\nexport const getMappedDevicesList = createSelector(\n [getDevicesById, (state, listType) => listTypeDeviceIdMap[listType](state), getDeviceMappingDefaults],\n listItemMapper\n);\n\nexport const getAuditlogDevice = createSelector([getAuditLogEntry, getDevicesById], (auditlogEvent, devicesById) => {\n let auditlogDevice: Partial<Device> = {};\n if (auditlogEvent) {\n const { object } = auditlogEvent as AuditLogEvent;\n const objectData = object as AuditLogEvent['object'] | undefined;\n if (objectData?.type === 'device' && objectData.id) {\n auditlogDevice = { id: objectData.id, ...(objectData.device ?? {}) } as Device;\n }\n }\n return { ...auditlogDevice, ...(auditlogDevice.id ? devicesById[auditlogDevice.id] : {}) };\n});\n\ntype RoleItem = Role | { value: string };\nexport const getRelevantRoles = createSelector([getOrganization, getRolesList], ({ service_provider }, roles) => {\n if (service_provider) {\n return roles.reduce(\n (accu, role) => {\n if (rolesById[role.value as keyof typeof rolesById]) {\n return accu;\n }\n accu.push(role);\n return accu;\n },\n [...Object.values(serviceProviderRolesById)] as RoleItem[]\n );\n }\n return Object.keys(rolesById)\n .reverse()\n .reduce((accu, key) => {\n const index = accu.findIndex(({ value }) => value === key);\n if (index >= 0) {\n accu = [accu[index], ...accu.filter((_, itemIndex) => index !== itemIndex)];\n }\n return accu;\n }, roles);\n});\n\nexport const getShowSecurityAlert = createSelector(\n [getCurrentUser, getHas2FA, getFeatures, getIsEnterprise, getUserSettingsInitialized, getSecurityAlertDismissedTimestamp],\n (currentUser, has2FA, features, isEnterprise, settingsInitialized, dismissedTimestamp) => {\n const isOAuth2 = !!currentUser?.sso?.length;\n const userVerified = !!currentUser.verified;\n\n const isHosted = features?.isHosted;\n const canHave2FA = isEnterprise || isHosted;\n const secureOAuthUser = isOAuth2 && userVerified;\n if (!currentUser || !settingsInitialized || has2FA || !canHave2FA || secureOAuthUser) {\n return false;\n }\n\n if (dismissedTimestamp === null) {\n return true;\n }\n\n const today = dayjs();\n const dismissedMonthAgo = today.diff(dismissedTimestamp, 'months');\n\n return dismissedMonthAgo > 0;\n }\n);\n"],"mappings":"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"}
|