@northern.tech/store 0.18.0 → 0.19.1

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 (106) hide show
  1. package/dist/actions.js +6 -6
  2. package/dist/api/general-api.cjs +13 -9
  3. package/dist/api/general-api.cjs.map +1 -1
  4. package/dist/api/general-api.js +3 -3
  5. package/dist/api/users-api.cjs +13 -9
  6. package/dist/api/users-api.cjs.map +1 -1
  7. package/dist/api/users-api.js +4 -4
  8. package/dist/appSlice/index.js +1 -1
  9. package/dist/appSlice/mocks.js +1 -1
  10. package/dist/appSlice/thunks.cjs +42 -19
  11. package/dist/appSlice/thunks.cjs.map +1 -1
  12. package/dist/appSlice/thunks.js +18 -18
  13. package/dist/auth.cjs +7 -9
  14. package/dist/auth.cjs.map +1 -1
  15. package/dist/auth.js +2 -2
  16. package/dist/{chunk-6UO33KLN.js → chunk-C3EMLDPU.js} +5 -5
  17. package/dist/{chunk-EFFRZCDN.js → chunk-FUGCLQ5L.js} +23 -23
  18. package/dist/{chunk-C5QK6HH6.js → chunk-GBXG2XBY.js} +5 -5
  19. package/dist/{chunk-5M6EUVNO.js → chunk-IRQRV552.js} +8 -2
  20. package/dist/chunk-IRQRV552.js.map +1 -0
  21. package/dist/{chunk-CXBQKY7F.js → chunk-KJHHSYGP.js} +14 -14
  22. package/dist/{chunk-PFWOM36E.js → chunk-MZ5NRW3K.js} +38 -17
  23. package/dist/{chunk-PFWOM36E.js.map → chunk-MZ5NRW3K.js.map} +1 -1
  24. package/dist/{chunk-BX2CTAJO.js → chunk-QFYYTAYD.js} +11 -11
  25. package/dist/{chunk-FDSMCFV5.js → chunk-UVTLZV34.js} +8 -10
  26. package/dist/chunk-UVTLZV34.js.map +1 -0
  27. package/dist/{chunk-Y3DJIMEN.js → chunk-XJLZK4QY.js} +3 -3
  28. package/dist/commonConstants.js +1 -1
  29. package/dist/commonSelectors.cjs +31 -0
  30. package/dist/commonSelectors.cjs.map +1 -1
  31. package/dist/commonSelectors.d.cts +147 -1
  32. package/dist/commonSelectors.d.ts +147 -1
  33. package/dist/commonSelectors.js +8 -6
  34. package/dist/constants.js +1 -1
  35. package/dist/deploymentsSlice/constants.js +1 -1
  36. package/dist/deploymentsSlice/index.js +1 -1
  37. package/dist/deploymentsSlice/mocks.js +1 -1
  38. package/dist/deploymentsSlice/selectors.js +1 -1
  39. package/dist/deploymentsSlice/thunks.cjs +42 -19
  40. package/dist/deploymentsSlice/thunks.cjs.map +1 -1
  41. package/dist/deploymentsSlice/thunks.js +18 -18
  42. package/dist/devicesSlice/constants.js +1 -1
  43. package/dist/devicesSlice/index.js +1 -1
  44. package/dist/devicesSlice/mocks.js +1 -1
  45. package/dist/devicesSlice/selectors.js +1 -1
  46. package/dist/devicesSlice/thunks.cjs +42 -19
  47. package/dist/devicesSlice/thunks.cjs.map +1 -1
  48. package/dist/devicesSlice/thunks.js +18 -18
  49. package/dist/liststatehook.js +1 -1
  50. package/dist/locationutils.js +1 -1
  51. package/dist/monitorSlice/index.js +1 -1
  52. package/dist/monitorSlice/mocks.js +1 -1
  53. package/dist/monitorSlice/thunks.cjs +32 -9
  54. package/dist/monitorSlice/thunks.cjs.map +1 -1
  55. package/dist/monitorSlice/thunks.js +15 -15
  56. package/dist/onboardingSlice/thunks.cjs +45 -22
  57. package/dist/onboardingSlice/thunks.cjs.map +1 -1
  58. package/dist/onboardingSlice/thunks.js +18 -18
  59. package/dist/organizationSlice/constants.js +1 -1
  60. package/dist/organizationSlice/index.js +1 -1
  61. package/dist/organizationSlice/mocks.js +1 -1
  62. package/dist/organizationSlice/selectors.js +1 -1
  63. package/dist/organizationSlice/thunks.cjs +50 -27
  64. package/dist/organizationSlice/thunks.cjs.map +1 -1
  65. package/dist/organizationSlice/thunks.js +18 -18
  66. package/dist/releasesSlice/index.js +1 -1
  67. package/dist/releasesSlice/mocks.js +1 -1
  68. package/dist/releasesSlice/selectors.js +1 -1
  69. package/dist/releasesSlice/thunks.cjs +32 -9
  70. package/dist/releasesSlice/thunks.cjs.map +1 -1
  71. package/dist/releasesSlice/thunks.js +15 -15
  72. package/dist/selectors.cjs +29 -0
  73. package/dist/selectors.cjs.map +1 -1
  74. package/dist/selectors.d.cts +1 -1
  75. package/dist/selectors.d.ts +1 -1
  76. package/dist/selectors.js +44 -42
  77. package/dist/sockethook.js +1 -1
  78. package/dist/store.cjs +7 -9
  79. package/dist/store.cjs.map +1 -1
  80. package/dist/store.js +8 -8
  81. package/dist/storehooks.cjs +60 -37
  82. package/dist/storehooks.cjs.map +1 -1
  83. package/dist/storehooks.js +20 -20
  84. package/dist/thunks.cjs +53 -30
  85. package/dist/thunks.cjs.map +1 -1
  86. package/dist/thunks.js +18 -18
  87. package/dist/useDeploymentDevice.cjs +42 -19
  88. package/dist/useDeploymentDevice.cjs.map +1 -1
  89. package/dist/useDeploymentDevice.js +18 -18
  90. package/dist/usersSlice/constants.js +1 -1
  91. package/dist/usersSlice/index.js +1 -1
  92. package/dist/usersSlice/mocks.js +1 -1
  93. package/dist/usersSlice/selectors.js +1 -1
  94. package/dist/usersSlice/thunks.cjs +42 -19
  95. package/dist/usersSlice/thunks.cjs.map +1 -1
  96. package/dist/usersSlice/thunks.js +18 -18
  97. package/dist/utils.js +1 -1
  98. package/package.json +1 -1
  99. package/dist/chunk-5M6EUVNO.js.map +0 -1
  100. package/dist/chunk-FDSMCFV5.js.map +0 -1
  101. /package/dist/{chunk-6UO33KLN.js.map → chunk-C3EMLDPU.js.map} +0 -0
  102. /package/dist/{chunk-EFFRZCDN.js.map → chunk-FUGCLQ5L.js.map} +0 -0
  103. /package/dist/{chunk-C5QK6HH6.js.map → chunk-GBXG2XBY.js.map} +0 -0
  104. /package/dist/{chunk-CXBQKY7F.js.map → chunk-KJHHSYGP.js.map} +0 -0
  105. /package/dist/{chunk-BX2CTAJO.js.map → chunk-QFYYTAYD.js.map} +0 -0
  106. /package/dist/{chunk-Y3DJIMEN.js.map → chunk-XJLZK4QY.js.map} +0 -0
