@northern.tech/store 0.36.2 → 0.37.0

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 (144) hide show
  1. package/dist/actions.d.cts +2 -1
  2. package/dist/actions.d.ts +2 -1
  3. package/dist/api/general-api.cjs +3 -3
  4. package/dist/api/general-api.cjs.map +1 -1
  5. package/dist/api/users-api.cjs +2 -2
  6. package/dist/api/users-api.cjs.map +1 -1
  7. package/dist/api/users-api.js.map +1 -1
  8. package/dist/appSlice/index.cjs +1 -0
  9. package/dist/appSlice/index.cjs.map +1 -1
  10. package/dist/appSlice/index.js +1 -0
  11. package/dist/appSlice/index.js.map +1 -1
  12. package/dist/appSlice/selectors.cjs +2 -4
  13. package/dist/appSlice/selectors.cjs.map +1 -1
  14. package/dist/appSlice/selectors.d.cts +4 -51
  15. package/dist/appSlice/selectors.d.ts +4 -51
  16. package/dist/appSlice/selectors.js +3 -4
  17. package/dist/appSlice/selectors.js.map +1 -1
  18. package/dist/appSlice/thunks.d.cts +1 -1
  19. package/dist/appSlice/thunks.d.ts +1 -1
  20. package/dist/auth.cjs +2 -2
  21. package/dist/auth.cjs.map +1 -1
  22. package/dist/auth.js.map +1 -1
  23. package/dist/commonSelectors.cjs +2 -2
  24. package/dist/commonSelectors.cjs.map +1 -1
  25. package/dist/commonSelectors.d.cts +10 -2
  26. package/dist/commonSelectors.d.ts +10 -2
  27. package/dist/commonSelectors.js.map +1 -1
  28. package/dist/constants.cjs.map +1 -1
  29. package/dist/constants.js.map +1 -1
  30. package/dist/deploymentsSlice/index.cjs.map +1 -1
  31. package/dist/deploymentsSlice/index.js.map +1 -1
  32. package/dist/deploymentsSlice/selectors.cjs.map +1 -1
  33. package/dist/deploymentsSlice/selectors.d.cts +2 -2
  34. package/dist/deploymentsSlice/selectors.d.ts +2 -2
  35. package/dist/deploymentsSlice/selectors.js.map +1 -1
  36. package/dist/deploymentsSlice/thunks.cjs +1 -0
  37. package/dist/deploymentsSlice/thunks.d.cts +9 -4
  38. package/dist/deploymentsSlice/thunks.d.ts +9 -4
  39. package/dist/deploymentsSlice/thunks.js +2 -2
  40. package/dist/devicesSlice/index.cjs +4 -0
  41. package/dist/devicesSlice/index.cjs.map +1 -1
  42. package/dist/devicesSlice/index.d.cts +1 -1
  43. package/dist/devicesSlice/index.d.ts +1 -1
  44. package/dist/devicesSlice/index.js +4 -0
  45. package/dist/devicesSlice/index.js.map +1 -1
  46. package/dist/devicesSlice/mocks.d.cts +1 -0
  47. package/dist/devicesSlice/mocks.d.ts +1 -0
  48. package/dist/devicesSlice/selectors.cjs +2 -0
  49. package/dist/devicesSlice/selectors.cjs.map +1 -1
  50. package/dist/devicesSlice/selectors.d.cts +4 -3
  51. package/dist/devicesSlice/selectors.d.ts +4 -3
  52. package/dist/devicesSlice/selectors.js +2 -1
  53. package/dist/devicesSlice/selectors.js.map +1 -1
  54. package/dist/devicesSlice/thunks.cjs +2 -0
  55. package/dist/devicesSlice/thunks.d.cts +68 -3
  56. package/dist/devicesSlice/thunks.d.ts +68 -3
  57. package/dist/devicesSlice/thunks.js +2 -2
  58. package/dist/{index-CPdMUfRr.d.ts → index-BqJuhvO_.d.ts} +4 -1
  59. package/dist/{index-DbfM03Gj.d.cts → index-Doc_1P_Y.d.cts} +4 -1
  60. package/dist/liststatehook.cjs.map +1 -1
  61. package/dist/liststatehook.js.map +1 -1
  62. package/dist/locationutils.cjs.map +1 -1
  63. package/dist/locationutils.d.cts +1 -1
  64. package/dist/locationutils.d.ts +1 -1
  65. package/dist/locationutils.js.map +1 -1
  66. package/dist/monitorSlice/index.cjs.map +1 -1
  67. package/dist/monitorSlice/index.js.map +1 -1
  68. package/dist/monitorSlice/mocks.cjs.map +1 -1
  69. package/dist/monitorSlice/mocks.js.map +1 -1
  70. package/dist/monitorSlice/selectors.d.cts +1 -1
  71. package/dist/monitorSlice/selectors.d.ts +1 -1
  72. package/dist/monitorSlice/thunks.cjs.map +1 -1
  73. package/dist/monitorSlice/thunks.d.cts +2 -2
  74. package/dist/monitorSlice/thunks.d.ts +2 -2
  75. package/dist/monitorSlice/thunks.js.map +1 -1
  76. package/dist/onboardingSlice/index.cjs.map +1 -1
  77. package/dist/onboardingSlice/mocks.cjs.map +1 -1
  78. package/dist/onboardingSlice/selectors.d.cts +1 -1
  79. package/dist/onboardingSlice/selectors.d.ts +1 -1
  80. package/dist/onboardingSlice/thunks.d.cts +1 -1
  81. package/dist/onboardingSlice/thunks.d.ts +1 -1
  82. package/dist/organizationSlice/index.cjs.map +1 -1
  83. package/dist/organizationSlice/selectors.cjs.map +1 -1
  84. package/dist/organizationSlice/selectors.d.cts +2 -2
  85. package/dist/organizationSlice/selectors.d.ts +2 -2
  86. package/dist/organizationSlice/selectors.js.map +1 -1
  87. package/dist/organizationSlice/thunks.d.cts +4 -41
  88. package/dist/organizationSlice/thunks.d.ts +4 -41
  89. package/dist/releasesSlice/index.cjs.map +1 -1
  90. package/dist/releasesSlice/selectors.cjs.map +1 -1
  91. package/dist/releasesSlice/selectors.d.cts +2 -2
  92. package/dist/releasesSlice/selectors.d.ts +2 -2
  93. package/dist/releasesSlice/selectors.js.map +1 -1
  94. package/dist/releasesSlice/thunks.cjs +39 -16
  95. package/dist/releasesSlice/thunks.cjs.map +1 -1
  96. package/dist/releasesSlice/thunks.d.cts +3 -9
  97. package/dist/releasesSlice/thunks.d.ts +3 -9
  98. package/dist/releasesSlice/thunks.js +38 -15
  99. package/dist/releasesSlice/thunks.js.map +1 -1
  100. package/dist/selectors.cjs +1 -1
  101. package/dist/selectors.d.cts +3 -3
  102. package/dist/selectors.d.ts +3 -3
  103. package/dist/selectors.js +3 -3
  104. package/dist/sockethook.cjs +3 -3
  105. package/dist/sockethook.cjs.map +1 -1
  106. package/dist/sockethook.js.map +1 -1
  107. package/dist/{store-Co2ptTSm.d.ts → store-BzrMxxAO.d.ts} +112 -4
  108. package/dist/{store-Dd0Y2JCN.d.cts → store-xV2zaXAc.d.cts} +112 -4
  109. package/dist/store.cjs.map +1 -1
  110. package/dist/store.d.cts +1 -2
  111. package/dist/store.d.ts +1 -2
  112. package/dist/store.js.map +1 -1
  113. package/dist/storehooks.cjs +5 -4
  114. package/dist/storehooks.cjs.map +1 -1
  115. package/dist/storehooks.d.cts +1 -1
  116. package/dist/storehooks.d.ts +1 -1
  117. package/dist/storehooks.js +1 -0
  118. package/dist/storehooks.js.map +1 -1
  119. package/dist/thunks.cjs +85 -25
  120. package/dist/thunks.cjs.map +1 -1
  121. package/dist/thunks.d.cts +3 -3
  122. package/dist/thunks.d.ts +3 -3
  123. package/dist/thunks.js +76 -19
  124. package/dist/thunks.js.map +1 -1
  125. package/dist/useDeploymentDevice.cjs +2 -2
  126. package/dist/useDeploymentDevice.cjs.map +1 -1
  127. package/dist/useDeploymentDevice.js.map +1 -1
  128. package/dist/usersSlice/index.cjs.map +1 -1
  129. package/dist/usersSlice/selectors.cjs.map +1 -1
  130. package/dist/usersSlice/selectors.d.cts +2 -2
  131. package/dist/usersSlice/selectors.d.ts +2 -2
  132. package/dist/usersSlice/selectors.js.map +1 -1
  133. package/dist/usersSlice/thunks.d.cts +1 -1
  134. package/dist/usersSlice/thunks.d.ts +1 -1
  135. package/dist/utils.cjs +2 -0
  136. package/dist/utils.cjs.map +1 -1
  137. package/dist/utils.d.cts +2 -2
  138. package/dist/utils.d.ts +2 -2
  139. package/dist/utils.js +3 -2
  140. package/dist/utils.js.map +1 -1
  141. package/package.json +4 -4
  142. package/dist/utils-C_9XEfi_.d.ts +0 -104
  143. package/dist/utils-DbXmZmGq.d.cts +0 -104
  144. /package/dist/{chunk-D6vf50IK.cjs → rolldown-runtime-D6vf50IK.cjs} +0 -0
@@ -5,7 +5,7 @@ import { n as ManifestsList, r as Release, s as SoftwareList } from "./index-Zs9
5
5
  import { d as TenantList, i as Organization, l as SSOConfig, n as AuditLogSelectionState, o as ProductConfig, r as Card } from "./types-B33vKVhi.cjs";
6
6
  import { n as OnboardingSliceType, t as OnboardingApproach } from "./index-DBUt8xVc.cjs";
7
7
  import { i as DeploymentConfig, l as SelectionState, r as DeploymentByStatusKey, t as Deployment } from "./index-EPmsL6Lb.cjs";
8
- import { a as DeviceListState, n as DeviceFilter, r as DeviceGroup, t as Device } from "./index-DbfM03Gj.cjs";
8
+ import { a as DeviceListState, n as DeviceFilter, r as DeviceGroup, t as Device } from "./index-Doc_1P_Y.cjs";
9
9
  import { a as Upload, i as SnackbarContent } from "./index-C8QadAm7.cjs";
10
10
 
11
11
  //#region src/actions.d.ts
@@ -161,6 +161,7 @@ declare const _default: {
161
161
  status: DeviceAuthState;
162
162
  }, "devices/setDevicesCountByStatus">;
163
163
  setDeviceLimits: import("@reduxjs/toolkit").ActionCreatorWithPayload<import("@northern.tech/types/types.gen").DeviceTierLimits, "devices/setDeviceLimits">;
164
+ setTestDeviceCount: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "devices/setTestDeviceCount">;
164
165
  receivedDevice: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
165
166
  id: string;
166
167
  } & Partial<Device>, "devices/receivedDevice">;
package/dist/actions.d.ts CHANGED
@@ -5,7 +5,7 @@ import { n as ManifestsList, r as Release, s as SoftwareList } from "./index-DLD
5
5
  import { d as TenantList, i as Organization, l as SSOConfig, n as AuditLogSelectionState, o as ProductConfig, r as Card } from "./types-BjtmX60L.js";
6
6
  import { n as OnboardingSliceType, t as OnboardingApproach } from "./index-DBUt8xVc.js";
7
7
  import { i as DeploymentConfig, l as SelectionState, r as DeploymentByStatusKey, t as Deployment } from "./index-Bb4yvvgG.js";
8
- import { a as DeviceListState, n as DeviceFilter, r as DeviceGroup, t as Device } from "./index-CPdMUfRr.js";
8
+ import { a as DeviceListState, n as DeviceFilter, r as DeviceGroup, t as Device } from "./index-BqJuhvO_.js";
9
9
  import { a as Upload, i as SnackbarContent } from "./index-BLvjQfGj.js";
