@northern.tech/store 0.41.3 → 0.43.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.
- package/dist/actions.d.cts +10 -11
- package/dist/actions.d.ts +10 -11
- package/dist/api/general-api.cjs +1 -1
- package/dist/api/general-api.cjs.map +1 -1
- package/dist/api/general-api.d.cts +0 -1
- package/dist/api/general-api.d.ts +0 -1
- package/dist/api/general-api.js +1 -1
- package/dist/api/users-api.cjs +1 -1
- package/dist/api/users-api.d.cts +1 -6
- package/dist/api/users-api.d.ts +1 -6
- package/dist/appSlice/constants.cjs +0 -5
- package/dist/appSlice/constants.cjs.map +1 -1
- package/dist/appSlice/constants.d.cts +1 -1
- package/dist/appSlice/constants.d.ts +1 -1
- package/dist/appSlice/constants.js +0 -5
- package/dist/appSlice/constants.js.map +1 -1
- package/dist/appSlice/index.cjs.map +1 -1
- package/dist/appSlice/index.d.cts +1 -1
- package/dist/appSlice/index.d.ts +1 -1
- package/dist/appSlice/index.js +1 -1
- package/dist/appSlice/mocks.d.cts +1 -2
- package/dist/appSlice/mocks.d.ts +1 -2
- package/dist/appSlice/selectors.cjs.map +1 -1
- package/dist/appSlice/selectors.d.cts +9 -10
- package/dist/appSlice/selectors.d.ts +9 -10
- package/dist/appSlice/thunks.d.cts +2 -3
- package/dist/appSlice/thunks.d.ts +2 -3
- package/dist/auth.cjs +1 -1
- package/dist/auth.d.cts +3 -10
- package/dist/auth.d.ts +3 -10
- package/dist/auth.js +1 -1
- package/dist/commonConstants.d.cts +1 -1
- package/dist/commonConstants.d.ts +1 -1
- package/dist/commonConstants.js +1 -1
- package/dist/commonSelectors.cjs +4 -3
- package/dist/commonSelectors.cjs.map +1 -1
- package/dist/commonSelectors.d.cts +20 -21
- package/dist/commonSelectors.d.ts +20 -21
- package/dist/commonSelectors.js +4 -3
- package/dist/commonSelectors.js.map +1 -1
- package/dist/{constants-Sn4gnNA3.d.ts → constants-B3Jdkn2b.d.cts} +2 -5
- package/dist/{constants-Sn4gnNA3.d.cts → constants-B3Jdkn2b.d.ts} +2 -5
- package/dist/{constants-CzjK2gV-.d.ts → constants-B_H4squx.d.ts} +4 -4
- package/dist/{constants-D9o0Cnk_.d.ts → constants-C6TIYaY4.d.cts} +1 -2
- package/dist/{constants-D9o0Cnk_.d.cts → constants-C6TIYaY4.d.ts} +1 -2
- package/dist/{constants-6kYRTdox.d.ts → constants-CEwun8TL.d.cts} +3 -2
- package/dist/{constants-6kYRTdox.d.cts → constants-CEwun8TL.d.ts} +3 -2
- package/dist/constants-C_SC_VKE.cjs.map +1 -1
- package/dist/{constants-xpheFFkA.js → constants-CerzXHnQ.js} +3 -3
- package/dist/{constants-xpheFFkA.js.map → constants-CerzXHnQ.js.map} +1 -1
- package/dist/{constants-DAi2zOZN.d.cts → constants-Rl3FJzFf.d.cts} +4 -4
- package/dist/{constants-B_7FCJQX.d.ts → constants-nKSWZ8oD.d.cts} +3 -8
- package/dist/{constants-B_7FCJQX.d.cts → constants-nKSWZ8oD.d.ts} +3 -8
- package/dist/constants.cjs +2 -0
- package/dist/constants.d.cts +6 -6
- package/dist/constants.d.ts +6 -6
- package/dist/constants.js +3 -3
- package/dist/deploymentsSlice/constants.d.cts +1 -1
- package/dist/deploymentsSlice/constants.d.ts +1 -1
- package/dist/deploymentsSlice/constants.js +1 -1
- package/dist/deploymentsSlice/index.cjs.map +1 -1
- package/dist/deploymentsSlice/index.d.cts +1 -1
- package/dist/deploymentsSlice/index.d.ts +1 -1
- package/dist/deploymentsSlice/index.js +1 -1
- package/dist/deploymentsSlice/mocks.d.cts +1 -2
- package/dist/deploymentsSlice/mocks.d.ts +1 -2
- package/dist/deploymentsSlice/selectors.cjs.map +1 -1
- package/dist/deploymentsSlice/selectors.d.cts +9 -10
- package/dist/deploymentsSlice/selectors.d.ts +9 -10
- package/dist/deploymentsSlice/selectors.js +1 -1
- package/dist/deploymentsSlice/thunks.d.cts +7 -13
- package/dist/deploymentsSlice/thunks.d.ts +7 -13
- package/dist/devicesSlice/constants.d.cts +1 -1
- package/dist/devicesSlice/constants.d.ts +1 -1
- package/dist/devicesSlice/constants.js +1 -1
- package/dist/devicesSlice/index.cjs +5 -2
- package/dist/devicesSlice/index.cjs.map +1 -1
- package/dist/devicesSlice/index.d.cts +2 -2
- package/dist/devicesSlice/index.d.ts +2 -2
- package/dist/devicesSlice/index.js +6 -3
- package/dist/devicesSlice/index.js.map +1 -1
- package/dist/devicesSlice/mocks.d.cts +1 -0
- package/dist/devicesSlice/mocks.d.ts +1 -0
- package/dist/devicesSlice/mocks.js +1 -1
- package/dist/devicesSlice/selectors.cjs +2 -0
- package/dist/devicesSlice/selectors.cjs.map +1 -1
- package/dist/devicesSlice/selectors.d.cts +41 -41
- package/dist/devicesSlice/selectors.d.ts +41 -41
- package/dist/devicesSlice/selectors.js +3 -2
- package/dist/devicesSlice/selectors.js.map +1 -1
- package/dist/devicesSlice/thunks.cjs +1 -2
- package/dist/devicesSlice/thunks.d.cts +13 -25
- package/dist/devicesSlice/thunks.d.ts +13 -25
- package/dist/devicesSlice/thunks.js +2 -2
- package/dist/{index-Bb4yvvgG.d.ts → index-B8td4-rY.d.ts} +1 -2
- package/dist/{index-C5oQrJGU.d.ts → index-BAGyeC-q.d.ts} +2 -3
- package/dist/{index-CgPgKMve.d.cts → index-BgF6rhXn.d.cts} +3 -4
- package/dist/{index-BtGhTFBc.d.ts → index-BpamudGf.d.ts} +15 -17
- package/dist/{index-CnH51JfB.d.ts → index-Bs0c1-WY.d.ts} +4 -9
- package/dist/{index-m1c0qk2s.d.ts → index-C8uiyxnb.d.ts} +2 -3
- package/dist/{index-CSOj22xK.d.cts → index-C_LGDJN2.d.cts} +2 -3
- package/dist/{index-H9zg_3UV.d.ts → index-ChKTa1aL.d.ts} +2 -3
- package/dist/{index-DBUt8xVc.d.ts → index-CoObjWL4.d.cts} +1 -2
- package/dist/{index-DBUt8xVc.d.cts → index-CoObjWL4.d.ts} +1 -2
- package/dist/{index-BCErsO5h.d.ts → index-CpfhQHfg.d.ts} +3 -4
- package/dist/{index-BQCnJ5gh.d.cts → index-Ctj2r57a.d.cts} +2 -3
- package/dist/{index-Dn1SqQYh.d.cts → index-DeOpb2oK.d.cts} +4 -9
- package/dist/{index-VEayiYkv.d.cts → index-DiAjzARZ.d.cts} +2 -3
- package/dist/{index-vXsWdis1.d.cts → index-DnKVKM0G.d.cts} +15 -17
- package/dist/{index-EPmsL6Lb.d.cts → index-mvxjivTJ.d.cts} +1 -2
- package/dist/liststatehook.cjs.map +1 -1
- package/dist/liststatehook.d.cts +0 -1
- package/dist/liststatehook.d.ts +0 -1
- package/dist/locationutils.cjs.map +1 -1
- package/dist/locationutils.d.cts +14 -67
- package/dist/locationutils.d.ts +14 -67
- package/dist/locationutils.js +1 -1
- package/dist/monitorSlice/constants.d.cts +1 -1
- package/dist/monitorSlice/constants.d.ts +1 -1
- package/dist/monitorSlice/index.cjs.map +1 -1
- package/dist/monitorSlice/index.d.cts +1 -1
- package/dist/monitorSlice/index.d.ts +1 -1
- package/dist/monitorSlice/index.js +1 -1
- package/dist/monitorSlice/mocks.d.cts +1 -2
- package/dist/monitorSlice/mocks.d.ts +1 -2
- package/dist/monitorSlice/mocks.js +1 -1
- package/dist/monitorSlice/selectors.d.cts +1 -2
- package/dist/monitorSlice/selectors.d.ts +1 -2
- package/dist/monitorSlice/thunks.d.cts +4 -5
- package/dist/monitorSlice/thunks.d.ts +4 -5
- package/dist/monitorSlice/thunks.js +1 -1
- package/dist/onboardingSlice/index.cjs.map +1 -1
- package/dist/onboardingSlice/index.d.cts +1 -1
- package/dist/onboardingSlice/index.d.ts +1 -1
- package/dist/onboardingSlice/mocks.d.cts +1 -2
- package/dist/onboardingSlice/mocks.d.ts +1 -2
- package/dist/onboardingSlice/selectors.d.cts +2 -3
- package/dist/onboardingSlice/selectors.d.ts +2 -3
- package/dist/onboardingSlice/thunks.d.cts +4 -4
- package/dist/onboardingSlice/thunks.d.ts +4 -4
- package/dist/organizationSlice/constants.js +1 -1
- package/dist/organizationSlice/index.cjs.map +1 -1
- package/dist/organizationSlice/index.d.cts +1 -1
- package/dist/organizationSlice/index.d.ts +1 -1
- package/dist/organizationSlice/index.js +1 -1
- package/dist/organizationSlice/mocks.d.cts +3 -3
- package/dist/organizationSlice/mocks.d.ts +3 -3
- package/dist/organizationSlice/mocks.js +1 -1
- package/dist/organizationSlice/selectors.cjs.map +1 -1
- package/dist/organizationSlice/selectors.d.cts +11 -16
- package/dist/organizationSlice/selectors.d.ts +11 -16
- package/dist/organizationSlice/selectors.js +1 -1
- package/dist/organizationSlice/thunks.d.cts +6 -7
- package/dist/organizationSlice/thunks.d.ts +6 -7
- package/dist/organizationSlice/types.d.cts +1 -1
- package/dist/organizationSlice/types.d.ts +1 -1
- package/dist/releasesSlice/constants.cjs +2 -0
- package/dist/releasesSlice/constants.cjs.map +1 -1
- package/dist/releasesSlice/constants.d.cts +2 -2
- package/dist/releasesSlice/constants.d.ts +2 -2
- package/dist/releasesSlice/constants.js +2 -1
- package/dist/releasesSlice/constants.js.map +1 -1
- package/dist/releasesSlice/index.cjs.map +1 -1
- package/dist/releasesSlice/index.d.cts +1 -1
- package/dist/releasesSlice/index.d.ts +1 -1
- package/dist/releasesSlice/index.js +1 -1
- package/dist/releasesSlice/mocks.js +1 -1
- package/dist/releasesSlice/selectors.cjs.map +1 -1
- package/dist/releasesSlice/selectors.d.cts +9 -10
- package/dist/releasesSlice/selectors.d.ts +9 -10
- package/dist/releasesSlice/thunks.cjs +1 -1
- package/dist/releasesSlice/thunks.cjs.map +1 -1
- package/dist/releasesSlice/thunks.d.cts +4 -5
- package/dist/releasesSlice/thunks.d.ts +4 -5
- package/dist/releasesSlice/thunks.js +1 -1
- package/dist/{rolldown-runtime-D6vf50IK.cjs → rolldown-runtime-VH7oDXx4.cjs} +1 -1
- package/dist/selectors.cjs +1 -0
- package/dist/selectors.d.cts +2 -2
- package/dist/selectors.d.ts +2 -2
- package/dist/selectors.js +2 -2
- package/dist/sockethook.cjs +1 -2
- package/dist/sockethook.cjs.map +1 -1
- package/dist/sockethook.d.cts +1 -8
- package/dist/sockethook.d.ts +1 -8
- package/dist/sockethook.js +1 -2
- package/dist/sockethook.js.map +1 -1
- package/dist/{store-CkgokFlk.d.ts → store-B2_hrsgP.d.ts} +27 -48
- package/dist/{store-CGP5pCH8.d.cts → store-DquBGT7j.d.cts} +27 -48
- package/dist/store.cjs.map +1 -1
- package/dist/store.d.cts +1 -1
- package/dist/store.d.ts +1 -1
- package/dist/store.js +1 -1
- package/dist/storehooks.cjs +31 -20
- package/dist/storehooks.cjs.map +1 -1
- package/dist/storehooks.d.cts +13 -4
- package/dist/storehooks.d.ts +13 -4
- package/dist/storehooks.js +32 -22
- package/dist/storehooks.js.map +1 -1
- package/dist/thunks.cjs +16 -107
- package/dist/thunks.cjs.map +1 -1
- package/dist/thunks.d.cts +2 -2
- package/dist/thunks.d.ts +2 -2
- package/dist/thunks.js +16 -106
- package/dist/thunks.js.map +1 -1
- package/dist/{types-uHmaedGU.d.ts → types-B3qGQoMx.d.ts} +3 -4
- package/dist/{types-yQ0ypHMZ.d.cts → types-B80ckxiy.d.cts} +3 -4
- package/dist/useDeploymentDevice.cjs +1 -1
- package/dist/useDeploymentDevice.cjs.map +1 -1
- package/dist/usersSlice/constants.d.cts +1 -1
- package/dist/usersSlice/constants.d.ts +1 -1
- package/dist/usersSlice/constants.js +1 -1
- package/dist/usersSlice/index.cjs.map +1 -1
- package/dist/usersSlice/index.d.cts +1 -1
- package/dist/usersSlice/index.d.ts +1 -1
- package/dist/usersSlice/index.js +1 -1
- package/dist/usersSlice/mocks.d.cts +2 -3
- package/dist/usersSlice/mocks.d.ts +2 -3
- package/dist/usersSlice/mocks.js +1 -1
- package/dist/usersSlice/selectors.cjs.map +1 -1
- package/dist/usersSlice/selectors.d.cts +10 -11
- package/dist/usersSlice/selectors.d.ts +10 -11
- package/dist/usersSlice/selectors.js +1 -1
- package/dist/usersSlice/thunks.d.cts +5 -6
- package/dist/usersSlice/thunks.d.ts +5 -6
- package/dist/utils.cjs +2 -2
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +3 -3
- package/dist/utils.js.map +1 -1
- package/package.json +9 -9
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { o as UserSliceType } from "../index-
|
|
2
|
-
import { a as ReleasesList, i as ReleaseSliceType, n as ManifestsList, r as Release, s as SoftwareList } from "../index-
|
|
3
|
-
import { n as OnboardingSliceType } from "../index-
|
|
4
|
-
import { o as DeploymentsSliceType } from "../index-
|
|
5
|
-
import {
|
|
6
|
-
import { t as AppSliceType } from "../index-
|
|
7
|
-
import { t as MonitorSliceType } from "../index-
|
|
8
|
-
import { t as OrganizationSliceType } from "../index-
|
|
9
|
-
import { r as RootState } from "../store-
|
|
1
|
+
import { o as UserSliceType } from "../index-BgF6rhXn.cjs";
|
|
2
|
+
import { a as ReleasesList, i as ReleaseSliceType, n as ManifestsList, r as Release, s as SoftwareList } from "../index-DiAjzARZ.cjs";
|
|
3
|
+
import { n as OnboardingSliceType } from "../index-CoObjWL4.cjs";
|
|
4
|
+
import { o as DeploymentsSliceType } from "../index-mvxjivTJ.cjs";
|
|
5
|
+
import { c as DeviceSliceType } from "../index-DnKVKM0G.cjs";
|
|
6
|
+
import { t as AppSliceType } from "../index-DeOpb2oK.cjs";
|
|
7
|
+
import { t as MonitorSliceType } from "../index-Ctj2r57a.cjs";
|
|
8
|
+
import { t as OrganizationSliceType } from "../index-C_LGDJN2.cjs";
|
|
9
|
+
import { r as RootState } from "../store-DquBGT7j.cjs";
|
|
10
10
|
import { Manifest, ReleaseV2, Software } from "@northern.tech/types/MenderTypes";
|
|
11
|
-
|
|
12
11
|
//#region src/releasesSlice/selectors.d.ts
|
|
13
12
|
declare const getActiveTab: (state: RootState) => "releases" | "delta" | "manifests" | undefined;
|
|
14
13
|
declare const getReleasesById: (state: RootState) => Record<string, Release>;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { o as UserSliceType } from "../index-
|
|
2
|
-
import { a as ReleasesList, i as ReleaseSliceType, n as ManifestsList, r as Release, s as SoftwareList } from "../index-
|
|
3
|
-
import { n as OnboardingSliceType } from "../index-
|
|
4
|
-
import { o as DeploymentsSliceType } from "../index-
|
|
5
|
-
import {
|
|
6
|
-
import { t as AppSliceType } from "../index-
|
|
7
|
-
import { t as MonitorSliceType } from "../index-
|
|
8
|
-
import { t as OrganizationSliceType } from "../index-
|
|
9
|
-
import { r as RootState } from "../store-
|
|
1
|
+
import { o as UserSliceType } from "../index-CpfhQHfg.js";
|
|
2
|
+
import { a as ReleasesList, i as ReleaseSliceType, n as ManifestsList, r as Release, s as SoftwareList } from "../index-C8uiyxnb.js";
|
|
3
|
+
import { n as OnboardingSliceType } from "../index-CoObjWL4.js";
|
|
4
|
+
import { o as DeploymentsSliceType } from "../index-B8td4-rY.js";
|
|
5
|
+
import { c as DeviceSliceType } from "../index-BpamudGf.js";
|
|
6
|
+
import { t as AppSliceType } from "../index-Bs0c1-WY.js";
|
|
7
|
+
import { t as MonitorSliceType } from "../index-BAGyeC-q.js";
|
|
8
|
+
import { t as OrganizationSliceType } from "../index-ChKTa1aL.js";
|
|
9
|
+
import { r as RootState } from "../store-B2_hrsgP.js";
|
|
10
10
|
import { Manifest, ReleaseV2, Software } from "@northern.tech/types/MenderTypes";
|
|
11
|
-
|
|
12
11
|
//#region src/releasesSlice/selectors.d.ts
|
|
13
12
|
declare const getActiveTab: (state: RootState) => "releases" | "delta" | "manifests" | undefined;
|
|
14
13
|
declare const getReleasesById: (state: RootState) => Record<string, Release>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_rolldown_runtime = require("../rolldown-runtime-
|
|
2
|
+
const require_rolldown_runtime = require("../rolldown-runtime-VH7oDXx4.cjs");
|
|
3
3
|
const require_constants = require("../constants-C_SC_VKE.cjs");
|
|
4
4
|
const require_releasesSlice_constants = require("./constants.cjs");
|
|
5
5
|
const require_releasesSlice_index = require("./index.cjs");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thunks.cjs","names":["storeActions","DEVICE_LIST_DEFAULTS","SORTING_OPTIONS","duplicateFilter","createAppAsyncThunk","sliceName","getReleasesById","convertDeviceListStateToFilters","emptyFilter","GeneralApi","inventoryApiUrlV2","commonErrorHandler","commonErrorFallback","headerNames","actions","deploymentsApiUrl","TIMEOUTS","ARTIFACT_GENERATION_TYPE","progress","formatReleases","deploymentsApiUrlV2","deploymentsApiUrlV1alpha1","getManifestsById","getManifestsListState","getSoftwareListState"],"sources":["../../src/releasesSlice/thunks.ts"],"sourcesContent":["// Copyright 2019 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 {\n ArtifactLink,\n ArtifactUpdateV1,\n DeltaJobDetailsItem,\n DeltaJobsListItem,\n DeviceInventoryResponse,\n Manifest,\n ManifestUpdate,\n ReleaseUpdate,\n ReleaseV1,\n ReleaseV2,\n Software,\n Tags,\n UpdateTypes\n} from '@northern.tech/types/MenderTypes';\nimport { customSort, deepCompare, duplicateFilter, extractErrorMessage, extractSoftwareItem } from '@northern.tech/utils/helpers';\nimport type { AxiosResponse } from 'axios';\nimport { isCancel } from 'axios';\nimport pluralize from 'pluralize';\nimport { v4 as uuid } from 'uuid';\n\nimport type { Artifact, ManifestsList, Release, ReleaseSliceType, ReleasesList, SoftwareKind, SoftwareList } from '.';\nimport { actions, sliceName } from '.';\nimport storeActions from '../actions';\nimport GeneralApi from '../api/general-api';\nimport {\n DEVICE_LIST_DEFAULTS,\n SORTING_OPTIONS,\n TIMEOUTS,\n deploymentsApiUrl,\n deploymentsApiUrlV1alpha1,\n deploymentsApiUrlV2,\n emptyFilter,\n headerNames,\n inventoryApiUrlV2\n} from '../constants';\nimport type { SortOptions } from '../constants';\nimport { formatReleases } from '../locationutils';\nimport type { AppDispatch } from '../store';\nimport { commonErrorFallback, commonErrorHandler, createAppAsyncThunk } from '../store';\nimport { convertDeviceListStateToFilters, dispatchDelayed, progress } from '../utils';\nimport { ARTIFACT_GENERATION_TYPE } from './constants';\nimport { getManifestsById, getManifestsListState, getReleasesById, getSoftwareListState } from './selectors';\n\nconst { setSnackbar, initUpload, uploadProgress, cleanUpUpload } = storeActions;\nconst { page: defaultPage, perPage: defaultPerPage } = DEVICE_LIST_DEFAULTS;\n\nconst sortingDefaults = { direction: SORTING_OPTIONS.desc, key: 'modified' };\n\ntype ReceivedRelease = ReleaseV1 & ReleaseV2;\nconst flattenRelease = (release: ReceivedRelease, stateRelease: Release): Release => {\n const updatedArtifacts = release.artifacts?.sort(customSort(true, 'modified')) || [];\n const { artifacts, deviceTypes, modified } = updatedArtifacts.reduce<{ artifacts: Artifact[]; deviceTypes: string[]; modified: undefined | string }>(\n (accu, item) => {\n accu.deviceTypes.push(...item.device_types_compatible);\n const stateArtifact = stateRelease.artifacts?.find(releaseArtifact => releaseArtifact.id === item.id) || {};\n accu.modified = accu.modified ? accu.modified : item.modified;\n accu.artifacts.push({\n ...stateArtifact,\n ...item\n });\n return accu;\n },\n { artifacts: [], deviceTypes: [], modified: undefined }\n );\n return { ...stateRelease, ...release, artifacts, device_types_compatible: deviceTypes.filter(duplicateFilter), modified };\n};\n\nconst reduceReceivedReleases = (releases: ReceivedRelease[], stateReleasesById: Record<string, Release>) =>\n releases.reduce<Record<string, Release>>((accu, release) => {\n const name = (release.name ?? release.Name)!;\n const stateRelease = stateReleasesById[name] || {};\n accu[name] = flattenRelease(release, stateRelease);\n return accu;\n }, {});\n\nconst findArtifactIndexInRelease = (releases: Record<string, Release>, id: string) =>\n Object.values(releases).reduce<{ index: number; release: Release | null }>(\n (accu, item) => {\n const index = item.artifacts?.findIndex(releaseArtifact => releaseArtifact.id === id) ?? -1;\n if (index > -1) {\n accu = { release: item, index };\n }\n return accu;\n },\n { release: null, index: -1 }\n );\n\n/* Artifacts */\nexport const getArtifactInstallCount = createAppAsyncThunk(`${sliceName}/getArtifactInstallCount`, (id: string, { dispatch, getState }) => {\n const { release, index } = findArtifactIndexInRelease(getReleasesById(getState()), id);\n if (!release || index === -1) {\n return;\n }\n const releaseArtifacts = [...release.artifacts];\n const artifact = releaseArtifacts[index];\n const { key, name, version } = extractSoftwareItem(artifact.artifact_provides) ?? {};\n const attribute = `${key}${name ? `.${name}` : ''}.version`;\n const { filterTerms } = convertDeviceListStateToFilters({\n filters: [{ ...emptyFilter, key: attribute, value: version!, scope: 'inventory' }]\n });\n return GeneralApi.post<DeviceInventoryResponse[]>(`${inventoryApiUrlV2}/filters/search`, {\n page: 1,\n per_page: 1,\n filters: filterTerms,\n attributes: [{ scope: 'identity', attribute: 'status' }]\n })\n .catch(err => commonErrorHandler(err, `Retrieving artifact installation count failed:`, dispatch, commonErrorFallback))\n .then(({ headers }) => {\n const foundRelease = findArtifactIndexInRelease(getReleasesById(getState()), id);\n const index = foundRelease.index;\n let release = foundRelease.release;\n if (!release || index === -1) {\n return;\n }\n const installCount = Number(headers[headerNames.total]);\n const releaseArtifacts = [...release.artifacts];\n releaseArtifacts[index] = { ...releaseArtifacts[index], installCount };\n release = {\n ...release,\n artifacts: releaseArtifacts\n };\n return dispatch(actions.receiveRelease(release));\n });\n});\n\nexport const getArtifactUrl = createAppAsyncThunk(`${sliceName}/getArtifactUrl`, async (id: string, { dispatch, getState }) => {\n const response = await GeneralApi.get<ArtifactLink>(`${deploymentsApiUrl}/artifacts/${id}/download`);\n const foundRelease = findArtifactIndexInRelease(getReleasesById(getState()), id);\n const index = foundRelease.index;\n let release = foundRelease.release;\n if (!release || index === -1) {\n return dispatch(getReleases());\n }\n const releaseArtifacts = [...release.artifacts];\n releaseArtifacts[index] = {\n ...releaseArtifacts[index],\n url: response.data.uri\n };\n release = {\n ...release,\n artifacts: releaseArtifacts\n };\n await dispatch(actions.receiveRelease(release));\n return response.data.uri;\n});\n\nconst pollLocation = async (location, attempt = 1, maxAttempts = 5, delay = TIMEOUTS.oneSecond) => {\n try {\n await GeneralApi.get(location);\n return Promise.resolve();\n } catch {\n if (attempt >= maxAttempts) {\n throw new Error(`Couldn't get ${location} after ${maxAttempts} attempts`);\n }\n await new Promise(resolve => setTimeout(resolve, delay));\n return pollLocation(location, attempt + 1, maxAttempts, delay);\n }\n};\n\ntype ArtifactPayload = {\n file: File;\n meta: {\n args?: {\n dest_dir: string;\n filename: string;\n software_filesystem: string;\n software_name: string;\n software_version: string;\n };\n description: string;\n device_types_compatible?: string[];\n name?: string;\n };\n};\nexport const createArtifact = createAppAsyncThunk(`${sliceName}/createArtifact`, ({ file, meta }: ArtifactPayload, { dispatch }) => {\n const formData = Object.entries(meta).reduce((accu, [key, value]) => {\n if (Array.isArray(value)) {\n accu.append(key, value.join(','));\n } else if (value instanceof Object) {\n accu.append(key, JSON.stringify(value));\n } else {\n accu.append(key, value);\n }\n return accu;\n }, new FormData());\n formData.append('type', ARTIFACT_GENERATION_TYPE.SINGLE_FILE);\n formData.append('file', file);\n const uploadId = uuid();\n const cancelSource = new AbortController();\n return Promise.all([\n dispatch(setSnackbar('Generating artifact')),\n dispatch(initUpload({ id: uploadId, upload: { name: file.name, size: file.size, progress: 0, cancelSource } })),\n GeneralApi.upload(\n `${deploymentsApiUrl}/artifacts/generate`,\n formData,\n e => dispatch(uploadProgress({ id: uploadId, progress: progress(e) })),\n cancelSource.signal\n )\n ])\n .then(tasks => {\n const generateResponse = tasks[tasks.length - 1] as AxiosResponse;\n const generateLocation = generateResponse.headers[headerNames.location] as string;\n const location = generateLocation.replace('/generate', '');\n return pollLocation(location);\n })\n .then(() =>\n Promise.all([\n dispatch(getReleases()),\n dispatch(selectRelease(meta.name!)),\n dispatch(setSnackbar({ message: 'Upload successful', autoHideDuration: TIMEOUTS.fiveSeconds }))\n ])\n )\n .catch(err => {\n if (isCancel(err)) {\n return dispatch(setSnackbar({ message: 'The artifact generation has been cancelled', autoHideDuration: TIMEOUTS.fiveSeconds }));\n }\n return commonErrorHandler(err, `Artifact couldn't be generated.`, dispatch);\n })\n .finally(() => dispatch(cleanUpUpload(uploadId)));\n});\n\nexport const uploadArtifact = createAppAsyncThunk(`${sliceName}/uploadArtifact`, ({ file, meta }: ArtifactPayload, { dispatch }) => {\n const formData = new FormData();\n formData.append('size', file.size.toString());\n formData.append('description', meta.description);\n formData.append('artifact', file);\n const uploadId = uuid();\n const cancelSource = new AbortController();\n return Promise.all([\n dispatch(setSnackbar('Uploading artifact')),\n dispatch(initUpload({ id: uploadId, upload: { name: file.name, size: file.size, progress: 0, cancelSource } })),\n GeneralApi.upload(`${deploymentsApiUrl}/artifacts`, formData, e => dispatch(uploadProgress({ id: uploadId, progress: progress(e) })), cancelSource.signal)\n ])\n .then(() => {\n const tasks: Promise<ReturnType<AppDispatch> | unknown>[] = [\n Promise.resolve(dispatch(setSnackbar({ message: 'Upload successful', autoHideDuration: TIMEOUTS.fiveSeconds }))),\n dispatch(getReleases())\n ];\n if (meta.name) {\n tasks.push(dispatch(selectRelease(meta.name)));\n }\n return Promise.all(tasks);\n })\n .catch(err => {\n if (isCancel(err)) {\n return dispatch(setSnackbar({ message: 'The upload has been cancelled', autoHideDuration: TIMEOUTS.fiveSeconds }));\n }\n return commonErrorHandler(err, `Artifact couldn't be uploaded.`, dispatch);\n })\n .finally(() => dispatch(cleanUpUpload(uploadId)));\n});\n\nexport const cancelFileUpload = createAppAsyncThunk(`${sliceName}/cancelFileUpload`, (id: string, { dispatch, getState }) => {\n const { [id]: current } = getState().app.uploadsById;\n current.cancelSource.abort();\n return Promise.resolve(dispatch(cleanUpUpload(id)));\n});\n\nexport const editArtifact = createAppAsyncThunk(\n `${sliceName}/editArtifact`,\n async ({ id, body }: { body: ArtifactUpdateV1; id: string }, { dispatch, getState }) => {\n await GeneralApi.put(`${deploymentsApiUrl}/artifacts/${id}`, body).catch(err => commonErrorHandler(err, `Artifact details couldn't be updated.`, dispatch));\n const { release, index } = findArtifactIndexInRelease(getReleasesById(getState()), id);\n if (!release || index === -1) {\n await dispatch(getReleases());\n return;\n }\n const updatedRelease = {\n ...release,\n artifacts: release.artifacts.map((artifact, i) => (i === index ? { ...artifact, description: body.description || '' } : artifact))\n };\n await Promise.all([\n dispatch(actions.receiveRelease(updatedRelease)),\n dispatch(setSnackbar({ message: 'Artifact details were updated successfully.', autoHideDuration: TIMEOUTS.fiveSeconds, action: '' })),\n dispatch(getRelease(release.name)),\n dispatch(selectRelease(release.name))\n ]);\n }\n);\n\nexport const removeArtifact = createAppAsyncThunk(`${sliceName}/removeArtifact`, async (id: string, { dispatch, getState }) => {\n await GeneralApi.delete(`${deploymentsApiUrl}/artifacts/${id}`).catch(err => commonErrorHandler(err, `Error removing artifact:`, dispatch));\n const state = getState();\n const { release, index } = findArtifactIndexInRelease(getReleasesById(state), id);\n if (!release || index === -1) {\n await dispatch(getReleases());\n return;\n }\n const releaseArtifacts = [...release.artifacts];\n releaseArtifacts.splice(index, 1);\n if (!releaseArtifacts.length) {\n const { releasesList } = state.releases;\n const releaseIds = releasesList.releaseIds.filter(id => release.name !== id);\n await Promise.all([\n dispatch(actions.removeRelease(release.name)),\n dispatch(\n setReleasesListState({\n releaseIds,\n searchTotal: releasesList.searchTerm ? releasesList.searchTotal - 1 : releasesList.searchTotal,\n total: releasesList.total - 1\n })\n )\n ]);\n return;\n }\n await Promise.all([\n dispatch(setSnackbar({ message: 'Artifact was removed', autoHideDuration: TIMEOUTS.fiveSeconds, action: '' })),\n dispatch(actions.receiveRelease(release))\n ]);\n});\n\nexport const removeRelease = createAppAsyncThunk(`${sliceName}/removeRelease`, (releaseId: string, { dispatch, getState }) =>\n Promise.all(getReleasesById(getState())[releaseId].artifacts.map(({ id }) => dispatch(removeArtifact(id)))).then(() => dispatch(selectRelease(null)))\n);\n\nexport const removeReleases = createAppAsyncThunk(`${sliceName}/removeReleases`, (releaseIds: string[], { dispatch, getState }) => {\n const deleteRequests = releaseIds.reduce<Promise<unknown>[]>((accu, releaseId) => {\n const releaseArtifacts = getReleasesById(getState())[releaseId].artifacts;\n accu.push(...releaseArtifacts.map(({ id }) => dispatch(removeArtifact(id)).unwrap()));\n return accu;\n }, []);\n return Promise.all(deleteRequests);\n});\n\nexport const selectRelease = createAppAsyncThunk(`${sliceName}/selectRelease`, (release: Release | string | null, { dispatch }) => {\n const name = (release && typeof release === 'object' ? release.name : release) || null;\n const tasks: Promise<ReturnType<AppDispatch> | unknown>[] = [Promise.resolve(dispatch(actions.selectedRelease(name)))];\n if (name) {\n tasks.push(dispatch(getRelease(name)));\n }\n return Promise.all(tasks);\n});\n\nexport const setReleasesListState = createAppAsyncThunk(\n `${sliceName}/setReleasesListState`,\n (selectionState: Partial<ReleasesList>, { dispatch, getState }) => {\n const currentState = getState().releases.releasesList;\n const nextState = {\n ...currentState,\n ...selectionState,\n sort: { ...currentState.sort, ...selectionState.sort } as SortOptions\n };\n const tasks: Promise<ReturnType<AppDispatch> | unknown>[] = [];\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isLoading: currentLoading, ...currentRequestState } = currentState;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isLoading: selectionLoading, ...selectionRequestState } = nextState;\n if (!deepCompare(currentRequestState, selectionRequestState)) {\n nextState.isLoading = true;\n tasks.push(dispatch(getReleases(nextState)).finally(() => dispatch(setReleasesListState({ isLoading: false }))));\n }\n if (\n !nextState.searchOnly &&\n (currentState.page !== nextState.page || currentState.perPage > nextState.perPage || !deepCompare(currentState.sort, nextState.sort))\n ) {\n nextState.selection = [];\n }\n tasks.push(Promise.resolve(dispatch(actions.setReleaseListState(nextState))));\n return Promise.all(tasks);\n }\n);\n\n/* Releases */\n\nconst releaseListRetrieval = (config: Partial<ReleasesList>) => {\n const { searchTerm = '', page = defaultPage, perPage = defaultPerPage, sort = sortingDefaults, selectedTags = [], type = '' } = config;\n const { key: attribute, direction } = sort;\n const filterQuery = formatReleases({ pageState: { searchTerm, selectedTags } });\n const updateType = type ? `update_type=${type}` : '';\n const sorting = attribute ? `sort=${attribute}:${direction}`.toLowerCase() : '';\n return GeneralApi.get<Array<Release>>(\n `${deploymentsApiUrlV2}/deployments/releases?${[`page=${page}`, `per_page=${perPage}`, filterQuery, updateType, sorting].filter(i => i).join('&')}`\n );\n};\n\nconst deductSearchState = (receivedReleases: Release[], config, total: number, state: ReleaseSliceType) => {\n let releaseListState = { ...state.releasesList };\n const { searchTerm, searchOnly, sort = {}, selectedTags = [], type } = config;\n const flattenedReleases = Object.values(receivedReleases).sort(customSort(sort.direction === SORTING_OPTIONS.desc, sort.key));\n const releaseIds = flattenedReleases.map(item => item.name);\n const isFiltering = !!(selectedTags.length || type || searchTerm);\n if (searchOnly) {\n releaseListState = { ...releaseListState, searchedIds: releaseIds };\n } else {\n releaseListState = {\n ...releaseListState,\n releaseIds,\n searchTotal: isFiltering ? total : state.releasesList.searchTotal,\n total: !isFiltering ? total : state.releasesList.total\n };\n }\n return releaseListState;\n};\n\nexport const getReleases = createAppAsyncThunk(`${sliceName}/getReleases`, (passedConfig: Partial<ReleasesList> | undefined = {}, { dispatch, getState }) => {\n const config = { ...getState().releases.releasesList, ...passedConfig };\n return releaseListRetrieval(config)\n .then(({ data: receivedReleases = [], headers = {} }) => {\n const total = headers[headerNames.total] ? Number(headers[headerNames.total]) : 0;\n const state = getState().releases;\n const flatReleases = reduceReceivedReleases(receivedReleases, state.byId);\n const combinedReleases = { ...state.byId, ...flatReleases };\n const tasks: Promise<ReturnType<AppDispatch>>[] = [Promise.resolve(dispatch(actions.receiveReleases(combinedReleases)))];\n const releaseListState = deductSearchState(receivedReleases, config, total, state);\n tasks.push(Promise.resolve(dispatch(actions.setReleaseListState(releaseListState))));\n return Promise.all(tasks);\n })\n .catch(err => commonErrorHandler(err, `Please check your connection`, dispatch));\n});\n\nexport const getRelease = createAppAsyncThunk(`${sliceName}/getReleases`, async (name: string, { dispatch, getState }) => {\n const releaseResponse = await GeneralApi.get<ReceivedRelease>(`${deploymentsApiUrlV2}/deployments/releases/${name}`);\n const { data: release } = releaseResponse;\n if (release) {\n const stateRelease = getReleasesById(getState())[release.name!] || {};\n await dispatch(actions.receiveRelease(flattenRelease(release, stateRelease)));\n }\n return Promise.resolve(null);\n});\n\nexport const updateReleaseInfo = createAppAsyncThunk(\n `${sliceName}/updateReleaseInfo`,\n ({ name, info }: { info: ReleaseUpdate; name: string }, { dispatch, getState }) =>\n GeneralApi.patch(`${deploymentsApiUrlV2}/deployments/releases/${name}`, info)\n .catch(err => commonErrorHandler(err, `Release details couldn't be updated.`, dispatch))\n .then(() =>\n Promise.all([\n dispatch(actions.receiveRelease({ ...getReleasesById(getState())[name], ...info, name })),\n dispatch(setSnackbar({ message: 'Release details were updated successfully.', autoHideDuration: TIMEOUTS.fiveSeconds, action: '' }))\n ])\n )\n);\n\nexport const setSingleReleaseTags = createAppAsyncThunk(\n `${sliceName}/setSingleReleaseTags`,\n ({ name, tags }: { name: string; tags: Tags }, { dispatch, getState }) =>\n GeneralApi.put(`${deploymentsApiUrlV2}/deployments/releases/${name}/tags`, tags).then(() =>\n Promise.resolve(dispatch(actions.receiveRelease({ ...getReleasesById(getState())[name], name, tags })))\n )\n);\n\nexport const setReleaseTags = createAppAsyncThunk(`${sliceName}/setReleaseTags`, ({ name, tags = [] }: { name: string; tags: Tags }, { dispatch }) =>\n dispatch(setSingleReleaseTags({ name, tags }))\n .catch(err => commonErrorHandler(err, `Release tags couldn't be set.`, dispatch))\n .then(() => {\n dispatch(setSnackbar({ message: 'Release tags were set successfully.', autoHideDuration: TIMEOUTS.fiveSeconds, action: '' }));\n dispatchDelayed({ action: getExistingReleaseTags(), dispatch });\n })\n);\n\nexport const setReleasesTags = createAppAsyncThunk(\n `${sliceName}/setReleasesTags`,\n ({ releases, tags = [] }: { releases: Release[]; tags: Tags }, { dispatch }) => {\n const addRequests = releases.reduce<Promise<ReturnType<AppDispatch> | unknown>[]>((accu, release) => {\n accu.push(dispatch(setSingleReleaseTags({ name: release.name, tags: [...new Set([...(release.tags ? release.tags : []), ...tags])] })));\n return accu;\n }, []);\n return Promise.all(addRequests)\n .catch(err => commonErrorHandler(err, `Releases couldn't be tagged.`, dispatch))\n .then(() => {\n dispatch(setSnackbar({ message: 'Releases were tagged successfully.', autoHideDuration: TIMEOUTS.fiveSeconds, action: '' }));\n dispatchDelayed({ action: getExistingReleaseTags(), dispatch });\n });\n }\n);\n\nexport const getExistingSoftwareTags = createAppAsyncThunk(`${sliceName}/getSoftwareTags`, async (kind: SoftwareKind | undefined, { dispatch }) => {\n const { data: tags } = await GeneralApi.get<Tags>(`${deploymentsApiUrlV1alpha1}/software/tags`, { params: { kind } }).catch(err =>\n commonErrorHandler(err, `Existing ${kind ?? 'software'} tags couldn't be retrieved.`, dispatch)\n );\n if (kind) {\n return tags;\n }\n dispatch(actions.receiveSoftwareTags(tags));\n});\n\nexport const getExistingReleaseTags = createAppAsyncThunk(`${sliceName}/getReleaseTags`, async (_, { dispatch }) => {\n const tags = (await dispatch(getExistingSoftwareTags('release')).unwrap()) ?? [];\n dispatch(actions.receiveReleaseTags(tags));\n});\n\nexport const getUpdateTypes = createAppAsyncThunk(`${sliceName}/getReleaseTypes`, (_, { dispatch }) =>\n GeneralApi.get<UpdateTypes>(`${deploymentsApiUrlV2}/releases/all/types`)\n .catch(err => commonErrorHandler(err, `Existing update types couldn't be retrieved.`, dispatch))\n .then(({ data: types }) => Promise.resolve(dispatch(actions.receiveReleaseTypes(types))))\n);\n\ninterface DeltaListingProps {\n page?: number;\n perPage?: number;\n sort?: SortOptions;\n}\nexport const getDeltaGenerationJobs = createAppAsyncThunk(`${sliceName}/getDeltaGenerationJobs`, (options: DeltaListingProps = {}, { dispatch }) => {\n const { page = defaultPage, perPage = defaultPerPage, sort = {} } = options;\n const { key: sortKey, direction: sortDirection } = sort as SortOptions;\n const sortParam = sortKey && sortDirection ? `${sortKey}:${sortDirection}` : undefined;\n return GeneralApi.get<DeltaJobsListItem[]>(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs`, { params: { page, per_page: perPage, sort: sortParam } })\n .then(({ data, headers }) => {\n const total = Number(headers[headerNames.total]) || data.length;\n const result = { jobs: data, total };\n return Promise.all([dispatch(actions.receivedDeltaJobs(result)), result]);\n })\n .catch(err => commonErrorHandler(err, 'There was an error retrieving delta generation jobs:', dispatch));\n});\n\nexport const getDeltaGenerationJobDetails = createAppAsyncThunk(`${sliceName}/getDeltaGenerationJobDetails`, (jobId, { dispatch }) =>\n GeneralApi.get<DeltaJobDetailsItem>(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs/${jobId}`)\n .then(({ data }) => dispatch(actions.receivedDeltaJobDetails({ ...data, id: jobId })))\n .catch(err => commonErrorHandler(err, 'There was an error retrieving delta generation job details:', dispatch))\n);\n\n/* Manifests */\n\nconst manifestSortingDefaults = { direction: SORTING_OPTIONS.desc, key: 'modified' };\n\nconst transformReceivedSoftware = (items: Software[] | Manifest[]) => Object.fromEntries(items.map(item => [item.name, item]));\n\nconst manifestListRetrieval = (config: Partial<ManifestsList>) => {\n const { searchTerm = '', page = defaultPage, perPage = defaultPerPage, sort = manifestSortingDefaults, selectedTags = [] } = config;\n const { key: attribute, direction } = sort;\n const filterQuery = formatReleases({ pageState: { searchTerm, selectedTags } });\n const sorting = attribute ? `sort=${attribute}:${direction}`.toLowerCase() : '';\n return GeneralApi.get<Array<Manifest>>(\n `${deploymentsApiUrlV1alpha1}/manifests?${[`page=${page}`, `per_page=${perPage}`, filterQuery, sorting].filter(i => i).join('&')}`\n );\n};\n\nconst deductManifestSearchState = (receivedManifests: Manifest[], config, total: number, state: ReleaseSliceType) => {\n let manifestsListState = { ...state.manifestsList };\n const { searchTerm, selectedTags = [], sort = {} } = config;\n const sortedManifests = Object.values(receivedManifests).sort(customSort(sort.direction === SORTING_OPTIONS.desc, sort.key));\n const manifestIds = sortedManifests.map(item => item.name);\n const isFiltering = !!(searchTerm || selectedTags.length);\n manifestsListState = {\n ...manifestsListState,\n manifestIds,\n searchTotal: isFiltering ? total : state.manifestsList.searchTotal,\n total: !isFiltering ? total : state.manifestsList.total\n };\n return manifestsListState;\n};\n\ntype ManifestCreationPayload = {\n file: File;\n meta: {\n description?: string;\n tags?: string[];\n };\n};\n\nconst toManifestCreationData = ({ description, tags }: ManifestCreationPayload['meta']) => {\n const formData = new FormData();\n if (description) {\n formData.append('description', description);\n }\n if (tags?.length) {\n formData.append('tags', tags.join(','));\n }\n return formData;\n};\n\nconst maybeUpdateManifestTags = (maybeTags, dispatch) => {\n if (!maybeTags?.length) {\n return;\n }\n dispatchDelayed({ action: getExistingManifestTags(), dispatch });\n};\n\nexport const uploadManifest = createAppAsyncThunk(\n `${sliceName}/uploadManifest`,\n async ({ file, meta }: ManifestCreationPayload, { dispatch, rejectWithValue }) => {\n const formData = toManifestCreationData(meta);\n formData.append('size', file.size.toString());\n formData.append('artifact', file);\n const uploadId = uuid();\n const cancelSource = new AbortController();\n dispatch(initUpload({ id: uploadId, upload: { name: file.name, size: file.size, progress: 0, cancelSource } }));\n try {\n const { headers } = await GeneralApi.upload(\n `${deploymentsApiUrlV1alpha1}/manifests`,\n formData,\n e => dispatch(uploadProgress({ id: uploadId, progress: progress(e) })),\n cancelSource.signal\n );\n const location = headers[headerNames.location] as string;\n await pollLocation(location);\n await dispatch(getManifests()).unwrap();\n dispatch(setSnackbar({ message: 'Upload successful', autoHideDuration: TIMEOUTS.fiveSeconds }));\n } catch (err) {\n if (isCancel(err)) {\n return dispatch(setSnackbar({ message: 'The upload has been cancelled', autoHideDuration: TIMEOUTS.fiveSeconds }));\n }\n return commonErrorHandler(err, `Manifest couldn't be uploaded.`, dispatch).catch(e => rejectWithValue(extractErrorMessage(e)));\n } finally {\n dispatch(cleanUpUpload(uploadId));\n }\n maybeUpdateManifestTags(meta.tags, dispatch);\n }\n);\n\nexport const generateManifest = createAppAsyncThunk(`${sliceName}/generateManifest`, async ({ file, meta }: ManifestCreationPayload, { dispatch }) => {\n const formData = toManifestCreationData(meta);\n formData.append('file', file);\n const uploadId = uuid();\n const cancelSource = new AbortController();\n dispatch(initUpload({ id: uploadId, upload: { name: file.name, size: file.size, progress: 0, cancelSource } }));\n try {\n const { headers } = await GeneralApi.upload(\n `${deploymentsApiUrlV1alpha1}/manifests/generate`,\n formData,\n e => dispatch(uploadProgress({ id: uploadId, progress: progress(e) })),\n cancelSource.signal\n );\n const location = headers[headerNames.location] as string;\n await pollLocation(location);\n await dispatch(getManifests()).unwrap();\n dispatch(setSnackbar({ message: 'Upload successful', autoHideDuration: TIMEOUTS.fiveSeconds }));\n } catch (err) {\n if (isCancel(err)) {\n return dispatch(setSnackbar({ message: 'The manifest generation has been cancelled', autoHideDuration: TIMEOUTS.fiveSeconds }));\n }\n return commonErrorHandler(err, `Manifest couldn't be generated.`, dispatch);\n } finally {\n dispatch(cleanUpUpload(uploadId));\n }\n await maybeUpdateManifestTags(meta.tags, dispatch);\n});\n\nexport const getExistingManifestTags = createAppAsyncThunk(`${sliceName}/getManifestTags`, async (_, { dispatch }) => {\n const tags = (await dispatch(getExistingSoftwareTags('manifest')).unwrap()) ?? [];\n dispatch(actions.receiveManifestTags(tags));\n});\n\nexport const getManifests = createAppAsyncThunk(\n `${sliceName}/getManifests`,\n async (passedConfig: Partial<ManifestsList> | undefined = {}, { dispatch, getState }) => {\n const config = { ...getState().releases.manifestsList, ...passedConfig };\n const { data: receivedManifests = [], headers = {} } = await manifestListRetrieval(config).catch(err =>\n commonErrorHandler(err, 'There was an error while retrieving manifests', dispatch)\n );\n const total = headers[headerNames.total] ? Number(headers[headerNames.total]) : 0;\n const state = getState().releases;\n const flatManifests: Record<string, Manifest> = transformReceivedSoftware(receivedManifests);\n const combinedManifests = { ...state.manifestsById, ...flatManifests };\n dispatch(actions.receiveManifests(combinedManifests));\n const manifestsListState = deductManifestSearchState(receivedManifests, config, total, state);\n dispatch(actions.setManifestsListState(manifestsListState));\n return combinedManifests;\n }\n);\n\nexport const getManifest = createAppAsyncThunk(`${sliceName}/getManifest`, async (name: string, { dispatch, getState }) => {\n const { data } = await GeneralApi.get<Manifest>(`${deploymentsApiUrlV1alpha1}/manifests/${name}`);\n if (!data) {\n return null;\n }\n const stateManifest = getManifestsById(getState())[data.name] || {};\n const manifest = { ...stateManifest, ...data };\n dispatch(actions.receiveManifest(manifest));\n return manifest;\n});\n\nexport const updateManifestInfo = createAppAsyncThunk(\n `${sliceName}/updateManifestInfo`,\n async ({ name, info }: { info: ManifestUpdate; name: string }, { dispatch, getState }) => {\n await GeneralApi.patch(`${deploymentsApiUrlV1alpha1}/manifests/${name}`, info).catch(err =>\n commonErrorHandler(err, `Manifest details couldn't be updated.`, dispatch)\n );\n dispatch(actions.receiveManifest({ ...getManifestsById(getState())[name], ...info, name }));\n dispatch(setSnackbar('Manifest details were updated successfully.'));\n maybeUpdateManifestTags(info.tags, dispatch);\n }\n);\n\nexport const removeManifests = createAppAsyncThunk(`${sliceName}/removeManifests`, async (names: string[], { dispatch, getState }) => {\n const nameParams = names.map(name => `name=${encodeURIComponent(name)}`).join('&');\n await GeneralApi.delete(`${deploymentsApiUrlV1alpha1}/manifests?${nameParams}`).catch(err =>\n commonErrorHandler(err, `Manifest${names.length > 1 ? 's' : ''} couldn't be deleted.`, dispatch)\n );\n const manifestsList = getManifestsListState(getState());\n const manifestIds = manifestsList.manifestIds.filter(id => !names.includes(id));\n dispatch(actions.removeManifests(names));\n dispatch(\n setManifestsListState({\n manifestIds,\n searchTotal: manifestsList.searchTerm ? manifestsList.searchTotal - names.length : manifestsList.searchTotal,\n total: manifestsList.total - names.length\n })\n );\n dispatch(setSnackbar({ message: `${pluralize('Manifest', names.length)} deleted successfully.`, autoHideDuration: TIMEOUTS.fiveSeconds, action: '' }));\n dispatch(selectManifest(null));\n await dispatch(getManifests()).unwrap();\n});\n\nexport const removeManifest = createAppAsyncThunk(`${sliceName}/removeManifest`, (name: string, { dispatch }) => dispatch(removeManifests([name])));\n\nexport const selectManifest = createAppAsyncThunk(`${sliceName}/selectManifest`, async (manifest: Manifest | string | null, { dispatch }) => {\n const name = (manifest && typeof manifest === 'object' ? manifest.name : manifest) || null;\n dispatch(actions.selectedManifest(name));\n if (name) {\n await dispatch(getManifest(name)).unwrap();\n }\n});\n\nexport const setManifestsListState = createAppAsyncThunk(\n `${sliceName}/setManifestsListState`,\n async (selectionState: Partial<ManifestsList>, { dispatch, getState }) => {\n const currentState = getState().releases.manifestsList;\n const nextState = {\n ...currentState,\n ...selectionState,\n sort: { ...currentState.sort, ...selectionState.sort } as SortOptions\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isLoading: currentLoading, ...currentRequestState } = currentState;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isLoading: selectionLoading, ...selectionRequestState } = nextState;\n if (!deepCompare(currentRequestState, selectionRequestState)) {\n nextState.isLoading = true;\n dispatch(getManifests(nextState)) // don't await here as this would otherwise overwrite setting the `nextState` below\n .unwrap()\n .finally(() => dispatch(setManifestsListState({ isLoading: false })).unwrap());\n }\n if (currentState.page !== nextState.page || currentState.perPage > nextState.perPage || !deepCompare(currentState.sort, nextState.sort)) {\n nextState.selection = [];\n }\n dispatch(actions.setManifestsListState(nextState));\n }\n);\n\n/* Software */\n\nconst softwareSortingDefaults = { direction: SORTING_OPTIONS.desc, key: 'modified' };\n\nconst softwareListRetrieval = (config: Partial<SoftwareList>) => {\n const { searchTerm = '', kind, page = defaultPage, perPage = defaultPerPage, sort = softwareSortingDefaults, selectedTags = [], type = '' } = config;\n const { key: attribute, direction } = sort;\n const filterQuery = formatReleases({ pageState: { selectedTags } });\n const sorting = attribute ? `sort=${attribute}:${direction}`.toLowerCase() : '';\n const kindQuery = kind ? `kind=${encodeURIComponent(kind)}` : '';\n const updateTypeQuery = type ? `update_type=${encodeURIComponent(type)}` : '';\n const namePrefixQuery = searchTerm ? `name_prefix=${encodeURIComponent(searchTerm)}` : '';\n return GeneralApi.get<Array<Software>>(\n `${deploymentsApiUrlV1alpha1}/software?${[`page=${page}`, `per_page=${perPage}`, namePrefixQuery, kindQuery, filterQuery, updateTypeQuery, sorting].filter(i => i).join('&')}`\n );\n};\n\nconst deductSoftwareSearchState = (receivedSoftware: Software[], config, total: number, state: ReleaseSliceType) => {\n let softwareListState = { ...state.softwareList };\n const { searchTerm, kind, selectedTags = [], sort = {}, type } = config;\n const sortedSoftware = Object.values(receivedSoftware).sort(customSort(sort.direction === SORTING_OPTIONS.desc, sort.key));\n const softwareIds = sortedSoftware.map(item => item.name);\n const isFiltering = !!(searchTerm || kind || selectedTags.length || type);\n softwareListState = {\n ...softwareListState,\n softwareIds,\n searchTotal: isFiltering ? total : state.softwareList.searchTotal,\n total: !isFiltering ? total : state.softwareList.total\n };\n return softwareListState;\n};\n\nexport const getSoftware = createAppAsyncThunk(\n `${sliceName}/getSoftware`,\n async (passedConfig: Partial<SoftwareList> | undefined = {}, { dispatch, getState }) => {\n const config = { ...getSoftwareListState(getState()), ...passedConfig };\n const { data: receivedSoftware = [], headers = {} } = await softwareListRetrieval(config).catch(err =>\n commonErrorHandler(err, 'There was an error while listing software', dispatch)\n );\n const total = headers[headerNames.total] ? Number(headers[headerNames.total]) : 0;\n const state = getState().releases;\n const flatSoftware: Record<string, Software> = transformReceivedSoftware(receivedSoftware);\n const combinedSoftware = { ...state.softwareById, ...flatSoftware };\n dispatch(actions.receiveSoftwareItems(combinedSoftware));\n const softwareListState = deductSoftwareSearchState(receivedSoftware, config, total, state);\n dispatch(actions.setSoftwareListState(softwareListState));\n return combinedSoftware;\n }\n);\n\nexport const getSoftwareList = createAppAsyncThunk(\n `${sliceName}/getSoftwareList`,\n async (passedConfig: Partial<SoftwareList> | undefined = {}, { dispatch }) => {\n const { data: receivedSoftware = [], headers = {} } = await softwareListRetrieval(passedConfig).catch(err =>\n commonErrorHandler(err, 'There was an error while listing software', dispatch)\n );\n const total = headers[headerNames.total] ? Number(headers[headerNames.total]) : 0;\n return { software: receivedSoftware, total };\n }\n);\n\nexport const setSoftwareListState = createAppAsyncThunk(\n `${sliceName}/setSoftwareListState`,\n async (selectionState: Partial<SoftwareList>, { dispatch, getState }) => {\n const currentState = getSoftwareListState(getState());\n const nextState = {\n ...currentState,\n ...selectionState,\n sort: { ...currentState.sort, ...selectionState.sort } as SortOptions\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isLoading: currentLoading, ...currentRequestState } = currentState;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isLoading: selectionLoading, ...selectionRequestState } = nextState;\n if (!deepCompare(currentRequestState, selectionRequestState)) {\n nextState.isLoading = true;\n dispatch(getSoftware(nextState))\n .unwrap()\n .finally(() => dispatch(setSoftwareListState({ isLoading: false })).unwrap());\n }\n dispatch(actions.setSoftwareListState(nextState));\n }\n);\n\nexport const checkReleasesExistence = createAppAsyncThunk(`${sliceName}/checkReleasesExistence`, async (names: string[], { dispatch }) => {\n if (!names.length) {\n return {};\n }\n const nameFilter = names.map(name => `name=${encodeURIComponent(name)}`).join('&');\n const { data = [] } = await GeneralApi.get<Array<Software>>(`${deploymentsApiUrlV1alpha1}/software?${nameFilter}&kind=release&page=1&per_page=100`).catch(\n err => commonErrorHandler(err, 'Checking release existence failed:', dispatch)\n );\n const existingNames = new Set(data.map(item => item.name));\n return names.reduce<Record<string, boolean>>((accu, name) => {\n accu[name] = existingNames.has(name);\n return accu;\n }, {});\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thunks.cjs","names":["storeActions","DEVICE_LIST_DEFAULTS","SORTING_OPTIONS","customSort","duplicateFilter","createAppAsyncThunk","sliceName","getReleasesById","extractSoftwareItem","convertDeviceListStateToFilters","emptyFilter","GeneralApi","inventoryApiUrlV2","commonErrorHandler","commonErrorFallback","headerNames","actions","deploymentsApiUrl","TIMEOUTS","ARTIFACT_GENERATION_TYPE","progress","isCancel","deepCompare","formatReleases","deploymentsApiUrlV2","deploymentsApiUrlV1alpha1","extractErrorMessage","getManifestsById","getManifestsListState","getSoftwareListState"],"sources":["../../src/releasesSlice/thunks.ts"],"sourcesContent":["// Copyright 2019 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 {\n ArtifactLink,\n ArtifactUpdateV1,\n DeltaJobDetailsItem,\n DeltaJobsListItem,\n DeviceInventoryResponse,\n Manifest,\n ManifestUpdate,\n ReleaseUpdate,\n ReleaseV1,\n ReleaseV2,\n Software,\n Tags,\n UpdateTypes\n} from '@northern.tech/types/MenderTypes';\nimport { customSort, deepCompare, duplicateFilter, extractErrorMessage, extractSoftwareItem } from '@northern.tech/utils/helpers';\nimport type { AxiosResponse } from 'axios';\nimport { isCancel } from 'axios';\nimport pluralize from 'pluralize';\nimport { v4 as uuid } from 'uuid';\n\nimport type { Artifact, ManifestsList, Release, ReleaseSliceType, ReleasesList, SoftwareKind, SoftwareList } from '.';\nimport { actions, sliceName } from '.';\nimport storeActions from '../actions';\nimport GeneralApi from '../api/general-api';\nimport {\n DEVICE_LIST_DEFAULTS,\n SORTING_OPTIONS,\n TIMEOUTS,\n deploymentsApiUrl,\n deploymentsApiUrlV1alpha1,\n deploymentsApiUrlV2,\n emptyFilter,\n headerNames,\n inventoryApiUrlV2\n} from '../constants';\nimport type { SortOptions } from '../constants';\nimport { formatReleases } from '../locationutils';\nimport type { AppDispatch } from '../store';\nimport { commonErrorFallback, commonErrorHandler, createAppAsyncThunk } from '../store';\nimport { convertDeviceListStateToFilters, dispatchDelayed, progress } from '../utils';\nimport { ARTIFACT_GENERATION_TYPE } from './constants';\nimport { getManifestsById, getManifestsListState, getReleasesById, getSoftwareListState } from './selectors';\n\nconst { setSnackbar, initUpload, uploadProgress, cleanUpUpload } = storeActions;\nconst { page: defaultPage, perPage: defaultPerPage } = DEVICE_LIST_DEFAULTS;\n\nconst sortingDefaults = { direction: SORTING_OPTIONS.desc, key: 'modified' };\n\ntype ReceivedRelease = ReleaseV1 & ReleaseV2;\nconst flattenRelease = (release: ReceivedRelease, stateRelease: Release): Release => {\n const updatedArtifacts = release.artifacts?.sort(customSort(true, 'modified')) || [];\n const { artifacts, deviceTypes, modified } = updatedArtifacts.reduce<{ artifacts: Artifact[]; deviceTypes: string[]; modified: undefined | string }>(\n (accu, item) => {\n accu.deviceTypes.push(...item.device_types_compatible);\n const stateArtifact = stateRelease.artifacts?.find(releaseArtifact => releaseArtifact.id === item.id) || {};\n accu.modified = accu.modified ? accu.modified : item.modified;\n accu.artifacts.push({\n ...stateArtifact,\n ...item\n });\n return accu;\n },\n { artifacts: [], deviceTypes: [], modified: undefined }\n );\n return { ...stateRelease, ...release, artifacts, device_types_compatible: deviceTypes.filter(duplicateFilter), modified };\n};\n\nconst reduceReceivedReleases = (releases: ReceivedRelease[], stateReleasesById: Record<string, Release>) =>\n releases.reduce<Record<string, Release>>((accu, release) => {\n const name = (release.name ?? release.Name)!;\n const stateRelease = stateReleasesById[name] || {};\n accu[name] = flattenRelease(release, stateRelease);\n return accu;\n }, {});\n\nconst findArtifactIndexInRelease = (releases: Record<string, Release>, id: string) =>\n Object.values(releases).reduce<{ index: number; release: Release | null }>(\n (accu, item) => {\n const index = item.artifacts?.findIndex(releaseArtifact => releaseArtifact.id === id) ?? -1;\n if (index > -1) {\n accu = { release: item, index };\n }\n return accu;\n },\n { release: null, index: -1 }\n );\n\n/* Artifacts */\nexport const getArtifactInstallCount = createAppAsyncThunk(`${sliceName}/getArtifactInstallCount`, (id: string, { dispatch, getState }) => {\n const { release, index } = findArtifactIndexInRelease(getReleasesById(getState()), id);\n if (!release || index === -1) {\n return;\n }\n const releaseArtifacts = [...release.artifacts];\n const artifact = releaseArtifacts[index];\n const { key, name, version } = extractSoftwareItem(artifact.artifact_provides) ?? {};\n const attribute = `${key}${name ? `.${name}` : ''}.version`;\n const { filterTerms } = convertDeviceListStateToFilters({\n filters: [{ ...emptyFilter, key: attribute, value: version!, scope: 'inventory' }]\n });\n return GeneralApi.post<DeviceInventoryResponse[]>(`${inventoryApiUrlV2}/filters/search`, {\n page: 1,\n per_page: 1,\n filters: filterTerms,\n attributes: [{ scope: 'identity', attribute: 'status' }]\n })\n .catch(err => commonErrorHandler(err, `Retrieving artifact installation count failed:`, dispatch, commonErrorFallback))\n .then(({ headers }) => {\n const foundRelease = findArtifactIndexInRelease(getReleasesById(getState()), id);\n const index = foundRelease.index;\n let release = foundRelease.release;\n if (!release || index === -1) {\n return;\n }\n const installCount = Number(headers[headerNames.total]);\n const releaseArtifacts = [...release.artifacts];\n releaseArtifacts[index] = { ...releaseArtifacts[index], installCount };\n release = {\n ...release,\n artifacts: releaseArtifacts\n };\n return dispatch(actions.receiveRelease(release));\n });\n});\n\nexport const getArtifactUrl = createAppAsyncThunk(`${sliceName}/getArtifactUrl`, async (id: string, { dispatch, getState }) => {\n const response = await GeneralApi.get<ArtifactLink>(`${deploymentsApiUrl}/artifacts/${id}/download`);\n const foundRelease = findArtifactIndexInRelease(getReleasesById(getState()), id);\n const index = foundRelease.index;\n let release = foundRelease.release;\n if (!release || index === -1) {\n return dispatch(getReleases());\n }\n const releaseArtifacts = [...release.artifacts];\n releaseArtifacts[index] = {\n ...releaseArtifacts[index],\n url: response.data.uri\n };\n release = {\n ...release,\n artifacts: releaseArtifacts\n };\n await dispatch(actions.receiveRelease(release));\n return response.data.uri;\n});\n\nconst pollLocation = async (location, attempt = 1, maxAttempts = 5, delay = TIMEOUTS.oneSecond) => {\n try {\n await GeneralApi.get(location);\n return Promise.resolve();\n } catch {\n if (attempt >= maxAttempts) {\n throw new Error(`Couldn't get ${location} after ${maxAttempts} attempts`);\n }\n await new Promise(resolve => setTimeout(resolve, delay));\n return pollLocation(location, attempt + 1, maxAttempts, delay);\n }\n};\n\ntype ArtifactPayload = {\n file: File;\n meta: {\n args?: {\n dest_dir: string;\n filename: string;\n software_filesystem: string;\n software_name: string;\n software_version: string;\n };\n description: string;\n device_types_compatible?: string[];\n name?: string;\n };\n};\nexport const createArtifact = createAppAsyncThunk(`${sliceName}/createArtifact`, ({ file, meta }: ArtifactPayload, { dispatch }) => {\n const formData = Object.entries(meta).reduce((accu, [key, value]) => {\n if (Array.isArray(value)) {\n accu.append(key, value.join(','));\n } else if (value instanceof Object) {\n accu.append(key, JSON.stringify(value));\n } else {\n accu.append(key, value);\n }\n return accu;\n }, new FormData());\n formData.append('type', ARTIFACT_GENERATION_TYPE.SINGLE_FILE);\n formData.append('file', file);\n const uploadId = uuid();\n const cancelSource = new AbortController();\n return Promise.all([\n dispatch(setSnackbar('Generating artifact')),\n dispatch(initUpload({ id: uploadId, upload: { name: file.name, size: file.size, progress: 0, cancelSource } })),\n GeneralApi.upload(\n `${deploymentsApiUrl}/artifacts/generate`,\n formData,\n e => dispatch(uploadProgress({ id: uploadId, progress: progress(e) })),\n cancelSource.signal\n )\n ])\n .then(tasks => {\n const generateResponse = tasks[tasks.length - 1] as AxiosResponse;\n const generateLocation = generateResponse.headers[headerNames.location] as string;\n const location = generateLocation.replace('/generate', '');\n return pollLocation(location);\n })\n .then(() =>\n Promise.all([\n dispatch(getReleases()),\n dispatch(selectRelease(meta.name!)),\n dispatch(setSnackbar({ message: 'Upload successful', autoHideDuration: TIMEOUTS.fiveSeconds }))\n ])\n )\n .catch(err => {\n if (isCancel(err)) {\n return dispatch(setSnackbar({ message: 'The artifact generation has been cancelled', autoHideDuration: TIMEOUTS.fiveSeconds }));\n }\n return commonErrorHandler(err, `Artifact couldn't be generated.`, dispatch);\n })\n .finally(() => dispatch(cleanUpUpload(uploadId)));\n});\n\nexport const uploadArtifact = createAppAsyncThunk(`${sliceName}/uploadArtifact`, ({ file, meta }: ArtifactPayload, { dispatch }) => {\n const formData = new FormData();\n formData.append('size', file.size.toString());\n formData.append('description', meta.description);\n formData.append('artifact', file);\n const uploadId = uuid();\n const cancelSource = new AbortController();\n return Promise.all([\n dispatch(setSnackbar('Uploading artifact')),\n dispatch(initUpload({ id: uploadId, upload: { name: file.name, size: file.size, progress: 0, cancelSource } })),\n GeneralApi.upload(`${deploymentsApiUrl}/artifacts`, formData, e => dispatch(uploadProgress({ id: uploadId, progress: progress(e) })), cancelSource.signal)\n ])\n .then(() => {\n const tasks: Promise<ReturnType<AppDispatch> | unknown>[] = [\n Promise.resolve(dispatch(setSnackbar({ message: 'Upload successful', autoHideDuration: TIMEOUTS.fiveSeconds }))),\n dispatch(getReleases())\n ];\n if (meta.name) {\n tasks.push(dispatch(selectRelease(meta.name)));\n }\n return Promise.all(tasks);\n })\n .catch(err => {\n if (isCancel(err)) {\n return dispatch(setSnackbar({ message: 'The upload has been cancelled', autoHideDuration: TIMEOUTS.fiveSeconds }));\n }\n return commonErrorHandler(err, `Artifact couldn't be uploaded.`, dispatch);\n })\n .finally(() => dispatch(cleanUpUpload(uploadId)));\n});\n\nexport const cancelFileUpload = createAppAsyncThunk(`${sliceName}/cancelFileUpload`, (id: string, { dispatch, getState }) => {\n const { [id]: current } = getState().app.uploadsById;\n current.cancelSource.abort();\n return Promise.resolve(dispatch(cleanUpUpload(id)));\n});\n\nexport const editArtifact = createAppAsyncThunk(\n `${sliceName}/editArtifact`,\n async ({ id, body }: { body: ArtifactUpdateV1; id: string }, { dispatch, getState }) => {\n await GeneralApi.put(`${deploymentsApiUrl}/artifacts/${id}`, body).catch(err => commonErrorHandler(err, `Artifact details couldn't be updated.`, dispatch));\n const { release, index } = findArtifactIndexInRelease(getReleasesById(getState()), id);\n if (!release || index === -1) {\n await dispatch(getReleases());\n return;\n }\n const updatedRelease = {\n ...release,\n artifacts: release.artifacts.map((artifact, i) => (i === index ? { ...artifact, description: body.description || '' } : artifact))\n };\n await Promise.all([\n dispatch(actions.receiveRelease(updatedRelease)),\n dispatch(setSnackbar({ message: 'Artifact details were updated successfully.', autoHideDuration: TIMEOUTS.fiveSeconds, action: '' })),\n dispatch(getRelease(release.name)),\n dispatch(selectRelease(release.name))\n ]);\n }\n);\n\nexport const removeArtifact = createAppAsyncThunk(`${sliceName}/removeArtifact`, async (id: string, { dispatch, getState }) => {\n await GeneralApi.delete(`${deploymentsApiUrl}/artifacts/${id}`).catch(err => commonErrorHandler(err, `Error removing artifact:`, dispatch));\n const state = getState();\n const { release, index } = findArtifactIndexInRelease(getReleasesById(state), id);\n if (!release || index === -1) {\n await dispatch(getReleases());\n return;\n }\n const releaseArtifacts = [...release.artifacts];\n releaseArtifacts.splice(index, 1);\n if (!releaseArtifacts.length) {\n const { releasesList } = state.releases;\n const releaseIds = releasesList.releaseIds.filter(id => release.name !== id);\n await Promise.all([\n dispatch(actions.removeRelease(release.name)),\n dispatch(\n setReleasesListState({\n releaseIds,\n searchTotal: releasesList.searchTerm ? releasesList.searchTotal - 1 : releasesList.searchTotal,\n total: releasesList.total - 1\n })\n )\n ]);\n return;\n }\n await Promise.all([\n dispatch(setSnackbar({ message: 'Artifact was removed', autoHideDuration: TIMEOUTS.fiveSeconds, action: '' })),\n dispatch(actions.receiveRelease(release))\n ]);\n});\n\nexport const removeRelease = createAppAsyncThunk(`${sliceName}/removeRelease`, (releaseId: string, { dispatch, getState }) =>\n Promise.all(getReleasesById(getState())[releaseId].artifacts.map(({ id }) => dispatch(removeArtifact(id)))).then(() => dispatch(selectRelease(null)))\n);\n\nexport const removeReleases = createAppAsyncThunk(`${sliceName}/removeReleases`, (releaseIds: string[], { dispatch, getState }) => {\n const deleteRequests = releaseIds.reduce<Promise<unknown>[]>((accu, releaseId) => {\n const releaseArtifacts = getReleasesById(getState())[releaseId].artifacts;\n accu.push(...releaseArtifacts.map(({ id }) => dispatch(removeArtifact(id)).unwrap()));\n return accu;\n }, []);\n return Promise.all(deleteRequests);\n});\n\nexport const selectRelease = createAppAsyncThunk(`${sliceName}/selectRelease`, (release: Release | string | null, { dispatch }) => {\n const name = (release && typeof release === 'object' ? release.name : release) || null;\n const tasks: Promise<ReturnType<AppDispatch> | unknown>[] = [Promise.resolve(dispatch(actions.selectedRelease(name)))];\n if (name) {\n tasks.push(dispatch(getRelease(name)));\n }\n return Promise.all(tasks);\n});\n\nexport const setReleasesListState = createAppAsyncThunk(\n `${sliceName}/setReleasesListState`,\n (selectionState: Partial<ReleasesList>, { dispatch, getState }) => {\n const currentState = getState().releases.releasesList;\n const nextState = {\n ...currentState,\n ...selectionState,\n sort: { ...currentState.sort, ...selectionState.sort } as SortOptions\n };\n const tasks: Promise<ReturnType<AppDispatch> | unknown>[] = [];\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isLoading: currentLoading, ...currentRequestState } = currentState;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isLoading: selectionLoading, ...selectionRequestState } = nextState;\n if (!deepCompare(currentRequestState, selectionRequestState)) {\n nextState.isLoading = true;\n tasks.push(dispatch(getReleases(nextState)).finally(() => dispatch(setReleasesListState({ isLoading: false }))));\n }\n if (\n !nextState.searchOnly &&\n (currentState.page !== nextState.page || currentState.perPage > nextState.perPage || !deepCompare(currentState.sort, nextState.sort))\n ) {\n nextState.selection = [];\n }\n tasks.push(Promise.resolve(dispatch(actions.setReleaseListState(nextState))));\n return Promise.all(tasks);\n }\n);\n\n/* Releases */\n\nconst releaseListRetrieval = (config: Partial<ReleasesList>) => {\n const { searchTerm = '', page = defaultPage, perPage = defaultPerPage, sort = sortingDefaults, selectedTags = [], type = '' } = config;\n const { key: attribute, direction } = sort;\n const filterQuery = formatReleases({ pageState: { searchTerm, selectedTags } });\n const updateType = type ? `update_type=${type}` : '';\n const sorting = attribute ? `sort=${attribute}:${direction}`.toLowerCase() : '';\n return GeneralApi.get<Array<Release>>(\n `${deploymentsApiUrlV2}/deployments/releases?${[`page=${page}`, `per_page=${perPage}`, filterQuery, updateType, sorting].filter(i => i).join('&')}`\n );\n};\n\nconst deductSearchState = (receivedReleases: Release[], config, total: number, state: ReleaseSliceType) => {\n let releaseListState = { ...state.releasesList };\n const { searchTerm, searchOnly, sort = {}, selectedTags = [], type } = config;\n const flattenedReleases = Object.values(receivedReleases).sort(customSort(sort.direction === SORTING_OPTIONS.desc, sort.key));\n const releaseIds = flattenedReleases.map(item => item.name);\n const isFiltering = !!(selectedTags.length || type || searchTerm);\n if (searchOnly) {\n releaseListState = { ...releaseListState, searchedIds: releaseIds };\n } else {\n releaseListState = {\n ...releaseListState,\n releaseIds,\n searchTotal: isFiltering ? total : state.releasesList.searchTotal,\n total: !isFiltering ? total : state.releasesList.total\n };\n }\n return releaseListState;\n};\n\nexport const getReleases = createAppAsyncThunk(`${sliceName}/getReleases`, (passedConfig: Partial<ReleasesList> | undefined = {}, { dispatch, getState }) => {\n const config = { ...getState().releases.releasesList, ...passedConfig };\n return releaseListRetrieval(config)\n .then(({ data: receivedReleases = [], headers = {} }) => {\n const total = headers[headerNames.total] ? Number(headers[headerNames.total]) : 0;\n const state = getState().releases;\n const flatReleases = reduceReceivedReleases(receivedReleases, state.byId);\n const combinedReleases = { ...state.byId, ...flatReleases };\n const tasks: Promise<ReturnType<AppDispatch>>[] = [Promise.resolve(dispatch(actions.receiveReleases(combinedReleases)))];\n const releaseListState = deductSearchState(receivedReleases, config, total, state);\n tasks.push(Promise.resolve(dispatch(actions.setReleaseListState(releaseListState))));\n return Promise.all(tasks);\n })\n .catch(err => commonErrorHandler(err, `Please check your connection`, dispatch));\n});\n\nexport const getRelease = createAppAsyncThunk(`${sliceName}/getReleases`, async (name: string, { dispatch, getState }) => {\n const releaseResponse = await GeneralApi.get<ReceivedRelease>(`${deploymentsApiUrlV2}/deployments/releases/${name}`);\n const { data: release } = releaseResponse;\n if (release) {\n const stateRelease = getReleasesById(getState())[release.name!] || {};\n await dispatch(actions.receiveRelease(flattenRelease(release, stateRelease)));\n }\n return Promise.resolve(null);\n});\n\nexport const updateReleaseInfo = createAppAsyncThunk(\n `${sliceName}/updateReleaseInfo`,\n ({ name, info }: { info: ReleaseUpdate; name: string }, { dispatch, getState }) =>\n GeneralApi.patch(`${deploymentsApiUrlV2}/deployments/releases/${name}`, info)\n .catch(err => commonErrorHandler(err, `Release details couldn't be updated.`, dispatch))\n .then(() =>\n Promise.all([\n dispatch(actions.receiveRelease({ ...getReleasesById(getState())[name], ...info, name })),\n dispatch(setSnackbar({ message: 'Release details were updated successfully.', autoHideDuration: TIMEOUTS.fiveSeconds, action: '' }))\n ])\n )\n);\n\nexport const setSingleReleaseTags = createAppAsyncThunk(\n `${sliceName}/setSingleReleaseTags`,\n ({ name, tags }: { name: string; tags: Tags }, { dispatch, getState }) =>\n GeneralApi.put(`${deploymentsApiUrlV2}/deployments/releases/${name}/tags`, tags).then(() =>\n Promise.resolve(dispatch(actions.receiveRelease({ ...getReleasesById(getState())[name], name, tags })))\n )\n);\n\nexport const setReleaseTags = createAppAsyncThunk(`${sliceName}/setReleaseTags`, ({ name, tags = [] }: { name: string; tags: Tags }, { dispatch }) =>\n dispatch(setSingleReleaseTags({ name, tags }))\n .catch(err => commonErrorHandler(err, `Release tags couldn't be set.`, dispatch))\n .then(() => {\n dispatch(setSnackbar({ message: 'Release tags were set successfully.', autoHideDuration: TIMEOUTS.fiveSeconds, action: '' }));\n dispatchDelayed({ action: getExistingReleaseTags(), dispatch });\n })\n);\n\nexport const setReleasesTags = createAppAsyncThunk(\n `${sliceName}/setReleasesTags`,\n ({ releases, tags = [] }: { releases: Release[]; tags: Tags }, { dispatch }) => {\n const addRequests = releases.reduce<Promise<ReturnType<AppDispatch> | unknown>[]>((accu, release) => {\n accu.push(dispatch(setSingleReleaseTags({ name: release.name, tags: [...new Set([...(release.tags ? release.tags : []), ...tags])] })));\n return accu;\n }, []);\n return Promise.all(addRequests)\n .catch(err => commonErrorHandler(err, `Releases couldn't be tagged.`, dispatch))\n .then(() => {\n dispatch(setSnackbar({ message: 'Releases were tagged successfully.', autoHideDuration: TIMEOUTS.fiveSeconds, action: '' }));\n dispatchDelayed({ action: getExistingReleaseTags(), dispatch });\n });\n }\n);\n\nexport const getExistingSoftwareTags = createAppAsyncThunk(`${sliceName}/getSoftwareTags`, async (kind: SoftwareKind | undefined, { dispatch }) => {\n const { data: tags } = await GeneralApi.get<Tags>(`${deploymentsApiUrlV1alpha1}/software/tags`, { params: { kind } }).catch(err =>\n commonErrorHandler(err, `Existing ${kind ?? 'software'} tags couldn't be retrieved.`, dispatch)\n );\n if (kind) {\n return tags;\n }\n dispatch(actions.receiveSoftwareTags(tags));\n});\n\nexport const getExistingReleaseTags = createAppAsyncThunk(`${sliceName}/getReleaseTags`, async (_, { dispatch }) => {\n const tags = (await dispatch(getExistingSoftwareTags('release')).unwrap()) ?? [];\n dispatch(actions.receiveReleaseTags(tags));\n});\n\nexport const getUpdateTypes = createAppAsyncThunk(`${sliceName}/getReleaseTypes`, (_, { dispatch }) =>\n GeneralApi.get<UpdateTypes>(`${deploymentsApiUrlV2}/releases/all/types`)\n .catch(err => commonErrorHandler(err, `Existing update types couldn't be retrieved.`, dispatch))\n .then(({ data: types }) => Promise.resolve(dispatch(actions.receiveReleaseTypes(types))))\n);\n\ninterface DeltaListingProps {\n page?: number;\n perPage?: number;\n sort?: SortOptions;\n}\nexport const getDeltaGenerationJobs = createAppAsyncThunk(`${sliceName}/getDeltaGenerationJobs`, (options: DeltaListingProps = {}, { dispatch }) => {\n const { page = defaultPage, perPage = defaultPerPage, sort = {} } = options;\n const { key: sortKey, direction: sortDirection } = sort as SortOptions;\n const sortParam = sortKey && sortDirection ? `${sortKey}:${sortDirection}` : undefined;\n return GeneralApi.get<DeltaJobsListItem[]>(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs`, { params: { page, per_page: perPage, sort: sortParam } })\n .then(({ data, headers }) => {\n const total = Number(headers[headerNames.total]) || data.length;\n const result = { jobs: data, total };\n return Promise.all([dispatch(actions.receivedDeltaJobs(result)), result]);\n })\n .catch(err => commonErrorHandler(err, 'There was an error retrieving delta generation jobs:', dispatch));\n});\n\nexport const getDeltaGenerationJobDetails = createAppAsyncThunk(`${sliceName}/getDeltaGenerationJobDetails`, (jobId, { dispatch }) =>\n GeneralApi.get<DeltaJobDetailsItem>(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs/${jobId}`)\n .then(({ data }) => dispatch(actions.receivedDeltaJobDetails({ ...data, id: jobId })))\n .catch(err => commonErrorHandler(err, 'There was an error retrieving delta generation job details:', dispatch))\n);\n\n/* Manifests */\n\nconst manifestSortingDefaults = { direction: SORTING_OPTIONS.desc, key: 'modified' };\n\nconst transformReceivedSoftware = (items: Software[] | Manifest[]) => Object.fromEntries(items.map(item => [item.name, item]));\n\nconst manifestListRetrieval = (config: Partial<ManifestsList>) => {\n const { searchTerm = '', page = defaultPage, perPage = defaultPerPage, sort = manifestSortingDefaults, selectedTags = [] } = config;\n const { key: attribute, direction } = sort;\n const filterQuery = formatReleases({ pageState: { searchTerm, selectedTags } });\n const sorting = attribute ? `sort=${attribute}:${direction}`.toLowerCase() : '';\n return GeneralApi.get<Array<Manifest>>(\n `${deploymentsApiUrlV1alpha1}/manifests?${[`page=${page}`, `per_page=${perPage}`, filterQuery, sorting].filter(i => i).join('&')}`\n );\n};\n\nconst deductManifestSearchState = (receivedManifests: Manifest[], config, total: number, state: ReleaseSliceType) => {\n let manifestsListState = { ...state.manifestsList };\n const { searchTerm, selectedTags = [], sort = {} } = config;\n const sortedManifests = Object.values(receivedManifests).sort(customSort(sort.direction === SORTING_OPTIONS.desc, sort.key));\n const manifestIds = sortedManifests.map(item => item.name);\n const isFiltering = !!(searchTerm || selectedTags.length);\n manifestsListState = {\n ...manifestsListState,\n manifestIds,\n searchTotal: isFiltering ? total : state.manifestsList.searchTotal,\n total: !isFiltering ? total : state.manifestsList.total\n };\n return manifestsListState;\n};\n\ntype ManifestCreationPayload = {\n file: File;\n meta: {\n description?: string;\n tags?: string[];\n };\n};\n\nconst toManifestCreationData = ({ description, tags }: ManifestCreationPayload['meta']) => {\n const formData = new FormData();\n if (description) {\n formData.append('description', description);\n }\n if (tags?.length) {\n formData.append('tags', tags.join(','));\n }\n return formData;\n};\n\nconst maybeUpdateManifestTags = (maybeTags, dispatch) => {\n if (!maybeTags?.length) {\n return;\n }\n dispatchDelayed({ action: getExistingManifestTags(), dispatch });\n};\n\nexport const uploadManifest = createAppAsyncThunk(\n `${sliceName}/uploadManifest`,\n async ({ file, meta }: ManifestCreationPayload, { dispatch, rejectWithValue }) => {\n const formData = toManifestCreationData(meta);\n formData.append('size', file.size.toString());\n formData.append('artifact', file);\n const uploadId = uuid();\n const cancelSource = new AbortController();\n dispatch(initUpload({ id: uploadId, upload: { name: file.name, size: file.size, progress: 0, cancelSource } }));\n try {\n const { headers } = await GeneralApi.upload(\n `${deploymentsApiUrlV1alpha1}/manifests`,\n formData,\n e => dispatch(uploadProgress({ id: uploadId, progress: progress(e) })),\n cancelSource.signal\n );\n const location = headers[headerNames.location] as string;\n await pollLocation(location);\n await dispatch(getManifests()).unwrap();\n dispatch(setSnackbar({ message: 'Upload successful', autoHideDuration: TIMEOUTS.fiveSeconds }));\n } catch (err) {\n if (isCancel(err)) {\n return dispatch(setSnackbar({ message: 'The upload has been cancelled', autoHideDuration: TIMEOUTS.fiveSeconds }));\n }\n return commonErrorHandler(err, `Manifest couldn't be uploaded.`, dispatch).catch(e => rejectWithValue(extractErrorMessage(e)));\n } finally {\n dispatch(cleanUpUpload(uploadId));\n }\n maybeUpdateManifestTags(meta.tags, dispatch);\n }\n);\n\nexport const generateManifest = createAppAsyncThunk(`${sliceName}/generateManifest`, async ({ file, meta }: ManifestCreationPayload, { dispatch }) => {\n const formData = toManifestCreationData(meta);\n formData.append('file', file);\n const uploadId = uuid();\n const cancelSource = new AbortController();\n dispatch(initUpload({ id: uploadId, upload: { name: file.name, size: file.size, progress: 0, cancelSource } }));\n try {\n const { headers } = await GeneralApi.upload(\n `${deploymentsApiUrlV1alpha1}/manifests/generate`,\n formData,\n e => dispatch(uploadProgress({ id: uploadId, progress: progress(e) })),\n cancelSource.signal\n );\n const location = headers[headerNames.location] as string;\n await pollLocation(location);\n await dispatch(getManifests()).unwrap();\n dispatch(setSnackbar({ message: 'Upload successful', autoHideDuration: TIMEOUTS.fiveSeconds }));\n } catch (err) {\n if (isCancel(err)) {\n return dispatch(setSnackbar({ message: 'The manifest generation has been cancelled', autoHideDuration: TIMEOUTS.fiveSeconds }));\n }\n return commonErrorHandler(err, `Manifest couldn't be generated.`, dispatch);\n } finally {\n dispatch(cleanUpUpload(uploadId));\n }\n await maybeUpdateManifestTags(meta.tags, dispatch);\n});\n\nexport const getExistingManifestTags = createAppAsyncThunk(`${sliceName}/getManifestTags`, async (_, { dispatch }) => {\n const tags = (await dispatch(getExistingSoftwareTags('manifest')).unwrap()) ?? [];\n dispatch(actions.receiveManifestTags(tags));\n});\n\nexport const getManifests = createAppAsyncThunk(\n `${sliceName}/getManifests`,\n async (passedConfig: Partial<ManifestsList> | undefined = {}, { dispatch, getState }) => {\n const config = { ...getState().releases.manifestsList, ...passedConfig };\n const { data: receivedManifests = [], headers = {} } = await manifestListRetrieval(config).catch(err =>\n commonErrorHandler(err, 'There was an error while retrieving manifests', dispatch)\n );\n const total = headers[headerNames.total] ? Number(headers[headerNames.total]) : 0;\n const state = getState().releases;\n const flatManifests: Record<string, Manifest> = transformReceivedSoftware(receivedManifests);\n const combinedManifests = { ...state.manifestsById, ...flatManifests };\n dispatch(actions.receiveManifests(combinedManifests));\n const manifestsListState = deductManifestSearchState(receivedManifests, config, total, state);\n dispatch(actions.setManifestsListState(manifestsListState));\n return combinedManifests;\n }\n);\n\nexport const getManifest = createAppAsyncThunk(`${sliceName}/getManifest`, async (name: string, { dispatch, getState }) => {\n const { data } = await GeneralApi.get<Manifest>(`${deploymentsApiUrlV1alpha1}/manifests/${name}`);\n if (!data) {\n return null;\n }\n const stateManifest = getManifestsById(getState())[data.name] || {};\n const manifest = { ...stateManifest, ...data };\n dispatch(actions.receiveManifest(manifest));\n return manifest;\n});\n\nexport const updateManifestInfo = createAppAsyncThunk(\n `${sliceName}/updateManifestInfo`,\n async ({ name, info }: { info: ManifestUpdate; name: string }, { dispatch, getState }) => {\n await GeneralApi.patch(`${deploymentsApiUrlV1alpha1}/manifests/${name}`, info).catch(err =>\n commonErrorHandler(err, `Manifest details couldn't be updated.`, dispatch)\n );\n dispatch(actions.receiveManifest({ ...getManifestsById(getState())[name], ...info, name }));\n dispatch(setSnackbar('Manifest details were updated successfully.'));\n maybeUpdateManifestTags(info.tags, dispatch);\n }\n);\n\nexport const removeManifests = createAppAsyncThunk(`${sliceName}/removeManifests`, async (names: string[], { dispatch, getState }) => {\n const nameParams = names.map(name => `name=${encodeURIComponent(name)}`).join('&');\n await GeneralApi.delete(`${deploymentsApiUrlV1alpha1}/manifests?${nameParams}`).catch(err =>\n commonErrorHandler(err, `Manifest${names.length > 1 ? 's' : ''} couldn't be deleted.`, dispatch)\n );\n const manifestsList = getManifestsListState(getState());\n const manifestIds = manifestsList.manifestIds.filter(id => !names.includes(id));\n dispatch(actions.removeManifests(names));\n dispatch(\n setManifestsListState({\n manifestIds,\n searchTotal: manifestsList.searchTerm ? manifestsList.searchTotal - names.length : manifestsList.searchTotal,\n total: manifestsList.total - names.length\n })\n );\n dispatch(setSnackbar({ message: `${pluralize('Manifest', names.length)} deleted successfully.`, autoHideDuration: TIMEOUTS.fiveSeconds, action: '' }));\n dispatch(selectManifest(null));\n await dispatch(getManifests()).unwrap();\n});\n\nexport const removeManifest = createAppAsyncThunk(`${sliceName}/removeManifest`, (name: string, { dispatch }) => dispatch(removeManifests([name])));\n\nexport const selectManifest = createAppAsyncThunk(`${sliceName}/selectManifest`, async (manifest: Manifest | string | null, { dispatch }) => {\n const name = (manifest && typeof manifest === 'object' ? manifest.name : manifest) || null;\n dispatch(actions.selectedManifest(name));\n if (name) {\n await dispatch(getManifest(name)).unwrap();\n }\n});\n\nexport const setManifestsListState = createAppAsyncThunk(\n `${sliceName}/setManifestsListState`,\n async (selectionState: Partial<ManifestsList>, { dispatch, getState }) => {\n const currentState = getState().releases.manifestsList;\n const nextState = {\n ...currentState,\n ...selectionState,\n sort: { ...currentState.sort, ...selectionState.sort } as SortOptions\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isLoading: currentLoading, ...currentRequestState } = currentState;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isLoading: selectionLoading, ...selectionRequestState } = nextState;\n if (!deepCompare(currentRequestState, selectionRequestState)) {\n nextState.isLoading = true;\n dispatch(getManifests(nextState)) // don't await here as this would otherwise overwrite setting the `nextState` below\n .unwrap()\n .finally(() => dispatch(setManifestsListState({ isLoading: false })).unwrap());\n }\n if (currentState.page !== nextState.page || currentState.perPage > nextState.perPage || !deepCompare(currentState.sort, nextState.sort)) {\n nextState.selection = [];\n }\n dispatch(actions.setManifestsListState(nextState));\n }\n);\n\n/* Software */\n\nconst softwareSortingDefaults = { direction: SORTING_OPTIONS.desc, key: 'modified' };\n\nconst softwareListRetrieval = (config: Partial<SoftwareList>) => {\n const { searchTerm = '', kind, page = defaultPage, perPage = defaultPerPage, sort = softwareSortingDefaults, selectedTags = [], type = '' } = config;\n const { key: attribute, direction } = sort;\n const filterQuery = formatReleases({ pageState: { selectedTags } });\n const sorting = attribute ? `sort=${attribute}:${direction}`.toLowerCase() : '';\n const kindQuery = kind ? `kind=${encodeURIComponent(kind)}` : '';\n const updateTypeQuery = type ? `update_type=${encodeURIComponent(type)}` : '';\n const namePrefixQuery = searchTerm ? `name_prefix=${encodeURIComponent(searchTerm)}` : '';\n return GeneralApi.get<Array<Software>>(\n `${deploymentsApiUrlV1alpha1}/software?${[`page=${page}`, `per_page=${perPage}`, namePrefixQuery, kindQuery, filterQuery, updateTypeQuery, sorting].filter(i => i).join('&')}`\n );\n};\n\nconst deductSoftwareSearchState = (receivedSoftware: Software[], config, total: number, state: ReleaseSliceType) => {\n let softwareListState = { ...state.softwareList };\n const { searchTerm, kind, selectedTags = [], sort = {}, type } = config;\n const sortedSoftware = Object.values(receivedSoftware).sort(customSort(sort.direction === SORTING_OPTIONS.desc, sort.key));\n const softwareIds = sortedSoftware.map(item => item.name);\n const isFiltering = !!(searchTerm || kind || selectedTags.length || type);\n softwareListState = {\n ...softwareListState,\n softwareIds,\n searchTotal: isFiltering ? total : state.softwareList.searchTotal,\n total: !isFiltering ? total : state.softwareList.total\n };\n return softwareListState;\n};\n\nexport const getSoftware = createAppAsyncThunk(\n `${sliceName}/getSoftware`,\n async (passedConfig: Partial<SoftwareList> | undefined = {}, { dispatch, getState }) => {\n const config = { ...getSoftwareListState(getState()), ...passedConfig };\n const { data: receivedSoftware = [], headers = {} } = await softwareListRetrieval(config).catch(err =>\n commonErrorHandler(err, 'There was an error while listing software', dispatch)\n );\n const total = headers[headerNames.total] ? Number(headers[headerNames.total]) : 0;\n const state = getState().releases;\n const flatSoftware: Record<string, Software> = transformReceivedSoftware(receivedSoftware);\n const combinedSoftware = { ...state.softwareById, ...flatSoftware };\n dispatch(actions.receiveSoftwareItems(combinedSoftware));\n const softwareListState = deductSoftwareSearchState(receivedSoftware, config, total, state);\n dispatch(actions.setSoftwareListState(softwareListState));\n return combinedSoftware;\n }\n);\n\nexport const getSoftwareList = createAppAsyncThunk(\n `${sliceName}/getSoftwareList`,\n async (passedConfig: Partial<SoftwareList> | undefined = {}, { dispatch }) => {\n const { data: receivedSoftware = [], headers = {} } = await softwareListRetrieval(passedConfig).catch(err =>\n commonErrorHandler(err, 'There was an error while listing software', dispatch)\n );\n const total = headers[headerNames.total] ? Number(headers[headerNames.total]) : 0;\n return { software: receivedSoftware, total };\n }\n);\n\nexport const setSoftwareListState = createAppAsyncThunk(\n `${sliceName}/setSoftwareListState`,\n async (selectionState: Partial<SoftwareList>, { dispatch, getState }) => {\n const currentState = getSoftwareListState(getState());\n const nextState = {\n ...currentState,\n ...selectionState,\n sort: { ...currentState.sort, ...selectionState.sort } as SortOptions\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isLoading: currentLoading, ...currentRequestState } = currentState;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isLoading: selectionLoading, ...selectionRequestState } = nextState;\n if (!deepCompare(currentRequestState, selectionRequestState)) {\n nextState.isLoading = true;\n dispatch(getSoftware(nextState))\n .unwrap()\n .finally(() => dispatch(setSoftwareListState({ isLoading: false })).unwrap());\n }\n dispatch(actions.setSoftwareListState(nextState));\n }\n);\n\nexport const checkReleasesExistence = createAppAsyncThunk(`${sliceName}/checkReleasesExistence`, async (names: string[], { dispatch }) => {\n if (!names.length) {\n return {};\n }\n const nameFilter = names.map(name => `name=${encodeURIComponent(name)}`).join('&');\n const { data = [] } = await GeneralApi.get<Array<Software>>(`${deploymentsApiUrlV1alpha1}/software?${nameFilter}&kind=release&page=1&per_page=100`).catch(\n err => commonErrorHandler(err, 'Checking release existence failed:', dispatch)\n );\n const existingNames = new Set(data.map(item => item.name));\n return names.reduce<Record<string, boolean>>((accu, name) => {\n accu[name] = existingNames.has(name);\n return accu;\n }, {});\n});\n"],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { T as SortOptions } from "../constants-
|
|
2
|
-
import { a as ReleasesList, n as ManifestsList, r as Release, s as SoftwareList } from "../index-
|
|
3
|
-
import { i as SnackbarContent } from "../index-
|
|
4
|
-
import { r as RootState, t as AppDispatch } from "../store-
|
|
1
|
+
import { T as SortOptions } from "../constants-Rl3FJzFf.cjs";
|
|
2
|
+
import { a as ReleasesList, n as ManifestsList, r as Release, s as SoftwareList } from "../index-DiAjzARZ.cjs";
|
|
3
|
+
import { i as SnackbarContent } from "../index-DeOpb2oK.cjs";
|
|
4
|
+
import { r as RootState, t as AppDispatch } from "../store-DquBGT7j.cjs";
|
|
5
5
|
import { ArtifactUpdateV1, DeltaJobsListItem, Manifest, ManifestUpdate, ReleaseUpdate, Software, Tags } from "@northern.tech/types/MenderTypes";
|
|
6
|
-
|
|
7
6
|
//#region src/releasesSlice/thunks.d.ts
|
|
8
7
|
declare const getArtifactInstallCount: import("@reduxjs/toolkit").AsyncThunk<{
|
|
9
8
|
payload: Release;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { T as SortOptions } from "../constants-
|
|
2
|
-
import { a as ReleasesList, n as ManifestsList, r as Release, s as SoftwareList } from "../index-
|
|
3
|
-
import { i as SnackbarContent } from "../index-
|
|
4
|
-
import { r as RootState, t as AppDispatch } from "../store-
|
|
1
|
+
import { T as SortOptions } from "../constants-B_H4squx.js";
|
|
2
|
+
import { a as ReleasesList, n as ManifestsList, r as Release, s as SoftwareList } from "../index-C8uiyxnb.js";
|
|
3
|
+
import { i as SnackbarContent } from "../index-Bs0c1-WY.js";
|
|
4
|
+
import { r as RootState, t as AppDispatch } from "../store-B2_hrsgP.js";
|
|
5
5
|
import { ArtifactUpdateV1, DeltaJobsListItem, Manifest, ManifestUpdate, ReleaseUpdate, Software, Tags } from "@northern.tech/types/MenderTypes";
|
|
6
|
-
|
|
7
6
|
//#region src/releasesSlice/thunks.d.ts
|
|
8
7
|
declare const getArtifactInstallCount: import("@reduxjs/toolkit").AsyncThunk<{
|
|
9
8
|
payload: Release;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { E as headerNames,
|
|
1
|
+
import { E as headerNames, O as inventoryApiUrlV2, Pt as TIMEOUTS, b as deploymentsApiUrlV2, f as SORTING_OPTIONS, l as DEVICE_LIST_DEFAULTS, pt as emptyFilter, v as deploymentsApiUrl, y as deploymentsApiUrlV1alpha1 } from "../constants-CerzXHnQ.js";
|
|
2
2
|
import { ARTIFACT_GENERATION_TYPE } from "./constants.js";
|
|
3
3
|
import { actions, sliceName } from "./index.js";
|
|
4
4
|
import actions_default from "../actions.js";
|
|
@@ -15,7 +15,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
}
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
|
|
19
19
|
value: mod,
|
|
20
20
|
enumerable: true
|
|
21
21
|
}) : target, mod));
|
package/dist/selectors.cjs
CHANGED
|
@@ -133,6 +133,7 @@ exports.getTenantCapabilities = require_commonSelectors.getTenantCapabilities;
|
|
|
133
133
|
exports.getTenantListWithLimits = require_organizationSlice_selectors.getTenantListWithLimits;
|
|
134
134
|
exports.getTenantsList = require_organizationSlice_selectors.getTenantsList;
|
|
135
135
|
exports.getTestDeviceCount = require_devicesSlice_selectors.getTestDeviceCount;
|
|
136
|
+
exports.getTestDeviceLimit = require_devicesSlice_selectors.getTestDeviceLimit;
|
|
136
137
|
exports.getTooltipsById = require_usersSlice_selectors.getTooltipsById;
|
|
137
138
|
exports.getTooltipsState = require_usersSlice_selectors.getTooltipsState;
|
|
138
139
|
exports.getTrackerCode = require_appSlice_selectors.getTrackerCode;
|
package/dist/selectors.d.cts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { getAppInitDone, getCommit, getDocsVersion, getFeatures, getFeedbackProbability, getHostAddress, getHostedAnnouncement, getIsFirstLogin, getIsPreview, getIsUploading, getRecaptchaKey, getSearchState, getSearchedDevices, getSentryConfig, getSnackbar, getStripeKey, getTrackerCode, getUploads, getVersionInformation } from "./appSlice/selectors.cjs";
|
|
2
2
|
import { getAuditlogDevice, getAvailableIssueOptionsByType, getDemoDeviceAddress, getDeploymentRelease, getDeviceConfigDeployment, getDeviceReportsForUser, getFilterAttributes, getGroupNames, getIsEnterprise, getMappedDevicesList, getOnboardingState, getRelevantRoles, getSelectedDeploymentData, getShowSecurityAlert, getTenantCapabilities, getUserCapabilities, getUserRoles } from "./commonSelectors.cjs";
|
|
3
3
|
import { DEPLOYMENT_CUTOFF, getDeploymentById, getDeploymentsById, getDeploymentsByStatus, getDeploymentsSelectionState, getMappedDeploymentSelection, getRecentDeployments, getSelectedDeploymentDeviceIds } from "./deploymentsSlice/selectors.cjs";
|
|
4
|
-
import { getAcceptedDevices, getAttributesList, getCombinedLimit, getDeviceById, getDeviceCountsByStatus, getDeviceFilters, getDeviceIdentityAttributes, getDeviceLimitStats, getDeviceLimits, getDeviceListState, getDeviceReports, getDeviceTypes, getDevicesById, getDevicesByStatus, getEnabledTiers, getFilteringAttributes, getGroupData, getGroups, getGroupsById, getGroupsByIdWithoutUngrouped, getLimitMaxed, getListedDevices, getSelectedGroup, getSelectedGroupInfo, getSortedFilteringAttributes, getTestDeviceCount } from "./devicesSlice/selectors.cjs";
|
|
4
|
+
import { getAcceptedDevices, getAttributesList, getCombinedLimit, getDeviceById, getDeviceCountsByStatus, getDeviceFilters, getDeviceIdentityAttributes, getDeviceLimitStats, getDeviceLimits, getDeviceListState, getDeviceReports, getDeviceTypes, getDevicesById, getDevicesByStatus, getEnabledTiers, getFilteringAttributes, getGroupData, getGroups, getGroupsById, getGroupsByIdWithoutUngrouped, getLimitMaxed, getListedDevices, getSelectedGroup, getSelectedGroupInfo, getSortedFilteringAttributes, getTestDeviceCount, getTestDeviceLimit } from "./devicesSlice/selectors.cjs";
|
|
5
5
|
import { getIssueCountsByType } from "./monitorSlice/selectors.cjs";
|
|
6
6
|
import { getOnboarding } from "./onboardingSlice/selectors.cjs";
|
|
7
7
|
import { getAuditLog, getAuditLogEntry, getAuditLogSelectionState, getAuditlogState, getBillingProfile, getCard, getDeviceTwinIntegrations, getDisabledTiers, getExternalIntegrations, getIsServiceProvider, getOrganization, getProducts, getSpLimits, getSsoConfig, getSubscription, getTenantListWithLimits, getTenantsList, getWebhookEventInfo, getWebhookEventTotal, getWebhookEvents, getWebhooks } from "./organizationSlice/selectors.cjs";
|
|
8
8
|
import { getActiveTab, getDeltaJobById, getDeltaJobsById, getDeltaJobsListState, getHasManifests, getHasReleases, getHasSoftware, getManifestTags, getManifestTagsById, getManifestsById, getManifestsList, getManifestsListState, getReleaseListState, getReleaseTags, getReleaseTagsById, getReleasesById, getReleasesList, getSelectedJob, getSelectedManifest, getSelectedManifests, getSelectedRelease, getSelectedReleases, getSoftwareById, getSoftwareList, getSoftwareListState, getSoftwareTags, getSoftwareTagsById, getUpdateTypes } from "./releasesSlice/selectors.cjs";
|
|
9
9
|
import { getCurrentSession, getCurrentUser, getGlobalSettings, getGlobalSettingsInitialized, getHas2FA, getIdAttribute, getIsDarkMode, getOfflineThresholdSettings, getReadAllHelptips, getRolesById, getRolesInitialized, getRolesList, getSecurityAlertDismissedTimestamp, getSelectedDeviceAttribute, getTooltipsById, getTooltipsState, getUserSettings, getUserSettingsInitialized, getUsersById, getUsersList } from "./usersSlice/selectors.cjs";
|
|
10
|
-
export { DEPLOYMENT_CUTOFF, getAcceptedDevices, getActiveTab, getAppInitDone, getAttributesList, getAuditLog, getAuditLogEntry, getAuditLogSelectionState, getAuditlogDevice, getAuditlogState, getAvailableIssueOptionsByType, getBillingProfile, getCard, getCombinedLimit, getCommit, getCurrentSession, getCurrentUser, getDeltaJobById, getDeltaJobsById, getDeltaJobsListState, getDemoDeviceAddress, getDeploymentById, getDeploymentRelease, getDeploymentsById, getDeploymentsByStatus, getDeploymentsSelectionState, getDeviceById, getDeviceConfigDeployment, getDeviceCountsByStatus, getDeviceFilters, getDeviceIdentityAttributes, getDeviceLimitStats, getDeviceLimits, getDeviceListState, getDeviceReports, getDeviceReportsForUser, getDeviceTwinIntegrations, getDeviceTypes, getDevicesById, getDevicesByStatus, getDisabledTiers, getDocsVersion, getEnabledTiers, getExternalIntegrations, getFeatures, getFeedbackProbability, getFilterAttributes, getFilteringAttributes, getGlobalSettings, getGlobalSettingsInitialized, getGroupData, getGroupNames, getGroups, getGroupsById, getGroupsByIdWithoutUngrouped, getHas2FA, getHasManifests, getHasReleases, getHasSoftware, getHostAddress, getHostedAnnouncement, getIdAttribute, getIsDarkMode, getIsEnterprise, getIsFirstLogin, getIsPreview, getIsServiceProvider, getIsUploading, getIssueCountsByType, getLimitMaxed, getListedDevices, getManifestTags, getManifestTagsById, getManifestsById, getManifestsList, getManifestsListState, getMappedDeploymentSelection, getMappedDevicesList, getOfflineThresholdSettings, getOnboarding, getOnboardingState, getOrganization, getProducts, getReadAllHelptips, getRecaptchaKey, getRecentDeployments, getReleaseListState, getReleaseTags, getReleaseTagsById, getReleasesById, getReleasesList, getRelevantRoles, getRolesById, getRolesInitialized, getRolesList, getSearchState, getSearchedDevices, getSecurityAlertDismissedTimestamp, getSelectedDeploymentData, getSelectedDeploymentDeviceIds, getSelectedDeviceAttribute, getSelectedGroup, getSelectedGroupInfo, getSelectedJob, getSelectedManifest, getSelectedManifests, getSelectedRelease, getSelectedReleases, getSentryConfig, getShowSecurityAlert, getSnackbar, getSoftwareById, getSoftwareList, getSoftwareListState, getSoftwareTags, getSoftwareTagsById, getSortedFilteringAttributes, getSpLimits, getSsoConfig, getStripeKey, getSubscription, getTenantCapabilities, getTenantListWithLimits, getTenantsList, getTestDeviceCount, getTooltipsById, getTooltipsState, getTrackerCode, getUpdateTypes, getUploads, getUserCapabilities, getUserRoles, getUserSettings, getUserSettingsInitialized, getUsersById, getUsersList, getVersionInformation, getWebhookEventInfo, getWebhookEventTotal, getWebhookEvents, getWebhooks };
|
|
10
|
+
export { DEPLOYMENT_CUTOFF, getAcceptedDevices, getActiveTab, getAppInitDone, getAttributesList, getAuditLog, getAuditLogEntry, getAuditLogSelectionState, getAuditlogDevice, getAuditlogState, getAvailableIssueOptionsByType, getBillingProfile, getCard, getCombinedLimit, getCommit, getCurrentSession, getCurrentUser, getDeltaJobById, getDeltaJobsById, getDeltaJobsListState, getDemoDeviceAddress, getDeploymentById, getDeploymentRelease, getDeploymentsById, getDeploymentsByStatus, getDeploymentsSelectionState, getDeviceById, getDeviceConfigDeployment, getDeviceCountsByStatus, getDeviceFilters, getDeviceIdentityAttributes, getDeviceLimitStats, getDeviceLimits, getDeviceListState, getDeviceReports, getDeviceReportsForUser, getDeviceTwinIntegrations, getDeviceTypes, getDevicesById, getDevicesByStatus, getDisabledTiers, getDocsVersion, getEnabledTiers, getExternalIntegrations, getFeatures, getFeedbackProbability, getFilterAttributes, getFilteringAttributes, getGlobalSettings, getGlobalSettingsInitialized, getGroupData, getGroupNames, getGroups, getGroupsById, getGroupsByIdWithoutUngrouped, getHas2FA, getHasManifests, getHasReleases, getHasSoftware, getHostAddress, getHostedAnnouncement, getIdAttribute, getIsDarkMode, getIsEnterprise, getIsFirstLogin, getIsPreview, getIsServiceProvider, getIsUploading, getIssueCountsByType, getLimitMaxed, getListedDevices, getManifestTags, getManifestTagsById, getManifestsById, getManifestsList, getManifestsListState, getMappedDeploymentSelection, getMappedDevicesList, getOfflineThresholdSettings, getOnboarding, getOnboardingState, getOrganization, getProducts, getReadAllHelptips, getRecaptchaKey, getRecentDeployments, getReleaseListState, getReleaseTags, getReleaseTagsById, getReleasesById, getReleasesList, getRelevantRoles, getRolesById, getRolesInitialized, getRolesList, getSearchState, getSearchedDevices, getSecurityAlertDismissedTimestamp, getSelectedDeploymentData, getSelectedDeploymentDeviceIds, getSelectedDeviceAttribute, getSelectedGroup, getSelectedGroupInfo, getSelectedJob, getSelectedManifest, getSelectedManifests, getSelectedRelease, getSelectedReleases, getSentryConfig, getShowSecurityAlert, getSnackbar, getSoftwareById, getSoftwareList, getSoftwareListState, getSoftwareTags, getSoftwareTagsById, getSortedFilteringAttributes, getSpLimits, getSsoConfig, getStripeKey, getSubscription, getTenantCapabilities, getTenantListWithLimits, getTenantsList, getTestDeviceCount, getTestDeviceLimit, getTooltipsById, getTooltipsState, getTrackerCode, getUpdateTypes, getUploads, getUserCapabilities, getUserRoles, getUserSettings, getUserSettingsInitialized, getUsersById, getUsersList, getVersionInformation, getWebhookEventInfo, getWebhookEventTotal, getWebhookEvents, getWebhooks };
|
package/dist/selectors.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { getAppInitDone, getCommit, getDocsVersion, getFeatures, getFeedbackProbability, getHostAddress, getHostedAnnouncement, getIsFirstLogin, getIsPreview, getIsUploading, getRecaptchaKey, getSearchState, getSearchedDevices, getSentryConfig, getSnackbar, getStripeKey, getTrackerCode, getUploads, getVersionInformation } from "./appSlice/selectors.js";
|
|
2
2
|
import { getAuditlogDevice, getAvailableIssueOptionsByType, getDemoDeviceAddress, getDeploymentRelease, getDeviceConfigDeployment, getDeviceReportsForUser, getFilterAttributes, getGroupNames, getIsEnterprise, getMappedDevicesList, getOnboardingState, getRelevantRoles, getSelectedDeploymentData, getShowSecurityAlert, getTenantCapabilities, getUserCapabilities, getUserRoles } from "./commonSelectors.js";
|
|
3
3
|
import { DEPLOYMENT_CUTOFF, getDeploymentById, getDeploymentsById, getDeploymentsByStatus, getDeploymentsSelectionState, getMappedDeploymentSelection, getRecentDeployments, getSelectedDeploymentDeviceIds } from "./deploymentsSlice/selectors.js";
|
|
4
|
-
import { getAcceptedDevices, getAttributesList, getCombinedLimit, getDeviceById, getDeviceCountsByStatus, getDeviceFilters, getDeviceIdentityAttributes, getDeviceLimitStats, getDeviceLimits, getDeviceListState, getDeviceReports, getDeviceTypes, getDevicesById, getDevicesByStatus, getEnabledTiers, getFilteringAttributes, getGroupData, getGroups, getGroupsById, getGroupsByIdWithoutUngrouped, getLimitMaxed, getListedDevices, getSelectedGroup, getSelectedGroupInfo, getSortedFilteringAttributes, getTestDeviceCount } from "./devicesSlice/selectors.js";
|
|
4
|
+
import { getAcceptedDevices, getAttributesList, getCombinedLimit, getDeviceById, getDeviceCountsByStatus, getDeviceFilters, getDeviceIdentityAttributes, getDeviceLimitStats, getDeviceLimits, getDeviceListState, getDeviceReports, getDeviceTypes, getDevicesById, getDevicesByStatus, getEnabledTiers, getFilteringAttributes, getGroupData, getGroups, getGroupsById, getGroupsByIdWithoutUngrouped, getLimitMaxed, getListedDevices, getSelectedGroup, getSelectedGroupInfo, getSortedFilteringAttributes, getTestDeviceCount, getTestDeviceLimit } from "./devicesSlice/selectors.js";
|
|
5
5
|
import { getIssueCountsByType } from "./monitorSlice/selectors.js";
|
|
6
6
|
import { getOnboarding } from "./onboardingSlice/selectors.js";
|
|
7
7
|
import { getAuditLog, getAuditLogEntry, getAuditLogSelectionState, getAuditlogState, getBillingProfile, getCard, getDeviceTwinIntegrations, getDisabledTiers, getExternalIntegrations, getIsServiceProvider, getOrganization, getProducts, getSpLimits, getSsoConfig, getSubscription, getTenantListWithLimits, getTenantsList, getWebhookEventInfo, getWebhookEventTotal, getWebhookEvents, getWebhooks } from "./organizationSlice/selectors.js";
|
|
8
8
|
import { getActiveTab, getDeltaJobById, getDeltaJobsById, getDeltaJobsListState, getHasManifests, getHasReleases, getHasSoftware, getManifestTags, getManifestTagsById, getManifestsById, getManifestsList, getManifestsListState, getReleaseListState, getReleaseTags, getReleaseTagsById, getReleasesById, getReleasesList, getSelectedJob, getSelectedManifest, getSelectedManifests, getSelectedRelease, getSelectedReleases, getSoftwareById, getSoftwareList, getSoftwareListState, getSoftwareTags, getSoftwareTagsById, getUpdateTypes } from "./releasesSlice/selectors.js";
|
|
9
9
|
import { getCurrentSession, getCurrentUser, getGlobalSettings, getGlobalSettingsInitialized, getHas2FA, getIdAttribute, getIsDarkMode, getOfflineThresholdSettings, getReadAllHelptips, getRolesById, getRolesInitialized, getRolesList, getSecurityAlertDismissedTimestamp, getSelectedDeviceAttribute, getTooltipsById, getTooltipsState, getUserSettings, getUserSettingsInitialized, getUsersById, getUsersList } from "./usersSlice/selectors.js";
|
|
10
|
-
export { DEPLOYMENT_CUTOFF, getAcceptedDevices, getActiveTab, getAppInitDone, getAttributesList, getAuditLog, getAuditLogEntry, getAuditLogSelectionState, getAuditlogDevice, getAuditlogState, getAvailableIssueOptionsByType, getBillingProfile, getCard, getCombinedLimit, getCommit, getCurrentSession, getCurrentUser, getDeltaJobById, getDeltaJobsById, getDeltaJobsListState, getDemoDeviceAddress, getDeploymentById, getDeploymentRelease, getDeploymentsById, getDeploymentsByStatus, getDeploymentsSelectionState, getDeviceById, getDeviceConfigDeployment, getDeviceCountsByStatus, getDeviceFilters, getDeviceIdentityAttributes, getDeviceLimitStats, getDeviceLimits, getDeviceListState, getDeviceReports, getDeviceReportsForUser, getDeviceTwinIntegrations, getDeviceTypes, getDevicesById, getDevicesByStatus, getDisabledTiers, getDocsVersion, getEnabledTiers, getExternalIntegrations, getFeatures, getFeedbackProbability, getFilterAttributes, getFilteringAttributes, getGlobalSettings, getGlobalSettingsInitialized, getGroupData, getGroupNames, getGroups, getGroupsById, getGroupsByIdWithoutUngrouped, getHas2FA, getHasManifests, getHasReleases, getHasSoftware, getHostAddress, getHostedAnnouncement, getIdAttribute, getIsDarkMode, getIsEnterprise, getIsFirstLogin, getIsPreview, getIsServiceProvider, getIsUploading, getIssueCountsByType, getLimitMaxed, getListedDevices, getManifestTags, getManifestTagsById, getManifestsById, getManifestsList, getManifestsListState, getMappedDeploymentSelection, getMappedDevicesList, getOfflineThresholdSettings, getOnboarding, getOnboardingState, getOrganization, getProducts, getReadAllHelptips, getRecaptchaKey, getRecentDeployments, getReleaseListState, getReleaseTags, getReleaseTagsById, getReleasesById, getReleasesList, getRelevantRoles, getRolesById, getRolesInitialized, getRolesList, getSearchState, getSearchedDevices, getSecurityAlertDismissedTimestamp, getSelectedDeploymentData, getSelectedDeploymentDeviceIds, getSelectedDeviceAttribute, getSelectedGroup, getSelectedGroupInfo, getSelectedJob, getSelectedManifest, getSelectedManifests, getSelectedRelease, getSelectedReleases, getSentryConfig, getShowSecurityAlert, getSnackbar, getSoftwareById, getSoftwareList, getSoftwareListState, getSoftwareTags, getSoftwareTagsById, getSortedFilteringAttributes, getSpLimits, getSsoConfig, getStripeKey, getSubscription, getTenantCapabilities, getTenantListWithLimits, getTenantsList, getTestDeviceCount, getTooltipsById, getTooltipsState, getTrackerCode, getUpdateTypes, getUploads, getUserCapabilities, getUserRoles, getUserSettings, getUserSettingsInitialized, getUsersById, getUsersList, getVersionInformation, getWebhookEventInfo, getWebhookEventTotal, getWebhookEvents, getWebhooks };
|
|
10
|
+
export { DEPLOYMENT_CUTOFF, getAcceptedDevices, getActiveTab, getAppInitDone, getAttributesList, getAuditLog, getAuditLogEntry, getAuditLogSelectionState, getAuditlogDevice, getAuditlogState, getAvailableIssueOptionsByType, getBillingProfile, getCard, getCombinedLimit, getCommit, getCurrentSession, getCurrentUser, getDeltaJobById, getDeltaJobsById, getDeltaJobsListState, getDemoDeviceAddress, getDeploymentById, getDeploymentRelease, getDeploymentsById, getDeploymentsByStatus, getDeploymentsSelectionState, getDeviceById, getDeviceConfigDeployment, getDeviceCountsByStatus, getDeviceFilters, getDeviceIdentityAttributes, getDeviceLimitStats, getDeviceLimits, getDeviceListState, getDeviceReports, getDeviceReportsForUser, getDeviceTwinIntegrations, getDeviceTypes, getDevicesById, getDevicesByStatus, getDisabledTiers, getDocsVersion, getEnabledTiers, getExternalIntegrations, getFeatures, getFeedbackProbability, getFilterAttributes, getFilteringAttributes, getGlobalSettings, getGlobalSettingsInitialized, getGroupData, getGroupNames, getGroups, getGroupsById, getGroupsByIdWithoutUngrouped, getHas2FA, getHasManifests, getHasReleases, getHasSoftware, getHostAddress, getHostedAnnouncement, getIdAttribute, getIsDarkMode, getIsEnterprise, getIsFirstLogin, getIsPreview, getIsServiceProvider, getIsUploading, getIssueCountsByType, getLimitMaxed, getListedDevices, getManifestTags, getManifestTagsById, getManifestsById, getManifestsList, getManifestsListState, getMappedDeploymentSelection, getMappedDevicesList, getOfflineThresholdSettings, getOnboarding, getOnboardingState, getOrganization, getProducts, getReadAllHelptips, getRecaptchaKey, getRecentDeployments, getReleaseListState, getReleaseTags, getReleaseTagsById, getReleasesById, getReleasesList, getRelevantRoles, getRolesById, getRolesInitialized, getRolesList, getSearchState, getSearchedDevices, getSecurityAlertDismissedTimestamp, getSelectedDeploymentData, getSelectedDeploymentDeviceIds, getSelectedDeviceAttribute, getSelectedGroup, getSelectedGroupInfo, getSelectedJob, getSelectedManifest, getSelectedManifests, getSelectedRelease, getSelectedReleases, getSentryConfig, getShowSecurityAlert, getSnackbar, getSoftwareById, getSoftwareList, getSoftwareListState, getSoftwareTags, getSoftwareTagsById, getSortedFilteringAttributes, getSpLimits, getSsoConfig, getStripeKey, getSubscription, getTenantCapabilities, getTenantListWithLimits, getTenantsList, getTestDeviceCount, getTestDeviceLimit, getTooltipsById, getTooltipsState, getTrackerCode, getUpdateTypes, getUploads, getUserCapabilities, getUserRoles, getUserSettings, getUserSettingsInitialized, getUsersById, getUsersList, getVersionInformation, getWebhookEventInfo, getWebhookEventTotal, getWebhookEvents, getWebhooks };
|
package/dist/selectors.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { getAppInitDone, getCommit, getDocsVersion, getFeatures, getFeedbackProbability, getHostAddress, getHostedAnnouncement, getIsFirstLogin, getIsPreview, getIsUploading, getRecaptchaKey, getSearchState, getSearchedDevices, getSentryConfig, getSnackbar, getStripeKey, getTrackerCode, getUploads, getVersionInformation } from "./appSlice/selectors.js";
|
|
2
2
|
import { DEPLOYMENT_CUTOFF, getDeploymentById, getDeploymentsById, getDeploymentsByStatus, getDeploymentsSelectionState, getMappedDeploymentSelection, getRecentDeployments, getSelectedDeploymentDeviceIds } from "./deploymentsSlice/selectors.js";
|
|
3
|
-
import { getAcceptedDevices, getAttributesList, getCombinedLimit, getDeviceById, getDeviceCountsByStatus, getDeviceFilters, getDeviceIdentityAttributes, getDeviceLimitStats, getDeviceLimits, getDeviceListState, getDeviceReports, getDeviceTypes, getDevicesById, getDevicesByStatus, getEnabledTiers, getFilteringAttributes, getGroupData, getGroups, getGroupsById, getGroupsByIdWithoutUngrouped, getLimitMaxed, getListedDevices, getSelectedGroup, getSelectedGroupInfo, getSortedFilteringAttributes, getTestDeviceCount } from "./devicesSlice/selectors.js";
|
|
3
|
+
import { getAcceptedDevices, getAttributesList, getCombinedLimit, getDeviceById, getDeviceCountsByStatus, getDeviceFilters, getDeviceIdentityAttributes, getDeviceLimitStats, getDeviceLimits, getDeviceListState, getDeviceReports, getDeviceTypes, getDevicesById, getDevicesByStatus, getEnabledTiers, getFilteringAttributes, getGroupData, getGroups, getGroupsById, getGroupsByIdWithoutUngrouped, getLimitMaxed, getListedDevices, getSelectedGroup, getSelectedGroupInfo, getSortedFilteringAttributes, getTestDeviceCount, getTestDeviceLimit } from "./devicesSlice/selectors.js";
|
|
4
4
|
import { getIssueCountsByType } from "./monitorSlice/selectors.js";
|
|
5
5
|
import { getOnboarding } from "./onboardingSlice/selectors.js";
|
|
6
6
|
import { getAuditLog, getAuditLogEntry, getAuditLogSelectionState, getAuditlogState, getBillingProfile, getCard, getDeviceTwinIntegrations, getDisabledTiers, getExternalIntegrations, getIsServiceProvider, getOrganization, getProducts, getSpLimits, getSsoConfig, getSubscription, getTenantListWithLimits, getTenantsList, getWebhookEventInfo, getWebhookEventTotal, getWebhookEvents, getWebhooks } from "./organizationSlice/selectors.js";
|
|
7
7
|
import { getActiveTab, getDeltaJobById, getDeltaJobsById, getDeltaJobsListState, getHasManifests, getHasReleases, getHasSoftware, getManifestTags, getManifestTagsById, getManifestsById, getManifestsList, getManifestsListState, getReleaseListState, getReleaseTags, getReleaseTagsById, getReleasesById, getReleasesList, getSelectedJob, getSelectedManifest, getSelectedManifests, getSelectedRelease, getSelectedReleases, getSoftwareById, getSoftwareList, getSoftwareListState, getSoftwareTags, getSoftwareTagsById, getUpdateTypes } from "./releasesSlice/selectors.js";
|
|
8
8
|
import { getCurrentSession, getCurrentUser, getGlobalSettings, getGlobalSettingsInitialized, getHas2FA, getIdAttribute, getIsDarkMode, getOfflineThresholdSettings, getReadAllHelptips, getRolesById, getRolesInitialized, getRolesList, getSecurityAlertDismissedTimestamp, getSelectedDeviceAttribute, getTooltipsById, getTooltipsState, getUserSettings, getUserSettingsInitialized, getUsersById, getUsersList } from "./usersSlice/selectors.js";
|
|
9
9
|
import { getAuditlogDevice, getAvailableIssueOptionsByType, getDemoDeviceAddress, getDeploymentRelease, getDeviceConfigDeployment, getDeviceReportsForUser, getFilterAttributes, getGroupNames, getIsEnterprise, getMappedDevicesList, getOnboardingState, getRelevantRoles, getSelectedDeploymentData, getShowSecurityAlert, getTenantCapabilities, getUserCapabilities, getUserRoles } from "./commonSelectors.js";
|
|
10
|
-
export { DEPLOYMENT_CUTOFF, getAcceptedDevices, getActiveTab, getAppInitDone, getAttributesList, getAuditLog, getAuditLogEntry, getAuditLogSelectionState, getAuditlogDevice, getAuditlogState, getAvailableIssueOptionsByType, getBillingProfile, getCard, getCombinedLimit, getCommit, getCurrentSession, getCurrentUser, getDeltaJobById, getDeltaJobsById, getDeltaJobsListState, getDemoDeviceAddress, getDeploymentById, getDeploymentRelease, getDeploymentsById, getDeploymentsByStatus, getDeploymentsSelectionState, getDeviceById, getDeviceConfigDeployment, getDeviceCountsByStatus, getDeviceFilters, getDeviceIdentityAttributes, getDeviceLimitStats, getDeviceLimits, getDeviceListState, getDeviceReports, getDeviceReportsForUser, getDeviceTwinIntegrations, getDeviceTypes, getDevicesById, getDevicesByStatus, getDisabledTiers, getDocsVersion, getEnabledTiers, getExternalIntegrations, getFeatures, getFeedbackProbability, getFilterAttributes, getFilteringAttributes, getGlobalSettings, getGlobalSettingsInitialized, getGroupData, getGroupNames, getGroups, getGroupsById, getGroupsByIdWithoutUngrouped, getHas2FA, getHasManifests, getHasReleases, getHasSoftware, getHostAddress, getHostedAnnouncement, getIdAttribute, getIsDarkMode, getIsEnterprise, getIsFirstLogin, getIsPreview, getIsServiceProvider, getIsUploading, getIssueCountsByType, getLimitMaxed, getListedDevices, getManifestTags, getManifestTagsById, getManifestsById, getManifestsList, getManifestsListState, getMappedDeploymentSelection, getMappedDevicesList, getOfflineThresholdSettings, getOnboarding, getOnboardingState, getOrganization, getProducts, getReadAllHelptips, getRecaptchaKey, getRecentDeployments, getReleaseListState, getReleaseTags, getReleaseTagsById, getReleasesById, getReleasesList, getRelevantRoles, getRolesById, getRolesInitialized, getRolesList, getSearchState, getSearchedDevices, getSecurityAlertDismissedTimestamp, getSelectedDeploymentData, getSelectedDeploymentDeviceIds, getSelectedDeviceAttribute, getSelectedGroup, getSelectedGroupInfo, getSelectedJob, getSelectedManifest, getSelectedManifests, getSelectedRelease, getSelectedReleases, getSentryConfig, getShowSecurityAlert, getSnackbar, getSoftwareById, getSoftwareList, getSoftwareListState, getSoftwareTags, getSoftwareTagsById, getSortedFilteringAttributes, getSpLimits, getSsoConfig, getStripeKey, getSubscription, getTenantCapabilities, getTenantListWithLimits, getTenantsList, getTestDeviceCount, getTooltipsById, getTooltipsState, getTrackerCode, getUpdateTypes, getUploads, getUserCapabilities, getUserRoles, getUserSettings, getUserSettingsInitialized, getUsersById, getUsersList, getVersionInformation, getWebhookEventInfo, getWebhookEventTotal, getWebhookEvents, getWebhooks };
|
|
10
|
+
export { DEPLOYMENT_CUTOFF, getAcceptedDevices, getActiveTab, getAppInitDone, getAttributesList, getAuditLog, getAuditLogEntry, getAuditLogSelectionState, getAuditlogDevice, getAuditlogState, getAvailableIssueOptionsByType, getBillingProfile, getCard, getCombinedLimit, getCommit, getCurrentSession, getCurrentUser, getDeltaJobById, getDeltaJobsById, getDeltaJobsListState, getDemoDeviceAddress, getDeploymentById, getDeploymentRelease, getDeploymentsById, getDeploymentsByStatus, getDeploymentsSelectionState, getDeviceById, getDeviceConfigDeployment, getDeviceCountsByStatus, getDeviceFilters, getDeviceIdentityAttributes, getDeviceLimitStats, getDeviceLimits, getDeviceListState, getDeviceReports, getDeviceReportsForUser, getDeviceTwinIntegrations, getDeviceTypes, getDevicesById, getDevicesByStatus, getDisabledTiers, getDocsVersion, getEnabledTiers, getExternalIntegrations, getFeatures, getFeedbackProbability, getFilterAttributes, getFilteringAttributes, getGlobalSettings, getGlobalSettingsInitialized, getGroupData, getGroupNames, getGroups, getGroupsById, getGroupsByIdWithoutUngrouped, getHas2FA, getHasManifests, getHasReleases, getHasSoftware, getHostAddress, getHostedAnnouncement, getIdAttribute, getIsDarkMode, getIsEnterprise, getIsFirstLogin, getIsPreview, getIsServiceProvider, getIsUploading, getIssueCountsByType, getLimitMaxed, getListedDevices, getManifestTags, getManifestTagsById, getManifestsById, getManifestsList, getManifestsListState, getMappedDeploymentSelection, getMappedDevicesList, getOfflineThresholdSettings, getOnboarding, getOnboardingState, getOrganization, getProducts, getReadAllHelptips, getRecaptchaKey, getRecentDeployments, getReleaseListState, getReleaseTags, getReleaseTagsById, getReleasesById, getReleasesList, getRelevantRoles, getRolesById, getRolesInitialized, getRolesList, getSearchState, getSearchedDevices, getSecurityAlertDismissedTimestamp, getSelectedDeploymentData, getSelectedDeploymentDeviceIds, getSelectedDeviceAttribute, getSelectedGroup, getSelectedGroupInfo, getSelectedJob, getSelectedManifest, getSelectedManifests, getSelectedRelease, getSelectedReleases, getSentryConfig, getShowSecurityAlert, getSnackbar, getSoftwareById, getSoftwareList, getSoftwareListState, getSoftwareTags, getSoftwareTagsById, getSortedFilteringAttributes, getSpLimits, getSsoConfig, getStripeKey, getSubscription, getTenantCapabilities, getTenantListWithLimits, getTenantsList, getTestDeviceCount, getTestDeviceLimit, getTooltipsById, getTooltipsState, getTrackerCode, getUpdateTypes, getUploads, getUserCapabilities, getUserRoles, getUserSettings, getUserSettingsInitialized, getUsersById, getUsersList, getVersionInformation, getWebhookEventInfo, getWebhookEventTotal, getWebhookEvents, getWebhooks };
|
package/dist/sockethook.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_rolldown_runtime = require("./rolldown-runtime-
|
|
2
|
+
const require_rolldown_runtime = require("./rolldown-runtime-VH7oDXx4.cjs");
|
|
3
3
|
const require_constants = require("./constants-C_SC_VKE.cjs");
|
|
4
4
|
let _northern_tech_utils_helpers = require("@northern.tech/utils/helpers");
|
|
5
5
|
let universal_cookie = require("universal-cookie");
|
|
@@ -70,7 +70,6 @@ const useSession = ({ onClose, onHealthCheckFailed, onMessageReceived, onNotify,
|
|
|
70
70
|
if (timeout > 0) healthcheckTimeout.current = setTimeout(healthcheckFailed, timeout * require_constants.TIMEOUTS.oneSecond);
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
|
-
default: break;
|
|
74
73
|
}
|
|
75
74
|
}), [
|
|
76
75
|
close,
|
package/dist/sockethook.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sockethook.cjs","names":["Cookies","Packr","MessageProtocols","MessageTypes","TIMEOUTS","apiUrl"],"sources":["../src/sockethook.ts"],"sourcesContent":["// Copyright 2022 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 { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { blobToString, byteArrayToString } from '@northern.tech/utils/helpers';\nimport { Packr } from 'msgpackr';\nimport Cookies from 'universal-cookie';\n\nimport { DEVICE_MESSAGE_PROTOCOLS as MessageProtocols, DEVICE_MESSAGE_TYPES as MessageTypes, TIMEOUTS, apiUrl } from './constants';\n\nconst cookies = new Cookies();\n\n// plain maps + omitted undefined fields keep the wire format compatible with the deviceconnect backend\nconst MessagePack = new Packr({ skipValues: [undefined], useRecords: false });\n\ntype UseSessionProps = {\n onClose: (event: CloseEvent) => void;\n onHealthCheckFailed: () => void;\n onMessageReceived: (body: Uint8Array) => void;\n onNotify: (message: string) => void;\n onOpen: (isOpen: boolean) => void;\n token: string;\n};\n\ntype MessageProps = {\n body?: Uint8Array;\n props: Record<string, string | number>;\n typ: string;\n};\n\ntype SessionWebSocket = WebSocket & { sessionId?: string };\n\ntype UseSessionReturn = [\n connect: (deviceId: string) => void,\n sendMessage: (message: MessageProps) => void,\n close: () => void,\n readyState: number,\n sessionId: string | undefined\n];\n\nexport const useSession = ({ onClose, onHealthCheckFailed, onMessageReceived, onNotify, onOpen, token }: UseSessionProps): UseSessionReturn => {\n const [sessionId, setSessionId] = useState<string | undefined>();\n const healthcheckTimeout = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const socketRef = useRef<SessionWebSocket | undefined>(undefined);\n const sendMessage = useCallback(({ typ, body, props }: MessageProps): void => {\n if (!socketRef.current) {\n return;\n }\n const proto_header = { proto: MessageProtocols.Shell, typ, sid: socketRef.current.sessionId, props };\n const encodedData = MessagePack.pack({ hdr: proto_header, body });\n socketRef.current.send(encodedData);\n }, []);\n\n const close = useCallback((): void => {\n if (!socketRef.current || socketRef.current?.readyState !== WebSocket.OPEN) {\n return;\n }\n sendMessage({ typ: MessageTypes.Stop, props: {} });\n socketRef.current.close();\n setSessionId(undefined);\n }, [sendMessage]);\n\n const healthcheckFailed = useCallback((): void => {\n onHealthCheckFailed();\n close();\n }, [close, onHealthCheckFailed]);\n\n const onSocketMessage = useCallback(\n (event: MessageEvent): Promise<void> =>\n blobToString(event.data).then((data: unknown) => {\n const {\n hdr: { props = {} as Record<string, string | number>, proto, sid, typ },\n body\n } = MessagePack.unpack(new Uint8Array(data as ArrayBuffer)) as {\n body: Uint8Array;\n hdr: { props: Record<string, string | number>; proto: number; sid: string; typ: string };\n };\n if (proto !== MessageProtocols.Shell) {\n return;\n }\n switch (typ) {\n case MessageTypes.New: {\n if (props.status == WebSocket.CLOSING) {\n onNotify(`Error: ${byteArrayToString(body as unknown as Buffer)}`);\n setSessionId(undefined);\n return close();\n } else {\n clearTimeout(healthcheckTimeout.current);\n healthcheckTimeout.current = setTimeout(healthcheckFailed, 65 * TIMEOUTS.oneSecond);\n if (socketRef.current) {\n socketRef.current.sessionId = sid;\n }\n return setSessionId(sid);\n }\n }\n case MessageTypes.Shell:\n return onMessageReceived(body);\n case MessageTypes.Stop:\n return close();\n case MessageTypes.Ping: {\n if (healthcheckTimeout.current) {\n clearTimeout(healthcheckTimeout.current);\n }\n sendMessage({ typ: MessageTypes.Pong, props: {} });\n const timeout = parseInt(props.timeout as string);\n if (timeout > 0) {\n healthcheckTimeout.current = setTimeout(healthcheckFailed, timeout * TIMEOUTS.oneSecond);\n }\n return;\n }\n default:\n break;\n }\n }),\n [close, healthcheckFailed, onMessageReceived, onNotify, sendMessage]\n );\n\n const onSocketError = useCallback(\n (error: Event): void => {\n onNotify(`WebSocket error: ${(error as ErrorEvent).message || 'Unknown error'}`);\n close();\n clearTimeout(healthcheckTimeout.current);\n },\n [close, onNotify]\n );\n\n const onSocketOpen = useCallback((): void => {\n sendMessage({ typ: MessageTypes.New, props: {} });\n onOpen(true);\n }, [onOpen, sendMessage]);\n\n const onSocketClose = useCallback(\n (e: CloseEvent): void => {\n console.log('closing');\n onClose(e);\n close();\n },\n [close, onClose]\n );\n\n const connect = useCallback(\n (deviceId: string): void => {\n const uri = `wss://${window.location.host}${apiUrl.v1}/deviceconnect/devices/${deviceId}/connect`;\n setSessionId(undefined);\n cookies.set('JWT', token, { path: '/', secure: true, sameSite: 'strict', maxAge: 5 });\n try {\n socketRef.current = new WebSocket(uri);\n } catch (error) {\n console.log(error);\n }\n },\n [token]\n );\n\n useEffect(() => {\n const currentSocket = socketRef.current;\n if (!currentSocket) {\n return;\n }\n\n currentSocket.addEventListener('close', onSocketClose);\n currentSocket.addEventListener('error', onSocketError);\n currentSocket.addEventListener('message', onSocketMessage);\n currentSocket.addEventListener('open', onSocketOpen);\n\n return () => {\n currentSocket.removeEventListener('close', onSocketClose);\n currentSocket.removeEventListener('error', onSocketError);\n currentSocket.removeEventListener('message', onSocketMessage);\n currentSocket.removeEventListener('open', onSocketOpen);\n };\n // eslint-disable-next-line react-hooks/refs\n }, [onSocketClose, onSocketError, onSocketMessage, onSocketOpen, socketRef.current?.readyState]);\n\n // eslint-disable-next-line react-hooks/refs\n return [connect, sendMessage, close, socketRef.current?.readyState ?? WebSocket.CLOSED, sessionId];\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sockethook.cjs","names":["Cookies","Packr","useState","useRef","useCallback","MessageProtocols","MessageTypes","blobToString","byteArrayToString","TIMEOUTS","apiUrl"],"sources":["../src/sockethook.ts"],"sourcesContent":["// Copyright 2022 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 { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { blobToString, byteArrayToString } from '@northern.tech/utils/helpers';\nimport { Packr } from 'msgpackr';\nimport Cookies from 'universal-cookie';\n\nimport { DEVICE_MESSAGE_PROTOCOLS as MessageProtocols, DEVICE_MESSAGE_TYPES as MessageTypes, TIMEOUTS, apiUrl } from './constants';\n\nconst cookies = new Cookies();\n\n// plain maps + omitted undefined fields keep the wire format compatible with the deviceconnect backend\nconst MessagePack = new Packr({ skipValues: [undefined], useRecords: false });\n\ntype UseSessionProps = {\n onClose: (event: CloseEvent) => void;\n onHealthCheckFailed: () => void;\n onMessageReceived: (body: Uint8Array) => void;\n onNotify: (message: string) => void;\n onOpen: (isOpen: boolean) => void;\n token: string;\n};\n\ntype MessageProps = {\n body?: Uint8Array;\n props: Record<string, string | number>;\n typ: string;\n};\n\ntype SessionWebSocket = WebSocket & { sessionId?: string };\n\ntype UseSessionReturn = [\n connect: (deviceId: string) => void,\n sendMessage: (message: MessageProps) => void,\n close: () => void,\n readyState: number,\n sessionId: string | undefined\n];\n\nexport const useSession = ({ onClose, onHealthCheckFailed, onMessageReceived, onNotify, onOpen, token }: UseSessionProps): UseSessionReturn => {\n const [sessionId, setSessionId] = useState<string | undefined>();\n const healthcheckTimeout = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const socketRef = useRef<SessionWebSocket | undefined>(undefined);\n const sendMessage = useCallback(({ typ, body, props }: MessageProps): void => {\n if (!socketRef.current) {\n return;\n }\n const proto_header = { proto: MessageProtocols.Shell, typ, sid: socketRef.current.sessionId, props };\n const encodedData = MessagePack.pack({ hdr: proto_header, body });\n socketRef.current.send(encodedData);\n }, []);\n\n const close = useCallback((): void => {\n if (!socketRef.current || socketRef.current?.readyState !== WebSocket.OPEN) {\n return;\n }\n sendMessage({ typ: MessageTypes.Stop, props: {} });\n socketRef.current.close();\n setSessionId(undefined);\n }, [sendMessage]);\n\n const healthcheckFailed = useCallback((): void => {\n onHealthCheckFailed();\n close();\n }, [close, onHealthCheckFailed]);\n\n const onSocketMessage = useCallback(\n (event: MessageEvent): Promise<void> =>\n blobToString(event.data).then((data: unknown) => {\n const {\n hdr: { props = {} as Record<string, string | number>, proto, sid, typ },\n body\n } = MessagePack.unpack(new Uint8Array(data as ArrayBuffer)) as {\n body: Uint8Array;\n hdr: { props: Record<string, string | number>; proto: number; sid: string; typ: string };\n };\n if (proto !== MessageProtocols.Shell) {\n return;\n }\n switch (typ) {\n case MessageTypes.New: {\n if (props.status == WebSocket.CLOSING) {\n onNotify(`Error: ${byteArrayToString(body as unknown as Buffer)}`);\n setSessionId(undefined);\n return close();\n } else {\n clearTimeout(healthcheckTimeout.current);\n healthcheckTimeout.current = setTimeout(healthcheckFailed, 65 * TIMEOUTS.oneSecond);\n if (socketRef.current) {\n socketRef.current.sessionId = sid;\n }\n return setSessionId(sid);\n }\n }\n case MessageTypes.Shell:\n return onMessageReceived(body);\n case MessageTypes.Stop:\n return close();\n case MessageTypes.Ping: {\n if (healthcheckTimeout.current) {\n clearTimeout(healthcheckTimeout.current);\n }\n sendMessage({ typ: MessageTypes.Pong, props: {} });\n const timeout = parseInt(props.timeout as string);\n if (timeout > 0) {\n healthcheckTimeout.current = setTimeout(healthcheckFailed, timeout * TIMEOUTS.oneSecond);\n }\n return;\n }\n default:\n break;\n }\n }),\n [close, healthcheckFailed, onMessageReceived, onNotify, sendMessage]\n );\n\n const onSocketError = useCallback(\n (error: Event): void => {\n onNotify(`WebSocket error: ${(error as ErrorEvent).message || 'Unknown error'}`);\n close();\n clearTimeout(healthcheckTimeout.current);\n },\n [close, onNotify]\n );\n\n const onSocketOpen = useCallback((): void => {\n sendMessage({ typ: MessageTypes.New, props: {} });\n onOpen(true);\n }, [onOpen, sendMessage]);\n\n const onSocketClose = useCallback(\n (e: CloseEvent): void => {\n console.log('closing');\n onClose(e);\n close();\n },\n [close, onClose]\n );\n\n const connect = useCallback(\n (deviceId: string): void => {\n const uri = `wss://${window.location.host}${apiUrl.v1}/deviceconnect/devices/${deviceId}/connect`;\n setSessionId(undefined);\n cookies.set('JWT', token, { path: '/', secure: true, sameSite: 'strict', maxAge: 5 });\n try {\n socketRef.current = new WebSocket(uri);\n } catch (error) {\n console.log(error);\n }\n },\n [token]\n );\n\n useEffect(() => {\n const currentSocket = socketRef.current;\n if (!currentSocket) {\n return;\n }\n\n currentSocket.addEventListener('close', onSocketClose);\n currentSocket.addEventListener('error', onSocketError);\n currentSocket.addEventListener('message', onSocketMessage);\n currentSocket.addEventListener('open', onSocketOpen);\n\n return () => {\n currentSocket.removeEventListener('close', onSocketClose);\n currentSocket.removeEventListener('error', onSocketError);\n currentSocket.removeEventListener('message', onSocketMessage);\n currentSocket.removeEventListener('open', onSocketOpen);\n };\n // eslint-disable-next-line react-hooks/refs\n }, [onSocketClose, onSocketError, onSocketMessage, onSocketOpen, socketRef.current?.readyState]);\n\n // eslint-disable-next-line react-hooks/refs\n return [connect, sendMessage, close, socketRef.current?.readyState ?? WebSocket.CLOSED, sessionId];\n};\n"],"mappings":";;;;;;;;;;AAqBA,MAAM,UAAU,IAAIA,iBAAAA,QAAQ;AAG5B,MAAM,cAAc,IAAIC,SAAAA,MAAM;CAAE,YAAY,CAAC,KAAA,CAAS;CAAG,YAAY;AAAM,CAAC;AA2B5E,MAAa,cAAc,EAAE,SAAS,qBAAqB,mBAAmB,UAAU,QAAQ,YAA+C;CAC7I,MAAM,CAAC,WAAW,iBAAA,GAAgBC,MAAAA,SAAAA,CAA6B;CAC/D,MAAM,sBAAA,GAAqBC,MAAAA,OAAAA,CAAkD,KAAA,CAAS;CACtF,MAAM,aAAA,GAAYA,MAAAA,OAAAA,CAAqC,KAAA,CAAS;CAChE,MAAM,eAAA,GAAcC,MAAAA,YAAAA,EAAa,EAAE,KAAK,MAAM,YAAgC;EAC5E,IAAI,CAAC,UAAU,SACb;EAEF,MAAM,eAAe;GAAE,OAAOC,kBAAAA,yBAAiB;GAAO;GAAK,KAAK,UAAU,QAAQ;GAAW;EAAM;EACnG,MAAM,cAAc,YAAY,KAAK;GAAE,KAAK;GAAc;EAAK,CAAC;EAChE,UAAU,QAAQ,KAAK,WAAW;CACpC,GAAG,CAAC,CAAC;CAEL,MAAM,SAAA,GAAQD,MAAAA,YAAAA,OAAwB;EACpC,IAAI,CAAC,UAAU,WAAW,UAAU,SAAS,eAAe,UAAU,MACpE;EAEF,YAAY;GAAE,KAAKE,kBAAAA,qBAAa;GAAM,OAAO,CAAC;EAAE,CAAC;EACjD,UAAU,QAAQ,MAAM;EACxB,aAAa,KAAA,CAAS;CACxB,GAAG,CAAC,WAAW,CAAC;CAEhB,MAAM,qBAAA,GAAoBF,MAAAA,YAAAA,OAAwB;EAChD,oBAAoB;EACpB,MAAM;CACR,GAAG,CAAC,OAAO,mBAAmB,CAAC;CAE/B,MAAM,mBAAA,GAAkBA,MAAAA,YAAAA,EACrB,WAAA,GACCG,6BAAAA,aAAAA,CAAa,MAAM,IAAI,CAAC,CAAC,MAAM,SAAkB;EAC/C,MAAM,EACJ,KAAK,EAAE,QAAQ,CAAC,GAAsC,OAAO,KAAK,OAClE,SACE,YAAY,OAAO,IAAI,WAAW,IAAmB,CAAC;EAI1D,IAAI,UAAUF,kBAAAA,yBAAiB,OAC7B;EAEF,QAAQ,KAAR;GACE,KAAKC,kBAAAA,qBAAa,KAChB,IAAI,MAAM,UAAU,UAAU,SAAS;IACrC,SAAS,WAAA,GAAUE,6BAAAA,kBAAAA,CAAkB,IAAyB,GAAG;IACjE,aAAa,KAAA,CAAS;IACtB,OAAO,MAAM;GACf,OAAO;IACL,aAAa,mBAAmB,OAAO;IACvC,mBAAmB,UAAU,WAAW,mBAAmB,KAAKC,kBAAAA,SAAS,SAAS;IAClF,IAAI,UAAU,SACZ,UAAU,QAAQ,YAAY;IAEhC,OAAO,aAAa,GAAG;GACzB;GAEF,KAAKH,kBAAAA,qBAAa,OAChB,OAAO,kBAAkB,IAAI;GAC/B,KAAKA,kBAAAA,qBAAa,MAChB,OAAO,MAAM;GACf,KAAKA,kBAAAA,qBAAa,MAAM;IACtB,IAAI,mBAAmB,SACrB,aAAa,mBAAmB,OAAO;IAEzC,YAAY;KAAE,KAAKA,kBAAAA,qBAAa;KAAM,OAAO,CAAC;IAAE,CAAC;IACjD,MAAM,UAAU,SAAS,MAAM,OAAiB;IAChD,IAAI,UAAU,GACZ,mBAAmB,UAAU,WAAW,mBAAmB,UAAUG,kBAAAA,SAAS,SAAS;IAEzF;GACF;EAGF;CACF,CAAC,GACH;EAAC;EAAO;EAAmB;EAAmB;EAAU;CAAW,CACrE;CAEA,MAAM,iBAAA,GAAgBL,MAAAA,YAAAA,EACnB,UAAuB;EACtB,SAAS,oBAAqB,MAAqB,WAAW,iBAAiB;EAC/E,MAAM;EACN,aAAa,mBAAmB,OAAO;CACzC,GACA,CAAC,OAAO,QAAQ,CAClB;CAEA,MAAM,gBAAA,GAAeA,MAAAA,YAAAA,OAAwB;EAC3C,YAAY;GAAE,KAAKE,kBAAAA,qBAAa;GAAK,OAAO,CAAC;EAAE,CAAC;EAChD,OAAO,IAAI;CACb,GAAG,CAAC,QAAQ,WAAW,CAAC;CAExB,MAAM,iBAAA,GAAgBF,MAAAA,YAAAA,EACnB,MAAwB;EACvB,QAAQ,IAAI,SAAS;EACrB,QAAQ,CAAC;EACT,MAAM;CACR,GACA,CAAC,OAAO,OAAO,CACjB;CAEA,MAAM,WAAA,GAAUA,MAAAA,YAAAA,EACb,aAA2B;EAC1B,MAAM,MAAM,SAAS,OAAO,SAAS,OAAOM,+BAAAA,OAAO,GAAG,yBAAyB,SAAS;EACxF,aAAa,KAAA,CAAS;EACtB,QAAQ,IAAI,OAAO,OAAO;GAAE,MAAM;GAAK,QAAQ;GAAM,UAAU;GAAU,QAAQ;EAAE,CAAC;EACpF,IAAI;GACF,UAAU,UAAU,IAAI,UAAU,GAAG;EACvC,SAAS,OAAO;GACd,QAAQ,IAAI,KAAK;EACnB;CACF,GACA,CAAC,KAAK,CACR;CAEA,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,MAAM,gBAAgB,UAAU;EAChC,IAAI,CAAC,eACH;EAGF,cAAc,iBAAiB,SAAS,aAAa;EACrD,cAAc,iBAAiB,SAAS,aAAa;EACrD,cAAc,iBAAiB,WAAW,eAAe;EACzD,cAAc,iBAAiB,QAAQ,YAAY;EAEnD,aAAa;GACX,cAAc,oBAAoB,SAAS,aAAa;GACxD,cAAc,oBAAoB,SAAS,aAAa;GACxD,cAAc,oBAAoB,WAAW,eAAe;GAC5D,cAAc,oBAAoB,QAAQ,YAAY;EACxD;CAEF,GAAG;EAAC;EAAe;EAAe;EAAiB;EAAc,UAAU,SAAS;CAAU,CAAC;CAG/F,OAAO;EAAC;EAAS;EAAa;EAAO,UAAU,SAAS,cAAc,UAAU;EAAQ;CAAS;AACnG"}
|