@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
@@ -13,38 +13,38 @@ import {
13
13
  saveDeltaDeploymentsConfig,
14
14
  setDeploymentsState,
15
15
  updateDeploymentControlMap
16
- } from "../chunk-EFFRZCDN.js";
17
- import "../chunk-C5QK6HH6.js";
18
- import "../chunk-6UO33KLN.js";
19
- import "../chunk-CXBQKY7F.js";
20
- import "../chunk-Y3DJIMEN.js";
21
- import "../chunk-5M6EUVNO.js";
22
- import "../chunk-BX2CTAJO.js";
23
- import "../chunk-TRKA7XYU.js";
16
+ } from "../chunk-FUGCLQ5L.js";
17
+ import "../chunk-GBXG2XBY.js";
18
+ import "../chunk-C3EMLDPU.js";
19
+ import "../chunk-KJHHSYGP.js";
20
+ import "../chunk-XJLZK4QY.js";
21
+ import "../chunk-IRQRV552.js";
22
+ import "../chunk-QFYYTAYD.js";
24
23
  import "../chunk-YR65C62H.js";
24
+ import "../chunk-VODRLEDP.js";
25
+ import "../chunk-TRKA7XYU.js";
26
+ import "../chunk-CQXDAXQF.js";
25
27
  import "../chunk-VCEFZTWS.js";
26
28
  import "../chunk-PVCHKW35.js";
27
- import "../chunk-CQXDAXQF.js";
28
- import "../chunk-OLKM53RL.js";
29
29
  import "../chunk-6WJI4MOP.js";
30
- import "../chunk-VODRLEDP.js";
31
- import "../chunk-FDSMCFV5.js";
30
+ import "../chunk-OLKM53RL.js";
31
+ import "../chunk-UVTLZV34.js";
32
32
  import "../chunk-53W2NRSL.js";
33
33
  import "../chunk-NMAXZ3ZY.js";
34
- import "../chunk-PFWOM36E.js";
35
- import "../chunk-GEQ2QQEE.js";
34
+ import "../chunk-MZ5NRW3K.js";
36
35
  import "../chunk-QL6FN2JC.js";
37
- import "../chunk-3NOV7X4M.js";
38
- import "../chunk-YO22XLHI.js";
39
- import "../chunk-JIS4PA3R.js";
40
36
  import "../chunk-O7DR57RN.js";
37
+ import "../chunk-GEQ2QQEE.js";
38
+ import "../chunk-JIS4PA3R.js";
39
+ import "../chunk-3NOV7X4M.js";
41
40
  import "../chunk-WR6RQKF5.js";
41
+ import "../chunk-YO22XLHI.js";
42
42
  import "../chunk-4BHM6WVX.js";
43
43
  import "../chunk-U5TPV5X5.js";
44
44
  import "../chunk-WWED74SG.js";
45
45
  import "../chunk-2DYA3X77.js";
46
- import "../chunk-FAJ3I2UQ.js";
47
46
  import "../chunk-ZKAH3APE.js";
47
+ import "../chunk-FAJ3I2UQ.js";
48
48
  import "../chunk-EL672W25.js";