@@ -1,41 +1,41 @@
1
1
  import {
2
2
  getDeviceById
3
- } from "./chunk-EFFRZCDN.js";
4
- import "./chunk-C5QK6HH6.js";
5
- import "./chunk-6UO33KLN.js";
3
+ } from "./chunk-FUGCLQ5L.js";
4
+ import "./chunk-GBXG2XBY.js";
5
+ import "./chunk-C3EMLDPU.js";
6
6
  import {
7
7
  useAppDispatch
8
- } from "./chunk-CXBQKY7F.js";
9
- import "./chunk-Y3DJIMEN.js";
10
- import "./chunk-5M6EUVNO.js";
11
- import "./chunk-BX2CTAJO.js";
12
- import "./chunk-TRKA7XYU.js";
8
+ } from "./chunk-KJHHSYGP.js";
9
+ import "./chunk-XJLZK4QY.js";
10
+ import "./chunk-IRQRV552.js";
11
+ import "./chunk-QFYYTAYD.js";
13
12
  import "./chunk-YR65C62H.js";
13
+ import "./chunk-VODRLEDP.js";
14
+ import "./chunk-TRKA7XYU.js";
15
+ import "./chunk-CQXDAXQF.js";
14
16
  import "./chunk-VCEFZTWS.js";
15
17
  import "./chunk-PVCHKW35.js";
