@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
@@ -4,34 +4,34 @@ import {
4
4
  getDeviceMonitorConfig,
5
5
  getIssueCountsByType,
6
6
  getLatestDeviceAlerts
7
- } from "../chunk-6UO33KLN.js";
8
- import "../chunk-CXBQKY7F.js";
9
- import "../chunk-5M6EUVNO.js";
10
- import "../chunk-BX2CTAJO.js";
11
- import "../chunk-TRKA7XYU.js";
7
+ } from "../chunk-C3EMLDPU.js";
8
+ import "../chunk-KJHHSYGP.js";
9
+ import "../chunk-IRQRV552.js";
10
+ import "../chunk-QFYYTAYD.js";
12
11
  import "../chunk-YR65C62H.js";
12
+ import "../chunk-VODRLEDP.js";
13
+ import "../chunk-TRKA7XYU.js";
14
+ import "../chunk-CQXDAXQF.js";
13
15
  import "../chunk-VCEFZTWS.js";
14
16
  import "../chunk-PVCHKW35.js";
15
- import "../chunk-CQXDAXQF.js";
16
- import "../chunk-OLKM53RL.js";
17
17
  import "../chunk-6WJI4MOP.js";
18
- import "../chunk-VODRLEDP.js";
19
- import "../chunk-FDSMCFV5.js";
18
+ import "../chunk-OLKM53RL.js";
19
+ import "../chunk-UVTLZV34.js";
20
20
  import "../chunk-NMAXZ3ZY.js";
21
- import "../chunk-PFWOM36E.js";
22
- import "../chunk-GEQ2QQEE.js";
21
+ import "../chunk-MZ5NRW3K.js";
23
22
  import "../chunk-QL6FN2JC.js";
24
- import "../chunk-3NOV7X4M.js";
25
- import "../chunk-YO22XLHI.js";
26
- import "../chunk-JIS4PA3R.js";
27
23
  import "../chunk-O7DR57RN.js";
24
+ import "../chunk-GEQ2QQEE.js";
25
+ import "../chunk-JIS4PA3R.js";
26
+ import "../chunk-3NOV7X4M.js";
28
27
  import "../chunk-WR6RQKF5.js";
28
+ import "../chunk-YO22XLHI.js";
29
29
  import "../chunk-4BHM6WVX.js";
30
30
  import "../chunk-U5TPV5X5.js";
31
31
  import "../chunk-WWED74SG.js";
32
32
  import "../chunk-2DYA3X77.js";
33
- import "../chunk-FAJ3I2UQ.js";
34
33
  import "../chunk-ZKAH3APE.js";
34
+ import "../chunk-FAJ3I2UQ.js";
35
35
  import "../chunk-EL672W25.js";