49
49
  export {
50
50
  abortDeployment,
@@ -8,8 +8,8 @@ import {
8
8
  geoAttributes
9
9
  } from "../chunk-WWED74SG.js";
10
10
  import "../chunk-2DYA3X77.js";
11
- import "../chunk-FAJ3I2UQ.js";
12
11
  import "../chunk-ZKAH3APE.js";
12
+ import "../chunk-FAJ3I2UQ.js";
13
13
  import "../chunk-EL672W25.js";
14
14
  export {
15
15
  DEVICE_CONNECT_STATES,
@@ -7,8 +7,8 @@ import {
7
7
  } from "../chunk-VODRLEDP.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,
@@ -6,8 +6,8 @@ import {
6
6
  SORTING_OPTIONS
7
7
  } from "../chunk-WWED74SG.js";
8
8
  import "../chunk-2DYA3X77.js";
9
- import "../chunk-FAJ3I2UQ.js";
10
9
  import "../chunk-ZKAH3APE.js";
10
+ import "../chunk-FAJ3I2UQ.js";
11
11
  import "../chunk-EL672W25.js";
12
12
 
13
13
  // src/devicesSlice/mocks.ts
@@ -26,8 +26,8 @@ import {
26
26
  } from "../chunk-O7DR57RN.js";
27
27
  import "../chunk-WWED74SG.js";
28
28
  import "../chunk-2DYA3X77.js";
29
- import "../chunk-FAJ3I2UQ.js";
30
29
  import "../chunk-ZKAH3APE.js";
30
+ import "../chunk-FAJ3I2UQ.js";
31
31
  import "../chunk-EL672W25.js";
32
32
  export {
33
33
  getAcceptedDevices,
@@ -1739,6 +1739,7 @@ var actions_default = {
1739
1739
 
1740
1740
  // src/api/general-api.ts
1741
1741
  var import_axios = __toESM(require("axios"), 1);
1742
+ var import_universal_cookie2 = __toESM(require("universal-cookie"), 1);
1742
1743
 
1743
1744
  // src/auth.ts
1744
1745
  var import_universal_cookie = __toESM(require("universal-cookie"), 1);
@@ -1751,19 +1752,17 @@ var getSessionInfo = () => {
1751
1752
  sessionInfo = JSON.parse(window.localStorage.getItem("JWT") ?? "");
1752
1753
  } catch {
1753
1754
  }
1755
+ const jwtTokenFromCookie = cookies.get("JWT", { doNotParse: true }) ?? "";
1756
+ if (jwtTokenFromCookie) {
1757
+ setSessionInfo({ token: jwtTokenFromCookie });
1758
+ cookies.remove("JWT");
1759
+ cookies.remove("JWT", { path: "/" });
1760
+ return { token: jwtTokenFromCookie, expiresAt: void 0 };
1761
+ }
1754
1762
  if (sessionInfo.expiresAt && new Date(sessionInfo.expiresAt) < /* @__PURE__ */ new Date()) {
1755
1763
  cleanUp();
1756
1764
  return { ...emptySession };
1757
1765
  }
1758
- if (!sessionInfo.token) {
1759
- const jwtTokenFromCookie = cookies.get("JWT", { doNotParse: true }) ?? "";
1760
- if (jwtTokenFromCookie) {
1761
- setSessionInfo({ token: jwtTokenFromCookie });
1762
- sessionInfo.token = jwtTokenFromCookie;
1763
- cookies.remove("JWT");
1764
- cookies.remove("JWT", { path: "/" });
1765
- }
1766
- }
1767
1766
  sessionInfo.token = sessionInfo.token || "";
1768
1767
  tokenCache = sessionInfo.token;
1769
1768
  return sessionInfo;
@@ -1782,8 +1781,13 @@ var cleanUp = () => {
1782
1781
  };
1783
1782
 
1784
1783
  // src/api/general-api.ts
1784
+ var cookies2 = new import_universal_cookie2.default();
1785
1785
  var unauthorizedRedirect = (error) => {
1786
1786
  if (!(0, import_axios.isCancel)(error) && error.response?.status === 401 && getToken() && !window.location.pathname.endsWith("/subscription")) {
1787
+ if (cookies2.get("JWT", { doNotParse: true })) {
1788
+ window.location.reload();
1789
+ return Promise.reject(error);
1790
+ }
1787
1791
  cleanUp();
1788
1792
  window.location.replace("/ui/");
1789
1793
  }
@@ -1836,6 +1840,7 @@ var getIsPreview = (0, import_toolkit9.createSelector)([getFullVersionInformatio
1836
1840
  // src/commonSelectors.ts
1837
1841
  var import_helpers5 = require("@northern.tech/utils/helpers");
1838
1842
  var import_toolkit15 = require("@reduxjs/toolkit");
1843
+ var import_dayjs = __toESM(require("dayjs"), 1);
1839
1844
 
1840
1845
  // src/deploymentsSlice/selectors.ts
1841
1846
  var import_toolkit10 = require("@reduxjs/toolkit");
@@ -2194,6 +2199,7 @@ var emptyObject = {};
2194
2199
  var getRolesById = (state) => state.users.rolesById;
2195
2200
  var getTooltipsById = (state) => state.users.tooltips.byId;
2196
2201
  var getGlobalSettings = (state) => state.users.globalSettings;
2202
+ var getUserSettingsInitialized = (state) => state.users.userSettingsInitialized;
2197
2203
  var getCurrentUserId = (state) => state.users.currentUser;
2198
2204
  var getUsersById = (state) => state.users.byId;
2199
2205
  var getUsersList = (0, import_toolkit14.createSelector)([getUsersById], (usersById) => Object.values(usersById));
@@ -2231,6 +2237,7 @@ var getOfflineThresholdSettings = (0, import_toolkit14.createSelector)([getGloba
2231
2237
  intervalUnit: offlineThreshold?.intervalUnit || DEVICE_ONLINE_CUTOFF.intervalName
2232
2238
  }));
2233
2239
  var getRolesList = (0, import_toolkit14.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([value, role]) => ({ value, ...role })));
2240
+ var getSecurityAlertDismissedTimestamp = (state) => state.users.userSettings.securityAlertDismissedTimestamp;
2234
2241
 
2235
2242
  // src/commonSelectors.ts
2236
2243
  var getIsEnterprise = (0, import_toolkit15.createSelector)(
@@ -2437,6 +2444,22 @@ var getRelevantRoles = (0, import_toolkit15.createSelector)([getOrganization, ge
2437
2444
  return accu;
2438
2445
  }, roles);
2439
2446
  });
2447
+ var getShowSecurityAlert = (0, import_toolkit15.createSelector)(
2448
+ [getCurrentUser, getHas2FA, getFeatures, getIsEnterprise, getUserSettingsInitialized, getSecurityAlertDismissedTimestamp],
2449
+ (currentUser, has2FA, features, isEnterprise, settingsInitialized, dismissedTimestamp) => {
2450
+ const isHosted = features?.isHosted;
2451
+ const canHave2FA = isEnterprise || isHosted;
2452
+ if (!currentUser || !settingsInitialized || has2FA || !canHave2FA) {
2453
+ return false;
2454
+ }
2455
+ if (dismissedTimestamp === null) {
2456
+ return true;
2457
+ }
2458
+ const today = (0, import_dayjs.default)();
2459
+ const dismissedMonthAgo = today.diff(dismissedTimestamp, "months");
2460
+ return dismissedMonthAgo > 0;
2461
+ }
2462
+ );
2440
2463
 
2441
2464
  // src/store.ts
2442
2465
  var import_react_redux = require("react-redux");
@@ -2534,10 +2557,10 @@ var createAppAsyncThunk = import_toolkit16.createAsyncThunk.withTypes();
2534
2557
 
2535
2558
  // src/appSlice/thunks.ts
2536
2559
  var import_helpers7 = require("@northern.tech/utils/helpers");
2537
- var import_universal_cookie2 = __toESM(require("universal-cookie"), 1);
2538
- var cookies2 = new import_universal_cookie2.default();
2560
+ var import_universal_cookie3 = __toESM(require("universal-cookie"), 1);
2561
+ var cookies3 = new import_universal_cookie3.default();
2539
2562
  var setFirstLoginAfterSignup = createAppAsyncThunk(`${sliceName2}/setFirstLoginAfterSignup`, (firstLoginAfterSignup, { dispatch }) => {
2540
- cookies2.set("firstLoginAfterSignup", !!firstLoginAfterSignup, { maxAge: 60, path: "/", domain: ".mender.io", sameSite: false });
2563
+ cookies3.set("firstLoginAfterSignup", !!firstLoginAfterSignup, { maxAge: 60, path: "/", domain: ".mender.io", sameSite: false });
2541
2564
  dispatch(actions2.setFirstLoginAfterSignup(!!firstLoginAfterSignup));
2542
2565
  });
2543
2566
  var dateFunctionMap = {
@@ -3080,9 +3103,9 @@ var changeNotificationSetting = createAppAsyncThunk(
3080
3103
  // src/usersSlice/thunks.ts
3081
3104
  var import_helpers9 = require("@northern.tech/utils/helpers");
3082
3105
  var import_retrytimer = require("@northern.tech/utils/retrytimer");
3083
- var import_dayjs = __toESM(require("dayjs"), 1);
3106
+ var import_dayjs2 = __toESM(require("dayjs"), 1);
3084
3107
  var import_md5 = __toESM(require("md5"), 1);
3085
- var import_universal_cookie3 = __toESM(require("universal-cookie"), 1);
3108
+ var import_universal_cookie4 = __toESM(require("universal-cookie"), 1);
3086
3109
 
3087
3110
  // src/api/users-api.ts
3088
3111
  var import_axios2 = __toESM(require("axios"), 1);
@@ -3099,7 +3122,7 @@ var Api2 = {
3099
3122
  var users_api_default = Api2;
3100
3123
 
3101
3124
  // src/usersSlice/thunks.ts
3102
- var cookies3 = new import_universal_cookie3.default();
3125
+ var cookies4 = new import_universal_cookie4.default();
3103
3126
  var { setAnnouncement, setSnackbar: setSnackbar3 } = actions_default;
3104
3127
  var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) => () => {
3105
3128
  const errorText = (0, import_helpers9.extractErrorMessage)(err);
@@ -3134,7 +3157,7 @@ var loginUser = createAppAsyncThunk(
3134
3157
  now.setSeconds(now.getSeconds() + import_constants5.maxSessionAge);
3135
3158
  const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
3136
3159
  setSessionInfo({ token, expiresAt });
3137
- cookies3.remove("JWT", { path: "/" });
3160
+ cookies4.remove("JWT", { path: "/" });
3138
3161
  return dispatch(getUser(OWN_USER_ID)).unwrap().catch((e) => {
3139
3162
  cleanUp();
3140
3163
  return Promise.reject(dispatch(setSnackbar3((0, import_helpers9.extractErrorMessage)(e))));
@@ -3665,7 +3688,7 @@ var saveUserSettings = createAppAsyncThunk(
3665
3688
  const updatedSettings = {
3666
3689
  ...userSettings,
3667
3690
  ...settings,
3668
- firstLoginTimestamp: userSettings.firstLoginTimestamp ?? (0, import_dayjs.default)().format(),
3691
+ firstLoginTimestamp: userSettings.firstLoginTimestamp ?? (0, import_dayjs2.default)().format(),
3669
3692
  onboarding: {
3670
3693
  ...onboardingState,
3671
3694
  ...settings.onboarding
@@ -3689,9 +3712,9 @@ var setHideAnnouncement = createAppAsyncThunk(
3689
3712
  ({ shouldHide, userId }, { dispatch, getState }) => {
3690
3713
  const currentUserId = userId || getCurrentUser(getState()).id;
3691
3714
  const hash = getState().app.hostedAnnouncement ? (0, import_md5.default)(getState().app.hostedAnnouncement) : "";
3692
- const announceCookie = cookies3.get(`${currentUserId}${hash}`);
3715
+ const announceCookie = cookies4.get(`${currentUserId}${hash}`);
3693
3716
  if (shouldHide || hash.length && typeof announceCookie !== "undefined") {
3694
- cookies3.set(`${currentUserId}${hash}`, true, { maxAge: 604800 });
3717
+ cookies4.set(`${currentUserId}${hash}`, true, { maxAge: 604800 });
3695
3718
  dispatch(setAnnouncement(""));
3696
3719
  }
3697
3720
  }