16
- import "./chunk-CQXDAXQF.js";
17
- import "./chunk-OLKM53RL.js";
18
18
  import "./chunk-6WJI4MOP.js";
19
- import "./chunk-VODRLEDP.js";
20
- import "./chunk-FDSMCFV5.js";
19
+ import "./chunk-OLKM53RL.js";
20
+ import "./chunk-UVTLZV34.js";
21
21
  import "./chunk-53W2NRSL.js";
22
22
  import "./chunk-NMAXZ3ZY.js";
23
- import "./chunk-PFWOM36E.js";
24
- import "./chunk-GEQ2QQEE.js";
23
+ import "./chunk-MZ5NRW3K.js";
25
24
  import "./chunk-QL6FN2JC.js";
26
- import "./chunk-3NOV7X4M.js";
27
- import "./chunk-YO22XLHI.js";
28
- import "./chunk-JIS4PA3R.js";
29
25
  import {
30
26
  getDevicesById
31
27
  } from "./chunk-O7DR57RN.js";
28
+ import "./chunk-GEQ2QQEE.js";
29
+ import "./chunk-JIS4PA3R.js";
30
+ import "./chunk-3NOV7X4M.js";
32
31
  import "./chunk-WR6RQKF5.js";
32
+ import "./chunk-YO22XLHI.js";
33
33
  import "./chunk-4BHM6WVX.js";
34
34
  import "./chunk-U5TPV5X5.js";
35
35
  import "./chunk-WWED74SG.js";
36
36
  import "./chunk-2DYA3X77.js";
37
- import "./chunk-FAJ3I2UQ.js";
38
37
  import "./chunk-ZKAH3APE.js";
38
+ import "./chunk-FAJ3I2UQ.js";
39
39
  import "./chunk-EL672W25.js";
40
40
 
41
41
  // src/useDeploymentDevice.ts
@@ -7,8 +7,8 @@ import {
7
7
  settingsKeys
8
8
  } from "../chunk-WWED74SG.js";
9
9
  import "../chunk-2DYA3X77.js";
10
- import "../chunk-FAJ3I2UQ.js";
11
10
  import "../chunk-ZKAH3APE.js";
11
+ import "../chunk-FAJ3I2UQ.js";
12
12
  import "../chunk-EL672W25.js";