10
10
 
11
11
  //#region src/actions.d.ts
@@ -161,6 +161,7 @@ declare const _default: {
161
161
  status: DeviceAuthState;
162
162
  }, "devices/setDevicesCountByStatus">;
163
163
  setDeviceLimits: import("@reduxjs/toolkit").ActionCreatorWithPayload<import("@northern.tech/types/types.gen").DeviceTierLimits, "devices/setDeviceLimits">;
164
+ setTestDeviceCount: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "devices/setTestDeviceCount">;
164
165
  receivedDevice: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
165
166
  id: string;
166
167
  } & Partial<Device>, "devices/receivedDevice">;
@@ -2,13 +2,13 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_chunk = require("../chunk-D6vf50IK.cjs");
5
+ const require_rolldown_runtime = require("../rolldown-runtime-D6vf50IK.cjs");
6
6
  const require_constants = require("../constants.cjs");
7
7
  const require_auth = require("../auth.cjs");
8
8
  let universal_cookie = require("universal-cookie");
9
- universal_cookie = require_chunk.__toESM(universal_cookie, 1);
9
+ universal_cookie = require_rolldown_runtime.__toESM(universal_cookie, 1);
10
10
  let axios = require("axios");
11
- axios = require_chunk.__toESM(axios, 1);
11
+ axios = require_rolldown_runtime.__toESM(axios, 1);
12
12
  //#region src/api/general-api.ts
13
13
  const cookies = new universal_cookie.default();