36
36
  export {
37
37
  changeNotificationSetting,
@@ -40,7 +40,7 @@ __export(thunks_exports, {
40
40
  module.exports = __toCommonJS(thunks_exports);
41
41
  var import_helpers11 = require("@northern.tech/utils/helpers");
42
42
  var import_tracking2 = __toESM(require("@northern.tech/utils/tracking"), 1);
43
- var import_universal_cookie4 = __toESM(require("universal-cookie"), 1);
43
+ var import_universal_cookie5 = __toESM(require("universal-cookie"), 1);
44
44
 
45
45
  // src/onboardingSlice/index.ts
46
46
  var import_toolkit = require("@reduxjs/toolkit");
@@ -816,6 +816,7 @@ var getIsPreview = (0, import_toolkit2.createSelector)([getFullVersionInformatio
816
816
  // src/commonSelectors.ts
817
817
  var import_helpers4 = require("@northern.tech/utils/helpers");
818
818
  var import_toolkit8 = require("@reduxjs/toolkit");
819
+ var import_dayjs = __toESM(require("dayjs"), 1);
819
820
 
820
821
  // src/deploymentsSlice/selectors.ts
821
822
  var import_toolkit3 = require("@reduxjs/toolkit");
@@ -1174,6 +1175,7 @@ var emptyObject = {};
1174
1175
  var getRolesById = (state) => state.users.rolesById;
1175
1176
  var getTooltipsById = (state) => state.users.tooltips.byId;
1176
1177
  var getGlobalSettings = (state) => state.users.globalSettings;
1178
+ var getUserSettingsInitialized = (state) => state.users.userSettingsInitialized;
1177
1179
  var getCurrentUserId = (state) => state.users.currentUser;
1178
1180
  var getUsersById = (state) => state.users.byId;
1179
1181
  var getUsersList = (0, import_toolkit7.createSelector)([getUsersById], (usersById) => Object.values(usersById));
@@ -1211,6 +1213,7 @@ var getOfflineThresholdSettings = (0, import_toolkit7.createSelector)([getGlobal
1211
1213
  intervalUnit: offlineThreshold?.intervalUnit || DEVICE_ONLINE_CUTOFF.intervalName
1212
1214
  }));
1213
1215
  var getRolesList = (0, import_toolkit7.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([value, role]) => ({ value, ...role })));
1216
+ var getSecurityAlertDismissedTimestamp = (state) => state.users.userSettings.securityAlertDismissedTimestamp;
1214
1217
 
1215
1218
  // src/commonSelectors.ts
1216
1219
  var getIsEnterprise = (0, import_toolkit8.createSelector)(
@@ -1417,6 +1420,22 @@ var getRelevantRoles = (0, import_toolkit8.createSelector)([getOrganization, get
1417
1420
  return accu;
1418
1421
  }, roles);
1419
1422
  });
1423
+ var getShowSecurityAlert = (0, import_toolkit8.createSelector)(
1424
+ [getCurrentUser, getHas2FA, getFeatures, getIsEnterprise, getUserSettingsInitialized, getSecurityAlertDismissedTimestamp],
1425
+ (currentUser, has2FA, features, isEnterprise, settingsInitialized, dismissedTimestamp) => {
1426
+ const isHosted = features?.isHosted;
1427
+ const canHave2FA = isEnterprise || isHosted;
1428
+ if (!currentUser || !settingsInitialized || has2FA || !canHave2FA) {
1429
+ return false;
1430
+ }
1431
+ if (dismissedTimestamp === null) {
1432
+ return true;
1433
+ }
1434
+ const today = (0, import_dayjs.default)();
1435
+ const dismissedMonthAgo = today.diff(dismissedTimestamp, "months");
1436
+ return dismissedMonthAgo > 0;
1437
+ }
1438
+ );
1420
1439
 
1421
1440
  // src/store.ts
1422
1441
  var import_react_redux = require("react-redux");
@@ -2332,19 +2351,17 @@ var getSessionInfo = () => {
2332
2351
  sessionInfo = JSON.parse(window.localStorage.getItem("JWT") ?? "");
2333
2352
  } catch {
2334
2353
  }
2354
+ const jwtTokenFromCookie = cookies.get("JWT", { doNotParse: true }) ?? "";
2355
+ if (jwtTokenFromCookie) {
2356
+ setSessionInfo({ token: jwtTokenFromCookie });
2357
+ cookies.remove("JWT");
2358
+ cookies.remove("JWT", { path: "/" });
2359
+ return { token: jwtTokenFromCookie, expiresAt: void 0 };
2360
+ }
2335
2361
  if (sessionInfo.expiresAt && new Date(sessionInfo.expiresAt) < /* @__PURE__ */ new Date()) {
2336
2362
  cleanUp();
2337
2363
  return { ...emptySession };
2338
2364
  }
2339
- if (!sessionInfo.token) {
2340
- const jwtTokenFromCookie = cookies.get("JWT", { doNotParse: true }) ?? "";
2341
- if (jwtTokenFromCookie) {
2342
- setSessionInfo({ token: jwtTokenFromCookie });
2343
- sessionInfo.token = jwtTokenFromCookie;
2344
- cookies.remove("JWT");
2345
- cookies.remove("JWT", { path: "/" });
2346
- }
2347
- }
2348
2365
  sessionInfo.token = sessionInfo.token || "";
2349
2366
  tokenCache = sessionInfo.token;
2350
2367
  return sessionInfo;
@@ -2454,12 +2471,18 @@ var createAppAsyncThunk = import_toolkit16.createAsyncThunk.withTypes();
2454
2471
 
2455
2472
  // src/appSlice/thunks.ts
2456
2473
  var import_helpers7 = require("@northern.tech/utils/helpers");
2457
- var import_universal_cookie2 = __toESM(require("universal-cookie"), 1);
2474
+ var import_universal_cookie3 = __toESM(require("universal-cookie"), 1);
2458
2475
 
2459
2476
  // src/api/general-api.ts
2460
2477
  var import_axios = __toESM(require("axios"), 1);
2478
+ var import_universal_cookie2 = __toESM(require("universal-cookie"), 1);
2479
+ var cookies2 = new import_universal_cookie2.default();
2461
2480
  var unauthorizedRedirect = (error) => {
2462
2481
  if (!(0, import_axios.isCancel)(error) && error.response?.status === 401 && getToken() && !window.location.pathname.endsWith("/subscription")) {
2482
+ if (cookies2.get("JWT", { doNotParse: true })) {
2483
+ window.location.reload();
2484
+ return Promise.reject(error);
2485
+ }
2463
2486
  cleanUp();
2464
2487
  window.location.replace("/ui/");
2465
2488
  }
@@ -2495,9 +2518,9 @@ var Api = {
2495
2518
  var general_api_default = Api;
2496
2519
 
2497
2520
  // src/appSlice/thunks.ts
2498
- var cookies2 = new import_universal_cookie2.default();
2521
+ var cookies3 = new import_universal_cookie3.default();
2499
2522
  var setFirstLoginAfterSignup = createAppAsyncThunk(`${sliceName2}/setFirstLoginAfterSignup`, (firstLoginAfterSignup, { dispatch }) => {
2500
- cookies2.set("firstLoginAfterSignup", !!firstLoginAfterSignup, { maxAge: 60, path: "/", domain: ".mender.io", sameSite: false });
2523
+ cookies3.set("firstLoginAfterSignup", !!firstLoginAfterSignup, { maxAge: 60, path: "/", domain: ".mender.io", sameSite: false });
2501
2524
  dispatch(actions2.setFirstLoginAfterSignup(!!firstLoginAfterSignup));
2502
2525
  });
2503
2526
  var dateFunctionMap = {
@@ -3918,9 +3941,9 @@ var changeNotificationSetting = createAppAsyncThunk(
3918
3941
  // src/usersSlice/thunks.ts
3919
3942
  var import_helpers10 = require("@northern.tech/utils/helpers");
3920
3943
  var import_retrytimer = require("@northern.tech/utils/retrytimer");
3921
- var import_dayjs = __toESM(require("dayjs"), 1);
3944
+ var import_dayjs2 = __toESM(require("dayjs"), 1);
3922
3945
  var import_md5 = __toESM(require("md5"), 1);
3923
- var import_universal_cookie3 = __toESM(require("universal-cookie"), 1);
3946
+ var import_universal_cookie4 = __toESM(require("universal-cookie"), 1);
3924
3947
 
3925
3948
  // src/api/users-api.ts
3926
3949
  var import_axios3 = __toESM(require("axios"), 1);
@@ -3937,7 +3960,7 @@ var Api2 = {
3937
3960
  var users_api_default = Api2;
3938
3961
 
3939
3962
  // src/usersSlice/thunks.ts
3940
- var cookies3 = new import_universal_cookie3.default();
3963
+ var cookies4 = new import_universal_cookie4.default();
3941
3964
  var { setAnnouncement, setSnackbar: setSnackbar4 } = actions_default;
3942
3965
  var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) => () => {
3943
3966
  const errorText = (0, import_helpers10.extractErrorMessage)(err);
@@ -3972,7 +3995,7 @@ var loginUser = createAppAsyncThunk(
3972
3995
  now.setSeconds(now.getSeconds() + import_constants5.maxSessionAge);
3973
3996
  const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
3974
3997
  setSessionInfo({ token, expiresAt });
3975
- cookies3.remove("JWT", { path: "/" });
3998
+ cookies4.remove("JWT", { path: "/" });
3976
3999
  return dispatch(getUser(OWN_USER_ID)).unwrap().catch((e) => {
3977
4000
  cleanUp();
3978
4001
  return Promise.reject(dispatch(setSnackbar4((0, import_helpers10.extractErrorMessage)(e))));
@@ -4503,7 +4526,7 @@ var saveUserSettings = createAppAsyncThunk(
4503
4526
  const updatedSettings = {
4504
4527
  ...userSettings,
4505
4528
  ...settings,
4506
- firstLoginTimestamp: userSettings.firstLoginTimestamp ?? (0, import_dayjs.default)().format(),
4529
+ firstLoginTimestamp: userSettings.firstLoginTimestamp ?? (0, import_dayjs2.default)().format(),
4507
4530
  onboarding: {
4508
4531
  ...onboardingState,
4509
4532
  ...settings.onboarding
@@ -4527,9 +4550,9 @@ var setHideAnnouncement = createAppAsyncThunk(
4527
4550
  ({ shouldHide, userId }, { dispatch, getState }) => {
4528
4551
  const currentUserId = userId || getCurrentUser(getState()).id;
4529
4552
  const hash = getState().app.hostedAnnouncement ? (0, import_md5.default)(getState().app.hostedAnnouncement) : "";
4530
- const announceCookie = cookies3.get(`${currentUserId}${hash}`);
4553
+ const announceCookie = cookies4.get(`${currentUserId}${hash}`);
4531
4554
  if (shouldHide || hash.length && typeof announceCookie !== "undefined") {
4532
- cookies3.set(`${currentUserId}${hash}`, true, { maxAge: 604800 });
4555
+ cookies4.set(`${currentUserId}${hash}`, true, { maxAge: 604800 });
4533
4556
  dispatch(setAnnouncement(""));
4534
4557
  }
4535
4558
  }
@@ -4582,7 +4605,7 @@ var submitUserFeedback = createAppAsyncThunk(
4582
4605
  );
4583
4606
 
4584
4607
  // src/onboardingSlice/thunks.ts
4585
- var cookies4 = new import_universal_cookie4.default();
4608
+ var cookies5 = new import_universal_cookie5.default();
4586
4609
  var applyOnboardingFallbacks = (progress2) => {
4587
4610
  const step = orderedOnboardingSteps[progress2];
4588
4611
  if (step && step.fallbackStep) {
@@ -4600,7 +4623,7 @@ var determineProgress = (acceptedDevices, pendingDevices, releases, pastDeployme
4600
4623
  };
4601
4624
  var deductOnboardingState = ({ devicesById, devicesByStatus, onboardingState, pastDeployments, releases, userCapabilities, userId }) => {
4602
4625
  const { canDeploy, canManageDevices, canReadDeployments, canReadDevices, canReadReleases, canUploadReleases } = userCapabilities;
4603
- const userCookie = cookies4.get(`${userId}-onboarded`);
4626
+ const userCookie = cookies5.get(`${userId}-onboarded`);
4604
4627
  const acceptedDevices = devicesByStatus[import_constants5.DEVICE_STATES.accepted].deviceIds;
4605
4628
  const pendingDevices = devicesByStatus[import_constants5.DEVICE_STATES.pending].deviceIds;
4606
4629
  let deviceType = onboardingState.deviceType ?? [];