13
13
  export {
14
14
  OWN_USER_ID,
@@ -7,8 +7,8 @@ import {
7
7
  } from "../chunk-YR65C62H.js";
8
8
  import "../chunk-WWED74SG.js";
9
9
  import "../chunk-2DYA3X77.js";
10
- import "../chunk-FAJ3I2UQ.js";
11
10
  import "../chunk-ZKAH3APE.js";
11
+ import "../chunk-FAJ3I2UQ.js";
12
12
  import "../chunk-EL672W25.js";
13
13
  export {
14
14
  actions,
@@ -10,8 +10,8 @@ import {
10
10
  uiPermissionsById
11
11
  } from "../chunk-WWED74SG.js";
12
12
  import "../chunk-2DYA3X77.js";
13
- import "../chunk-FAJ3I2UQ.js";
14
13
  import "../chunk-ZKAH3APE.js";
14
+ import "../chunk-FAJ3I2UQ.js";
15
15
  import "../chunk-EL672W25.js";
16
16
 
17
17
  // src/usersSlice/mocks.ts
@@ -23,8 +23,8 @@ import {
23
23
  import "../chunk-U5TPV5X5.js";
24
24
  import "../chunk-WWED74SG.js";
25
25
  import "../chunk-2DYA3X77.js";
26
- import "../chunk-FAJ3I2UQ.js";
27
26
  import "../chunk-ZKAH3APE.js";
27
+ import "../chunk-FAJ3I2UQ.js";
28
28
  import "../chunk-EL672W25.js";
29
29
  export {
30
30
  getCurrentSession,
@@ -71,9 +71,9 @@ __export(thunks_exports, {
71
71
  module.exports = __toCommonJS(thunks_exports);
72
72
  var import_helpers10 = require("@northern.tech/utils/helpers");
73
73
  var import_retrytimer = require("@northern.tech/utils/retrytimer");
74
- var import_dayjs = __toESM(require("dayjs"), 1);
74
+ var import_dayjs2 = __toESM(require("dayjs"), 1);
75
75
  var import_md5 = __toESM(require("md5"), 1);
76
- var import_universal_cookie3 = __toESM(require("universal-cookie"), 1);
76
+ var import_universal_cookie4 = __toESM(require("universal-cookie"), 1);
77
77
 
78
78
  // src/usersSlice/index.ts
79
79
  var import_toolkit = require("@reduxjs/toolkit");
@@ -1732,6 +1732,7 @@ var actions_default = {
1732
1732
 
1733
1733
  // src/api/general-api.ts
1734
1734
  var import_axios = __toESM(require("axios"), 1);
1735
+ var import_universal_cookie2 = __toESM(require("universal-cookie"), 1);
1735
1736
 
1736
1737
  // src/auth.ts
1737
1738
  var import_universal_cookie = __toESM(require("universal-cookie"), 1);
@@ -1744,19 +1745,17 @@ var getSessionInfo = () => {
1744
1745
  sessionInfo = JSON.parse(window.localStorage.getItem("JWT") ?? "");
1745
1746
  } catch {
1746
1747
  }
1748
+ const jwtTokenFromCookie = cookies.get("JWT", { doNotParse: true }) ?? "";
1749
+ if (jwtTokenFromCookie) {
1750
+ setSessionInfo({ token: jwtTokenFromCookie });
1751
+ cookies.remove("JWT");
1752
+ cookies.remove("JWT", { path: "/" });
1753
+ return { token: jwtTokenFromCookie, expiresAt: void 0 };
1754
+ }
1747
1755
  if (sessionInfo.expiresAt && new Date(sessionInfo.expiresAt) < /* @__PURE__ */ new Date()) {
1748
1756
  cleanUp();
1749
1757
  return { ...emptySession };
1750
1758
  }
1751
- if (!sessionInfo.token) {
1752
- const jwtTokenFromCookie = cookies.get("JWT", { doNotParse: true }) ?? "";
1753
- if (jwtTokenFromCookie) {
1754
- setSessionInfo({ token: jwtTokenFromCookie });
1755
- sessionInfo.token = jwtTokenFromCookie;
1756
- cookies.remove("JWT");
1757
- cookies.remove("JWT", { path: "/" });
1758
- }
1759
- }
1760
1759
  sessionInfo.token = sessionInfo.token || "";
1761
1760
  tokenCache = sessionInfo.token;
1762
1761
  return sessionInfo;
@@ -1775,8 +1774,13 @@ var cleanUp = () => {
1775
1774
  };
1776
1775
 
1777
1776
  // src/api/general-api.ts
1777
+ var cookies2 = new import_universal_cookie2.default();
1778
1778
  var unauthorizedRedirect = (error) => {
1779
1779
  if (!(0, import_axios.isCancel)(error) && error.response?.status === 401 && getToken() && !window.location.pathname.endsWith("/subscription")) {
1780
+ if (cookies2.get("JWT", { doNotParse: true })) {
1781
+ window.location.reload();
1782
+ return Promise.reject(error);
1783
+ }
1780
1784
  cleanUp();
1781
1785
  window.location.replace("/ui/");
1782
1786
  }
@@ -1843,6 +1847,7 @@ var getIsPreview = (0, import_toolkit9.createSelector)([getFullVersionInformatio
1843
1847
  // src/commonSelectors.ts
1844
1848
  var import_helpers5 = require("@northern.tech/utils/helpers");
1845
1849
  var import_toolkit15 = require("@reduxjs/toolkit");
1850
+ var import_dayjs = __toESM(require("dayjs"), 1);
1846
1851
 
1847
1852
  // src/deploymentsSlice/selectors.ts
1848
1853
  var import_toolkit10 = require("@reduxjs/toolkit");
@@ -2201,6 +2206,7 @@ var emptyObject = {};
2201
2206
  var getRolesById = (state) => state.users.rolesById;
2202
2207
  var getTooltipsById = (state) => state.users.tooltips.byId;
2203
2208
  var getGlobalSettings = (state) => state.users.globalSettings;
2209
+ var getUserSettingsInitialized = (state) => state.users.userSettingsInitialized;
2204
2210
  var getCurrentUserId = (state) => state.users.currentUser;
2205
2211
  var getUsersById = (state) => state.users.byId;
2206
2212
  var getUsersList = (0, import_toolkit14.createSelector)([getUsersById], (usersById) => Object.values(usersById));
@@ -2238,6 +2244,7 @@ var getOfflineThresholdSettings = (0, import_toolkit14.createSelector)([getGloba
2238
2244
  intervalUnit: offlineThreshold?.intervalUnit || DEVICE_ONLINE_CUTOFF.intervalName
2239
2245
  }));
2240
2246
  var getRolesList = (0, import_toolkit14.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([value, role]) => ({ value, ...role })));
2247
+ var getSecurityAlertDismissedTimestamp = (state) => state.users.userSettings.securityAlertDismissedTimestamp;
2241
2248
 
2242
2249
  // src/commonSelectors.ts
2243
2250
  var getIsEnterprise = (0, import_toolkit15.createSelector)(
@@ -2444,6 +2451,22 @@ var getRelevantRoles = (0, import_toolkit15.createSelector)([getOrganization, ge
2444
2451
  return accu;
2445
2452
  }, roles);
2446
2453
  });
2454
+ var getShowSecurityAlert = (0, import_toolkit15.createSelector)(
2455
+ [getCurrentUser, getHas2FA, getFeatures, getIsEnterprise, getUserSettingsInitialized, getSecurityAlertDismissedTimestamp],
2456
+ (currentUser, has2FA, features, isEnterprise, settingsInitialized, dismissedTimestamp) => {
2457
+ const isHosted = features?.isHosted;
2458
+ const canHave2FA = isEnterprise || isHosted;
2459
+ if (!currentUser || !settingsInitialized || has2FA || !canHave2FA) {
2460
+ return false;
2461
+ }
2462
+ if (dismissedTimestamp === null) {
2463
+ return true;
2464
+ }
2465
+ const today = (0, import_dayjs.default)();
2466
+ const dismissedMonthAgo = today.diff(dismissedTimestamp, "months");
2467
+ return dismissedMonthAgo > 0;
2468
+ }
2469
+ );
2447
2470
 
2448
2471
  // src/store.ts
2449
2472
  var import_react_redux = require("react-redux");
@@ -2541,10 +2564,10 @@ var createAppAsyncThunk = import_toolkit16.createAsyncThunk.withTypes();
2541
2564
 
2542
2565
  // src/appSlice/thunks.ts
2543
2566
  var import_helpers7 = require("@northern.tech/utils/helpers");
2544
- var import_universal_cookie2 = __toESM(require("universal-cookie"), 1);
2545
- var cookies2 = new import_universal_cookie2.default();
2567
+ var import_universal_cookie3 = __toESM(require("universal-cookie"), 1);
2568
+ var cookies3 = new import_universal_cookie3.default();
2546
2569
  var setFirstLoginAfterSignup = createAppAsyncThunk(`${sliceName2}/setFirstLoginAfterSignup`, (firstLoginAfterSignup, { dispatch }) => {
2547
- cookies2.set("firstLoginAfterSignup", !!firstLoginAfterSignup, { maxAge: 60, path: "/", domain: ".mender.io", sameSite: false });
2570
+ cookies3.set("firstLoginAfterSignup", !!firstLoginAfterSignup, { maxAge: 60, path: "/", domain: ".mender.io", sameSite: false });
2548
2571
  dispatch(actions2.setFirstLoginAfterSignup(!!firstLoginAfterSignup));
2549
2572
  });
2550
2573
  var dateFunctionMap = {
@@ -3963,7 +3986,7 @@ var changeNotificationSetting = createAppAsyncThunk(
3963
3986
  );
3964
3987
 
3965
3988
  // src/usersSlice/thunks.ts
3966
- var cookies3 = new import_universal_cookie3.default();
3989
+ var cookies4 = new import_universal_cookie4.default();
3967
3990
  var { setAnnouncement, setSnackbar: setSnackbar4 } = actions_default;
3968
3991
  var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) => () => {
3969
3992
  const errorText = (0, import_helpers10.extractErrorMessage)(err);
@@ -3998,7 +4021,7 @@ var loginUser = createAppAsyncThunk(
3998
4021
  now.setSeconds(now.getSeconds() + import_constants5.maxSessionAge);
3999
4022
  const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
4000
4023
  setSessionInfo({ token, expiresAt });
4001
- cookies3.remove("JWT", { path: "/" });
4024
+ cookies4.remove("JWT", { path: "/" });
4002
4025
  return dispatch(getUser(OWN_USER_ID)).unwrap().catch((e) => {
4003
4026
  cleanUp();
4004
4027
  return Promise.reject(dispatch(setSnackbar4((0, import_helpers10.extractErrorMessage)(e))));
@@ -4529,7 +4552,7 @@ var saveUserSettings = createAppAsyncThunk(
4529
4552
  const updatedSettings = {
4530
4553
  ...userSettings,
4531
4554
  ...settings,
4532
- firstLoginTimestamp: userSettings.firstLoginTimestamp ?? (0, import_dayjs.default)().format(),
4555
+ firstLoginTimestamp: userSettings.firstLoginTimestamp ?? (0, import_dayjs2.default)().format(),
4533
4556
  onboarding: {
4534
4557
  ...onboardingState,
4535
4558
  ...settings.onboarding
@@ -4553,9 +4576,9 @@ var setHideAnnouncement = createAppAsyncThunk(
4553
4576
  ({ shouldHide, userId }, { dispatch, getState }) => {
4554
4577
  const currentUserId = userId || getCurrentUser(getState()).id;
4555
4578
  const hash = getState().app.hostedAnnouncement ? (0, import_md5.default)(getState().app.hostedAnnouncement) : "";
4556
- const announceCookie = cookies3.get(`${currentUserId}${hash}`);
4579
+ const announceCookie = cookies4.get(`${currentUserId}${hash}`);
4557
4580
  if (shouldHide || hash.length && typeof announceCookie !== "undefined") {
4558
- cookies3.set(`${currentUserId}${hash}`, true, { maxAge: 604800 });
4581
+ cookies4.set(`${currentUserId}${hash}`, true, { maxAge: 604800 });
4559
4582
  dispatch(setAnnouncement(""));
4560
4583
  }
4561
4584
  }