14
14
  const unauthorizedRedirect = (error) => {
@@ -1 +1 @@
1
- {"version":3,"file":"general-api.cjs","names":["Cookies","getToken","TIMEOUTS"],"sources":["../../src/api/general-api.ts"],"sourcesContent":["// Copyright 2017 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 { AxiosError, AxiosProgressEvent, AxiosRequestConfig, GenericAbortSignal, InternalAxiosRequestConfig } from 'axios';\nimport axios, { isCancel } from 'axios';\nimport Cookies from 'universal-cookie';\n\nimport { cleanUp, getToken } from '../auth';\nimport { TIMEOUTS } from '../constants';\n\nconst cookies = new Cookies();\n\nconst unauthorizedRedirect = (error: AxiosError): Promise<never> => {\n if (!isCancel(error) && error.response?.status === 401 && getToken() && !window.location.pathname.endsWith('/subscription')) {\n // a new jwt might have been set by sso while the current request was in-flight with an old token\n // => reload instead of logging out\n if (cookies.get('JWT', { doNotParse: true })) {\n window.location.reload();\n return Promise.reject(error);\n }\n cleanUp();\n window.location.replace('/ui/');\n }\n return Promise.reject(error);\n};\n\nexport const commonRequestConfig: AxiosRequestConfig = { timeout: TIMEOUTS.refreshDefault, headers: { 'Content-Type': 'application/json' } };\n\nexport const authenticatedRequest = axios.create(commonRequestConfig);\nauthenticatedRequest.interceptors.response.use(res => res, unauthorizedRedirect);\nauthenticatedRequest.interceptors.request.use(\n (config: InternalAxiosRequestConfig) => {\n config.headers.Authorization = `Bearer ${getToken()}`;\n return config;\n },\n (error: AxiosError) => Promise.reject(error)\n);\n\nconst Api = {\n get: authenticatedRequest.get,\n delete: <T = unknown, D = unknown>(url: string, data?: D) => authenticatedRequest.request<T>({ method: 'delete', url, data }),\n patch: authenticatedRequest.patch,\n post: authenticatedRequest.post,\n postUnauthorized: <T = unknown, D = unknown>(url: string, data?: D, config: AxiosRequestConfig = {}) =>\n axios.post<T>(url, data, { ...commonRequestConfig, ...config }),\n put: authenticatedRequest.put,\n upload: <T = unknown>(url: string, formData: FormData, progress: (event: AxiosProgressEvent) => void, cancelSignal: GenericAbortSignal) =>\n authenticatedRequest.post<T>(url, formData, {\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: progress,\n timeout: 0,\n signal: cancelSignal\n }),\n uploadPut: <T = unknown>(url: string, formData: FormData, progress: (event: AxiosProgressEvent) => void, cancelSignal: GenericAbortSignal) =>\n authenticatedRequest.put<T>(url, formData, {\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: progress,\n timeout: 0,\n signal: cancelSignal\n })\n};\n\nexport default Api;\n"],"mappings":";;;;;;;;;;;;AAoBA,MAAM,UAAU,IAAIA,iBAAAA,QAAQ;AAE5B,MAAM,wBAAwB,UAAsC;CAClE,IAAI,EAAA,GAAA,MAAA,UAAU,KAAK,KAAK,MAAM,UAAU,WAAW,OAAOC,aAAAA,SAAS,KAAK,CAAC,OAAO,SAAS,SAAS,SAAS,eAAe,GAAG;EAG3H,IAAI,QAAQ,IAAI,OAAO,EAAE,YAAY,KAAK,CAAC,GAAG;GAC5C,OAAO,SAAS,OAAO;GACvB,OAAO,QAAQ,OAAO,KAAK;EAC7B;EACA,aAAA,QAAQ;EACR,OAAO,SAAS,QAAQ,MAAM;CAChC;CACA,OAAO,QAAQ,OAAO,KAAK;AAC7B;AAEA,MAAa,sBAA0C;CAAE,SAASC,kBAAAA,SAAS;CAAgB,SAAS,EAAE,gBAAgB,mBAAmB;AAAE;AAE3I,MAAa,uBAAuB,MAAA,QAAM,OAAO,mBAAmB;AACpE,qBAAqB,aAAa,SAAS,KAAI,QAAO,KAAK,oBAAoB;AAC/E,qBAAqB,aAAa,QAAQ,KACvC,WAAuC;CACtC,OAAO,QAAQ,gBAAgB,UAAUD,aAAAA,SAAS;CAClD,OAAO;AACT,IACC,UAAsB,QAAQ,OAAO,KAAK,CAC7C;AAEA,MAAM,MAAM;CACV,KAAK,qBAAqB;CAC1B,SAAmC,KAAa,SAAa,qBAAqB,QAAW;EAAE,QAAQ;EAAU;EAAK;CAAK,CAAC;CAC5H,OAAO,qBAAqB;CAC5B,MAAM,qBAAqB;CAC3B,mBAA6C,KAAa,MAAU,SAA6B,CAAC,MAChG,MAAA,QAAM,KAAQ,KAAK,MAAM;EAAE,GAAG;EAAqB,GAAG;CAAO,CAAC;CAChE,KAAK,qBAAqB;CAC1B,SAAsB,KAAa,UAAoB,UAA+C,iBACpG,qBAAqB,KAAQ,KAAK,UAAU;EAC1C,SAAS,EAAE,gBAAgB,sBAAsB;EACjD,kBAAkB;EAClB,SAAS;EACT,QAAQ;CACV,CAAC;CACH,YAAyB,KAAa,UAAoB,UAA+C,iBACvG,qBAAqB,IAAO,KAAK,UAAU;EACzC,SAAS,EAAE,gBAAgB,sBAAsB;EACjD,kBAAkB;EAClB,SAAS;EACT,QAAQ;CACV,CAAC;AACL"}
1
+ {"version":3,"file":"general-api.cjs","names":["Cookies","getToken","TIMEOUTS"],"sources":["../../src/api/general-api.ts"],"sourcesContent":["// Copyright 2017 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 { AxiosError, AxiosProgressEvent, AxiosRequestConfig, GenericAbortSignal, InternalAxiosRequestConfig } from 'axios';\nimport axios, { isCancel } from 'axios';\nimport Cookies from 'universal-cookie';\n\nimport { cleanUp, getToken } from '../auth';\nimport { TIMEOUTS } from '../constants';\n\nconst cookies = new Cookies();\n\nconst unauthorizedRedirect = (error: AxiosError): Promise<never> => {\n if (!isCancel(error) && error.response?.status === 401 && getToken() && !window.location.pathname.endsWith('/subscription')) {\n // a new jwt might have been set by sso while the current request was in-flight with an old token\n // => reload instead of logging out\n if (cookies.get('JWT', { doNotParse: true })) {\n window.location.reload();\n return Promise.reject(error);\n }\n cleanUp();\n window.location.replace('/ui/');\n }\n return Promise.reject(error);\n};\n\nexport const commonRequestConfig: AxiosRequestConfig = { timeout: TIMEOUTS.refreshDefault, headers: { 'Content-Type': 'application/json' } };\n\nexport const authenticatedRequest = axios.create(commonRequestConfig);\nauthenticatedRequest.interceptors.response.use(res => res, unauthorizedRedirect);\nauthenticatedRequest.interceptors.request.use(\n (config: InternalAxiosRequestConfig) => {\n config.headers.Authorization = `Bearer ${getToken()}`;\n return config;\n },\n (error: AxiosError) => Promise.reject(error)\n);\n\nconst Api = {\n get: authenticatedRequest.get,\n delete: <T = unknown, D = unknown>(url: string, data?: D) => authenticatedRequest.request<T>({ method: 'delete', url, data }),\n patch: authenticatedRequest.patch,\n post: authenticatedRequest.post,\n postUnauthorized: <T = unknown, D = unknown>(url: string, data?: D, config: AxiosRequestConfig = {}) =>\n axios.post<T>(url, data, { ...commonRequestConfig, ...config }),\n put: authenticatedRequest.put,\n upload: <T = unknown>(url: string, formData: FormData, progress: (event: AxiosProgressEvent) => void, cancelSignal: GenericAbortSignal) =>\n authenticatedRequest.post<T>(url, formData, {\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: progress,\n timeout: 0,\n signal: cancelSignal\n }),\n uploadPut: <T = unknown>(url: string, formData: FormData, progress: (event: AxiosProgressEvent) => void, cancelSignal: GenericAbortSignal) =>\n authenticatedRequest.put<T>(url, formData, {\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: progress,\n timeout: 0,\n signal: cancelSignal\n })\n};\n\nexport default Api;\n"],"mappings":";;;;;;;;;;;;AAoBA,MAAM,UAAU,IAAIA,iBAAAA,QAAQ;AAE5B,MAAM,wBAAwB,UAAsC;CAClE,IAAI,EAAA,GAAA,MAAA,SAAA,CAAU,KAAK,KAAK,MAAM,UAAU,WAAW,OAAOC,aAAAA,SAAS,KAAK,CAAC,OAAO,SAAS,SAAS,SAAS,eAAe,GAAG;EAG3H,IAAI,QAAQ,IAAI,OAAO,EAAE,YAAY,KAAK,CAAC,GAAG;GAC5C,OAAO,SAAS,OAAO;GACvB,OAAO,QAAQ,OAAO,KAAK;EAC7B;EACA,aAAA,QAAQ;EACR,OAAO,SAAS,QAAQ,MAAM;CAChC;CACA,OAAO,QAAQ,OAAO,KAAK;AAC7B;AAEA,MAAa,sBAA0C;CAAE,SAASC,kBAAAA,SAAS;CAAgB,SAAS,EAAE,gBAAgB,mBAAmB;AAAE;AAE3I,MAAa,uBAAuB,MAAA,QAAM,OAAO,mBAAmB;AACpE,qBAAqB,aAAa,SAAS,KAAI,QAAO,KAAK,oBAAoB;AAC/E,qBAAqB,aAAa,QAAQ,KACvC,WAAuC;CACtC,OAAO,QAAQ,gBAAgB,UAAUD,aAAAA,SAAS;CAClD,OAAO;AACT,IACC,UAAsB,QAAQ,OAAO,KAAK,CAC7C;AAEA,MAAM,MAAM;CACV,KAAK,qBAAqB;CAC1B,SAAmC,KAAa,SAAa,qBAAqB,QAAW;EAAE,QAAQ;EAAU;EAAK;CAAK,CAAC;CAC5H,OAAO,qBAAqB;CAC5B,MAAM,qBAAqB;CAC3B,mBAA6C,KAAa,MAAU,SAA6B,CAAC,MAChG,MAAA,QAAM,KAAQ,KAAK,MAAM;EAAE,GAAG;EAAqB,GAAG;CAAO,CAAC;CAChE,KAAK,qBAAqB;CAC1B,SAAsB,KAAa,UAAoB,UAA+C,iBACpG,qBAAqB,KAAQ,KAAK,UAAU;EAC1C,SAAS,EAAE,gBAAgB,sBAAsB;EACjD,kBAAkB;EAClB,SAAS;EACT,QAAQ;CACV,CAAC;CACH,YAAyB,KAAa,UAAoB,UAA+C,iBACvG,qBAAqB,IAAO,KAAK,UAAU;EACzC,SAAS,EAAE,gBAAgB,sBAAsB;EACjD,kBAAkB;EAClB,SAAS;EACT,QAAQ;CACV,CAAC;AACL"}
@@ -1,8 +1,8 @@
1
- const require_chunk = require("../chunk-D6vf50IK.cjs");
1
+ const require_rolldown_runtime = require("../rolldown-runtime-D6vf50IK.cjs");
2
2
  const require_auth = require("../auth.cjs");
3
3
  const require_api_general_api = require("./general-api.cjs");
4
4
  let axios = require("axios");
5
- axios = require_chunk.__toESM(axios, 1);
5
+ axios = require_rolldown_runtime.__toESM(axios, 1);
6
6
  //#region src/api/users-api.ts
7
7
  const Api = {
8
8
  postLogin: (url, { email: username, password = "", ...body }) => axios.default.post(url, body, {
@@ -1 +1 @@
1
- {"version":3,"file":"users-api.cjs","names":["commonRequestConfig","getToken"],"sources":["../../src/api/users-api.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 type { LoginOptions } from '@northern.tech/types/MenderTypes';\nimport axios from 'axios';\n\nimport { getToken } from '../auth';\nimport { commonRequestConfig } from './general-api';\n\ntype PostLoginBody = LoginOptions & {\n email: string;\n password?: string;\n};\n\ntype VerifyTFAData = Pick<LoginOptions, 'token2fa'>;\n\nconst Api = {\n postLogin: (url: string, { email: username, password = '', ...body }: PostLoginBody) =>\n axios\n .post(url, body, { ...commonRequestConfig, auth: { username, password } })\n .then(res => ({ text: res.data as string, code: res.status, contentType: res.headers?.['content-type'] as string | undefined })),\n putVerifyTFA: (url: string, userData: VerifyTFAData) => {\n let body: VerifyTFAData = {};\n if (Object.hasOwn(userData, 'token2fa')) {\n body = { token2fa: userData.token2fa };\n }\n return axios.put(url, body, { ...commonRequestConfig, headers: { ...commonRequestConfig.headers, Authorization: `Bearer ${getToken()}` } });\n }\n};\n\nexport default Api;\n"],"mappings":";;;;;;AA0BA,MAAM,MAAM;CACV,YAAY,KAAa,EAAE,OAAO,UAAU,WAAW,IAAI,GAAG,WAC5D,MAAA,QACG,KAAK,KAAK,MAAM;EAAE,GAAGA,wBAAAA;EAAqB,MAAM;GAAE;GAAU;EAAS;CAAE,CAAC,EACxE,MAAK,SAAQ;EAAE,MAAM,IAAI;EAAgB,MAAM,IAAI;EAAQ,aAAa,IAAI,UAAU;CAAsC,EAAE;CACnI,eAAe,KAAa,aAA4B;EACtD,IAAI,OAAsB,CAAC;EAC3B,IAAI,OAAO,OAAO,UAAU,UAAU,GACpC,OAAO,EAAE,UAAU,SAAS,SAAS;EAEvC,OAAO,MAAA,QAAM,IAAI,KAAK,MAAM;GAAE,GAAGA,wBAAAA;GAAqB,SAAS;IAAE,GAAGA,wBAAAA,oBAAoB;IAAS,eAAe,UAAUC,aAAAA,SAAS;GAAI;EAAE,CAAC;CAC5I;AACF"}
1
+ {"version":3,"file":"users-api.cjs","names":["commonRequestConfig","getToken"],"sources":["../../src/api/users-api.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 type { LoginOptions } from '@northern.tech/types/MenderTypes';\nimport axios from 'axios';\n\nimport { getToken } from '../auth';\nimport { commonRequestConfig } from './general-api';\n\ntype PostLoginBody = LoginOptions & {\n email: string;\n password?: string;\n};\n\ntype VerifyTFAData = Pick<LoginOptions, 'token2fa'>;\n\nconst Api = {\n postLogin: (url: string, { email: username, password = '', ...body }: PostLoginBody) =>\n axios\n .post(url, body, { ...commonRequestConfig, auth: { username, password } })\n .then(res => ({ text: res.data as string, code: res.status, contentType: res.headers?.['content-type'] as string | undefined })),\n putVerifyTFA: (url: string, userData: VerifyTFAData) => {\n let body: VerifyTFAData = {};\n if (Object.hasOwn(userData, 'token2fa')) {\n body = { token2fa: userData.token2fa };\n }\n return axios.put(url, body, { ...commonRequestConfig, headers: { ...commonRequestConfig.headers, Authorization: `Bearer ${getToken()}` } });\n }\n};\n\nexport default Api;\n"],"mappings":";;;;;;AA0BA,MAAM,MAAM;CACV,YAAY,KAAa,EAAE,OAAO,UAAU,WAAW,IAAI,GAAG,WAC5D,MAAA,QACG,KAAK,KAAK,MAAM;EAAE,GAAGA,wBAAAA;EAAqB,MAAM;GAAE;GAAU;EAAS;CAAE,CAAC,CAAC,CACzE,MAAK,SAAQ;EAAE,MAAM,IAAI;EAAgB,MAAM,IAAI;EAAQ,aAAa,IAAI,UAAU;CAAsC,EAAE;CACnI,eAAe,KAAa,aAA4B;EACtD,IAAI,OAAsB,CAAC;EAC3B,IAAI,OAAO,OAAO,UAAU,UAAU,GACpC,OAAO,EAAE,UAAU,SAAS,SAAS;EAEvC,OAAO,MAAA,QAAM,IAAI,KAAK,MAAM;GAAE,GAAGA,wBAAAA;GAAqB,SAAS;IAAE,GAAGA,wBAAAA,oBAAoB;IAAS,eAAe,UAAUC,aAAAA,SAAS;GAAI;EAAE,CAAC;CAC5I;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"users-api.js","names":[],"sources":["../../src/api/users-api.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 type { LoginOptions } from '@northern.tech/types/MenderTypes';\nimport axios from 'axios';\n\nimport { getToken } from '../auth';\nimport { commonRequestConfig } from './general-api';\n\ntype PostLoginBody = LoginOptions & {\n email: string;\n password?: string;\n};\n\ntype VerifyTFAData = Pick<LoginOptions, 'token2fa'>;\n\nconst Api = {\n postLogin: (url: string, { email: username, password = '', ...body }: PostLoginBody) =>\n axios\n .post(url, body, { ...commonRequestConfig, auth: { username, password } })\n .then(res => ({ text: res.data as string, code: res.status, contentType: res.headers?.['content-type'] as string | undefined })),\n putVerifyTFA: (url: string, userData: VerifyTFAData) => {\n let body: VerifyTFAData = {};\n if (Object.hasOwn(userData, 'token2fa')) {\n body = { token2fa: userData.token2fa };\n }\n return axios.put(url, body, { ...commonRequestConfig, headers: { ...commonRequestConfig.headers, Authorization: `Bearer ${getToken()}` } });\n }\n};\n\nexport default Api;\n"],"mappings":";;;;AA0BA,MAAM,MAAM;CACV,YAAY,KAAa,EAAE,OAAO,UAAU,WAAW,IAAI,GAAG,WAC5D,MACG,KAAK,KAAK,MAAM;EAAE,GAAG;EAAqB,MAAM;GAAE;GAAU;EAAS;CAAE,CAAC,EACxE,MAAK,SAAQ;EAAE,MAAM,IAAI;EAAgB,MAAM,IAAI;EAAQ,aAAa,IAAI,UAAU;CAAsC,EAAE;CACnI,eAAe,KAAa,aAA4B;EACtD,IAAI,OAAsB,CAAC;EAC3B,IAAI,OAAO,OAAO,UAAU,UAAU,GACpC,OAAO,EAAE,UAAU,SAAS,SAAS;EAEvC,OAAO,MAAM,IAAI,KAAK,MAAM;GAAE,GAAG;GAAqB,SAAS;IAAE,GAAG,oBAAoB;IAAS,eAAe,UAAU,SAAS;GAAI;EAAE,CAAC;CAC5I;AACF"}
1
+ {"version":3,"file":"users-api.js","names":[],"sources":["../../src/api/users-api.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 type { LoginOptions } from '@northern.tech/types/MenderTypes';\nimport axios from 'axios';\n\nimport { getToken } from '../auth';\nimport { commonRequestConfig } from './general-api';\n\ntype PostLoginBody = LoginOptions & {\n email: string;\n password?: string;\n};\n\ntype VerifyTFAData = Pick<LoginOptions, 'token2fa'>;\n\nconst Api = {\n postLogin: (url: string, { email: username, password = '', ...body }: PostLoginBody) =>\n axios\n .post(url, body, { ...commonRequestConfig, auth: { username, password } })\n .then(res => ({ text: res.data as string, code: res.status, contentType: res.headers?.['content-type'] as string | undefined })),\n putVerifyTFA: (url: string, userData: VerifyTFAData) => {\n let body: VerifyTFAData = {};\n if (Object.hasOwn(userData, 'token2fa')) {\n body = { token2fa: userData.token2fa };\n }\n return axios.put(url, body, { ...commonRequestConfig, headers: { ...commonRequestConfig.headers, Authorization: `Bearer ${getToken()}` } });\n }\n};\n\nexport default Api;\n"],"mappings":";;;;AA0BA,MAAM,MAAM;CACV,YAAY,KAAa,EAAE,OAAO,UAAU,WAAW,IAAI,GAAG,WAC5D,MACG,KAAK,KAAK,MAAM;EAAE,GAAG;EAAqB,MAAM;GAAE;GAAU;EAAS;CAAE,CAAC,CAAC,CACzE,MAAK,SAAQ;EAAE,MAAM,IAAI;EAAgB,MAAM,IAAI;EAAQ,aAAa,IAAI,UAAU;CAAsC,EAAE;CACnI,eAAe,KAAa,aAA4B;EACtD,IAAI,OAAsB,CAAC;EAC3B,IAAI,OAAO,OAAO,UAAU,UAAU,GACpC,OAAO,EAAE,UAAU,SAAS,SAAS;EAEvC,OAAO,MAAM,IAAI,KAAK,MAAM;GAAE,GAAG;GAAqB,SAAS;IAAE,GAAG,oBAAoB;IAAS,eAAe,UAAU,SAAS;GAAI;EAAE,CAAC;CAC5I;AACF"}
@@ -31,6 +31,7 @@ const initialState = {
31
31
  hasMultitenancy: false,
32
32
  hasDeviceConfig: false,
33
33
  hasDeviceConnect: false,
34
+ hasDeviceFlags: false,
34
35
  hasFeedbackEnabled: false,
35
36
  hasManifestsEnabled: false,
36
37
  hasMonitor: false,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["SORTING_OPTIONS"],"sources":["../../src/appSlice/index.ts"],"sourcesContent":["// Copyright 2023 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport type { SnackbarProps } from '@mui/material';\n\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { SortOptions } from '../constants';\nimport { SORTING_OPTIONS } from '../constants';\n\nexport const sliceName = 'app';\n\nconst getYesterday = () => {\n const today = new Date();\n today.setDate(today.getDate() - 1);\n return today.toISOString();\n};\n\nexport interface SnackbarContent extends Pick<SnackbarProps, 'action' | 'autoHideDuration' | 'message' | 'open'> {\n preventClickToCopy?: boolean;\n}\n\nexport interface SearchState {\n deviceIds: string[];\n isSearching: boolean;\n page?: number;\n perPage?: number;\n searchTerm: string;\n searchTotal: number;\n sort: SortOptions;\n}\n\nexport interface Upload {\n cancelSource: any;\n inprogress?: boolean;\n name?: string;\n progress: number;\n size?: number;\n}\n\ntype VersionInformation = {\n docsVersion?: string;\n version?: string;\n};\n\nexport type SentryConfig = {\n isReduxEnabled?: string; // no parsing done here as this has to be accessed outside of the store\n location: string;\n replaysSessionSampleRate?: number;\n tracesSampleRate?: number;\n};\n\nexport type AppSliceType = {\n appInitDone: boolean;\n cancelSource: any;\n commit: string;\n demoArtifactLink: string;\n docsVersion: string;\n features: Record<string, boolean>;\n feedbackProbability: number;\n firstLoginAfterSignup: boolean;\n hostAddress: string | null;\n hostedAnnouncement: string;\n newThreshold: string;\n offlineThreshold: string;\n recaptchaSiteKey: string;\n searchState: SearchState;\n sentry: SentryConfig;\n snackbar: SnackbarContent;\n stripeAPIKey: string;\n trackerCode: string;\n uploadsById: Record<string, Upload>;\n versionInformation: VersionInformation;\n yesterday?: string;\n};\n\nexport const initialState: AppSliceType = {\n appInitDone: false,\n cancelSource: undefined,\n commit: '',\n demoArtifactLink: 'https://dgsbl4vditpls.cloudfront.net/mender-demo-artifact.mender',\n hostAddress: null,\n snackbar: {\n action: undefined,\n autoHideDuration: undefined,\n message: '',\n open: false,\n preventClickToCopy: false\n },\n // return boolean rather than organization details\n features: {\n hasAiEnabled: false,\n hasAuditlogs: false,\n hasDeltaProgress: false,\n hasMultitenancy: false,\n hasDeviceConfig: false,\n hasDeviceConnect: false,\n hasFeedbackEnabled: false,\n hasManifestsEnabled: false,\n hasMonitor: false,\n hasMCUEnabled: false,\n isHosted: true,\n isEnterprise: false\n },\n feedbackProbability: 0.3,\n firstLoginAfterSignup: false,\n hostedAnnouncement: '',\n docsVersion: '',\n recaptchaSiteKey: '',\n searchState: {\n deviceIds: [],\n searchTerm: '',\n searchTotal: 0,\n isSearching: false,\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n }\n },\n sentry: {\n location: '',\n replaysSessionSampleRate: 0.1,\n tracesSampleRate: 1.0\n },\n stripeAPIKey: '',\n trackerCode: '',\n uploadsById: {\n // id: { progress: 0, cancelSource: undefined }\n },\n newThreshold: getYesterday(),\n offlineThreshold: getYesterday(),\n versionInformation: { docsVersion: '', version: '' },\n yesterday: undefined\n};\n\nexport const appSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n setFeatures: (state, action: PayloadAction<Record<string, boolean>>) => {\n state.features = {\n ...state.features,\n ...action.payload\n };\n },\n setSnackbar: (state, { payload }: PayloadAction<SnackbarContent | string>) => {\n if (typeof payload === 'string' || payload instanceof String) {\n state.snackbar = {\n ...initialState.snackbar,\n message: payload,\n open: !!payload\n };\n return;\n }\n const { message, autoHideDuration, action, preventClickToCopy = false } = payload;\n state.snackbar = {\n message,\n autoHideDuration,\n action,\n preventClickToCopy,\n open: !!message\n };\n },\n setFirstLoginAfterSignup: (state, action: PayloadAction<boolean>) => {\n state.firstLoginAfterSignup = action.payload;\n },\n setAnnouncement: (state, action: PayloadAction<string>) => {\n state.hostedAnnouncement = action.payload;\n },\n setSearchState: (state, action) => {\n state.searchState = {\n ...state.searchState,\n ...action.payload\n };\n },\n setOfflineThreshold: (state, action: PayloadAction<string>) => {\n state.offlineThreshold = action.payload;\n },\n initUpload: (state, action: PayloadAction<{ id: string; upload: Upload }>) => {\n const { id, upload } = action.payload;\n state.uploadsById[id] = upload;\n },\n uploadProgress: (state, action: PayloadAction<{ id: string; progress: number }>) => {\n const { id, progress } = action.payload;\n state.uploadsById[id] = {\n ...state.uploadsById[id],\n progress\n };\n },\n cleanUpUpload: (state, action: PayloadAction<string>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [action.payload]: current, ...remainder } = state.uploadsById;\n state.uploadsById = remainder;\n },\n setVersionInformation: (state, action: PayloadAction<VersionInformation>) => {\n state.versionInformation = {\n ...state.versionInformation,\n ...action.payload\n };\n },\n setEnvironmentData: (state, action) => ({ ...state, ...action.payload }),\n setAppInitDone: state => {\n state.appInitDone = true;\n }\n }\n});\n\nexport const actions = appSlice.actions;\nexport default appSlice.reducer;\n"],"mappings":";;;;;;;AAqBA,MAAa,YAAY;AAEzB,MAAM,qBAAqB;CACzB,MAAM,wBAAQ,IAAI,KAAK;CACvB,MAAM,QAAQ,MAAM,QAAQ,IAAI,CAAC;CACjC,OAAO,MAAM,YAAY;AAC3B;AA4DA,MAAa,eAA6B;CACxC,aAAa;CACb,cAAc,KAAA;CACd,QAAQ;CACR,kBAAkB;CAClB,aAAa;CACb,UAAU;EACR,QAAQ,KAAA;EACR,kBAAkB,KAAA;EAClB,SAAS;EACT,MAAM;EACN,oBAAoB;CACtB;CAEA,UAAU;EACR,cAAc;EACd,cAAc;EACd,kBAAkB;EAClB,iBAAiB;EACjB,iBAAiB;EACjB,kBAAkB;EAClB,oBAAoB;EACpB,qBAAqB;EACrB,YAAY;EACZ,eAAe;EACf,UAAU;EACV,cAAc;CAChB;CACA,qBAAqB;CACrB,uBAAuB;CACvB,oBAAoB;CACpB,aAAa;CACb,kBAAkB;CAClB,aAAa;EACX,WAAW,CAAC;EACZ,YAAY;EACZ,aAAa;EACb,aAAa;EACb,MAAM,EACJ,WAAWA,+BAAAA,gBAAgB,KAG7B;CACF;CACA,QAAQ;EACN,UAAU;EACV,0BAA0B;EAC1B,kBAAkB;CACpB;CACA,cAAc;CACd,aAAa;CACb,aAAa,CAEb;CACA,cAAc,aAAa;CAC3B,kBAAkB,aAAa;CAC/B,oBAAoB;EAAE,aAAa;EAAI,SAAS;CAAG;CACnD,WAAW,KAAA;AACb;AAEA,MAAa,YAAA,GAAA,iBAAA,aAAuB;CAClC,MAAA;CACA;CACA,UAAU;EACR,cAAc,OAAO,WAAmD;GACtE,MAAM,WAAW;IACf,GAAG,MAAM;IACT,GAAG,OAAO;GACZ;EACF;EACA,cAAc,OAAO,EAAE,cAAuD;GAC5E,IAAI,OAAO,YAAY,YAAY,mBAAmB,QAAQ;IAC5D,MAAM,WAAW;KACf,GAAG,aAAa;KAChB,SAAS;KACT,MAAM,CAAC,CAAC;IACV;IACA;GACF;GACA,MAAM,EAAE,SAAS,kBAAkB,QAAQ,qBAAqB,UAAU;GAC1E,MAAM,WAAW;IACf;IACA;IACA;IACA;IACA,MAAM,CAAC,CAAC;GACV;EACF;EACA,2BAA2B,OAAO,WAAmC;GACnE,MAAM,wBAAwB,OAAO;EACvC;EACA,kBAAkB,OAAO,WAAkC;GACzD,MAAM,qBAAqB,OAAO;EACpC;EACA,iBAAiB,OAAO,WAAW;GACjC,MAAM,cAAc;IAClB,GAAG,MAAM;IACT,GAAG,OAAO;GACZ;EACF;EACA,sBAAsB,OAAO,WAAkC;GAC7D,MAAM,mBAAmB,OAAO;EAClC;EACA,aAAa,OAAO,WAA0D;GAC5E,MAAM,EAAE,IAAI,WAAW,OAAO;GAC9B,MAAM,YAAY,MAAM;EAC1B;EACA,iBAAiB,OAAO,WAA4D;GAClF,MAAM,EAAE,IAAI,aAAa,OAAO;GAChC,MAAM,YAAY,MAAM;IACtB,GAAG,MAAM,YAAY;IACrB;GACF;EACF;EACA,gBAAgB,OAAO,WAAkC;GAEvD,MAAM,GAAG,OAAO,UAAU,SAAS,GAAG,cAAc,MAAM;GAC1D,MAAM,cAAc;EACtB;EACA,wBAAwB,OAAO,WAA8C;GAC3E,MAAM,qBAAqB;IACzB,GAAG,MAAM;IACT,GAAG,OAAO;GACZ;EACF;EACA,qBAAqB,OAAO,YAAY;GAAE,GAAG;GAAO,GAAG,OAAO;EAAQ;EACtE,iBAAgB,UAAS;GACvB,MAAM,cAAc;EACtB;CACF;AACF,CAAC;AAED,MAAa,UAAU,SAAS;AAChC,IAAA,mBAAe,SAAS"}
1
+ {"version":3,"file":"index.cjs","names":["SORTING_OPTIONS"],"sources":["../../src/appSlice/index.ts"],"sourcesContent":["// Copyright 2023 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport type { SnackbarProps } from '@mui/material';\n\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { SortOptions } from '../constants';\nimport { SORTING_OPTIONS } from '../constants';\n\nexport const sliceName = 'app';\n\nconst getYesterday = () => {\n const today = new Date();\n today.setDate(today.getDate() - 1);\n return today.toISOString();\n};\n\nexport interface SnackbarContent extends Pick<SnackbarProps, 'action' | 'autoHideDuration' | 'message' | 'open'> {\n preventClickToCopy?: boolean;\n}\n\nexport interface SearchState {\n deviceIds: string[];\n isSearching: boolean;\n page?: number;\n perPage?: number;\n searchTerm: string;\n searchTotal: number;\n sort: SortOptions;\n}\n\nexport interface Upload {\n cancelSource: any;\n inprogress?: boolean;\n name?: string;\n progress: number;\n size?: number;\n}\n\ntype VersionInformation = {\n docsVersion?: string;\n version?: string;\n};\n\nexport type SentryConfig = {\n isReduxEnabled?: string; // no parsing done here as this has to be accessed outside of the store\n location: string;\n replaysSessionSampleRate?: number;\n tracesSampleRate?: number;\n};\n\nexport type AppSliceType = {\n appInitDone: boolean;\n cancelSource: any;\n commit: string;\n demoArtifactLink: string;\n docsVersion: string;\n features: Record<string, boolean>;\n feedbackProbability: number;\n firstLoginAfterSignup: boolean;\n hostAddress: string | null;\n hostedAnnouncement: string;\n newThreshold: string;\n offlineThreshold: string;\n recaptchaSiteKey: string;\n searchState: SearchState;\n sentry: SentryConfig;\n snackbar: SnackbarContent;\n stripeAPIKey: string;\n trackerCode: string;\n uploadsById: Record<string, Upload>;\n versionInformation: VersionInformation;\n yesterday?: string;\n};\n\nexport const initialState: AppSliceType = {\n appInitDone: false,\n cancelSource: undefined,\n commit: '',\n demoArtifactLink: 'https://dgsbl4vditpls.cloudfront.net/mender-demo-artifact.mender',\n hostAddress: null,\n snackbar: {\n action: undefined,\n autoHideDuration: undefined,\n message: '',\n open: false,\n preventClickToCopy: false\n },\n // return boolean rather than organization details\n features: {\n hasAiEnabled: false,\n hasAuditlogs: false,\n hasDeltaProgress: false,\n hasMultitenancy: false,\n hasDeviceConfig: false,\n hasDeviceConnect: false,\n hasDeviceFlags: false,\n hasFeedbackEnabled: false,\n hasManifestsEnabled: false,\n hasMonitor: false,\n hasMCUEnabled: false,\n isHosted: true,\n isEnterprise: false\n },\n feedbackProbability: 0.3,\n firstLoginAfterSignup: false,\n hostedAnnouncement: '',\n docsVersion: '',\n recaptchaSiteKey: '',\n searchState: {\n deviceIds: [],\n searchTerm: '',\n searchTotal: 0,\n isSearching: false,\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n }\n },\n sentry: {\n location: '',\n replaysSessionSampleRate: 0.1,\n tracesSampleRate: 1.0\n },\n stripeAPIKey: '',\n trackerCode: '',\n uploadsById: {\n // id: { progress: 0, cancelSource: undefined }\n },\n newThreshold: getYesterday(),\n offlineThreshold: getYesterday(),\n versionInformation: { docsVersion: '', version: '' },\n yesterday: undefined\n};\n\nexport const appSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n setFeatures: (state, action: PayloadAction<Record<string, boolean>>) => {\n state.features = {\n ...state.features,\n ...action.payload\n };\n },\n setSnackbar: (state, { payload }: PayloadAction<SnackbarContent | string>) => {\n if (typeof payload === 'string' || payload instanceof String) {\n state.snackbar = {\n ...initialState.snackbar,\n message: payload,\n open: !!payload\n };\n return;\n }\n const { message, autoHideDuration, action, preventClickToCopy = false } = payload;\n state.snackbar = {\n message,\n autoHideDuration,\n action,\n preventClickToCopy,\n open: !!message\n };\n },\n setFirstLoginAfterSignup: (state, action: PayloadAction<boolean>) => {\n state.firstLoginAfterSignup = action.payload;\n },\n setAnnouncement: (state, action: PayloadAction<string>) => {\n state.hostedAnnouncement = action.payload;\n },\n setSearchState: (state, action) => {\n state.searchState = {\n ...state.searchState,\n ...action.payload\n };\n },\n setOfflineThreshold: (state, action: PayloadAction<string>) => {\n state.offlineThreshold = action.payload;\n },\n initUpload: (state, action: PayloadAction<{ id: string; upload: Upload }>) => {\n const { id, upload } = action.payload;\n state.uploadsById[id] = upload;\n },\n uploadProgress: (state, action: PayloadAction<{ id: string; progress: number }>) => {\n const { id, progress } = action.payload;\n state.uploadsById[id] = {\n ...state.uploadsById[id],\n progress\n };\n },\n cleanUpUpload: (state, action: PayloadAction<string>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [action.payload]: current, ...remainder } = state.uploadsById;\n state.uploadsById = remainder;\n },\n setVersionInformation: (state, action: PayloadAction<VersionInformation>) => {\n state.versionInformation = {\n ...state.versionInformation,\n ...action.payload\n };\n },\n setEnvironmentData: (state, action) => ({ ...state, ...action.payload }),\n setAppInitDone: state => {\n state.appInitDone = true;\n }\n }\n});\n\nexport const actions = appSlice.actions;\nexport default appSlice.reducer;\n"],"mappings":";;;;;;;AAqBA,MAAa,YAAY;AAEzB,MAAM,qBAAqB;CACzB,MAAM,wBAAQ,IAAI,KAAK;CACvB,MAAM,QAAQ,MAAM,QAAQ,IAAI,CAAC;CACjC,OAAO,MAAM,YAAY;AAC3B;AA4DA,MAAa,eAA6B;CACxC,aAAa;CACb,cAAc,KAAA;CACd,QAAQ;CACR,kBAAkB;CAClB,aAAa;CACb,UAAU;EACR,QAAQ,KAAA;EACR,kBAAkB,KAAA;EAClB,SAAS;EACT,MAAM;EACN,oBAAoB;CACtB;CAEA,UAAU;EACR,cAAc;EACd,cAAc;EACd,kBAAkB;EAClB,iBAAiB;EACjB,iBAAiB;EACjB,kBAAkB;EAClB,gBAAgB;EAChB,oBAAoB;EACpB,qBAAqB;EACrB,YAAY;EACZ,eAAe;EACf,UAAU;EACV,cAAc;CAChB;CACA,qBAAqB;CACrB,uBAAuB;CACvB,oBAAoB;CACpB,aAAa;CACb,kBAAkB;CAClB,aAAa;EACX,WAAW,CAAC;EACZ,YAAY;EACZ,aAAa;EACb,aAAa;EACb,MAAM,EACJ,WAAWA,+BAAAA,gBAAgB,KAG7B;CACF;CACA,QAAQ;EACN,UAAU;EACV,0BAA0B;EAC1B,kBAAkB;CACpB;CACA,cAAc;CACd,aAAa;CACb,aAAa,CAEb;CACA,cAAc,aAAa;CAC3B,kBAAkB,aAAa;CAC/B,oBAAoB;EAAE,aAAa;EAAI,SAAS;CAAG;CACnD,WAAW,KAAA;AACb;AAEA,MAAa,YAAA,GAAA,iBAAA,YAAA,CAAuB;CAClC,MAAA;CACA;CACA,UAAU;EACR,cAAc,OAAO,WAAmD;GACtE,MAAM,WAAW;IACf,GAAG,MAAM;IACT,GAAG,OAAO;GACZ;EACF;EACA,cAAc,OAAO,EAAE,cAAuD;GAC5E,IAAI,OAAO,YAAY,YAAY,mBAAmB,QAAQ;IAC5D,MAAM,WAAW;KACf,GAAG,aAAa;KAChB,SAAS;KACT,MAAM,CAAC,CAAC;IACV;IACA;GACF;GACA,MAAM,EAAE,SAAS,kBAAkB,QAAQ,qBAAqB,UAAU;GAC1E,MAAM,WAAW;IACf;IACA;IACA;IACA;IACA,MAAM,CAAC,CAAC;GACV;EACF;EACA,2BAA2B,OAAO,WAAmC;GACnE,MAAM,wBAAwB,OAAO;EACvC;EACA,kBAAkB,OAAO,WAAkC;GACzD,MAAM,qBAAqB,OAAO;EACpC;EACA,iBAAiB,OAAO,WAAW;GACjC,MAAM,cAAc;IAClB,GAAG,MAAM;IACT,GAAG,OAAO;GACZ;EACF;EACA,sBAAsB,OAAO,WAAkC;GAC7D,MAAM,mBAAmB,OAAO;EAClC;EACA,aAAa,OAAO,WAA0D;GAC5E,MAAM,EAAE,IAAI,WAAW,OAAO;GAC9B,MAAM,YAAY,MAAM;EAC1B;EACA,iBAAiB,OAAO,WAA4D;GAClF,MAAM,EAAE,IAAI,aAAa,OAAO;GAChC,MAAM,YAAY,MAAM;IACtB,GAAG,MAAM,YAAY;IACrB;GACF;EACF;EACA,gBAAgB,OAAO,WAAkC;GAEvD,MAAM,GAAG,OAAO,UAAU,SAAS,GAAG,cAAc,MAAM;GAC1D,MAAM,cAAc;EACtB;EACA,wBAAwB,OAAO,WAA8C;GAC3E,MAAM,qBAAqB;IACzB,GAAG,MAAM;IACT,GAAG,OAAO;GACZ;EACF;EACA,qBAAqB,OAAO,YAAY;GAAE,GAAG;GAAO,GAAG,OAAO;EAAQ;EACtE,iBAAgB,UAAS;GACvB,MAAM,cAAc;EACtB;CACF;AACF,CAAC;AAED,MAAa,UAAU,SAAS;AAChC,IAAA,mBAAe,SAAS"}
@@ -27,6 +27,7 @@ const initialState = {
27
27
  hasMultitenancy: false,
28
28
  hasDeviceConfig: false,
29
29
  hasDeviceConnect: false,
30
+ hasDeviceFlags: false,
30
31
  hasFeedbackEnabled: false,
31
32
  hasManifestsEnabled: false,
32
33
  hasMonitor: false,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/appSlice/index.ts"],"sourcesContent":["// Copyright 2023 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport type { SnackbarProps } from '@mui/material';\n\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { SortOptions } from '../constants';\nimport { SORTING_OPTIONS } from '../constants';\n\nexport const sliceName = 'app';\n\nconst getYesterday = () => {\n const today = new Date();\n today.setDate(today.getDate() - 1);\n return today.toISOString();\n};\n\nexport interface SnackbarContent extends Pick<SnackbarProps, 'action' | 'autoHideDuration' | 'message' | 'open'> {\n preventClickToCopy?: boolean;\n}\n\nexport interface SearchState {\n deviceIds: string[];\n isSearching: boolean;\n page?: number;\n perPage?: number;\n searchTerm: string;\n searchTotal: number;\n sort: SortOptions;\n}\n\nexport interface Upload {\n cancelSource: any;\n inprogress?: boolean;\n name?: string;\n progress: number;\n size?: number;\n}\n\ntype VersionInformation = {\n docsVersion?: string;\n version?: string;\n};\n\nexport type SentryConfig = {\n isReduxEnabled?: string; // no parsing done here as this has to be accessed outside of the store\n location: string;\n replaysSessionSampleRate?: number;\n tracesSampleRate?: number;\n};\n\nexport type AppSliceType = {\n appInitDone: boolean;\n cancelSource: any;\n commit: string;\n demoArtifactLink: string;\n docsVersion: string;\n features: Record<string, boolean>;\n feedbackProbability: number;\n firstLoginAfterSignup: boolean;\n hostAddress: string | null;\n hostedAnnouncement: string;\n newThreshold: string;\n offlineThreshold: string;\n recaptchaSiteKey: string;\n searchState: SearchState;\n sentry: SentryConfig;\n snackbar: SnackbarContent;\n stripeAPIKey: string;\n trackerCode: string;\n uploadsById: Record<string, Upload>;\n versionInformation: VersionInformation;\n yesterday?: string;\n};\n\nexport const initialState: AppSliceType = {\n appInitDone: false,\n cancelSource: undefined,\n commit: '',\n demoArtifactLink: 'https://dgsbl4vditpls.cloudfront.net/mender-demo-artifact.mender',\n hostAddress: null,\n snackbar: {\n action: undefined,\n autoHideDuration: undefined,\n message: '',\n open: false,\n preventClickToCopy: false\n },\n // return boolean rather than organization details\n features: {\n hasAiEnabled: false,\n hasAuditlogs: false,\n hasDeltaProgress: false,\n hasMultitenancy: false,\n hasDeviceConfig: false,\n hasDeviceConnect: false,\n hasFeedbackEnabled: false,\n hasManifestsEnabled: false,\n hasMonitor: false,\n hasMCUEnabled: false,\n isHosted: true,\n isEnterprise: false\n },\n feedbackProbability: 0.3,\n firstLoginAfterSignup: false,\n hostedAnnouncement: '',\n docsVersion: '',\n recaptchaSiteKey: '',\n searchState: {\n deviceIds: [],\n searchTerm: '',\n searchTotal: 0,\n isSearching: false,\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n }\n },\n sentry: {\n location: '',\n replaysSessionSampleRate: 0.1,\n tracesSampleRate: 1.0\n },\n stripeAPIKey: '',\n trackerCode: '',\n uploadsById: {\n // id: { progress: 0, cancelSource: undefined }\n },\n newThreshold: getYesterday(),\n offlineThreshold: getYesterday(),\n versionInformation: { docsVersion: '', version: '' },\n yesterday: undefined\n};\n\nexport const appSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n setFeatures: (state, action: PayloadAction<Record<string, boolean>>) => {\n state.features = {\n ...state.features,\n ...action.payload\n };\n },\n setSnackbar: (state, { payload }: PayloadAction<SnackbarContent | string>) => {\n if (typeof payload === 'string' || payload instanceof String) {\n state.snackbar = {\n ...initialState.snackbar,\n message: payload,\n open: !!payload\n };\n return;\n }\n const { message, autoHideDuration, action, preventClickToCopy = false } = payload;\n state.snackbar = {\n message,\n autoHideDuration,\n action,\n preventClickToCopy,\n open: !!message\n };\n },\n setFirstLoginAfterSignup: (state, action: PayloadAction<boolean>) => {\n state.firstLoginAfterSignup = action.payload;\n },\n setAnnouncement: (state, action: PayloadAction<string>) => {\n state.hostedAnnouncement = action.payload;\n },\n setSearchState: (state, action) => {\n state.searchState = {\n ...state.searchState,\n ...action.payload\n };\n },\n setOfflineThreshold: (state, action: PayloadAction<string>) => {\n state.offlineThreshold = action.payload;\n },\n initUpload: (state, action: PayloadAction<{ id: string; upload: Upload }>) => {\n const { id, upload } = action.payload;\n state.uploadsById[id] = upload;\n },\n uploadProgress: (state, action: PayloadAction<{ id: string; progress: number }>) => {\n const { id, progress } = action.payload;\n state.uploadsById[id] = {\n ...state.uploadsById[id],\n progress\n };\n },\n cleanUpUpload: (state, action: PayloadAction<string>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [action.payload]: current, ...remainder } = state.uploadsById;\n state.uploadsById = remainder;\n },\n setVersionInformation: (state, action: PayloadAction<VersionInformation>) => {\n state.versionInformation = {\n ...state.versionInformation,\n ...action.payload\n };\n },\n setEnvironmentData: (state, action) => ({ ...state, ...action.payload }),\n setAppInitDone: state => {\n state.appInitDone = true;\n }\n }\n});\n\nexport const actions = appSlice.actions;\nexport default appSlice.reducer;\n"],"mappings":";;;AAqBA,MAAa,YAAY;AAEzB,MAAM,qBAAqB;CACzB,MAAM,wBAAQ,IAAI,KAAK;CACvB,MAAM,QAAQ,MAAM,QAAQ,IAAI,CAAC;CACjC,OAAO,MAAM,YAAY;AAC3B;AA4DA,MAAa,eAA6B;CACxC,aAAa;CACb,cAAc,KAAA;CACd,QAAQ;CACR,kBAAkB;CAClB,aAAa;CACb,UAAU;EACR,QAAQ,KAAA;EACR,kBAAkB,KAAA;EAClB,SAAS;EACT,MAAM;EACN,oBAAoB;CACtB;CAEA,UAAU;EACR,cAAc;EACd,cAAc;EACd,kBAAkB;EAClB,iBAAiB;EACjB,iBAAiB;EACjB,kBAAkB;EAClB,oBAAoB;EACpB,qBAAqB;EACrB,YAAY;EACZ,eAAe;EACf,UAAU;EACV,cAAc;CAChB;CACA,qBAAqB;CACrB,uBAAuB;CACvB,oBAAoB;CACpB,aAAa;CACb,kBAAkB;CAClB,aAAa;EACX,WAAW,CAAC;EACZ,YAAY;EACZ,aAAa;EACb,aAAa;EACb,MAAM,EACJ,WAAW,gBAAgB,KAG7B;CACF;CACA,QAAQ;EACN,UAAU;EACV,0BAA0B;EAC1B,kBAAkB;CACpB;CACA,cAAc;CACd,aAAa;CACb,aAAa,CAEb;CACA,cAAc,aAAa;CAC3B,kBAAkB,aAAa;CAC/B,oBAAoB;EAAE,aAAa;EAAI,SAAS;CAAG;CACnD,WAAW,KAAA;AACb;AAEA,MAAa,WAAW,YAAY;CAClC,MAAA;CACA;CACA,UAAU;EACR,cAAc,OAAO,WAAmD;GACtE,MAAM,WAAW;IACf,GAAG,MAAM;IACT,GAAG,OAAO;GACZ;EACF;EACA,cAAc,OAAO,EAAE,cAAuD;GAC5E,IAAI,OAAO,YAAY,YAAY,mBAAmB,QAAQ;IAC5D,MAAM,WAAW;KACf,GAAG,aAAa;KAChB,SAAS;KACT,MAAM,CAAC,CAAC;IACV;IACA;GACF;GACA,MAAM,EAAE,SAAS,kBAAkB,QAAQ,qBAAqB,UAAU;GAC1E,MAAM,WAAW;IACf;IACA;IACA;IACA;IACA,MAAM,CAAC,CAAC;GACV;EACF;EACA,2BAA2B,OAAO,WAAmC;GACnE,MAAM,wBAAwB,OAAO;EACvC;EACA,kBAAkB,OAAO,WAAkC;GACzD,MAAM,qBAAqB,OAAO;EACpC;EACA,iBAAiB,OAAO,WAAW;GACjC,MAAM,cAAc;IAClB,GAAG,MAAM;IACT,GAAG,OAAO;GACZ;EACF;EACA,sBAAsB,OAAO,WAAkC;GAC7D,MAAM,mBAAmB,OAAO;EAClC;EACA,aAAa,OAAO,WAA0D;GAC5E,MAAM,EAAE,IAAI,WAAW,OAAO;GAC9B,MAAM,YAAY,MAAM;EAC1B;EACA,iBAAiB,OAAO,WAA4D;GAClF,MAAM,EAAE,IAAI,aAAa,OAAO;GAChC,MAAM,YAAY,MAAM;IACtB,GAAG,MAAM,YAAY;IACrB;GACF;EACF;EACA,gBAAgB,OAAO,WAAkC;GAEvD,MAAM,GAAG,OAAO,UAAU,SAAS,GAAG,cAAc,MAAM;GAC1D,MAAM,cAAc;EACtB;EACA,wBAAwB,OAAO,WAA8C;GAC3E,MAAM,qBAAqB;IACzB,GAAG,MAAM;IACT,GAAG,OAAO;GACZ;EACF;EACA,qBAAqB,OAAO,YAAY;GAAE,GAAG;GAAO,GAAG,OAAO;EAAQ;EACtE,iBAAgB,UAAS;GACvB,MAAM,cAAc;EACtB;CACF;AACF,CAAC;AAED,MAAa,UAAU,SAAS;AAChC,IAAA,mBAAe,SAAS"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/appSlice/index.ts"],"sourcesContent":["// Copyright 2023 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport type { SnackbarProps } from '@mui/material';\n\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { SortOptions } from '../constants';\nimport { SORTING_OPTIONS } from '../constants';\n\nexport const sliceName = 'app';\n\nconst getYesterday = () => {\n const today = new Date();\n today.setDate(today.getDate() - 1);\n return today.toISOString();\n};\n\nexport interface SnackbarContent extends Pick<SnackbarProps, 'action' | 'autoHideDuration' | 'message' | 'open'> {\n preventClickToCopy?: boolean;\n}\n\nexport interface SearchState {\n deviceIds: string[];\n isSearching: boolean;\n page?: number;\n perPage?: number;\n searchTerm: string;\n searchTotal: number;\n sort: SortOptions;\n}\n\nexport interface Upload {\n cancelSource: any;\n inprogress?: boolean;\n name?: string;\n progress: number;\n size?: number;\n}\n\ntype VersionInformation = {\n docsVersion?: string;\n version?: string;\n};\n\nexport type SentryConfig = {\n isReduxEnabled?: string; // no parsing done here as this has to be accessed outside of the store\n location: string;\n replaysSessionSampleRate?: number;\n tracesSampleRate?: number;\n};\n\nexport type AppSliceType = {\n appInitDone: boolean;\n cancelSource: any;\n commit: string;\n demoArtifactLink: string;\n docsVersion: string;\n features: Record<string, boolean>;\n feedbackProbability: number;\n firstLoginAfterSignup: boolean;\n hostAddress: string | null;\n hostedAnnouncement: string;\n newThreshold: string;\n offlineThreshold: string;\n recaptchaSiteKey: string;\n searchState: SearchState;\n sentry: SentryConfig;\n snackbar: SnackbarContent;\n stripeAPIKey: string;\n trackerCode: string;\n uploadsById: Record<string, Upload>;\n versionInformation: VersionInformation;\n yesterday?: string;\n};\n\nexport const initialState: AppSliceType = {\n appInitDone: false,\n cancelSource: undefined,\n commit: '',\n demoArtifactLink: 'https://dgsbl4vditpls.cloudfront.net/mender-demo-artifact.mender',\n hostAddress: null,\n snackbar: {\n action: undefined,\n autoHideDuration: undefined,\n message: '',\n open: false,\n preventClickToCopy: false\n },\n // return boolean rather than organization details\n features: {\n hasAiEnabled: false,\n hasAuditlogs: false,\n hasDeltaProgress: false,\n hasMultitenancy: false,\n hasDeviceConfig: false,\n hasDeviceConnect: false,\n hasDeviceFlags: false,\n hasFeedbackEnabled: false,\n hasManifestsEnabled: false,\n hasMonitor: false,\n hasMCUEnabled: false,\n isHosted: true,\n isEnterprise: false\n },\n feedbackProbability: 0.3,\n firstLoginAfterSignup: false,\n hostedAnnouncement: '',\n docsVersion: '',\n recaptchaSiteKey: '',\n searchState: {\n deviceIds: [],\n searchTerm: '',\n searchTotal: 0,\n isSearching: false,\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n }\n },\n sentry: {\n location: '',\n replaysSessionSampleRate: 0.1,\n tracesSampleRate: 1.0\n },\n stripeAPIKey: '',\n trackerCode: '',\n uploadsById: {\n // id: { progress: 0, cancelSource: undefined }\n },\n newThreshold: getYesterday(),\n offlineThreshold: getYesterday(),\n versionInformation: { docsVersion: '', version: '' },\n yesterday: undefined\n};\n\nexport const appSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n setFeatures: (state, action: PayloadAction<Record<string, boolean>>) => {\n state.features = {\n ...state.features,\n ...action.payload\n };\n },\n setSnackbar: (state, { payload }: PayloadAction<SnackbarContent | string>) => {\n if (typeof payload === 'string' || payload instanceof String) {\n state.snackbar = {\n ...initialState.snackbar,\n message: payload,\n open: !!payload\n };\n return;\n }\n const { message, autoHideDuration, action, preventClickToCopy = false } = payload;\n state.snackbar = {\n message,\n autoHideDuration,\n action,\n preventClickToCopy,\n open: !!message\n };\n },\n setFirstLoginAfterSignup: (state, action: PayloadAction<boolean>) => {\n state.firstLoginAfterSignup = action.payload;\n },\n setAnnouncement: (state, action: PayloadAction<string>) => {\n state.hostedAnnouncement = action.payload;\n },\n setSearchState: (state, action) => {\n state.searchState = {\n ...state.searchState,\n ...action.payload\n };\n },\n setOfflineThreshold: (state, action: PayloadAction<string>) => {\n state.offlineThreshold = action.payload;\n },\n initUpload: (state, action: PayloadAction<{ id: string; upload: Upload }>) => {\n const { id, upload } = action.payload;\n state.uploadsById[id] = upload;\n },\n uploadProgress: (state, action: PayloadAction<{ id: string; progress: number }>) => {\n const { id, progress } = action.payload;\n state.uploadsById[id] = {\n ...state.uploadsById[id],\n progress\n };\n },\n cleanUpUpload: (state, action: PayloadAction<string>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [action.payload]: current, ...remainder } = state.uploadsById;\n state.uploadsById = remainder;\n },\n setVersionInformation: (state, action: PayloadAction<VersionInformation>) => {\n state.versionInformation = {\n ...state.versionInformation,\n ...action.payload\n };\n },\n setEnvironmentData: (state, action) => ({ ...state, ...action.payload }),\n setAppInitDone: state => {\n state.appInitDone = true;\n }\n }\n});\n\nexport const actions = appSlice.actions;\nexport default appSlice.reducer;\n"],"mappings":";;;AAqBA,MAAa,YAAY;AAEzB,MAAM,qBAAqB;CACzB,MAAM,wBAAQ,IAAI,KAAK;CACvB,MAAM,QAAQ,MAAM,QAAQ,IAAI,CAAC;CACjC,OAAO,MAAM,YAAY;AAC3B;AA4DA,MAAa,eAA6B;CACxC,aAAa;CACb,cAAc,KAAA;CACd,QAAQ;CACR,kBAAkB;CAClB,aAAa;CACb,UAAU;EACR,QAAQ,KAAA;EACR,kBAAkB,KAAA;EAClB,SAAS;EACT,MAAM;EACN,oBAAoB;CACtB;CAEA,UAAU;EACR,cAAc;EACd,cAAc;EACd,kBAAkB;EAClB,iBAAiB;EACjB,iBAAiB;EACjB,kBAAkB;EAClB,gBAAgB;EAChB,oBAAoB;EACpB,qBAAqB;EACrB,YAAY;EACZ,eAAe;EACf,UAAU;EACV,cAAc;CAChB;CACA,qBAAqB;CACrB,uBAAuB;CACvB,oBAAoB;CACpB,aAAa;CACb,kBAAkB;CAClB,aAAa;EACX,WAAW,CAAC;EACZ,YAAY;EACZ,aAAa;EACb,aAAa;EACb,MAAM,EACJ,WAAW,gBAAgB,KAG7B;CACF;CACA,QAAQ;EACN,UAAU;EACV,0BAA0B;EAC1B,kBAAkB;CACpB;CACA,cAAc;CACd,aAAa;CACb,aAAa,CAEb;CACA,cAAc,aAAa;CAC3B,kBAAkB,aAAa;CAC/B,oBAAoB;EAAE,aAAa;EAAI,SAAS;CAAG;CACnD,WAAW,KAAA;AACb;AAEA,MAAa,WAAW,YAAY;CAClC,MAAA;CACA;CACA,UAAU;EACR,cAAc,OAAO,WAAmD;GACtE,MAAM,WAAW;IACf,GAAG,MAAM;IACT,GAAG,OAAO;GACZ;EACF;EACA,cAAc,OAAO,EAAE,cAAuD;GAC5E,IAAI,OAAO,YAAY,YAAY,mBAAmB,QAAQ;IAC5D,MAAM,WAAW;KACf,GAAG,aAAa;KAChB,SAAS;KACT,MAAM,CAAC,CAAC;IACV;IACA;GACF;GACA,MAAM,EAAE,SAAS,kBAAkB,QAAQ,qBAAqB,UAAU;GAC1E,MAAM,WAAW;IACf;IACA;IACA;IACA;IACA,MAAM,CAAC,CAAC;GACV;EACF;EACA,2BAA2B,OAAO,WAAmC;GACnE,MAAM,wBAAwB,OAAO;EACvC;EACA,kBAAkB,OAAO,WAAkC;GACzD,MAAM,qBAAqB,OAAO;EACpC;EACA,iBAAiB,OAAO,WAAW;GACjC,MAAM,cAAc;IAClB,GAAG,MAAM;IACT,GAAG,OAAO;GACZ;EACF;EACA,sBAAsB,OAAO,WAAkC;GAC7D,MAAM,mBAAmB,OAAO;EAClC;EACA,aAAa,OAAO,WAA0D;GAC5E,MAAM,EAAE,IAAI,WAAW,OAAO;GAC9B,MAAM,YAAY,MAAM;EAC1B;EACA,iBAAiB,OAAO,WAA4D;GAClF,MAAM,EAAE,IAAI,aAAa,OAAO;GAChC,MAAM,YAAY,MAAM;IACtB,GAAG,MAAM,YAAY;IACrB;GACF;EACF;EACA,gBAAgB,OAAO,WAAkC;GAEvD,MAAM,GAAG,OAAO,UAAU,SAAS,GAAG,cAAc,MAAM;GAC1D,MAAM,cAAc;EACtB;EACA,wBAAwB,OAAO,WAA8C;GAC3E,MAAM,qBAAqB;IACzB,GAAG,MAAM;IACT,GAAG,OAAO;GACZ;EACF;EACA,qBAAqB,OAAO,YAAY;GAAE,GAAG;GAAO,GAAG,OAAO;EAAQ;EACtE,iBAAgB,UAAS;GACvB,MAAM,cAAc;EACtB;CACF;AACF,CAAC;AAED,MAAa,UAAU,SAAS;AAChC,IAAA,mBAAe,SAAS"}
@@ -4,7 +4,7 @@ let _northern_tech_utils_helpers = require("@northern.tech/utils/helpers");
4
4
  //#region src/appSlice/selectors.ts
5
5
  const getDocsVersion = (state) => state.app.docsVersion;
6
6
  const getFeatures = (state) => state.app.features;
7
- const getFullVersionInformation = (state) => state.app.versionInformation;
7
+ const getVersionInformation = (state) => state.app.versionInformation;
8
8
  const getSearchState = (state) => state.app.searchState;
9
9
  const getUploads = (state) => state.app.uploadsById;
10
10
  const getSnackbar = (state) => state.app.snackbar;
@@ -20,15 +20,13 @@ const getFeedbackProbability = (state) => state.app.feedbackProbability;
20
20
  const getAppInitDone = (state) => state.app.appInitDone;
21
21
  const getIsUploading = (0, _reduxjs_toolkit.createSelector)([getUploads], (uploadsById) => !!Object.keys(uploadsById).length);
22
22
  const getSearchedDevices = (0, _reduxjs_toolkit.createSelector)([getSearchState], ({ deviceIds }) => deviceIds);
23
- const getVersionInformation = (0, _reduxjs_toolkit.createSelector)([getFullVersionInformation, getFeatures], ({ version, ...remainder }, { isHosted }) => isHosted && version !== "next" ? remainder : { ...remainder });
24
- const getIsPreview = (0, _reduxjs_toolkit.createSelector)([getFullVersionInformation], ({ version }) => (0, _northern_tech_utils_helpers.versionCompare)(version, "next") > -1);
23
+ const getIsPreview = (0, _reduxjs_toolkit.createSelector)([getVersionInformation], ({ version }) => (0, _northern_tech_utils_helpers.versionCompare)(version, "next") > -1);
25
24
  //#endregion
26
25
  exports.getAppInitDone = getAppInitDone;
27
26
  exports.getCommit = getCommit;
28
27
  exports.getDocsVersion = getDocsVersion;
29
28
  exports.getFeatures = getFeatures;
30
29
  exports.getFeedbackProbability = getFeedbackProbability;
31
- exports.getFullVersionInformation = getFullVersionInformation;
32
30
  exports.getHostAddress = getHostAddress;
33
31
  exports.getHostedAnnouncement = getHostedAnnouncement;
34
32
  exports.getIsFirstLogin = getIsFirstLogin;
@@ -1 +1 @@
1
- {"version":3,"file":"selectors.cjs","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,kBAAA,GAAA,iBAAA,gBAAgC,CAAC,UAAU,IAAG,gBAAe,CAAC,CAAC,OAAO,KAAK,WAAW,EAAE,MAAM;AAC3G,MAAa,sBAAA,GAAA,iBAAA,gBAAoC,CAAC,cAAc,IAAI,EAAE,gBAAgB,SAAS;AAC/F,MAAa,yBAAA,GAAA,iBAAA,gBAAuC,CAAC,2BAA2B,WAAW,IAAI,EAAE,SAAS,GAAG,aAAa,EAAE,eAC1H,YAAY,YAAY,SAAS,YAAY,EAAE,GAAG,UAAU,CAC9D;AACA,MAAa,gBAAA,GAAA,iBAAA,gBAA8B,CAAC,yBAAyB,IAAI,EAAE,eAAA,GAAA,6BAAA,gBAA6B,SAAS,MAAM,IAAI,EAAE"}
1
+ {"version":3,"file":"selectors.cjs","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 getVersionInformation = (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);\n\nexport const getIsPreview = createSelector([getVersionInformation], ({ version }) => versionCompare(version, 'next') > -1);\n"],"mappings":";;;;AAkBA,MAAa,kBAAkB,UAAqB,MAAM,IAAI;AAC9D,MAAa,eAAe,UAAqB,MAAM,IAAI;AAC3D,MAAa,yBAAyB,UAAqB,MAAM,IAAI;AACrE,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,kBAAA,GAAA,iBAAA,eAAA,CAAgC,CAAC,UAAU,IAAG,gBAAe,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC,MAAM;AAC3G,MAAa,sBAAA,GAAA,iBAAA,eAAA,CAAoC,CAAC,cAAc,IAAI,EAAE,gBAAgB,SAAS;AAE/F,MAAa,gBAAA,GAAA,iBAAA,eAAA,CAA8B,CAAC,qBAAqB,IAAI,EAAE,eAAA,GAAA,6BAAA,eAAA,CAA6B,SAAS,MAAM,IAAI,EAAE"}
@@ -2,16 +2,16 @@ import { o as UserSliceType } from "../index-CSk4ENmk.cjs";
2
2
  import { i as ReleaseSliceType } from "../index-Zs9RnVoR.cjs";
3
3
  import { n as OnboardingSliceType } from "../index-DBUt8xVc.cjs";
4
4
  import { o as DeploymentsSliceType } from "../index-EPmsL6Lb.cjs";
5
- import { s as DeviceSliceType } from "../index-DbfM03Gj.cjs";
5
+ import { s as DeviceSliceType } from "../index-Doc_1P_Y.cjs";
6
6
  import { a as Upload, i as SnackbarContent, n as SearchState, r as SentryConfig, t as AppSliceType } from "../index-C8QadAm7.cjs";
7
7
  import { t as MonitorSliceType } from "../index-5Q-iI4EB.cjs";
8
8
  import { t as OrganizationSliceType } from "../index-Bj3OArhr.cjs";
9
- import { r as RootState } from "../store-Dd0Y2JCN.cjs";
9
+ import { r as RootState } from "../store-xV2zaXAc.cjs";
10
10
 
11
11
  //#region src/appSlice/selectors.d.ts
12
12
  declare const getDocsVersion: (state: RootState) => string;
13
13
  declare const getFeatures: (state: RootState) => Record<string, boolean>;
14
- declare const getFullVersionInformation: (state: RootState) => {
14
+ declare const getVersionInformation: (state: RootState) => {
15
15
  docsVersion?: string;
16
16
  version?: string;
17
17
  };
@@ -88,53 +88,6 @@ declare const getSearchedDevices: ((state: {
88
88
  memoize: typeof import("reselect").weakMapMemoize;
89
89
  argsMemoize: typeof import("reselect").weakMapMemoize;
90
90
  };
91
- declare const getVersionInformation: ((state: {
92
- app: AppSliceType;
93
- devices: DeviceSliceType;
94
- deployments: DeploymentsSliceType;
95
- monitor: MonitorSliceType;
96
- onboarding: OnboardingSliceType;
97
- organization: OrganizationSliceType;
98
- releases: ReleaseSliceType;
99
- users: UserSliceType;
100
- }) => {
101
- docsVersion?: string;
102
- }) & {
103
- clearCache: () => void;
104
- resultsCount: () => number;
105
- resetResultsCount: () => void;
106
- } & {
107
- resultFunc: (resultFuncArgs_0: {
108
- docsVersion?: string;
109
- version?: string;
110
- }, resultFuncArgs_1: Record<string, boolean>) => {
111
- docsVersion?: string;
112
- };
113
- memoizedResultFunc: ((resultFuncArgs_0: {
114
- docsVersion?: string;
115
- version?: string;
116
- }, resultFuncArgs_1: Record<string, boolean>) => {
117
- docsVersion?: string;
118
- }) & {
119
- clearCache: () => void;
120
- resultsCount: () => number;
121
- resetResultsCount: () => void;
122
- };
123
- lastResult: () => {
124
- docsVersion?: string;
125
- };
126
- dependencies: [(state: RootState) => {
127
- docsVersion?: string;
128
- version?: string;
129
- }, (state: RootState) => Record<string, boolean>];
130
- recomputations: () => number;
131
- resetRecomputations: () => void;
132
- dependencyRecomputations: () => number;
133
- resetDependencyRecomputations: () => void;
134
- } & {
135
- memoize: typeof import("reselect").weakMapMemoize;
136
- argsMemoize: typeof import("reselect").weakMapMemoize;
137
- };
138
91
  declare const getIsPreview: ((state: {
139
92
  app: AppSliceType;
140
93
  devices: DeviceSliceType;
@@ -175,5 +128,5 @@ declare const getIsPreview: ((state: {
175
128
  argsMemoize: typeof import("reselect").weakMapMemoize;
176
129
  };
177
130
  //#endregion
178
- export { getAppInitDone, getCommit, getDocsVersion, getFeatures, getFeedbackProbability, getFullVersionInformation, getHostAddress, getHostedAnnouncement, getIsFirstLogin, getIsPreview, getIsUploading, getRecaptchaKey, getSearchState, getSearchedDevices, getSentryConfig, getSnackbar, getStripeKey, getTrackerCode, getUploads, getVersionInformation };
131
+ export { getAppInitDone, getCommit, getDocsVersion, getFeatures, getFeedbackProbability, getHostAddress, getHostedAnnouncement, getIsFirstLogin, getIsPreview, getIsUploading, getRecaptchaKey, getSearchState, getSearchedDevices, getSentryConfig, getSnackbar, getStripeKey, getTrackerCode, getUploads, getVersionInformation };
179
132
  //# sourceMappingURL=selectors.d.cts.map
@@ -2,16 +2,16 @@ import { o as UserSliceType } from "../index-Cf81vLTi.js";
2
2
  import { i as ReleaseSliceType } from "../index-DLDY7bNT.js";
3
3
  import { n as OnboardingSliceType } from "../index-DBUt8xVc.js";
4
4
  import { o as DeploymentsSliceType } from "../index-Bb4yvvgG.js";
5
- import { s as DeviceSliceType } from "../index-CPdMUfRr.js";
5
+ import { s as DeviceSliceType } from "../index-BqJuhvO_.js";
6
6
  import { a as Upload, i as SnackbarContent, n as SearchState, r as SentryConfig, t as AppSliceType } from "../index-BLvjQfGj.js";
7
7
  import { t as MonitorSliceType } from "../index-ByfjrTdH.js";
8
8
  import { t as OrganizationSliceType } from "../index-BBsUj1a8.js";
9
- import { r as RootState } from "../store-Co2ptTSm.js";
9
+ import { r as RootState } from "../store-BzrMxxAO.js";
10
10
 
11
11
  //#region src/appSlice/selectors.d.ts
12
12
  declare const getDocsVersion: (state: RootState) => string;
13
13
  declare const getFeatures: (state: RootState) => Record<string, boolean>;
14
- declare const getFullVersionInformation: (state: RootState) => {
14
+ declare const getVersionInformation: (state: RootState) => {
15
15
  docsVersion?: string;
16
16
  version?: string;
17
17
  };
@@ -88,53 +88,6 @@ declare const getSearchedDevices: ((state: {
88
88
  memoize: typeof import("reselect").weakMapMemoize;
89
89
  argsMemoize: typeof import("reselect").weakMapMemoize;
90
90
  };
91
- declare const getVersionInformation: ((state: {
92
- app: AppSliceType;
93
- devices: DeviceSliceType;
94
- deployments: DeploymentsSliceType;
95
- monitor: MonitorSliceType;
96
- onboarding: OnboardingSliceType;
97
- organization: OrganizationSliceType;
98
- releases: ReleaseSliceType;
99
- users: UserSliceType;
100
- }) => {
101
- docsVersion?: string;
102
- }) & {
103
- clearCache: () => void;
104
- resultsCount: () => number;
105
- resetResultsCount: () => void;
106
- } & {
107
- resultFunc: (resultFuncArgs_0: {
108
- docsVersion?: string;
109
- version?: string;
110
- }, resultFuncArgs_1: Record<string, boolean>) => {
111
- docsVersion?: string;
112
- };
113
- memoizedResultFunc: ((resultFuncArgs_0: {
114
- docsVersion?: string;
115
- version?: string;
116
- }, resultFuncArgs_1: Record<string, boolean>) => {
117
- docsVersion?: string;
118
- }) & {
119
- clearCache: () => void;
120
- resultsCount: () => number;
121
- resetResultsCount: () => void;
122
- };
123
- lastResult: () => {
124
- docsVersion?: string;
125
- };
126
- dependencies: [(state: RootState) => {
127
- docsVersion?: string;
128
- version?: string;
129
- }, (state: RootState) => Record<string, boolean>];
130
- recomputations: () => number;
131
- resetRecomputations: () => void;
132
- dependencyRecomputations: () => number;
133
- resetDependencyRecomputations: () => void;
134
- } & {
135
- memoize: typeof import("reselect").weakMapMemoize;
136
- argsMemoize: typeof import("reselect").weakMapMemoize;
137
- };
138
91
  declare const getIsPreview: ((state: {
139
92
  app: AppSliceType;
140
93
  devices: DeviceSliceType;
@@ -175,5 +128,5 @@ declare const getIsPreview: ((state: {
175
128
  argsMemoize: typeof import("reselect").weakMapMemoize;
176
129
  };
177
130
  //#endregion
178
- export { getAppInitDone, getCommit, getDocsVersion, getFeatures, getFeedbackProbability, getFullVersionInformation, getHostAddress, getHostedAnnouncement, getIsFirstLogin, getIsPreview, getIsUploading, getRecaptchaKey, getSearchState, getSearchedDevices, getSentryConfig, getSnackbar, getStripeKey, getTrackerCode, getUploads, getVersionInformation };
131
+ export { getAppInitDone, getCommit, getDocsVersion, getFeatures, getFeedbackProbability, getHostAddress, getHostedAnnouncement, getIsFirstLogin, getIsPreview, getIsUploading, getRecaptchaKey, getSearchState, getSearchedDevices, getSentryConfig, getSnackbar, getStripeKey, getTrackerCode, getUploads, getVersionInformation };
179
132
  //# sourceMappingURL=selectors.d.ts.map
@@ -3,7 +3,7 @@ import { versionCompare } from "@northern.tech/utils/helpers";
3
3
  //#region src/appSlice/selectors.ts
4
4
  const getDocsVersion = (state) => state.app.docsVersion;
5
5
  const getFeatures = (state) => state.app.features;
6
- const getFullVersionInformation = (state) => state.app.versionInformation;
6
+ const getVersionInformation = (state) => state.app.versionInformation;
7
7
  const getSearchState = (state) => state.app.searchState;
8
8
  const getUploads = (state) => state.app.uploadsById;
9
9
  const getSnackbar = (state) => state.app.snackbar;
@@ -19,9 +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], ({ version, ...remainder }, { isHosted }) => isHosted && version !== "next" ? remainder : { ...remainder });
23
- const getIsPreview = createSelector([getFullVersionInformation], ({ version }) => versionCompare(version, "next") > -1);
22
+ const getIsPreview = createSelector([getVersionInformation], ({ version }) => versionCompare(version, "next") > -1);
24
23
  //#endregion
25
- export { getAppInitDone, getCommit, getDocsVersion, getFeatures, getFeedbackProbability, getFullVersionInformation, getHostAddress, getHostedAnnouncement, getIsFirstLogin, getIsPreview, getIsUploading, getRecaptchaKey, getSearchState, getSearchedDevices, getSentryConfig, getSnackbar, getStripeKey, getTrackerCode, getUploads, getVersionInformation };
24
+ export { getAppInitDone, getCommit, getDocsVersion, getFeatures, getFeedbackProbability, getHostAddress, getHostedAnnouncement, getIsFirstLogin, getIsPreview, getIsUploading, getRecaptchaKey, getSearchState, getSearchedDevices, getSentryConfig, getSnackbar, getStripeKey, getTrackerCode, getUploads, getVersionInformation };
26
25
 
27
26
  //# sourceMappingURL=selectors.js.map
@@ -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], ({ 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"}
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 getVersionInformation = (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);\n\nexport const getIsPreview = createSelector([getVersionInformation], ({ version }) => versionCompare(version, 'next') > -1);\n"],"mappings":";;;AAkBA,MAAa,kBAAkB,UAAqB,MAAM,IAAI;AAC9D,MAAa,eAAe,UAAqB,MAAM,IAAI;AAC3D,MAAa,yBAAyB,UAAqB,MAAM,IAAI;AACrE,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,CAAC,CAAC,MAAM;AAC3G,MAAa,qBAAqB,eAAe,CAAC,cAAc,IAAI,EAAE,gBAAgB,SAAS;AAE/F,MAAa,eAAe,eAAe,CAAC,qBAAqB,IAAI,EAAE,cAAc,eAAe,SAAS,MAAM,IAAI,EAAE"}
@@ -1,5 +1,5 @@
1
1
  import { n as SearchState } from "../index-C8QadAm7.cjs";
2
- import { r as RootState, t as AppDispatch } from "../store-Dd0Y2JCN.cjs";
2
+ import { r as RootState, t as AppDispatch } from "../store-xV2zaXAc.cjs";
3
3
 
4
4
  //#region src/appSlice/thunks.d.ts
5
5
  declare const setFirstLoginAfterSignup: import("@reduxjs/toolkit").AsyncThunk<void, boolean, {
@@ -1,5 +1,5 @@
1
1
  import { n as SearchState } from "../index-BLvjQfGj.js";
2
- import { r as RootState, t as AppDispatch } from "../store-Co2ptTSm.js";
2
+ import { r as RootState, t as AppDispatch } from "../store-BzrMxxAO.js";
3
3
 
4
4
  //#region src/appSlice/thunks.d.ts
5
5
  declare const setFirstLoginAfterSignup: import("@reduxjs/toolkit").AsyncThunk<void, boolean, {
package/dist/auth.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_chunk = require("./chunk-D6vf50IK.cjs");
2
+ const require_rolldown_runtime = require("./rolldown-runtime-D6vf50IK.cjs");
3
3
  const require_constants = require("./constants.cjs");
4
4
  let universal_cookie = require("universal-cookie");
5
- universal_cookie = require_chunk.__toESM(universal_cookie, 1);
5
+ universal_cookie = require_rolldown_runtime.__toESM(universal_cookie, 1);
6
6
  let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
7
7
  //#region src/auth.ts
8
8
  const cookies = new universal_cookie.default();
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,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"}
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,CAAC,CAAC;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.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,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
+ {"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,CAAC,CAAC;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,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_chunk = require("./chunk-D6vf50IK.cjs");
2
+ const require_rolldown_runtime = require("./rolldown-runtime-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");
@@ -15,7 +15,7 @@ const require_usersSlice_selectors = require("./usersSlice/selectors.cjs");
15
15
  let _reduxjs_toolkit = require("@reduxjs/toolkit");
16
16
  let _northern_tech_utils_helpers = require("@northern.tech/utils/helpers");
17
17
  let dayjs = require("dayjs");
18
- dayjs = require_chunk.__toESM(dayjs, 1);
18
+ dayjs = require_rolldown_runtime.__toESM(dayjs, 1);
19
19
  let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
20
20
  //#region src/commonSelectors.ts
21
21
  const getIsEnterprise = (0, _reduxjs_toolkit.createSelector)([require_organizationSlice_selectors.getOrganization, require_appSlice_selectors.getFeatures], ({ plan = require_appSlice_constants.PLANS.os.id }, { isEnterprise, isHosted }) => isEnterprise || isHosted && plan === require_appSlice_constants.PLANS.enterprise.id);