@northern.tech/store 0.11.0 → 0.13.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.cjs +22 -17
- package/dist/actions.cjs.map +1 -1
- package/dist/actions.d.cts +7 -22
- package/dist/actions.d.ts +7 -22
- package/dist/actions.js +9 -9
- package/dist/api/general-api.js +1 -1
- package/dist/api/users-api.js +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 +2 -2
- package/dist/appSlice/mocks.cjs.map +1 -1
- package/dist/appSlice/mocks.js +2 -2
- package/dist/appSlice/selectors.d.cts +34 -528
- package/dist/appSlice/selectors.d.ts +34 -528
- package/dist/appSlice/thunks.cjs +49 -42
- package/dist/appSlice/thunks.cjs.map +1 -1
- package/dist/appSlice/thunks.d.cts +5 -3
- package/dist/appSlice/thunks.d.ts +5 -3
- package/dist/appSlice/thunks.js +18 -18
- package/dist/auth.js +1 -1
- package/dist/{chunk-QOFVCPRW.js → chunk-5PUF4LA5.js} +1 -1
- package/dist/chunk-5PUF4LA5.js.map +1 -0
- package/dist/{chunk-X3NF4KNC.js → chunk-6KAV62BW.js} +6 -6
- package/dist/{chunk-OFGCC3GM.js → chunk-7MTM3BDT.js} +1 -1
- package/dist/chunk-7MTM3BDT.js.map +1 -0
- package/dist/{chunk-4FNSLYK5.js → chunk-AR4FTKSL.js} +14 -14
- package/dist/{chunk-6KNRR7A5.js → chunk-BZAXFAGT.js} +4 -4
- package/dist/{chunk-ZNAJKEP2.js → chunk-CQXDAXQF.js} +1 -1
- package/dist/chunk-CQXDAXQF.js.map +1 -0
- package/dist/{chunk-I3H5EFZK.js → chunk-EOZ665GA.js} +15 -15
- package/dist/{chunk-NVNO3I3K.js → chunk-ETZVJXPD.js} +36 -41
- package/dist/chunk-ETZVJXPD.js.map +1 -0
- package/dist/{chunk-RFF52JYU.js → chunk-KJ4BPXMB.js} +3 -2
- package/dist/chunk-KJ4BPXMB.js.map +1 -0
- package/dist/{chunk-C2LGE3P6.js → chunk-OLKM53RL.js} +1 -1
- package/dist/chunk-OLKM53RL.js.map +1 -0
- package/dist/{chunk-HLX5L3IM.js → chunk-PVCHKW35.js} +1 -1
- package/dist/chunk-PVCHKW35.js.map +1 -0
- package/dist/{chunk-REZWSU22.js → chunk-VODRLEDP.js} +21 -17
- package/dist/chunk-VODRLEDP.js.map +1 -0
- package/dist/{chunk-MH5WPYQI.js → chunk-X7NEALMI.js} +16 -9
- package/dist/chunk-X7NEALMI.js.map +1 -0
- package/dist/{chunk-CUU3N6KW.js → chunk-YFAIYNQG.js} +16 -16
- package/dist/commonConstants.js +1 -1
- package/dist/commonSelectors.cjs +15 -8
- package/dist/commonSelectors.cjs.map +1 -1
- package/dist/commonSelectors.d.cts +178 -3523
- package/dist/commonSelectors.d.ts +178 -3523
- package/dist/commonSelectors.js +6 -6
- package/dist/constants.js +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 +2 -2
- package/dist/deploymentsSlice/mocks.cjs.map +1 -1
- package/dist/deploymentsSlice/mocks.js +2 -2
- package/dist/deploymentsSlice/selectors.d.cts +16 -138
- package/dist/deploymentsSlice/selectors.d.ts +16 -138
- package/dist/deploymentsSlice/selectors.js +1 -1
- package/dist/deploymentsSlice/thunks.cjs +49 -42
- package/dist/deploymentsSlice/thunks.cjs.map +1 -1
- package/dist/deploymentsSlice/thunks.d.cts +4 -2
- package/dist/deploymentsSlice/thunks.d.ts +4 -2
- package/dist/deploymentsSlice/thunks.js +18 -18
- package/dist/devicesSlice/constants.js +1 -1
- package/dist/devicesSlice/index.cjs +20 -16
- package/dist/devicesSlice/index.cjs.map +1 -1
- package/dist/devicesSlice/index.d.cts +11 -20
- package/dist/devicesSlice/index.d.ts +11 -20
- package/dist/devicesSlice/index.js +2 -2
- package/dist/devicesSlice/mocks.cjs +24 -22
- package/dist/devicesSlice/mocks.cjs.map +1 -1
- package/dist/devicesSlice/mocks.d.cts +20 -12
- package/dist/devicesSlice/mocks.d.ts +20 -12
- package/dist/devicesSlice/mocks.js +6 -8
- package/dist/devicesSlice/mocks.js.map +1 -1
- package/dist/devicesSlice/selectors.cjs +15 -8
- package/dist/devicesSlice/selectors.cjs.map +1 -1
- package/dist/devicesSlice/selectors.d.cts +207 -1730
- package/dist/devicesSlice/selectors.d.ts +207 -1730
- package/dist/devicesSlice/selectors.js +2 -2
- package/dist/devicesSlice/thunks.cjs +49 -44
- package/dist/devicesSlice/thunks.cjs.map +1 -1
- package/dist/devicesSlice/thunks.d.cts +12 -46
- package/dist/devicesSlice/thunks.d.ts +12 -46
- package/dist/devicesSlice/thunks.js +18 -20
- package/dist/liststatehook.js +1 -1
- package/dist/locationutils.js +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 +2 -2
- package/dist/monitorSlice/mocks.cjs.map +1 -1
- package/dist/monitorSlice/mocks.js +2 -2
- package/dist/monitorSlice/thunks.cjs +37 -25
- package/dist/monitorSlice/thunks.cjs.map +1 -1
- package/dist/monitorSlice/thunks.d.cts +3 -2
- package/dist/monitorSlice/thunks.d.ts +3 -2
- package/dist/monitorSlice/thunks.js +16 -16
- 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/index.js +1 -1
- package/dist/onboardingSlice/mocks.cjs.map +1 -1
- package/dist/onboardingSlice/mocks.js +1 -1
- package/dist/onboardingSlice/thunks.cjs +49 -42
- package/dist/onboardingSlice/thunks.cjs.map +1 -1
- package/dist/onboardingSlice/thunks.d.cts +7 -15
- package/dist/onboardingSlice/thunks.d.ts +7 -15
- package/dist/onboardingSlice/thunks.js +18 -18
- package/dist/organizationSlice/constants.js +1 -1
- package/dist/organizationSlice/index.cjs.map +1 -1
- package/dist/organizationSlice/index.d.cts +41 -31
- package/dist/organizationSlice/index.d.ts +41 -31
- package/dist/organizationSlice/index.js +2 -2
- package/dist/organizationSlice/mocks.cjs.map +1 -1
- package/dist/organizationSlice/mocks.js +2 -2
- package/dist/organizationSlice/selectors.d.cts +42 -659
- package/dist/organizationSlice/selectors.d.ts +42 -659
- package/dist/organizationSlice/selectors.js +1 -1
- package/dist/organizationSlice/thunks.cjs +51 -44
- package/dist/organizationSlice/thunks.cjs.map +1 -1
- package/dist/organizationSlice/thunks.d.cts +4 -1
- package/dist/organizationSlice/thunks.d.ts +4 -1
- package/dist/organizationSlice/thunks.js +18 -18
- package/dist/organizationSlice/types.cjs.map +1 -1
- package/dist/organizationSlice/types.d.cts +2 -12
- package/dist/organizationSlice/types.d.ts +2 -12
- package/dist/releasesSlice/index.js +1 -1
- package/dist/releasesSlice/mocks.d.cts +7 -1
- package/dist/releasesSlice/mocks.d.ts +7 -1
- package/dist/releasesSlice/mocks.js +1 -1
- package/dist/releasesSlice/selectors.d.cts +155 -930
- package/dist/releasesSlice/selectors.d.ts +155 -930
- package/dist/releasesSlice/selectors.js +1 -1
- package/dist/releasesSlice/thunks.cjs +37 -25
- package/dist/releasesSlice/thunks.cjs.map +1 -1
- package/dist/releasesSlice/thunks.d.cts +4 -2
- package/dist/releasesSlice/thunks.d.ts +4 -2
- package/dist/releasesSlice/thunks.js +16 -16
- package/dist/selectors.cjs +15 -8
- package/dist/selectors.cjs.map +1 -1
- package/dist/selectors.d.cts +6 -3
- package/dist/selectors.d.ts +6 -3
- package/dist/selectors.js +33 -33
- package/dist/sockethook.cjs +1 -1
- package/dist/sockethook.cjs.map +1 -1
- package/dist/sockethook.js +2 -2
- package/dist/sockethook.js.map +1 -1
- package/dist/store.cjs +22 -17
- package/dist/store.cjs.map +1 -1
- package/dist/store.d.cts +40 -658
- package/dist/store.d.ts +40 -658
- package/dist/store.js +10 -10
- package/dist/storehooks.cjs +52 -45
- package/dist/storehooks.cjs.map +1 -1
- package/dist/storehooks.js +19 -19
- package/dist/thunks.cjs +49 -44
- package/dist/thunks.cjs.map +1 -1
- package/dist/thunks.d.cts +7 -5
- package/dist/thunks.d.ts +7 -5
- package/dist/thunks.js +18 -20
- package/dist/useDeploymentDevice.cjs +49 -42
- package/dist/useDeploymentDevice.cjs.map +1 -1
- package/dist/useDeploymentDevice.js +19 -19
- package/dist/usersSlice/constants.js +1 -1
- package/dist/usersSlice/index.cjs +2 -1
- package/dist/usersSlice/index.cjs.map +1 -1
- package/dist/usersSlice/index.d.cts +47 -46
- package/dist/usersSlice/index.d.ts +47 -46
- package/dist/usersSlice/index.js +2 -2
- package/dist/usersSlice/mocks.cjs +2 -1
- package/dist/usersSlice/mocks.cjs.map +1 -1
- package/dist/usersSlice/mocks.js +2 -2
- package/dist/usersSlice/selectors.d.cts +75 -1436
- package/dist/usersSlice/selectors.d.ts +75 -1436
- package/dist/usersSlice/selectors.js +1 -1
- package/dist/usersSlice/thunks.cjs +49 -42
- package/dist/usersSlice/thunks.cjs.map +1 -1
- package/dist/usersSlice/thunks.d.cts +3 -1
- package/dist/usersSlice/thunks.d.ts +3 -1
- package/dist/usersSlice/thunks.js +18 -18
- package/dist/utils.js +1 -1
- package/package.json +4 -4
- package/dist/chunk-C2LGE3P6.js.map +0 -1
- package/dist/chunk-HLX5L3IM.js.map +0 -1
- package/dist/chunk-MH5WPYQI.js.map +0 -1
- package/dist/chunk-NVNO3I3K.js.map +0 -1
- package/dist/chunk-OFGCC3GM.js.map +0 -1
- package/dist/chunk-QOFVCPRW.js.map +0 -1
- package/dist/chunk-REZWSU22.js.map +0 -1
- package/dist/chunk-RFF52JYU.js.map +0 -1
- package/dist/chunk-ZNAJKEP2.js.map +0 -1
- /package/dist/{chunk-X3NF4KNC.js.map → chunk-6KAV62BW.js.map} +0 -0
- /package/dist/{chunk-4FNSLYK5.js.map → chunk-AR4FTKSL.js.map} +0 -0
- /package/dist/{chunk-6KNRR7A5.js.map → chunk-BZAXFAGT.js.map} +0 -0
- /package/dist/{chunk-I3H5EFZK.js.map → chunk-EOZ665GA.js.map} +0 -0
- /package/dist/{chunk-CUU3N6KW.js.map → chunk-YFAIYNQG.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/devicesSlice/mocks.ts","../../src/constants.ts","../../src/devicesSlice/index.ts"],"sourcesContent":["// Copyright 2025 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 { DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport { initialState } from './index';\n\nconst deviceTypes = { qemu: 'qemux86-64' };\nconst checkInTimeRounded = '2019-01-01T00:00:00.000Z';\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\nconst defaultMacAddress = 'dc:a6:32:12:ad:bf';\nconst defaultCreationDate = '2019-01-13T06:25:00.000Z';\n\nexport const mockState = {\n ...initialState,\n byId: {\n a1: {\n id: 'a1',\n attributes: {\n device_type: ['raspberrypi4'],\n ipv4_wlan0: '192.168.10.141/24'\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n b1: {\n id: 'b1',\n attributes: {\n ipv4_wlan0: '192.168.10.141/24',\n device_type: [deviceTypes.qemu]\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n c1: {\n id: 'c1',\n auth_sets: [],\n attributes: {\n device_type: ['qemux86-128']\n }\n }\n },\n byStatus: {\n accepted: { deviceIds: ['a1', 'b1'], total: 2 },\n active: { deviceIds: [], total: 0 },\n inactive: { deviceIds: [], total: 0 },\n pending: { deviceIds: ['c1'], total: 1 },\n preauthorized: { deviceIds: [], total: 0 },\n rejected: { deviceIds: [], total: 0 }\n },\n deviceList: {\n deviceIds: [],\n isLoading: false,\n page: 1,\n perPage: 20,\n selectedAttributes: [],\n selectedIssues: [],\n selection: [],\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n },\n state: DEVICE_STATES.accepted,\n total: 0\n },\n filteringAttributes: {\n identityAttributes: ['mac'],\n inventoryAttributes: ['artifact_name'],\n systemAttributes: [],\n tagAttributes: []\n },\n filteringAttributesLimit: 10,\n filters: [],\n groups: {\n byId: {\n testGroup: {\n deviceIds: ['a1', 'b1'],\n filters: [],\n total: 2\n },\n testGroupDynamic: {\n id: 'filter1',\n name: 'filter1',\n filters: [{ scope: 'system', key: 'group', operator: '$eq', value: 'things' }]\n } as const\n },\n selectedGroup: undefined\n },\n limits: { standard: 500, micro: 0, system: 0 }\n};\n","// Copyright 2024 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.\n//@ts-nocheck\nimport {\n ALL_DEVICES,\n ALL_DEVICE_STATES,\n ALL_RELEASES,\n APPLICATION_JSON_CONTENT_TYPE,\n APPLICATION_JWT_CONTENT_TYPE,\n ATTRIBUTE_SCOPES,\n DEVICE_FILTERING_OPTIONS,\n DEVICE_ISSUE_OPTIONS,\n DEVICE_LIST_DEFAULTS,\n DEVICE_STATES,\n PermissionTypes,\n SORTING_OPTIONS,\n alertChannels,\n apiRoot,\n apiUrl,\n auditLogsApiUrl,\n defaultPermissionSets,\n deploymentsApiUrl,\n deploymentsApiUrlV2,\n deviceAuthV2,\n deviceConfig,\n deviceConnect,\n emptyRole,\n emptyUiPermissions,\n headerNames,\n inventoryApiUrl,\n inventoryApiUrlV2,\n iotManagerBaseURL,\n limitDefault,\n maxSessionAge,\n monitorApiUrlv1,\n reportingApiUrl,\n rolesById,\n rolesByName,\n scopedPermissionAreas,\n serviceProviderRolesById,\n ssoIdpApiUrlv1,\n tenantadmApiUrlv1,\n tenantadmApiUrlv2,\n twoFAStates,\n uiPermissionsByArea,\n uiPermissionsById,\n useradmApiUrl,\n useradmApiUrlv1,\n useradmApiUrlv2\n} from '@northern.tech/utils/constants';\nimport type {\n AnyPermission,\n AuditLogPermission,\n DeploymentPermission,\n DeviceIssueOptionKey,\n GroupsPermission,\n PermissionObject,\n PermissionSet,\n PermissionSetId,\n ReleasesPermission,\n Role,\n ScopedPermissionsByAreaKey,\n SortOptions,\n UiPermissionsByAreaKey,\n UiPermissionsByIdKey,\n UiPermissionsDefinition,\n UserManagementPermission\n} from '@northern.tech/utils/constants';\n\nexport {\n alertChannels,\n ALL_DEVICE_STATES,\n ALL_DEVICES,\n ALL_RELEASES,\n APPLICATION_JSON_CONTENT_TYPE,\n APPLICATION_JWT_CONTENT_TYPE,\n ATTRIBUTE_SCOPES,\n apiRoot,\n apiUrl,\n auditLogsApiUrl,\n defaultPermissionSets,\n deploymentsApiUrl,\n deploymentsApiUrlV2,\n DEVICE_FILTERING_OPTIONS,\n DEVICE_ISSUE_OPTIONS,\n DEVICE_LIST_DEFAULTS,\n DEVICE_STATES,\n deviceAuthV2,\n deviceConfig,\n deviceConnect,\n emptyRole,\n emptyUiPermissions,\n headerNames,\n inventoryApiUrl,\n inventoryApiUrlV2,\n iotManagerBaseURL,\n monitorApiUrlv1,\n limitDefault,\n maxSessionAge,\n PermissionTypes,\n reportingApiUrl,\n rolesById,\n rolesByName,\n scopedPermissionAreas,\n serviceProviderRolesById,\n SORTING_OPTIONS,\n ssoIdpApiUrlv1,\n tenantadmApiUrlv1,\n tenantadmApiUrlv2,\n twoFAStates,\n uiPermissionsByArea,\n uiPermissionsById,\n useradmApiUrl,\n useradmApiUrlv1,\n useradmApiUrlv2\n};\n\nexport type {\n AnyPermission,\n AuditLogPermission,\n DeploymentPermission,\n DeviceIssueOptionKey,\n GroupsPermission,\n PermissionObject,\n PermissionSet,\n PermissionSetId,\n ReleasesPermission,\n Role,\n ScopedPermissionsByAreaKey,\n SortOptions,\n UiPermissionsByAreaKey,\n UiPermissionsByIdKey,\n UiPermissionsDefinition,\n UserManagementPermission\n};\n\nexport * from './appSlice/constants';\nexport * from './commonConstants';\nexport * from './deploymentsSlice/constants';\nexport * from './devicesSlice/constants';\nexport * from './monitorSlice/constants';\nexport * from './onboardingSlice/constants';\nexport * from './organizationSlice/constants';\nexport * from './releasesSlice/constants';\nexport * from './usersSlice/constants';\n","// Copyright 2023 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport type {\n Device as BackendDeviceAuth,\n ConnectionState,\n DeviceConfiguration,\n DeviceState,\n DeviceTierLimits,\n MonitorConfiguration,\n SortCriteria,\n Status\n} from '@northern.tech/types/MenderTypes';\n// @ts-nocheck\nimport { deepCompare, duplicateFilter } from '@northern.tech/utils/helpers';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { ALL_DEVICE_STATES, DeviceIssueOptionKey, FilterOperator, SortOptions } from '../constants';\nimport { DEVICE_LIST_DEFAULTS, DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport type { DeviceDeployment } from '../deploymentsSlice';\nimport type { DeviceAuthState } from './constants';\n\nexport const sliceName = 'devices';\nexport type DeviceSelectedAttribute = { attribute: string; scope: string };\nexport type DeviceListState = {\n detailsTab: string;\n deviceIds: string[];\n isLoading: boolean;\n open?: boolean;\n page: number;\n perPage: number;\n refreshTrigger: boolean;\n selectedAttributes: DeviceSelectedAttribute[];\n selectedId?: string;\n selectedIssues: DeviceIssueOptionKey[];\n selection: number[];\n setOnly?: boolean;\n sort: SortOptions & Partial<SortCriteria>;\n state?: DeviceAuthState | typeof ALL_DEVICE_STATES;\n total: number;\n};\ntype DeviceReport = {\n items: { count: number; key: string }[];\n otherCount: number;\n total: number;\n};\nexport type DeviceGroup = { deviceIds?: string[]; filters?: DeviceFilter[]; id?: string; total?: number };\nexport type InventoryAttributes = {\n [key: string]: string | string[];\n artifact_name: string;\n device_type: string[];\n};\n\n// based on the api docs the Record values might be even: \"Supported types: number, string, array of numbers, array of strings\" - but I guess \"string\" or \"string | sting[]\" should be good enough\ntype UiDeviceAttributes = {\n attributes: InventoryAttributes;\n identity?: Record<string, string>;\n monitor?: Record<string, string>;\n system: Record<string, string>;\n tags?: Record<string, string>;\n};\n\nexport type Device = BackendDeviceAuth &\n UiDeviceAttributes & {\n check_in_time_exact?: string;\n check_in_time_rounded?: string;\n config?: DeviceConfiguration;\n connect_status?: ConnectionState['status'];\n connect_updated_ts?: string;\n deploymentsCount?: number;\n deviceDeployments?: DeviceDeployment;\n etag?: string;\n gatewayIds?: string[];\n group?: string;\n id: string;\n isNew?: boolean;\n isOffline?: boolean;\n monitors?: MonitorConfiguration[];\n status: Status;\n twinsByIntegration?: Record<string, DeviceState & { twinError?: string }>;\n };\nexport type DeviceFilter = {\n key: string;\n operator: FilterOperator;\n scope: string;\n value: string | string[];\n};\ntype FilteringAttributes = {\n identityAttributes: string[];\n inventoryAttributes: string[];\n systemAttributes: string[];\n tagAttributes: string[];\n};\ntype FilteringAttributesConfig = {\n attributes: Record<string, string[]>;\n count: number;\n limit: number;\n};\nexport type DeviceStatus = DeviceAuthState | 'active' | 'inactive';\n\nexport type DeviceGroups = {\n byId: Record<string, DeviceGroup>;\n selectedGroup?: string;\n};\nexport type DeviceSliceType = {\n byId: Record<string, Device>;\n byStatus: Record<DeviceStatus, { deviceIds: string[]; total: number }>;\n deviceList: DeviceListState;\n filteringAttributes: FilteringAttributes;\n filteringAttributesConfig: FilteringAttributesConfig;\n filteringAttributesLimit: number;\n filters: DeviceFilter[];\n groups: DeviceGroups;\n limits: DeviceTierLimits;\n reports: DeviceReport[];\n total: number;\n};\nexport const initialState: DeviceSliceType = {\n byId: {\n // [deviceId]: {\n // ...,\n // twinsByIntegration: { [external.provider.id]: twinData }\n // }\n },\n byStatus: {\n [DEVICE_STATES.accepted]: { deviceIds: [], total: 0 },\n active: { deviceIds: [], total: 0 },\n inactive: { deviceIds: [], total: 0 },\n [DEVICE_STATES.pending]: { deviceIds: [], total: 0 },\n [DEVICE_STATES.preauth]: { deviceIds: [], total: 0 },\n [DEVICE_STATES.rejected]: { deviceIds: [], total: 0 }\n },\n deviceList: {\n deviceIds: [],\n ...DEVICE_LIST_DEFAULTS,\n selectedAttributes: [],\n selectedIssues: [],\n selection: [],\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n },\n state: DEVICE_STATES.accepted,\n total: 0,\n refreshTrigger: false,\n isLoading: false,\n detailsTab: '',\n open: false\n },\n filters: [\n // { key: 'device_type', value: 'raspberry', operator: '$eq', scope: 'inventory' }\n ],\n filteringAttributes: { identityAttributes: [], inventoryAttributes: [], systemAttributes: [], tagAttributes: [] },\n filteringAttributesLimit: 10,\n filteringAttributesConfig: {\n attributes: {\n // inventory: ['some_attribute']\n },\n count: 0,\n limit: 100\n },\n reports: [\n // { items: [{ key: \"someKey\", count: 42 }], otherCount: 123, total: <otherCount + itemsCount> }\n ],\n total: 0,\n limits: {\n standard: 0,\n micro: 0,\n system: 0\n },\n groups: {\n byId: {\n // groupName: { deviceIds: [], total: 0, filters: [] },\n // dynamo: { deviceIds: [], total: 3, filters: [{ a: 1 }] }\n },\n selectedGroup: undefined\n }\n};\n\nexport const devicesSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n receivedGroups: (state, action: PayloadAction<Record<string, DeviceGroup>>) => {\n state.groups.byId = action.payload;\n },\n addToGroup: (state, action: PayloadAction<{ deviceIds: string[]; group: string }>) => {\n const { group, deviceIds } = action.payload;\n const maybeExistingGroup = {\n filters: [],\n deviceIds: [],\n ...state.groups.byId[group]\n };\n state.groups.byId[group] = {\n ...maybeExistingGroup,\n deviceIds: [...maybeExistingGroup.deviceIds, ...deviceIds].filter(duplicateFilter),\n total: (maybeExistingGroup.total || 0) + 1\n };\n },\n removeFromGroup: (state, action: PayloadAction<{ deviceIds: string[]; group: string }>) => {\n const { group, deviceIds: removedIds } = action.payload;\n const { deviceIds = [], total = 0, ...maybeExistingGroup } = state.groups.byId[group] || {};\n const changedGroup = {\n ...maybeExistingGroup,\n deviceIds: deviceIds.filter(id => !removedIds.includes(id)),\n total: Math.max(total - removedIds.length, 0)\n };\n if (changedGroup.total || changedGroup.deviceIds.length) {\n state.groups.byId[group] = changedGroup;\n return;\n } else if (state.groups.selectedGroup === group) {\n state.groups.selectedGroup = undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [group]: removal, ...remainingById } = state.groups.byId;\n state.groups.byId = remainingById;\n },\n addGroup: (state, action: PayloadAction<{ group: DeviceGroup; groupName: string }>) => {\n const { groupName, group } = action.payload;\n state.groups.byId[groupName] = {\n ...state.groups.byId[groupName],\n ...group\n };\n },\n selectGroup: (state, { payload: group }: PayloadAction<string | undefined>) => {\n state.deviceList.deviceIds =\n group && state.groups.byId[group] && state.groups.byId[group].deviceIds && state.groups.byId[group].deviceIds.length > 0\n ? state.groups.byId[group].deviceIds\n : [];\n state.groups.selectedGroup = group;\n },\n removeGroup: (state, action: PayloadAction<string>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [action.payload]: removal, ...remainingById } = state.groups.byId;\n state.groups.byId = remainingById;\n state.groups.selectedGroup = state.groups.selectedGroup === action.payload ? undefined : state.groups.selectedGroup;\n },\n setDeviceListState: (state, action: PayloadAction<Partial<DeviceListState>>) => {\n state.deviceList = {\n ...state.deviceList,\n ...action.payload,\n sort: {\n ...state.deviceList.sort,\n ...action.payload.sort\n }\n };\n },\n setFilterAttributes: (state, action: PayloadAction<FilteringAttributes>) => {\n state.filteringAttributes = action.payload;\n },\n setFilterablesConfig: (state, action: PayloadAction<FilteringAttributesConfig>) => {\n state.filteringAttributesConfig = action.payload;\n },\n receivedDevices: (state, action: PayloadAction<Record<string, Device>>) => {\n state.byId = {\n ...state.byId,\n ...action.payload\n };\n },\n setDeviceFilters: (state, action: PayloadAction<DeviceFilter[]>) => {\n if (deepCompare(action.payload, state.filters)) {\n return;\n }\n state.filters = action.payload.filter(filter => filter.key && filter.operator && filter.scope && typeof filter.value !== 'undefined');\n },\n setInactiveDevices: (state, action: PayloadAction<{ activeDeviceTotal: number; inactiveDeviceTotal: number }>) => {\n const { activeDeviceTotal, inactiveDeviceTotal } = action.payload;\n state.byStatus.active.total = activeDeviceTotal;\n state.byStatus.inactive.total = inactiveDeviceTotal;\n },\n setDeviceReports: (state, action: PayloadAction<DeviceReport[]>) => {\n state.reports = action.payload;\n },\n setDevicesByStatus: (state, action: PayloadAction<{ deviceIds: string[]; forceUpdate?: boolean; status: DeviceStatus; total: number }>) => {\n const { forceUpdate, status, total, deviceIds } = action.payload;\n state.byStatus[status] = total || forceUpdate ? { deviceIds, total } : state.byStatus[status];\n },\n setDevicesCountByStatus: (state, action: PayloadAction<{ count: number; status: DeviceStatus }>) => {\n const { count, status } = action.payload;\n state.byStatus[status].total = count;\n },\n setDeviceLimits: (state, action: PayloadAction<DeviceTierLimits>) => {\n state.limits = action.payload;\n },\n receivedDevice: (state, action: PayloadAction<{ id: string } & Partial<Device>>) => {\n state.byId[action.payload.id] = {\n ...state.byId[action.payload.id],\n ...action.payload\n };\n },\n maybeUpdateDevicesByStatus: (state, action: PayloadAction<{ authId?: string; deviceId: string }>) => {\n const { deviceId, authId } = action.payload;\n const device = state.byId[deviceId];\n const hasMultipleAuthSets = authId && device.auth_sets ? device.auth_sets.filter(authset => authset.id !== authId).length > 0 : false;\n if (!hasMultipleAuthSets && (Object.values(DEVICE_STATES) as string[]).includes(device.status)) {\n const deviceIds = state.byStatus[device.status].deviceIds.filter(id => id !== deviceId);\n state.byStatus[device.status] = { deviceIds, total: Math.max(0, state.byStatus[device.status].total - 1) };\n }\n }\n }\n});\n\nexport const actions = devicesSlice.actions;\nexport default devicesSlice.reducer;\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/devicesSlice/mocks.ts","../../src/constants.ts","../../src/devicesSlice/index.ts"],"sourcesContent":["// Copyright 2025 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 { DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport { initialState } from './index';\n\nconst deviceTypes = { qemu: 'qemux86-64' };\nconst checkInTimeRounded = '2019-01-01T00:00:00.000Z';\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\nconst defaultMacAddress = 'dc:a6:32:12:ad:bf';\nconst defaultCreationDate = '2019-01-13T06:25:00.000Z';\n\nexport const mockState = {\n ...initialState,\n byId: {\n a1: {\n id: 'a1',\n attributes: {\n device_type: ['raspberrypi4'],\n ipv4_wlan0: '192.168.10.141/24'\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n b1: {\n id: 'b1',\n attributes: {\n ipv4_wlan0: '192.168.10.141/24',\n device_type: [deviceTypes.qemu]\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n c1: {\n id: 'c1',\n auth_sets: [],\n attributes: {\n device_type: ['qemux86-128']\n }\n }\n },\n byStatus: {\n accepted: { deviceIds: ['a1', 'b1'], counts: { micro: 0, standard: 2, system: 0 } },\n pending: { deviceIds: ['c1'], counts: { micro: 0, standard: 1, system: 0 } },\n preauthorized: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } },\n rejected: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } }\n },\n deviceList: {\n deviceIds: [],\n isLoading: false,\n page: 1,\n perPage: 20,\n selectedAttributes: [],\n selectedIssues: [],\n selection: [],\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n },\n state: DEVICE_STATES.accepted,\n total: 0\n },\n filteringAttributes: {\n identityAttributes: ['mac'],\n inventoryAttributes: ['artifact_name'],\n systemAttributes: [],\n tagAttributes: []\n },\n filteringAttributesLimit: 10,\n filters: [],\n groups: {\n byId: {\n testGroup: {\n deviceIds: ['a1', 'b1'],\n filters: [],\n total: 2\n },\n testGroupDynamic: {\n id: 'filter1',\n name: 'filter1',\n filters: [{ scope: 'system', key: 'group', operator: '$eq', value: 'things' }]\n } as const\n },\n selectedGroup: undefined\n },\n limits: { standard: 500, micro: 0, system: 0 }\n};\n","// Copyright 2024 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.\n//@ts-nocheck\nimport {\n ALL_DEVICES,\n ALL_DEVICE_STATES,\n ALL_RELEASES,\n APPLICATION_JSON_CONTENT_TYPE,\n APPLICATION_JWT_CONTENT_TYPE,\n ATTRIBUTE_SCOPES,\n DEVICE_FILTERING_OPTIONS,\n DEVICE_ISSUE_OPTIONS,\n DEVICE_LIST_DEFAULTS,\n DEVICE_STATES,\n PermissionTypes,\n SORTING_OPTIONS,\n alertChannels,\n apiRoot,\n apiUrl,\n auditLogsApiUrl,\n defaultPermissionSets,\n deploymentsApiUrl,\n deploymentsApiUrlV2,\n deviceAuthV2,\n deviceConfig,\n deviceConnect,\n emptyRole,\n emptyUiPermissions,\n headerNames,\n inventoryApiUrl,\n inventoryApiUrlV2,\n iotManagerBaseURL,\n limitDefault,\n maxSessionAge,\n monitorApiUrlv1,\n reportingApiUrl,\n rolesById,\n rolesByName,\n scopedPermissionAreas,\n serviceProviderRolesById,\n ssoIdpApiUrlv1,\n tenantadmApiUrlv1,\n tenantadmApiUrlv2,\n twoFAStates,\n uiPermissionsByArea,\n uiPermissionsById,\n useradmApiUrl,\n useradmApiUrlv1,\n useradmApiUrlv2\n} from '@northern.tech/utils/constants';\nimport type {\n AnyPermission,\n AuditLogPermission,\n DeploymentPermission,\n DeviceIssueOptionKey,\n GroupsPermission,\n PermissionObject,\n PermissionSet,\n PermissionSetId,\n ReleasesPermission,\n Role,\n ScopedPermissionsByAreaKey,\n SortOptions,\n UiPermissionsByAreaKey,\n UiPermissionsByIdKey,\n UiPermissionsDefinition,\n UserManagementPermission\n} from '@northern.tech/utils/constants';\n\nexport {\n alertChannels,\n ALL_DEVICE_STATES,\n ALL_DEVICES,\n ALL_RELEASES,\n APPLICATION_JSON_CONTENT_TYPE,\n APPLICATION_JWT_CONTENT_TYPE,\n ATTRIBUTE_SCOPES,\n apiRoot,\n apiUrl,\n auditLogsApiUrl,\n defaultPermissionSets,\n deploymentsApiUrl,\n deploymentsApiUrlV2,\n DEVICE_FILTERING_OPTIONS,\n DEVICE_ISSUE_OPTIONS,\n DEVICE_LIST_DEFAULTS,\n DEVICE_STATES,\n deviceAuthV2,\n deviceConfig,\n deviceConnect,\n emptyRole,\n emptyUiPermissions,\n headerNames,\n inventoryApiUrl,\n inventoryApiUrlV2,\n iotManagerBaseURL,\n monitorApiUrlv1,\n limitDefault,\n maxSessionAge,\n PermissionTypes,\n reportingApiUrl,\n rolesById,\n rolesByName,\n scopedPermissionAreas,\n serviceProviderRolesById,\n SORTING_OPTIONS,\n ssoIdpApiUrlv1,\n tenantadmApiUrlv1,\n tenantadmApiUrlv2,\n twoFAStates,\n uiPermissionsByArea,\n uiPermissionsById,\n useradmApiUrl,\n useradmApiUrlv1,\n useradmApiUrlv2\n};\n\nexport type {\n AnyPermission,\n AuditLogPermission,\n DeploymentPermission,\n DeviceIssueOptionKey,\n GroupsPermission,\n PermissionObject,\n PermissionSet,\n PermissionSetId,\n ReleasesPermission,\n Role,\n ScopedPermissionsByAreaKey,\n SortOptions,\n UiPermissionsByAreaKey,\n UiPermissionsByIdKey,\n UiPermissionsDefinition,\n UserManagementPermission\n};\n\nexport * from './appSlice/constants';\nexport * from './commonConstants';\nexport * from './deploymentsSlice/constants';\nexport * from './devicesSlice/constants';\nexport * from './monitorSlice/constants';\nexport * from './onboardingSlice/constants';\nexport * from './organizationSlice/constants';\nexport * from './releasesSlice/constants';\nexport * from './usersSlice/constants';\n","// Copyright 2023 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport type {\n Device as BackendDeviceAuth,\n ConnectionState,\n DeviceConfiguration,\n DeviceState,\n DeviceTierLimits,\n MonitorConfiguration,\n SortCriteria,\n Status\n} from '@northern.tech/types/MenderTypes';\n// @ts-nocheck\nimport { deepCompare, duplicateFilter } from '@northern.tech/utils/helpers';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport type { ALL_DEVICE_STATES, DeviceIssueOptionKey, FilterOperator, SortOptions } from '../constants';\nimport { DEVICE_LIST_DEFAULTS, DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport type { DeviceDeployment } from '../deploymentsSlice';\nimport type { DeviceAuthState } from './constants';\n\nexport const sliceName = 'devices';\nexport type DeviceSelectedAttribute = { attribute: string; scope: string };\nexport type DeviceListState = {\n detailsTab: string;\n deviceIds: string[];\n isLoading: boolean;\n open?: boolean;\n page: number;\n perPage: number;\n refreshTrigger: boolean;\n selectedAttributes: DeviceSelectedAttribute[];\n selectedId?: string;\n selectedIssues: DeviceIssueOptionKey[];\n selection: number[];\n setOnly?: boolean;\n sort: SortOptions & Partial<SortCriteria>;\n state?: DeviceAuthState | typeof ALL_DEVICE_STATES;\n total: number;\n};\ntype DeviceReport = {\n items: { count: number; key: string }[];\n otherCount: number;\n total: number;\n};\nexport type DeviceGroup = { deviceIds?: string[]; filters?: DeviceFilter[]; id?: string; total?: number };\nexport type InventoryAttributes = {\n [key: string]: string | string[];\n artifact_name: string;\n device_type: string[];\n};\n\n// based on the api docs the Record values might be even: \"Supported types: number, string, array of numbers, array of strings\" - but I guess \"string\" or \"string | sting[]\" should be good enough\ntype UiDeviceAttributes = {\n attributes: InventoryAttributes;\n identity?: Record<string, string>;\n monitor?: Record<string, string>;\n system: Record<string, string>;\n tags?: Record<string, string>;\n};\n\nexport type Device = BackendDeviceAuth &\n UiDeviceAttributes & {\n check_in_time_exact?: string;\n check_in_time_rounded?: string;\n config?: DeviceConfiguration;\n connect_status?: ConnectionState['status'];\n connect_updated_ts?: string;\n deploymentsCount?: number;\n deviceDeployments?: DeviceDeployment;\n etag?: string;\n gatewayIds?: string[];\n group?: string;\n id: string;\n isNew?: boolean;\n isOffline?: boolean;\n monitors?: MonitorConfiguration[];\n status: Status;\n twinsByIntegration?: Record<string, DeviceState & { twinError?: string }>;\n };\nexport type DeviceFilter = {\n key: string;\n operator: FilterOperator;\n scope: string;\n value: string | string[];\n};\ntype FilteringAttributes = {\n identityAttributes: string[];\n inventoryAttributes: string[];\n systemAttributes: string[];\n tagAttributes: string[];\n};\ntype FilteringAttributesConfig = {\n attributes: Record<string, string[]>;\n count: number;\n limit: number;\n};\n\nexport type DeviceGroups = {\n byId: Record<string, DeviceGroup>;\n selectedGroup?: string;\n};\nexport type DeviceSliceType = {\n byId: Record<string, Device>;\n byStatus: Record<DeviceAuthState, { counts: DeviceTierLimits & { total: number }; deviceIds: string[] }>;\n deviceList: DeviceListState;\n filteringAttributes: FilteringAttributes;\n filteringAttributesConfig: FilteringAttributesConfig;\n filteringAttributesLimit: number;\n filters: DeviceFilter[];\n groups: DeviceGroups;\n limits: DeviceTierLimits;\n reports: DeviceReport[];\n total: number;\n};\nexport const initialState: DeviceSliceType = {\n byId: {\n // [deviceId]: {\n // ...,\n // twinsByIntegration: { [external.provider.id]: twinData }\n // }\n },\n byStatus: {\n [DEVICE_STATES.accepted]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.pending]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.preauth]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },\n [DEVICE_STATES.rejected]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } }\n },\n deviceList: {\n deviceIds: [],\n ...DEVICE_LIST_DEFAULTS,\n selectedAttributes: [],\n selectedIssues: [],\n selection: [],\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n },\n state: DEVICE_STATES.accepted,\n total: 0,\n refreshTrigger: false,\n isLoading: false,\n detailsTab: '',\n open: false\n },\n filters: [\n // { key: 'device_type', value: 'raspberry', operator: '$eq', scope: 'inventory' }\n ],\n filteringAttributes: { identityAttributes: [], inventoryAttributes: [], systemAttributes: [], tagAttributes: [] },\n filteringAttributesLimit: 10,\n filteringAttributesConfig: {\n attributes: {\n // inventory: ['some_attribute']\n },\n count: 0,\n limit: 100\n },\n reports: [\n // { items: [{ key: \"someKey\", count: 42 }], otherCount: 123, total: <otherCount + itemsCount> }\n ],\n total: 0,\n limits: {\n standard: 0,\n micro: 0,\n system: 0\n },\n groups: {\n byId: {\n // groupName: { deviceIds: [], total: 0, filters: [] },\n // dynamo: { deviceIds: [], total: 3, filters: [{ a: 1 }] }\n },\n selectedGroup: undefined\n }\n};\n\nexport const devicesSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n receivedGroups: (state, action: PayloadAction<Record<string, DeviceGroup>>) => {\n state.groups.byId = action.payload;\n },\n addToGroup: (state, action: PayloadAction<{ deviceIds: string[]; group: string }>) => {\n const { group, deviceIds } = action.payload;\n const maybeExistingGroup = {\n filters: [],\n deviceIds: [],\n ...state.groups.byId[group]\n };\n state.groups.byId[group] = {\n ...maybeExistingGroup,\n deviceIds: [...maybeExistingGroup.deviceIds, ...deviceIds].filter(duplicateFilter),\n total: (maybeExistingGroup.total || 0) + 1\n };\n },\n removeFromGroup: (state, action: PayloadAction<{ deviceIds: string[]; group: string }>) => {\n const { group, deviceIds: removedIds } = action.payload;\n const { deviceIds = [], total = 0, ...maybeExistingGroup } = state.groups.byId[group] || {};\n const changedGroup = {\n ...maybeExistingGroup,\n deviceIds: deviceIds.filter(id => !removedIds.includes(id)),\n total: Math.max(total - removedIds.length, 0)\n };\n if (changedGroup.total || changedGroup.deviceIds.length) {\n state.groups.byId[group] = changedGroup;\n return;\n } else if (state.groups.selectedGroup === group) {\n state.groups.selectedGroup = undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [group]: removal, ...remainingById } = state.groups.byId;\n state.groups.byId = remainingById;\n },\n addGroup: (state, action: PayloadAction<{ group: DeviceGroup; groupName: string }>) => {\n const { groupName, group } = action.payload;\n state.groups.byId[groupName] = {\n ...state.groups.byId[groupName],\n ...group\n };\n },\n selectGroup: (state, { payload: group }: PayloadAction<string | undefined>) => {\n state.deviceList.deviceIds =\n group && state.groups.byId[group] && state.groups.byId[group].deviceIds && state.groups.byId[group].deviceIds.length > 0\n ? state.groups.byId[group].deviceIds\n : [];\n state.groups.selectedGroup = group;\n },\n removeGroup: (state, action: PayloadAction<string>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [action.payload]: removal, ...remainingById } = state.groups.byId;\n state.groups.byId = remainingById;\n state.groups.selectedGroup = state.groups.selectedGroup === action.payload ? undefined : state.groups.selectedGroup;\n },\n setDeviceListState: (state, action: PayloadAction<Partial<DeviceListState>>) => {\n state.deviceList = {\n ...state.deviceList,\n ...action.payload,\n sort: {\n ...state.deviceList.sort,\n ...action.payload.sort\n }\n };\n },\n setFilterAttributes: (state, action: PayloadAction<FilteringAttributes>) => {\n state.filteringAttributes = action.payload;\n },\n setFilterablesConfig: (state, action: PayloadAction<FilteringAttributesConfig>) => {\n state.filteringAttributesConfig = action.payload;\n },\n receivedDevices: (state, action: PayloadAction<Record<string, Device>>) => {\n state.byId = {\n ...state.byId,\n ...action.payload\n };\n },\n setDeviceFilters: (state, action: PayloadAction<DeviceFilter[]>) => {\n if (deepCompare(action.payload, state.filters)) {\n return;\n }\n state.filters = action.payload.filter(filter => filter.key && filter.operator && filter.scope && typeof filter.value !== 'undefined');\n },\n setDeviceReports: (state, action: PayloadAction<DeviceReport[]>) => {\n state.reports = action.payload;\n },\n setDevicesByStatus: (state, action: PayloadAction<{ deviceIds: string[]; status: DeviceAuthState; total: number }>) => {\n const { status, total, deviceIds } = action.payload;\n if (total) {\n state.byStatus[status].deviceIds = deviceIds;\n state.byStatus[status].counts.total = total;\n }\n },\n setDevicesCountByStatus: (state, action: PayloadAction<{ countsPerTier: DeviceTierLimits; status: DeviceAuthState }>) => {\n const { countsPerTier, status } = action.payload;\n state.byStatus[status].counts = { ...countsPerTier, total: Object.values(countsPerTier).reduce((accu, tieredCount) => (accu += tieredCount), 0) };\n },\n setDeviceLimits: (state, action: PayloadAction<DeviceTierLimits>) => {\n state.limits = action.payload;\n },\n receivedDevice: (state, action: PayloadAction<{ id: string } & Partial<Device>>) => {\n state.byId[action.payload.id] = {\n ...state.byId[action.payload.id],\n ...action.payload\n };\n },\n maybeUpdateDevicesByStatus: (state, action: PayloadAction<{ authId?: string; deviceId: string }>) => {\n const { deviceId, authId } = action.payload;\n const device = state.byId[deviceId];\n const hasMultipleAuthSets = authId && device.auth_sets ? device.auth_sets.filter(authset => authset.id !== authId).length > 0 : false;\n if (!hasMultipleAuthSets && (Object.values(DEVICE_STATES) as string[]).includes(device.status)) {\n const deviceIds = state.byStatus[device.status].deviceIds.filter(id => id !== deviceId);\n const deviceTier = (device.attributes.tier as string) || 'standard';\n state.byStatus[device.status] = {\n deviceIds,\n counts: {\n ...state.byStatus[device.status].counts,\n [deviceTier]: Math.max(0, state.byStatus[device.status].counts[deviceTier] - 1),\n total: Math.max(0, state.byStatus[device.status].counts.total - 1)\n }\n };\n }\n }\n }\n});\n\nexport const actions = devicesSlice.actions;\nexport default devicesSlice.reducer;\n"],"mappings":"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","names":[]}
|
|
@@ -69,27 +69,35 @@ declare const mockState: {
|
|
|
69
69
|
byStatus: {
|
|
70
70
|
accepted: {
|
|
71
71
|
deviceIds: string[];
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
};
|
|
78
|
-
inactive: {
|
|
79
|
-
deviceIds: never[];
|
|
80
|
-
total: number;
|
|
72
|
+
counts: {
|
|
73
|
+
micro: number;
|
|
74
|
+
standard: number;
|
|
75
|
+
system: number;
|
|
76
|
+
};
|
|
81
77
|
};
|
|
82
78
|
pending: {
|
|
83
79
|
deviceIds: string[];
|
|
84
|
-
|
|
80
|
+
counts: {
|
|
81
|
+
micro: number;
|
|
82
|
+
standard: number;
|
|
83
|
+
system: number;
|
|
84
|
+
};
|
|
85
85
|
};
|
|
86
86
|
preauthorized: {
|
|
87
87
|
deviceIds: never[];
|
|
88
|
-
|
|
88
|
+
counts: {
|
|
89
|
+
micro: number;
|
|
90
|
+
standard: number;
|
|
91
|
+
system: number;
|
|
92
|
+
};
|
|
89
93
|
};
|
|
90
94
|
rejected: {
|
|
91
95
|
deviceIds: never[];
|
|
92
|
-
|
|
96
|
+
counts: {
|
|
97
|
+
micro: number;
|
|
98
|
+
standard: number;
|
|
99
|
+
system: number;
|
|
100
|
+
};
|
|
93
101
|
};
|
|
94
102
|
};
|
|
95
103
|
deviceList: {
|
|
@@ -69,27 +69,35 @@ declare const mockState: {
|
|
|
69
69
|
byStatus: {
|
|
70
70
|
accepted: {
|
|
71
71
|
deviceIds: string[];
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
};
|
|
78
|
-
inactive: {
|
|
79
|
-
deviceIds: never[];
|
|
80
|
-
total: number;
|
|
72
|
+
counts: {
|
|
73
|
+
micro: number;
|
|
74
|
+
standard: number;
|
|
75
|
+
system: number;
|
|
76
|
+
};
|
|
81
77
|
};
|
|
82
78
|
pending: {
|
|
83
79
|
deviceIds: string[];
|
|
84
|
-
|
|
80
|
+
counts: {
|
|
81
|
+
micro: number;
|
|
82
|
+
standard: number;
|
|
83
|
+
system: number;
|
|
84
|
+
};
|
|
85
85
|
};
|
|
86
86
|
preauthorized: {
|
|
87
87
|
deviceIds: never[];
|
|
88
|
-
|
|
88
|
+
counts: {
|
|
89
|
+
micro: number;
|
|
90
|
+
standard: number;
|
|
91
|
+
system: number;
|
|
92
|
+
};
|
|
89
93
|
};
|
|
90
94
|
rejected: {
|
|
91
95
|
deviceIds: never[];
|
|
92
|
-
|
|
96
|
+
counts: {
|
|
97
|
+
micro: number;
|
|
98
|
+
standard: number;
|
|
99
|
+
system: number;
|
|
100
|
+
};
|
|
93
101
|
};
|
|
94
102
|
};
|
|
95
103
|
deviceList: {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
initialState
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-VODRLEDP.js";
|
|
4
4
|
import {
|
|
5
5
|
DEVICE_STATES,
|
|
6
6
|
SORTING_OPTIONS
|
|
7
7
|
} from "../chunk-WWED74SG.js";
|
|
8
8
|
import "../chunk-2DYA3X77.js";
|
|
9
|
-
import "../chunk-ZKAH3APE.js";
|
|
10
9
|
import "../chunk-FAJ3I2UQ.js";
|
|
10
|
+
import "../chunk-ZKAH3APE.js";
|
|
11
11
|
import "../chunk-OWWCFJZ5.js";
|
|
12
12
|
|
|
13
13
|
// src/devicesSlice/mocks.ts
|
|
@@ -82,12 +82,10 @@ var mockState = {
|
|
|
82
82
|
}
|
|
83
83
|
},
|
|
84
84
|
byStatus: {
|
|
85
|
-
accepted: { deviceIds: ["a1", "b1"],
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
preauthorized: { deviceIds: [], total: 0 },
|
|
90
|
-
rejected: { deviceIds: [], total: 0 }
|
|
85
|
+
accepted: { deviceIds: ["a1", "b1"], counts: { micro: 0, standard: 2, system: 0 } },
|
|
86
|
+
pending: { deviceIds: ["c1"], counts: { micro: 0, standard: 1, system: 0 } },
|
|
87
|
+
preauthorized: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } },
|
|
88
|
+
rejected: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } }
|
|
91
89
|
},
|
|
92
90
|
deviceList: {
|
|
93
91
|
deviceIds: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/devicesSlice/mocks.ts"],"sourcesContent":["// Copyright 2025 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 { DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport { initialState } from './index';\n\nconst deviceTypes = { qemu: 'qemux86-64' };\nconst checkInTimeRounded = '2019-01-01T00:00:00.000Z';\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\nconst defaultMacAddress = 'dc:a6:32:12:ad:bf';\nconst defaultCreationDate = '2019-01-13T06:25:00.000Z';\n\nexport const mockState = {\n ...initialState,\n byId: {\n a1: {\n id: 'a1',\n attributes: {\n device_type: ['raspberrypi4'],\n ipv4_wlan0: '192.168.10.141/24'\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n b1: {\n id: 'b1',\n attributes: {\n ipv4_wlan0: '192.168.10.141/24',\n device_type: [deviceTypes.qemu]\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n c1: {\n id: 'c1',\n auth_sets: [],\n attributes: {\n device_type: ['qemux86-128']\n }\n }\n },\n byStatus: {\n accepted: { deviceIds: ['a1', 'b1'],
|
|
1
|
+
{"version":3,"sources":["../../src/devicesSlice/mocks.ts"],"sourcesContent":["// Copyright 2025 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 { DEVICE_STATES, SORTING_OPTIONS } from '../constants';\nimport { initialState } from './index';\n\nconst deviceTypes = { qemu: 'qemux86-64' };\nconst checkInTimeRounded = '2019-01-01T00:00:00.000Z';\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\nconst defaultMacAddress = 'dc:a6:32:12:ad:bf';\nconst defaultCreationDate = '2019-01-13T06:25:00.000Z';\n\nexport const mockState = {\n ...initialState,\n byId: {\n a1: {\n id: 'a1',\n attributes: {\n device_type: ['raspberrypi4'],\n ipv4_wlan0: '192.168.10.141/24'\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n b1: {\n id: 'b1',\n attributes: {\n ipv4_wlan0: '192.168.10.141/24',\n device_type: [deviceTypes.qemu]\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: DEVICE_STATES.accepted,\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: DEVICE_STATES.accepted\n }\n ]\n },\n c1: {\n id: 'c1',\n auth_sets: [],\n attributes: {\n device_type: ['qemux86-128']\n }\n }\n },\n byStatus: {\n accepted: { deviceIds: ['a1', 'b1'], counts: { micro: 0, standard: 2, system: 0 } },\n pending: { deviceIds: ['c1'], counts: { micro: 0, standard: 1, system: 0 } },\n preauthorized: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } },\n rejected: { deviceIds: [], counts: { micro: 0, standard: 0, system: 0 } }\n },\n deviceList: {\n deviceIds: [],\n isLoading: false,\n page: 1,\n perPage: 20,\n selectedAttributes: [],\n selectedIssues: [],\n selection: [],\n sort: {\n direction: SORTING_OPTIONS.desc\n // key: null,\n // scope: null\n },\n state: DEVICE_STATES.accepted,\n total: 0\n },\n filteringAttributes: {\n identityAttributes: ['mac'],\n inventoryAttributes: ['artifact_name'],\n systemAttributes: [],\n tagAttributes: []\n },\n filteringAttributesLimit: 10,\n filters: [],\n groups: {\n byId: {\n testGroup: {\n deviceIds: ['a1', 'b1'],\n filters: [],\n total: 2\n },\n testGroupDynamic: {\n id: 'filter1',\n name: 'filter1',\n filters: [{ scope: 'system', key: 'group', operator: '$eq', value: 'things' }]\n } as const\n },\n selectedGroup: undefined\n },\n limits: { standard: 500, micro: 0, system: 0 }\n};\n"],"mappings":";;;;;;;;;;;;;AAgBA,IAAM,cAAc,EAAE,MAAM,aAAa;AACzC,IAAM,qBAAqB;AAC3B,IAAM,mBAAmB;AACzB,IAAM,oBAAoB;AAC1B,IAAM,sBAAsB;AAErB,IAAM,YAAY;AAAA,EACvB,GAAG;AAAA,EACH,MAAM;AAAA,IACJ,IAAI;AAAA,MACF,IAAI;AAAA,MACJ,YAAY;AAAA,QACV,aAAa,CAAC,cAAc;AAAA,QAC5B,YAAY;AAAA,MACd;AAAA,MACA,QAAQ;AAAA,QACN,eAAe;AAAA,MACjB;AAAA,MACA,eAAe;AAAA,MACf,qBAAqB;AAAA,MACrB,uBAAuB;AAAA,MACvB,eAAe,EAAE,KAAK,kBAAkB;AAAA,MACxC,QAAQ,cAAc;AAAA,MACtB,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,UACE,IAAI;AAAA,UACJ,eAAe,EAAE,KAAK,kBAAkB;AAAA,UACxC,QAAQ;AAAA,UACR,IAAI;AAAA,UACJ,QAAQ,cAAc;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI;AAAA,MACF,IAAI;AAAA,MACJ,YAAY;AAAA,QACV,YAAY;AAAA,QACZ,aAAa,CAAC,YAAY,IAAI;AAAA,MAChC;AAAA,MACA,QAAQ;AAAA,QACN,eAAe;AAAA,MACjB;AAAA,MACA,eAAe;AAAA,MACf,qBAAqB;AAAA,MACrB,uBAAuB;AAAA,MACvB,eAAe,EAAE,KAAK,kBAAkB;AAAA,MACxC,QAAQ,cAAc;AAAA,MACtB,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,UACE,IAAI;AAAA,UACJ,eAAe,EAAE,KAAK,kBAAkB;AAAA,UACxC,QAAQ;AAAA,UACR,IAAI;AAAA,UACJ,QAAQ,cAAc;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI;AAAA,MACF,IAAI;AAAA,MACJ,WAAW,CAAC;AAAA,MACZ,YAAY;AAAA,QACV,aAAa,CAAC,aAAa;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,UAAU,EAAE,WAAW,CAAC,MAAM,IAAI,GAAG,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,EAAE,EAAE;AAAA,IAClF,SAAS,EAAE,WAAW,CAAC,IAAI,GAAG,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,EAAE,EAAE;AAAA,IAC3E,eAAe,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,EAAE,EAAE;AAAA,IAC7E,UAAU,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,EAAE,EAAE;AAAA,EAC1E;AAAA,EACA,YAAY;AAAA,IACV,WAAW,CAAC;AAAA,IACZ,WAAW;AAAA,IACX,MAAM;AAAA,IACN,SAAS;AAAA,IACT,oBAAoB,CAAC;AAAA,IACrB,gBAAgB,CAAC;AAAA,IACjB,WAAW,CAAC;AAAA,IACZ,MAAM;AAAA,MACJ,WAAW,gBAAgB;AAAA;AAAA;AAAA,IAG7B;AAAA,IACA,OAAO,cAAc;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EACA,qBAAqB;AAAA,IACnB,oBAAoB,CAAC,KAAK;AAAA,IAC1B,qBAAqB,CAAC,eAAe;AAAA,IACrC,kBAAkB,CAAC;AAAA,IACnB,eAAe,CAAC;AAAA,EAClB;AAAA,EACA,0BAA0B;AAAA,EAC1B,SAAS,CAAC;AAAA,EACV,QAAQ;AAAA,IACN,MAAM;AAAA,MACJ,WAAW;AAAA,QACT,WAAW,CAAC,MAAM,IAAI;AAAA,QACtB,SAAS,CAAC;AAAA,QACV,OAAO;AAAA,MACT;AAAA,MACA,kBAAkB;AAAA,QAChB,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,SAAS,CAAC,EAAE,OAAO,UAAU,KAAK,SAAS,UAAU,OAAO,OAAO,SAAS,CAAC;AAAA,MAC/E;AAAA,IACF;AAAA,IACA,eAAe;AAAA,EACjB;AAAA,EACA,QAAQ,EAAE,UAAU,KAAK,OAAO,GAAG,QAAQ,EAAE;AAC/C;","names":[]}
|
|
@@ -422,15 +422,22 @@ var getDeviceIdentityAttributes = (0, import_toolkit.createSelector)(
|
|
|
422
422
|
);
|
|
423
423
|
var getDeviceCountsByStatus = (0, import_toolkit.createSelector)(
|
|
424
424
|
[getDevicesByStatus],
|
|
425
|
-
(byStatus) => Object.values(import_constants2.DEVICE_STATES).reduce(
|
|
426
|
-
accu
|
|
427
|
-
|
|
428
|
-
|
|
425
|
+
(byStatus) => Object.values(import_constants2.DEVICE_STATES).reduce(
|
|
426
|
+
(accu, deviceState) => {
|
|
427
|
+
const { counts } = byStatus[deviceState];
|
|
428
|
+
const { total, ...tieredCounts } = counts;
|
|
429
|
+
const count = Object.values(tieredCounts).reduce((accu2, countPerTier) => accu2 + countPerTier, 0);
|
|
430
|
+
accu[deviceState] = count;
|
|
431
|
+
accu.total = accu.total + count;
|
|
432
|
+
return accu;
|
|
433
|
+
},
|
|
434
|
+
{ total: 0 }
|
|
435
|
+
)
|
|
429
436
|
);
|
|
430
437
|
var getDeviceById = (0, import_toolkit.createSelector)([getDevicesById, (_, deviceId) => deviceId], (devicesById, deviceId = "") => devicesById[deviceId] ?? {});
|
|
431
438
|
var getSelectedGroupInfo = (0, import_toolkit.createSelector)(
|
|
432
|
-
[
|
|
433
|
-
({
|
|
439
|
+
[getDeviceCountsByStatus, getGroupsById, getSelectedGroup],
|
|
440
|
+
({ accepted: acceptedDeviceTotal }, groupsById, selectedGroup) => {
|
|
434
441
|
let groupCount = acceptedDeviceTotal;
|
|
435
442
|
let groupFilters = [];
|
|
436
443
|
if (selectedGroup && groupsById[selectedGroup]) {
|
|
@@ -446,8 +453,8 @@ var getCombinedLimit = (0, import_toolkit.createSelector)(
|
|
|
446
453
|
// limit might be -1 for unlimited devices
|
|
447
454
|
);
|
|
448
455
|
var getLimitMaxed = (0, import_toolkit.createSelector)(
|
|
449
|
-
[
|
|
450
|
-
({
|
|
456
|
+
[getDeviceCountsByStatus, getCombinedLimit],
|
|
457
|
+
({ accepted: acceptedDevices }, combinedLimit) => !!combinedLimit && combinedLimit <= acceptedDevices
|
|
451
458
|
);
|
|
452
459
|
var getGroupsByIdWithoutUngrouped = (0, import_toolkit.createSelector)([getGroupsById], ({ [UNGROUPED_GROUP.id]: ungrouped, ...groups }) => groups);
|
|
453
460
|
var getGroupData = (0, import_toolkit.createSelector)([getGroupsByIdWithoutUngrouped], (groups) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/devicesSlice/selectors.ts","../../src/constants.ts","../../src/commonConstants.tsx"],"sourcesContent":["// Copyright 2023 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { duplicateFilter } from '@northern.tech/utils/helpers';\nimport { createSelector } from '@reduxjs/toolkit';\n\nimport type { DeviceFilter, DeviceGroup } from '.';\nimport { DEVICE_STATES, UNGROUPED_GROUP } from '../constants';\nimport type { RootState } from '../store';\n\nexport const getAcceptedDevices = (state: RootState) => state.devices.byStatus.accepted;\nexport const getDevicesByStatus = (state: RootState) => state.devices.byStatus;\nexport const getDevicesById = (state: RootState) => state.devices.byId;\nexport const getDeviceReports = (state: RootState) => state.devices.reports;\nexport const getGroupsById = (state: RootState) => state.devices.groups.byId;\nexport const getSelectedGroup = (state: RootState) => state.devices.groups.selectedGroup;\n\nexport const getDeviceListState = (state: RootState) => state.devices.deviceList;\nexport const getListedDevices = (state: RootState) => state.devices.deviceList.deviceIds;\nexport const getFilteringAttributes = (state: RootState) => state.devices.filteringAttributes;\nexport const getDeviceFilters = (state: RootState) => state.devices.filters || [];\nconst getFilteringAttributesFromConfig = (state: RootState) => state.devices.filteringAttributesConfig.attributes;\nexport const getSortedFilteringAttributes = createSelector([getFilteringAttributes], filteringAttributes => ({\n ...filteringAttributes,\n identityAttributes: [...filteringAttributes.identityAttributes, 'id']\n}));\nexport const getDeviceLimits = (state: RootState) => state.devices.limits;\nconst getFilteringAttributesLimit = (state: RootState) => state.devices.filteringAttributesLimit;\n\nexport const getDeviceIdentityAttributes = createSelector(\n [getFilteringAttributes, getFilteringAttributesLimit],\n ({ identityAttributes }, filteringAttributesLimit) => {\n // limit the selection of the available attribute to AVAILABLE_ATTRIBUTE_LIMIT\n const attributes = identityAttributes.slice(0, filteringAttributesLimit);\n return attributes.reduce(\n (accu, value) => {\n accu.push({ value, label: value, scope: 'identity' });\n return accu;\n },\n [\n { value: 'name', label: 'Name', scope: 'tags' },\n { value: 'id', label: 'Device ID', scope: 'identity' }\n ]\n );\n }\n);\n\nexport const getDeviceCountsByStatus = createSelector([getDevicesByStatus], byStatus =>\n Object.values(DEVICE_STATES).reduce((accu, state) => {\n accu[state] = byStatus[state].total || 0;\n return accu;\n }, {})\n);\n\nexport const getDeviceById = createSelector([getDevicesById, (_, deviceId) => deviceId], (devicesById, deviceId = '') => devicesById[deviceId] ?? {});\n\nexport const getSelectedGroupInfo = createSelector(\n [getAcceptedDevices, getGroupsById, getSelectedGroup],\n ({ total: acceptedDeviceTotal }, groupsById, selectedGroup) => {\n let groupCount = acceptedDeviceTotal;\n let groupFilters: DeviceFilter[] = [];\n if (selectedGroup && groupsById[selectedGroup]) {\n groupCount = groupsById[selectedGroup].total || 0;\n groupFilters = groupsById[selectedGroup].filters || [];\n }\n return { groupCount, selectedGroup, groupFilters };\n }\n);\n\nexport const getCombinedLimit = createSelector(\n [getDeviceLimits],\n deviceLimits => Object.values(deviceLimits).reduce((accu, limit) => accu + Math.max(limit ?? 0, 0), 0) // limit might be -1 for unlimited devices\n);\n\nexport const getLimitMaxed = createSelector(\n [getAcceptedDevices, getCombinedLimit],\n ({ total: acceptedDevices = 0 }, combinedLimit) => !!combinedLimit && combinedLimit <= acceptedDevices\n);\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const getGroupsByIdWithoutUngrouped = createSelector([getGroupsById], ({ [UNGROUPED_GROUP.id]: ungrouped, ...groups }) => groups);\n\nexport const getGroupData = createSelector([getGroupsByIdWithoutUngrouped], groups => {\n const createdGroup = Object.keys(groups).length ? Object.keys(groups)[0] : undefined;\n const hasDynamicGroups = Object.values(groups).some(group => !!group.id);\n return { createdGroup, hasDynamicGroups, groups };\n});\n\ntype SelectorGroup = DeviceGroup & { groupId: string };\ntype SelectorGroups = { dynamic: SelectorGroup[]; static: SelectorGroup[]; ungrouped: SelectorGroup[] };\n\nexport const getGroups = createSelector([getGroupsById], groupsById => {\n const groupNames = Object.keys(groupsById).sort();\n const groupedGroups = Object.entries(groupsById)\n .sort((a, b) => a[0].localeCompare(b[0]))\n .reduce<SelectorGroups>(\n (accu, [groupname, group]) => {\n const name = groupname === UNGROUPED_GROUP.id ? UNGROUPED_GROUP.name : groupname;\n const groupItem = { ...group, groupId: name, name: groupname };\n if ((group.filters ?? []).length > 0) {\n if (groupname !== UNGROUPED_GROUP.id) {\n accu.dynamic.push(groupItem);\n } else {\n accu.ungrouped.push(groupItem);\n }\n } else {\n accu.static.push(groupItem);\n }\n return accu;\n },\n { dynamic: [], static: [], ungrouped: [] }\n );\n return { groupNames, ...groupedGroups };\n});\nexport const getAttributesList = createSelector(\n [getFilteringAttributes, getFilteringAttributesFromConfig],\n ({ identityAttributes = [], inventoryAttributes = [] }, { identity = [], inventory = [] }) =>\n [...identityAttributes, ...inventoryAttributes, ...identity, ...inventory].filter(duplicateFilter)\n);\n\nexport const getDeviceTypes = createSelector([getAcceptedDevices, getDevicesById], ({ deviceIds = [] }, devicesById) =>\n Object.keys(\n deviceIds.slice(0, 200).reduce((accu, item) => {\n const { device_type: deviceTypes = [] } = devicesById[item] ? devicesById[item].attributes : {};\n accu = deviceTypes.reduce((deviceTypeAccu, deviceType) => {\n if (deviceType.length > 1) {\n deviceTypeAccu[deviceType] = deviceTypeAccu[deviceType] ? deviceTypeAccu[deviceType] + 1 : 1;\n }\n return deviceTypeAccu;\n }, accu);\n return accu;\n }, {})\n )\n);\n","// Copyright 2024 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.\n//@ts-nocheck\nimport {\n ALL_DEVICES,\n ALL_DEVICE_STATES,\n ALL_RELEASES,\n APPLICATION_JSON_CONTENT_TYPE,\n APPLICATION_JWT_CONTENT_TYPE,\n ATTRIBUTE_SCOPES,\n DEVICE_FILTERING_OPTIONS,\n DEVICE_ISSUE_OPTIONS,\n DEVICE_LIST_DEFAULTS,\n DEVICE_STATES,\n PermissionTypes,\n SORTING_OPTIONS,\n alertChannels,\n apiRoot,\n apiUrl,\n auditLogsApiUrl,\n defaultPermissionSets,\n deploymentsApiUrl,\n deploymentsApiUrlV2,\n deviceAuthV2,\n deviceConfig,\n deviceConnect,\n emptyRole,\n emptyUiPermissions,\n headerNames,\n inventoryApiUrl,\n inventoryApiUrlV2,\n iotManagerBaseURL,\n limitDefault,\n maxSessionAge,\n monitorApiUrlv1,\n reportingApiUrl,\n rolesById,\n rolesByName,\n scopedPermissionAreas,\n serviceProviderRolesById,\n ssoIdpApiUrlv1,\n tenantadmApiUrlv1,\n tenantadmApiUrlv2,\n twoFAStates,\n uiPermissionsByArea,\n uiPermissionsById,\n useradmApiUrl,\n useradmApiUrlv1,\n useradmApiUrlv2\n} from '@northern.tech/utils/constants';\nimport type {\n AnyPermission,\n AuditLogPermission,\n DeploymentPermission,\n DeviceIssueOptionKey,\n GroupsPermission,\n PermissionObject,\n PermissionSet,\n PermissionSetId,\n ReleasesPermission,\n Role,\n ScopedPermissionsByAreaKey,\n SortOptions,\n UiPermissionsByAreaKey,\n UiPermissionsByIdKey,\n UiPermissionsDefinition,\n UserManagementPermission\n} from '@northern.tech/utils/constants';\n\nexport {\n alertChannels,\n ALL_DEVICE_STATES,\n ALL_DEVICES,\n ALL_RELEASES,\n APPLICATION_JSON_CONTENT_TYPE,\n APPLICATION_JWT_CONTENT_TYPE,\n ATTRIBUTE_SCOPES,\n apiRoot,\n apiUrl,\n auditLogsApiUrl,\n defaultPermissionSets,\n deploymentsApiUrl,\n deploymentsApiUrlV2,\n DEVICE_FILTERING_OPTIONS,\n DEVICE_ISSUE_OPTIONS,\n DEVICE_LIST_DEFAULTS,\n DEVICE_STATES,\n deviceAuthV2,\n deviceConfig,\n deviceConnect,\n emptyRole,\n emptyUiPermissions,\n headerNames,\n inventoryApiUrl,\n inventoryApiUrlV2,\n iotManagerBaseURL,\n monitorApiUrlv1,\n limitDefault,\n maxSessionAge,\n PermissionTypes,\n reportingApiUrl,\n rolesById,\n rolesByName,\n scopedPermissionAreas,\n serviceProviderRolesById,\n SORTING_OPTIONS,\n ssoIdpApiUrlv1,\n tenantadmApiUrlv1,\n tenantadmApiUrlv2,\n twoFAStates,\n uiPermissionsByArea,\n uiPermissionsById,\n useradmApiUrl,\n useradmApiUrlv1,\n useradmApiUrlv2\n};\n\nexport type {\n AnyPermission,\n AuditLogPermission,\n DeploymentPermission,\n DeviceIssueOptionKey,\n GroupsPermission,\n PermissionObject,\n PermissionSet,\n PermissionSetId,\n ReleasesPermission,\n Role,\n ScopedPermissionsByAreaKey,\n SortOptions,\n UiPermissionsByAreaKey,\n UiPermissionsByIdKey,\n UiPermissionsDefinition,\n UserManagementPermission\n};\n\nexport * from './appSlice/constants';\nexport * from './commonConstants';\nexport * from './deploymentsSlice/constants';\nexport * from './devicesSlice/constants';\nexport * from './monitorSlice/constants';\nexport * from './onboardingSlice/constants';\nexport * from './organizationSlice/constants';\nexport * from './releasesSlice/constants';\nexport * from './usersSlice/constants';\n","// Copyright 2024 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.\n// @ts-nocheck\nimport { mdiAws as AWS, mdiMicrosoftAzure as Azure } from '@mdi/js';\nimport type { Integration } from '@northern.tech/types/MenderTypes';\n\nimport type { DEVICE_FILTERING_OPTIONS } from './constants';\nimport { ATTRIBUTE_SCOPES } from './constants';\n\nexport const timeUnits = {\n days: 'days',\n minutes: 'minutes',\n hours: 'hours'\n};\n\nexport const UNGROUPED_GROUP = { id: '*|=ungrouped=|*', name: 'Unassigned' };\n\nexport const DEVICE_LIST_MAXIMUM_LENGTH = 50;\n\nexport type FilterOperator = keyof typeof DEVICE_FILTERING_OPTIONS;\n\nconst oneSecond = 1000;\nexport const TIMEOUTS = {\n debounceDefault: 700,\n debounceShort: 300,\n halfASecond: 0.5 * oneSecond,\n oneSecond,\n twoSeconds: 2 * oneSecond,\n threeSeconds: 3 * oneSecond,\n fiveSeconds: 5 * oneSecond,\n refreshDefault: 10 * oneSecond,\n refreshLong: 60 * oneSecond\n};\n\nexport const DEVICE_ONLINE_CUTOFF = { interval: 1, intervalName: timeUnits.days };\n\nexport interface IdAttribute {\n attribute: string;\n scope: string;\n}\nexport const defaultIdAttribute: Readonly<IdAttribute> = Object.freeze({ attribute: 'id', scope: ATTRIBUTE_SCOPES.identity });\n\nexport const credentialTypes = {\n aws: 'aws',\n http: 'http',\n sas: 'sas',\n x509: 'x509'\n};\nexport const EXTERNAL_PROVIDER = {\n 'iot-core': {\n credentialsType: credentialTypes.aws,\n icon: AWS,\n title: 'AWS IoT Core',\n twinTitle: 'Device Shadow',\n provider: 'iot-core',\n enabled: true,\n deviceTwin: true,\n configHint: <>For help finding your AWS IoT Core connection string, check the AWS IoT documentation.</>\n },\n 'iot-hub': {\n credentialsType: credentialTypes.sas,\n icon: Azure,\n title: 'Azure IoT Hub',\n twinTitle: 'Device Twin',\n provider: 'iot-hub',\n enabled: true,\n deviceTwin: true,\n configHint: (\n <span>\n For help finding your Azure IoT Hub connection string, look under 'Shared access policies' in the Microsoft Azure UI as described{' '}\n {\n <a\n href=\"https://devblogs.microsoft.com/iotdev/understand-different-connection-strings-in-azure-iot-hub/#iothubconn\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n here\n </a>\n }\n .\n </span>\n )\n },\n webhook: {\n credentialsType: credentialTypes.http,\n deviceTwin: false,\n twinTitle: '',\n // disable the webhook provider here, since it is treated different than other integrations, with a custom configuration & management view, etc.\n enabled: false,\n provider: 'webhook'\n }\n} as const;\n\nexport interface Webhook extends Integration {\n provider: 'webhook';\n}\n\nexport const emptyWebhook: Webhook = {\n description: '',\n provider: 'webhook',\n credentials: {\n type: EXTERNAL_PROVIDER.webhook.credentialsType,\n [EXTERNAL_PROVIDER.webhook.credentialsType]: {\n secret: '',\n url: ''\n }\n }\n};\n\ninterface CountryType {\n code: string;\n label: string;\n}\nexport const MAX_PAGE_SIZE = 500;\nconst regionNames = new Intl.DisplayNames(['en'], { type: 'region' });\nexport const countries: readonly CountryType[] = [\n 'AD',\n 'AE',\n 'AF',\n 'AG',\n 'AI',\n 'AL',\n 'AM',\n 'AO',\n 'AQ',\n 'AR',\n 'AS',\n 'AT',\n 'AU',\n 'AW',\n 'AX',\n 'AZ',\n 'BA',\n 'BB',\n 'BD',\n 'BE',\n 'BF',\n 'BG',\n 'BH',\n 'BI',\n 'BJ',\n 'BL',\n 'BM',\n 'BN',\n 'BO',\n 'BR',\n 'BS',\n 'BT',\n 'BV',\n 'BW',\n 'BY',\n 'BZ',\n 'CA',\n 'CC',\n 'CD',\n 'CF',\n 'CG',\n 'CH',\n 'CI',\n 'CK',\n 'CL',\n 'CM',\n 'CN',\n 'CO',\n 'CR',\n 'CU',\n 'CV',\n 'CW',\n 'CX',\n 'CY',\n 'CZ',\n 'DE',\n 'DJ',\n 'DK',\n 'DM',\n 'DO',\n 'DZ',\n 'EC',\n 'EE',\n 'EG',\n 'EH',\n 'ER',\n 'ES',\n 'ET',\n 'FI',\n 'FJ',\n 'FK',\n 'FM',\n 'FO',\n 'FR',\n 'GA',\n 'GB',\n 'GD',\n 'GE',\n 'GF',\n 'GG',\n 'GH',\n 'GI',\n 'GL',\n 'GM',\n 'GN',\n 'GP',\n 'GQ',\n 'GR',\n 'GS',\n 'GT',\n 'GU',\n 'GW',\n 'GY',\n 'HK',\n 'HM',\n 'HN',\n 'HR',\n 'HT',\n 'HU',\n 'ID',\n 'IE',\n 'IL',\n 'IM',\n 'IN',\n 'IO',\n 'IQ',\n 'IR',\n 'IS',\n 'IT',\n 'JE',\n 'JM',\n 'JO',\n 'JP',\n 'KE',\n 'KG',\n 'KH',\n 'KI',\n 'KM',\n 'KN',\n 'KP',\n 'KR',\n 'KW',\n 'KY',\n 'KZ',\n 'LA',\n 'LB',\n 'LC',\n 'LI',\n 'LK',\n 'LR',\n 'LS',\n 'LT',\n 'LU',\n 'LV',\n 'LY',\n 'MA',\n 'MC',\n 'MD',\n 'ME',\n 'MF',\n 'MG',\n 'MH',\n 'MK',\n 'ML',\n 'MM',\n 'MN',\n 'MO',\n 'MP',\n 'MQ',\n 'MR',\n 'MS',\n 'MT',\n 'MU',\n 'MV',\n 'MW',\n 'MX',\n 'MY',\n 'MZ',\n 'NA',\n 'NC',\n 'NE',\n 'NF',\n 'NG',\n 'NI',\n 'NL',\n 'NO',\n 'NP',\n 'NR',\n 'NU',\n 'NZ',\n 'OM',\n 'PA',\n 'PE',\n 'PF',\n 'PG',\n 'PH',\n 'PK',\n 'PL',\n 'PM',\n 'PN',\n 'PR',\n 'PS',\n 'PT',\n 'PW',\n 'PY',\n 'QA',\n 'RE',\n 'RO',\n 'RS',\n 'RU',\n 'RW',\n 'SA',\n 'SB',\n 'SC',\n 'SD',\n 'SE',\n 'SG',\n 'SH',\n 'SI',\n 'SJ',\n 'SK',\n 'SL',\n 'SM',\n 'SN',\n 'SO',\n 'SR',\n 'SS',\n 'ST',\n 'SV',\n 'SX',\n 'SY',\n 'SZ',\n 'TC',\n 'TD',\n 'TF',\n 'TG',\n 'TH',\n 'TJ',\n 'TK',\n 'TL',\n 'TM',\n 'TN',\n 'TO',\n 'TR',\n 'TT',\n 'TV',\n 'TW',\n 'TZ',\n 'UA',\n 'UG',\n 'US',\n 'UY',\n 'UZ',\n 'VA',\n 'VC',\n 'VE',\n 'VG',\n 'VI',\n 'VN',\n 'VU',\n 'WF',\n 'WS',\n 'XK',\n 'YE',\n 'YT',\n 'ZA',\n 'ZM',\n 'ZW'\n]\n .map(code => ({ code, label: regionNames.of(code) }))\n .sort((a, b) => a.label.localeCompare(b.label));\n"],"mappings":"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;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA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","names":["import_constants","AWS","Azure"]}
|
|
1
|
+
{"version":3,"sources":["../../src/devicesSlice/selectors.ts","../../src/constants.ts","../../src/commonConstants.tsx"],"sourcesContent":["// Copyright 2023 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { duplicateFilter } from '@northern.tech/utils/helpers';\nimport { createSelector } from '@reduxjs/toolkit';\n\nimport type { DeviceFilter, DeviceGroup } from '.';\nimport type { DeviceAuthState } from '../constants';\nimport { DEVICE_STATES, UNGROUPED_GROUP } from '../constants';\nimport type { RootState } from '../store';\n\nexport const getAcceptedDevices = (state: RootState) => state.devices.byStatus.accepted;\nexport const getDevicesByStatus = (state: RootState) => state.devices.byStatus;\nexport const getDevicesById = (state: RootState) => state.devices.byId;\nexport const getDeviceReports = (state: RootState) => state.devices.reports;\nexport const getGroupsById = (state: RootState) => state.devices.groups.byId;\nexport const getSelectedGroup = (state: RootState) => state.devices.groups.selectedGroup;\n\nexport const getDeviceListState = (state: RootState) => state.devices.deviceList;\nexport const getListedDevices = (state: RootState) => state.devices.deviceList.deviceIds;\nexport const getFilteringAttributes = (state: RootState) => state.devices.filteringAttributes;\nexport const getDeviceFilters = (state: RootState) => state.devices.filters || [];\nconst getFilteringAttributesFromConfig = (state: RootState) => state.devices.filteringAttributesConfig.attributes;\nexport const getSortedFilteringAttributes = createSelector([getFilteringAttributes], filteringAttributes => ({\n ...filteringAttributes,\n identityAttributes: [...filteringAttributes.identityAttributes, 'id']\n}));\nexport const getDeviceLimits = (state: RootState) => state.devices.limits;\nconst getFilteringAttributesLimit = (state: RootState) => state.devices.filteringAttributesLimit;\n\nexport const getDeviceIdentityAttributes = createSelector(\n [getFilteringAttributes, getFilteringAttributesLimit],\n ({ identityAttributes }, filteringAttributesLimit) => {\n // limit the selection of the available attribute to AVAILABLE_ATTRIBUTE_LIMIT\n const attributes = identityAttributes.slice(0, filteringAttributesLimit);\n return attributes.reduce(\n (accu, value) => {\n accu.push({ value, label: value, scope: 'identity' });\n return accu;\n },\n [\n { value: 'name', label: 'Name', scope: 'tags' },\n { value: 'id', label: 'Device ID', scope: 'identity' }\n ]\n );\n }\n);\n\nexport const getDeviceCountsByStatus = createSelector([getDevicesByStatus], byStatus =>\n Object.values(DEVICE_STATES).reduce<Record<DeviceAuthState, number>>(\n (accu, deviceState) => {\n const { counts } = byStatus[deviceState];\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { total, ...tieredCounts } = counts;\n const count = Object.values(tieredCounts).reduce((accu, countPerTier) => accu + countPerTier, 0);\n accu[deviceState] = count;\n accu.total = accu.total + count;\n return accu;\n },\n { total: 0 }\n )\n);\n\nexport const getDeviceById = createSelector([getDevicesById, (_, deviceId) => deviceId], (devicesById, deviceId = '') => devicesById[deviceId] ?? {});\n\nexport const getSelectedGroupInfo = createSelector(\n [getDeviceCountsByStatus, getGroupsById, getSelectedGroup],\n ({ accepted: acceptedDeviceTotal }, groupsById, selectedGroup) => {\n let groupCount = acceptedDeviceTotal;\n let groupFilters: DeviceFilter[] = [];\n if (selectedGroup && groupsById[selectedGroup]) {\n groupCount = groupsById[selectedGroup].total || 0;\n groupFilters = groupsById[selectedGroup].filters || [];\n }\n return { groupCount, selectedGroup, groupFilters };\n }\n);\n\nexport const getCombinedLimit = createSelector(\n [getDeviceLimits],\n deviceLimits => Object.values(deviceLimits).reduce((accu, limit) => accu + Math.max(limit ?? 0, 0), 0) // limit might be -1 for unlimited devices\n);\n\nexport const getLimitMaxed = createSelector(\n [getDeviceCountsByStatus, getCombinedLimit],\n ({ accepted: acceptedDevices }, combinedLimit) => !!combinedLimit && combinedLimit <= acceptedDevices\n);\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const getGroupsByIdWithoutUngrouped = createSelector([getGroupsById], ({ [UNGROUPED_GROUP.id]: ungrouped, ...groups }) => groups);\n\nexport const getGroupData = createSelector([getGroupsByIdWithoutUngrouped], groups => {\n const createdGroup = Object.keys(groups).length ? Object.keys(groups)[0] : undefined;\n const hasDynamicGroups = Object.values(groups).some(group => !!group.id);\n return { createdGroup, hasDynamicGroups, groups };\n});\n\ntype SelectorGroup = DeviceGroup & { groupId: string };\ntype SelectorGroups = { dynamic: SelectorGroup[]; static: SelectorGroup[]; ungrouped: SelectorGroup[] };\n\nexport const getGroups = createSelector([getGroupsById], groupsById => {\n const groupNames = Object.keys(groupsById).sort();\n const groupedGroups = Object.entries(groupsById)\n .sort((a, b) => a[0].localeCompare(b[0]))\n .reduce<SelectorGroups>(\n (accu, [groupname, group]) => {\n const name = groupname === UNGROUPED_GROUP.id ? UNGROUPED_GROUP.name : groupname;\n const groupItem = { ...group, groupId: name, name: groupname };\n if ((group.filters ?? []).length > 0) {\n if (groupname !== UNGROUPED_GROUP.id) {\n accu.dynamic.push(groupItem);\n } else {\n accu.ungrouped.push(groupItem);\n }\n } else {\n accu.static.push(groupItem);\n }\n return accu;\n },\n { dynamic: [], static: [], ungrouped: [] }\n );\n return { groupNames, ...groupedGroups };\n});\nexport const getAttributesList = createSelector(\n [getFilteringAttributes, getFilteringAttributesFromConfig],\n ({ identityAttributes = [], inventoryAttributes = [] }, { identity = [], inventory = [] }) =>\n [...identityAttributes, ...inventoryAttributes, ...identity, ...inventory].filter(duplicateFilter)\n);\n\nexport const getDeviceTypes = createSelector([getAcceptedDevices, getDevicesById], ({ deviceIds = [] }, devicesById) =>\n Object.keys(\n deviceIds.slice(0, 200).reduce((accu, item) => {\n const { device_type: deviceTypes = [] } = devicesById[item] ? devicesById[item].attributes : {};\n accu = deviceTypes.reduce((deviceTypeAccu, deviceType) => {\n if (deviceType.length > 1) {\n deviceTypeAccu[deviceType] = deviceTypeAccu[deviceType] ? deviceTypeAccu[deviceType] + 1 : 1;\n }\n return deviceTypeAccu;\n }, accu);\n return accu;\n }, {})\n )\n);\n","// Copyright 2024 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.\n//@ts-nocheck\nimport {\n ALL_DEVICES,\n ALL_DEVICE_STATES,\n ALL_RELEASES,\n APPLICATION_JSON_CONTENT_TYPE,\n APPLICATION_JWT_CONTENT_TYPE,\n ATTRIBUTE_SCOPES,\n DEVICE_FILTERING_OPTIONS,\n DEVICE_ISSUE_OPTIONS,\n DEVICE_LIST_DEFAULTS,\n DEVICE_STATES,\n PermissionTypes,\n SORTING_OPTIONS,\n alertChannels,\n apiRoot,\n apiUrl,\n auditLogsApiUrl,\n defaultPermissionSets,\n deploymentsApiUrl,\n deploymentsApiUrlV2,\n deviceAuthV2,\n deviceConfig,\n deviceConnect,\n emptyRole,\n emptyUiPermissions,\n headerNames,\n inventoryApiUrl,\n inventoryApiUrlV2,\n iotManagerBaseURL,\n limitDefault,\n maxSessionAge,\n monitorApiUrlv1,\n reportingApiUrl,\n rolesById,\n rolesByName,\n scopedPermissionAreas,\n serviceProviderRolesById,\n ssoIdpApiUrlv1,\n tenantadmApiUrlv1,\n tenantadmApiUrlv2,\n twoFAStates,\n uiPermissionsByArea,\n uiPermissionsById,\n useradmApiUrl,\n useradmApiUrlv1,\n useradmApiUrlv2\n} from '@northern.tech/utils/constants';\nimport type {\n AnyPermission,\n AuditLogPermission,\n DeploymentPermission,\n DeviceIssueOptionKey,\n GroupsPermission,\n PermissionObject,\n PermissionSet,\n PermissionSetId,\n ReleasesPermission,\n Role,\n ScopedPermissionsByAreaKey,\n SortOptions,\n UiPermissionsByAreaKey,\n UiPermissionsByIdKey,\n UiPermissionsDefinition,\n UserManagementPermission\n} from '@northern.tech/utils/constants';\n\nexport {\n alertChannels,\n ALL_DEVICE_STATES,\n ALL_DEVICES,\n ALL_RELEASES,\n APPLICATION_JSON_CONTENT_TYPE,\n APPLICATION_JWT_CONTENT_TYPE,\n ATTRIBUTE_SCOPES,\n apiRoot,\n apiUrl,\n auditLogsApiUrl,\n defaultPermissionSets,\n deploymentsApiUrl,\n deploymentsApiUrlV2,\n DEVICE_FILTERING_OPTIONS,\n DEVICE_ISSUE_OPTIONS,\n DEVICE_LIST_DEFAULTS,\n DEVICE_STATES,\n deviceAuthV2,\n deviceConfig,\n deviceConnect,\n emptyRole,\n emptyUiPermissions,\n headerNames,\n inventoryApiUrl,\n inventoryApiUrlV2,\n iotManagerBaseURL,\n monitorApiUrlv1,\n limitDefault,\n maxSessionAge,\n PermissionTypes,\n reportingApiUrl,\n rolesById,\n rolesByName,\n scopedPermissionAreas,\n serviceProviderRolesById,\n SORTING_OPTIONS,\n ssoIdpApiUrlv1,\n tenantadmApiUrlv1,\n tenantadmApiUrlv2,\n twoFAStates,\n uiPermissionsByArea,\n uiPermissionsById,\n useradmApiUrl,\n useradmApiUrlv1,\n useradmApiUrlv2\n};\n\nexport type {\n AnyPermission,\n AuditLogPermission,\n DeploymentPermission,\n DeviceIssueOptionKey,\n GroupsPermission,\n PermissionObject,\n PermissionSet,\n PermissionSetId,\n ReleasesPermission,\n Role,\n ScopedPermissionsByAreaKey,\n SortOptions,\n UiPermissionsByAreaKey,\n UiPermissionsByIdKey,\n UiPermissionsDefinition,\n UserManagementPermission\n};\n\nexport * from './appSlice/constants';\nexport * from './commonConstants';\nexport * from './deploymentsSlice/constants';\nexport * from './devicesSlice/constants';\nexport * from './monitorSlice/constants';\nexport * from './onboardingSlice/constants';\nexport * from './organizationSlice/constants';\nexport * from './releasesSlice/constants';\nexport * from './usersSlice/constants';\n","// Copyright 2024 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.\n// @ts-nocheck\nimport { mdiAws as AWS, mdiMicrosoftAzure as Azure } from '@mdi/js';\nimport type { Integration } from '@northern.tech/types/MenderTypes';\n\nimport type { DEVICE_FILTERING_OPTIONS } from './constants';\nimport { ATTRIBUTE_SCOPES } from './constants';\n\nexport const timeUnits = {\n days: 'days',\n minutes: 'minutes',\n hours: 'hours'\n};\n\nexport const UNGROUPED_GROUP = { id: '*|=ungrouped=|*', name: 'Unassigned' };\n\nexport const DEVICE_LIST_MAXIMUM_LENGTH = 50;\n\nexport type FilterOperator = keyof typeof DEVICE_FILTERING_OPTIONS;\n\nconst oneSecond = 1000;\nexport const TIMEOUTS = {\n debounceDefault: 700,\n debounceShort: 300,\n halfASecond: 0.5 * oneSecond,\n oneSecond,\n twoSeconds: 2 * oneSecond,\n threeSeconds: 3 * oneSecond,\n fiveSeconds: 5 * oneSecond,\n refreshDefault: 10 * oneSecond,\n refreshLong: 60 * oneSecond\n};\n\nexport const DEVICE_ONLINE_CUTOFF = { interval: 1, intervalName: timeUnits.days };\n\nexport interface IdAttribute {\n attribute: string;\n scope: string;\n}\nexport const defaultIdAttribute: Readonly<IdAttribute> = Object.freeze({ attribute: 'id', scope: ATTRIBUTE_SCOPES.identity });\n\nexport const credentialTypes = {\n aws: 'aws',\n http: 'http',\n sas: 'sas',\n x509: 'x509'\n};\nexport const EXTERNAL_PROVIDER = {\n 'iot-core': {\n credentialsType: credentialTypes.aws,\n icon: AWS,\n title: 'AWS IoT Core',\n twinTitle: 'Device Shadow',\n provider: 'iot-core',\n enabled: true,\n deviceTwin: true,\n configHint: <>For help finding your AWS IoT Core connection string, check the AWS IoT documentation.</>\n },\n 'iot-hub': {\n credentialsType: credentialTypes.sas,\n icon: Azure,\n title: 'Azure IoT Hub',\n twinTitle: 'Device Twin',\n provider: 'iot-hub',\n enabled: true,\n deviceTwin: true,\n configHint: (\n <span>\n For help finding your Azure IoT Hub connection string, look under 'Shared access policies' in the Microsoft Azure UI as described{' '}\n {\n <a\n href=\"https://devblogs.microsoft.com/iotdev/understand-different-connection-strings-in-azure-iot-hub/#iothubconn\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n here\n </a>\n }\n .\n </span>\n )\n },\n webhook: {\n credentialsType: credentialTypes.http,\n deviceTwin: false,\n twinTitle: '',\n // disable the webhook provider here, since it is treated different than other integrations, with a custom configuration & management view, etc.\n enabled: false,\n provider: 'webhook'\n }\n} as const;\n\nexport interface Webhook extends Integration {\n provider: 'webhook';\n}\n\nexport const emptyWebhook: Webhook = {\n description: '',\n provider: 'webhook',\n credentials: {\n type: EXTERNAL_PROVIDER.webhook.credentialsType,\n [EXTERNAL_PROVIDER.webhook.credentialsType]: {\n secret: '',\n url: ''\n }\n }\n};\n\ninterface CountryType {\n code: string;\n label: string;\n}\nexport const MAX_PAGE_SIZE = 500;\nconst regionNames = new Intl.DisplayNames(['en'], { type: 'region' });\nexport const countries: readonly CountryType[] = [\n 'AD',\n 'AE',\n 'AF',\n 'AG',\n 'AI',\n 'AL',\n 'AM',\n 'AO',\n 'AQ',\n 'AR',\n 'AS',\n 'AT',\n 'AU',\n 'AW',\n 'AX',\n 'AZ',\n 'BA',\n 'BB',\n 'BD',\n 'BE',\n 'BF',\n 'BG',\n 'BH',\n 'BI',\n 'BJ',\n 'BL',\n 'BM',\n 'BN',\n 'BO',\n 'BR',\n 'BS',\n 'BT',\n 'BV',\n 'BW',\n 'BY',\n 'BZ',\n 'CA',\n 'CC',\n 'CD',\n 'CF',\n 'CG',\n 'CH',\n 'CI',\n 'CK',\n 'CL',\n 'CM',\n 'CN',\n 'CO',\n 'CR',\n 'CU',\n 'CV',\n 'CW',\n 'CX',\n 'CY',\n 'CZ',\n 'DE',\n 'DJ',\n 'DK',\n 'DM',\n 'DO',\n 'DZ',\n 'EC',\n 'EE',\n 'EG',\n 'EH',\n 'ER',\n 'ES',\n 'ET',\n 'FI',\n 'FJ',\n 'FK',\n 'FM',\n 'FO',\n 'FR',\n 'GA',\n 'GB',\n 'GD',\n 'GE',\n 'GF',\n 'GG',\n 'GH',\n 'GI',\n 'GL',\n 'GM',\n 'GN',\n 'GP',\n 'GQ',\n 'GR',\n 'GS',\n 'GT',\n 'GU',\n 'GW',\n 'GY',\n 'HK',\n 'HM',\n 'HN',\n 'HR',\n 'HT',\n 'HU',\n 'ID',\n 'IE',\n 'IL',\n 'IM',\n 'IN',\n 'IO',\n 'IQ',\n 'IR',\n 'IS',\n 'IT',\n 'JE',\n 'JM',\n 'JO',\n 'JP',\n 'KE',\n 'KG',\n 'KH',\n 'KI',\n 'KM',\n 'KN',\n 'KP',\n 'KR',\n 'KW',\n 'KY',\n 'KZ',\n 'LA',\n 'LB',\n 'LC',\n 'LI',\n 'LK',\n 'LR',\n 'LS',\n 'LT',\n 'LU',\n 'LV',\n 'LY',\n 'MA',\n 'MC',\n 'MD',\n 'ME',\n 'MF',\n 'MG',\n 'MH',\n 'MK',\n 'ML',\n 'MM',\n 'MN',\n 'MO',\n 'MP',\n 'MQ',\n 'MR',\n 'MS',\n 'MT',\n 'MU',\n 'MV',\n 'MW',\n 'MX',\n 'MY',\n 'MZ',\n 'NA',\n 'NC',\n 'NE',\n 'NF',\n 'NG',\n 'NI',\n 'NL',\n 'NO',\n 'NP',\n 'NR',\n 'NU',\n 'NZ',\n 'OM',\n 'PA',\n 'PE',\n 'PF',\n 'PG',\n 'PH',\n 'PK',\n 'PL',\n 'PM',\n 'PN',\n 'PR',\n 'PS',\n 'PT',\n 'PW',\n 'PY',\n 'QA',\n 'RE',\n 'RO',\n 'RS',\n 'RU',\n 'RW',\n 'SA',\n 'SB',\n 'SC',\n 'SD',\n 'SE',\n 'SG',\n 'SH',\n 'SI',\n 'SJ',\n 'SK',\n 'SL',\n 'SM',\n 'SN',\n 'SO',\n 'SR',\n 'SS',\n 'ST',\n 'SV',\n 'SX',\n 'SY',\n 'SZ',\n 'TC',\n 'TD',\n 'TF',\n 'TG',\n 'TH',\n 'TJ',\n 'TK',\n 'TL',\n 'TM',\n 'TN',\n 'TO',\n 'TR',\n 'TT',\n 'TV',\n 'TW',\n 'TZ',\n 'UA',\n 'UG',\n 'US',\n 'UY',\n 'UZ',\n 'VA',\n 'VC',\n 'VE',\n 'VG',\n 'VI',\n 'VN',\n 'VU',\n 'WF',\n 'WS',\n 'XK',\n 'YE',\n 'YT',\n 'ZA',\n 'ZM',\n 'ZW'\n]\n .map(code => ({ code, label: regionNames.of(code) }))\n .sort((a, b) => a.label.localeCompare(b.label));\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA,qBAAgC;AAChC,qBAA+B;;;ACA/B,IAAAA,oBA8CO;;;AC9CP,gBAA0D;AAsD1C;AAhDT,IAAM,YAAY;AAAA,EACvB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AACT;AAEO,IAAM,kBAAkB,EAAE,IAAI,mBAAmB,MAAM,aAAa;AAM3E,IAAM,YAAY;AACX,IAAM,WAAW;AAAA,EACtB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,aAAa,MAAM;AAAA,EACnB;AAAA,EACA,YAAY,IAAI;AAAA,EAChB,cAAc,IAAI;AAAA,EAClB,aAAa,IAAI;AAAA,EACjB,gBAAgB,KAAK;AAAA,EACrB,aAAa,KAAK;AACpB;AAEO,IAAM,uBAAuB,EAAE,UAAU,GAAG,cAAc,UAAU,KAAK;AAMzE,IAAM,qBAA4C,OAAO,OAAO,EAAE,WAAW,MAAM,OAAO,mCAAiB,SAAS,CAAC;AAErH,IAAM,kBAAkB;AAAA,EAC7B,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AACR;AACO,IAAM,oBAAoB;AAAA,EAC/B,YAAY;AAAA,IACV,iBAAiB,gBAAgB;AAAA,IACjC,MAAM,UAAAC;AAAA,IACN,OAAO;AAAA,IACP,WAAW;AAAA,IACX,UAAU;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,YAAY,2EAAE,oGAAsF;AAAA,EACtG;AAAA,EACA,WAAW;AAAA,IACT,iBAAiB,gBAAgB;AAAA,IACjC,MAAM,UAAAC;AAAA,IACN,OAAO;AAAA,IACP,WAAW;AAAA,IACX,UAAU;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,YACE,6CAAC,UAAK;AAAA;AAAA,MACwI;AAAA,MAE1I;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,QAAO;AAAA,UACP,KAAI;AAAA,UACL;AAAA;AAAA,MAED;AAAA,MACD;AAAA,OAEH;AAAA,EAEJ;AAAA,EACA,SAAS;AAAA,IACP,iBAAiB,gBAAgB;AAAA,IACjC,YAAY;AAAA,IACZ,WAAW;AAAA;AAAA,IAEX,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AACF;AAMO,IAAM,eAAwB;AAAA,EACnC,aAAa;AAAA,EACb,UAAU;AAAA,EACV,aAAa;AAAA,IACX,MAAM,kBAAkB,QAAQ;AAAA,IAChC,CAAC,kBAAkB,QAAQ,eAAe,GAAG;AAAA,MAC3C,QAAQ;AAAA,MACR,KAAK;AAAA,IACP;AAAA,EACF;AACF;AAOA,IAAM,cAAc,IAAI,KAAK,aAAa,CAAC,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AAC7D,IAAM,YAAoC;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA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","names":["import_constants","AWS","Azure","accu"]}
|