@northern.tech/store 0.3.4 → 0.5.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 +78 -827
- package/dist/actions.cjs.map +1 -1
- package/dist/actions.d.cts +229 -85
- package/dist/actions.d.ts +229 -85
- package/dist/actions.js +14 -14
- package/dist/api/general-api.cjs +274 -148
- package/dist/api/general-api.cjs.map +1 -1
- package/dist/api/general-api.d.cts +1 -1
- package/dist/api/general-api.d.ts +1 -1
- package/dist/api/general-api.js +7 -7
- package/dist/api/users-api.cjs +274 -148
- package/dist/api/users-api.cjs.map +1 -1
- package/dist/api/users-api.d.cts +7 -5
- package/dist/api/users-api.d.ts +7 -5
- package/dist/api/users-api.js +8 -8
- package/dist/appSlice/constants.cjs +25 -53
- package/dist/appSlice/constants.cjs.map +1 -1
- package/dist/appSlice/constants.d.cts +100 -112
- package/dist/appSlice/constants.d.ts +100 -112
- package/dist/appSlice/constants.js +1 -11
- package/dist/appSlice/index.cjs +24 -239
- package/dist/appSlice/index.cjs.map +1 -1
- package/dist/appSlice/index.d.cts +119 -1531
- package/dist/appSlice/index.d.ts +119 -1531
- package/dist/appSlice/index.js +6 -6
- package/dist/appSlice/mocks.cjs +186 -0
- package/dist/appSlice/mocks.cjs.map +1 -0
- package/dist/appSlice/mocks.d.cts +39 -0
- package/dist/appSlice/mocks.d.ts +39 -0
- package/dist/appSlice/mocks.js +27 -0
- package/dist/appSlice/mocks.js.map +1 -0
- package/dist/appSlice/selectors.cjs +37 -5
- package/dist/appSlice/selectors.cjs.map +1 -1
- package/dist/appSlice/selectors.d.cts +711 -23
- package/dist/appSlice/selectors.d.ts +711 -23
- package/dist/appSlice/selectors.js +25 -1
- package/dist/appSlice/thunks.cjs +1554 -1767
- package/dist/appSlice/thunks.cjs.map +1 -1
- package/dist/appSlice/thunks.d.cts +34 -14
- package/dist/appSlice/thunks.d.ts +34 -14
- package/dist/appSlice/thunks.js +30 -30
- package/dist/auth.cjs +276 -153
- package/dist/auth.cjs.map +1 -1
- package/dist/auth.d.cts +13 -10
- package/dist/auth.d.ts +13 -10
- package/dist/auth.js +6 -8
- package/dist/{chunk-CK6YE6AN.js → chunk-2DYA3X77.js} +3 -1
- package/dist/{chunk-CK6YE6AN.js.map → chunk-2DYA3X77.js.map} +1 -1
- package/dist/{chunk-FQDSV3NK.js → chunk-4E7ZSEFL.js} +18 -12
- package/dist/chunk-4E7ZSEFL.js.map +1 -0
- package/dist/{chunk-AFICTIVU.js → chunk-6KGTHJKC.js} +22 -24
- package/dist/chunk-6KGTHJKC.js.map +1 -0
- package/dist/{chunk-DCEKU6UV.js → chunk-6XVREXI4.js} +8 -5
- package/dist/chunk-6XVREXI4.js.map +1 -0
- package/dist/chunk-7C4SQBEE.js +715 -0
- package/dist/chunk-7C4SQBEE.js.map +1 -0
- package/dist/{chunk-ZZMFXRQK.js → chunk-7PRZYHDP.js} +13 -13
- package/dist/{chunk-X3GZILYD.js → chunk-ABJLRDCO.js} +10 -11
- package/dist/chunk-ABJLRDCO.js.map +1 -0
- package/dist/chunk-BYUPW7RA.js +48 -0
- package/dist/chunk-BYUPW7RA.js.map +1 -0
- package/dist/{chunk-EQLHIPPR.js → chunk-DA6QVCOG.js} +924 -842
- package/dist/chunk-DA6QVCOG.js.map +1 -0
- package/dist/{chunk-MRCFLG45.js → chunk-FAJ3I2UQ.js} +2 -1
- package/dist/chunk-FAJ3I2UQ.js.map +1 -0
- package/dist/{chunk-Y575RZHR.js → chunk-HFOTAPIJ.js} +27 -50
- package/dist/chunk-HFOTAPIJ.js.map +1 -0
- package/dist/{chunk-ZWOAFHAR.js → chunk-JXQUFKID.js} +2 -2
- package/dist/chunk-JXQUFKID.js.map +1 -0
- package/dist/{chunk-K4MMUDYT.js → chunk-KC7SKI3U.js} +9 -11
- package/dist/chunk-KC7SKI3U.js.map +1 -0
- package/dist/{chunk-L3SY3J5M.js → chunk-KJNNEDRV.js} +11 -7
- package/dist/chunk-KJNNEDRV.js.map +1 -0
- package/dist/{chunk-PAIB5V27.js → chunk-MPYYSFPL.js} +55 -21
- package/dist/chunk-MPYYSFPL.js.map +1 -0
- package/dist/{chunk-FRSA2YB5.js → chunk-MZNANSS2.js} +12 -7
- package/dist/chunk-MZNANSS2.js.map +1 -0
- package/dist/{chunk-FVCYB5OP.js → chunk-NQIP7VFB.js} +30 -38
- package/dist/chunk-NQIP7VFB.js.map +1 -0
- package/dist/{chunk-NOQR3TE7.js → chunk-OOICURFL.js} +2 -2
- package/dist/chunk-OOICURFL.js.map +1 -0
- package/dist/{chunk-AVX7VVOK.js → chunk-PGFVHKP5.js} +5 -7
- package/dist/chunk-PGFVHKP5.js.map +1 -0
- package/dist/{chunk-GWJIY56H.js → chunk-QEKN5R7E.js} +40 -15
- package/dist/chunk-QEKN5R7E.js.map +1 -0
- package/dist/{chunk-NCSKCF2S.js → chunk-QHK7GGV4.js} +3 -3
- package/dist/chunk-QHK7GGV4.js.map +1 -0
- package/dist/{chunk-AUBJUUP3.js → chunk-RS37Y2PQ.js} +3 -3
- package/dist/chunk-RS37Y2PQ.js.map +1 -0
- package/dist/{chunk-7YZCUAXZ.js → chunk-UGSLGUS6.js} +8 -6
- package/dist/chunk-UGSLGUS6.js.map +1 -0
- package/dist/{chunk-RX32WLVJ.js → chunk-VANBSJS5.js} +1 -1
- package/dist/chunk-VANBSJS5.js.map +1 -0
- package/dist/{chunk-DGQKXSRI.js → chunk-VUFRP6P3.js} +5 -6
- package/dist/chunk-VUFRP6P3.js.map +1 -0
- package/dist/{chunk-EYCORLYU.js → chunk-YWHRAPDQ.js} +128 -87
- package/dist/chunk-YWHRAPDQ.js.map +1 -0
- package/dist/{chunk-JO33IORF.js → chunk-YY6SKZDF.js} +19 -4
- package/dist/chunk-YY6SKZDF.js.map +1 -0
- package/dist/chunk-ZIUUV35J.js +110 -0
- package/dist/chunk-ZIUUV35J.js.map +1 -0
- package/dist/{chunk-GAI4VYRZ.js → chunk-ZJW3QIPM.js} +8 -9
- package/dist/chunk-ZJW3QIPM.js.map +1 -0
- package/dist/chunk-ZKAH3APE.js +1 -0
- package/dist/chunk-ZKAH3APE.js.map +1 -0
- package/dist/commonConstants.cjs +279 -173
- package/dist/commonConstants.cjs.map +1 -1
- package/dist/commonConstants.d.cts +46 -212
- package/dist/commonConstants.d.ts +46 -212
- package/dist/commonConstants.js +11 -19
- package/dist/commonSelectors.cjs +507 -768
- package/dist/commonSelectors.cjs.map +1 -1
- package/dist/commonSelectors.d.cts +4307 -280
- package/dist/commonSelectors.d.ts +4307 -280
- package/dist/commonSelectors.js +13 -13
- package/dist/constants.cjs +357 -665
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +11 -9
- package/dist/constants.d.ts +11 -9
- package/dist/constants.js +37 -29
- package/dist/deploymentsSlice/constants.cjs +5 -360
- package/dist/deploymentsSlice/constants.cjs.map +1 -1
- package/dist/deploymentsSlice/constants.d.cts +59 -39
- package/dist/deploymentsSlice/constants.d.ts +59 -39
- package/dist/deploymentsSlice/constants.js +5 -11
- package/dist/deploymentsSlice/index.cjs +17 -365
- package/dist/deploymentsSlice/index.cjs.map +1 -1
- package/dist/deploymentsSlice/index.d.cts +142 -2359
- package/dist/deploymentsSlice/index.d.ts +142 -2359
- package/dist/deploymentsSlice/index.js +6 -6
- package/dist/deploymentsSlice/mocks.cjs +429 -0
- package/dist/deploymentsSlice/mocks.cjs.map +1 -0
- package/dist/deploymentsSlice/mocks.d.cts +189 -0
- package/dist/deploymentsSlice/mocks.d.ts +189 -0
- package/dist/deploymentsSlice/mocks.js +146 -0
- package/dist/deploymentsSlice/mocks.js.map +1 -0
- package/dist/deploymentsSlice/selectors.cjs +5 -353
- package/dist/deploymentsSlice/selectors.cjs.map +1 -1
- package/dist/deploymentsSlice/selectors.d.cts +167 -11
- package/dist/deploymentsSlice/selectors.d.ts +167 -11
- package/dist/deploymentsSlice/selectors.js +6 -6
- package/dist/deploymentsSlice/thunks.cjs +1550 -1763
- package/dist/deploymentsSlice/thunks.cjs.map +1 -1
- package/dist/deploymentsSlice/thunks.d.cts +134 -76
- package/dist/deploymentsSlice/thunks.d.ts +134 -76
- package/dist/deploymentsSlice/thunks.js +30 -30
- package/dist/devicesSlice/constants.cjs +5 -375
- package/dist/devicesSlice/constants.cjs.map +1 -1
- package/dist/devicesSlice/constants.d.cts +8 -16
- package/dist/devicesSlice/constants.d.ts +8 -16
- package/dist/devicesSlice/constants.js +7 -25
- package/dist/devicesSlice/index.cjs +17 -381
- package/dist/devicesSlice/index.cjs.map +1 -1
- package/dist/devicesSlice/index.d.cts +196 -2208
- package/dist/devicesSlice/index.d.ts +196 -2208
- package/dist/devicesSlice/index.js +6 -6
- package/dist/devicesSlice/mocks.cjs +336 -0
- package/dist/devicesSlice/mocks.cjs.map +1 -0
- package/dist/devicesSlice/mocks.d.cts +154 -0
- package/dist/devicesSlice/mocks.d.ts +154 -0
- package/dist/devicesSlice/mocks.js +136 -0
- package/dist/devicesSlice/mocks.js.map +1 -0
- package/dist/devicesSlice/selectors.cjs +280 -293
- package/dist/devicesSlice/selectors.cjs.map +1 -1
- package/dist/devicesSlice/selectors.d.cts +1791 -82
- package/dist/devicesSlice/selectors.d.ts +1791 -82
- package/dist/devicesSlice/selectors.js +8 -6
- package/dist/devicesSlice/thunks.cjs +1702 -1925
- package/dist/devicesSlice/thunks.cjs.map +1 -1
- package/dist/devicesSlice/thunks.d.cts +374 -291
- package/dist/devicesSlice/thunks.d.ts +374 -291
- package/dist/devicesSlice/thunks.js +36 -46
- package/dist/liststatehook.cjs +289 -325
- package/dist/liststatehook.cjs.map +1 -1
- package/dist/liststatehook.d.cts +4 -16
- package/dist/liststatehook.d.ts +4 -16
- package/dist/liststatehook.js +9 -9
- package/dist/liststatehook.js.map +1 -1
- package/dist/locationutils.cjs +286 -322
- package/dist/locationutils.cjs.map +1 -1
- package/dist/locationutils.d.cts +8 -7
- package/dist/locationutils.d.ts +8 -7
- package/dist/locationutils.js +6 -6
- package/dist/monitorSlice/constants.cjs +0 -146
- package/dist/monitorSlice/constants.cjs.map +1 -1
- package/dist/monitorSlice/constants.d.cts +4 -5
- package/dist/monitorSlice/constants.d.ts +4 -5
- package/dist/monitorSlice/constants.js +1 -12
- package/dist/monitorSlice/index.cjs +5 -353
- package/dist/monitorSlice/index.cjs.map +1 -1
- package/dist/monitorSlice/index.d.cts +63 -260
- package/dist/monitorSlice/index.d.ts +63 -260
- package/dist/monitorSlice/index.js +6 -6
- package/dist/monitorSlice/mocks.cjs +130 -0
- package/dist/monitorSlice/mocks.cjs.map +1 -0
- package/dist/monitorSlice/mocks.d.cts +57 -0
- package/dist/monitorSlice/mocks.d.ts +57 -0
- package/dist/monitorSlice/mocks.js +65 -0
- package/dist/monitorSlice/mocks.js.map +1 -0
- package/dist/monitorSlice/thunks.cjs +623 -860
- package/dist/monitorSlice/thunks.cjs.map +1 -1
- package/dist/monitorSlice/thunks.d.cts +90 -21
- package/dist/monitorSlice/thunks.d.ts +90 -21
- package/dist/monitorSlice/thunks.js +26 -26
- package/dist/onboardingSlice/constants.cjs +1 -0
- package/dist/onboardingSlice/constants.cjs.map +1 -1
- package/dist/onboardingSlice/constants.d.cts +23 -20
- package/dist/onboardingSlice/constants.d.ts +23 -20
- package/dist/onboardingSlice/constants.js +1 -1
- package/dist/onboardingSlice/index.cjs.map +1 -1
- package/dist/onboardingSlice/index.d.cts +50 -225
- package/dist/onboardingSlice/index.d.ts +50 -225
- package/dist/onboardingSlice/index.js +1 -1
- package/dist/onboardingSlice/mocks.cjs +83 -0
- package/dist/onboardingSlice/mocks.cjs.map +1 -0
- package/dist/onboardingSlice/mocks.d.cts +19 -0
- package/dist/onboardingSlice/mocks.d.ts +19 -0
- package/dist/onboardingSlice/mocks.js +17 -0
- package/dist/onboardingSlice/mocks.js.map +1 -0
- package/dist/onboardingSlice/thunks.cjs +1773 -1989
- package/dist/onboardingSlice/thunks.cjs.map +1 -1
- package/dist/onboardingSlice/thunks.d.cts +62 -34
- package/dist/onboardingSlice/thunks.d.ts +62 -34
- package/dist/onboardingSlice/thunks.js +30 -30
- package/dist/organizationSlice/constants.cjs +8 -748
- package/dist/organizationSlice/constants.cjs.map +1 -1
- package/dist/organizationSlice/constants.d.cts +36 -116
- package/dist/organizationSlice/constants.d.ts +36 -116
- package/dist/organizationSlice/constants.js +7 -17
- package/dist/organizationSlice/index.cjs +14 -368
- package/dist/organizationSlice/index.cjs.map +1 -1
- package/dist/organizationSlice/index.d.cts +45 -74
- package/dist/organizationSlice/index.d.ts +45 -74
- package/dist/organizationSlice/index.js +6 -6
- package/dist/organizationSlice/mocks.cjs +234 -0
- package/dist/organizationSlice/mocks.cjs.map +1 -0
- package/dist/organizationSlice/mocks.d.cts +107 -0
- package/dist/organizationSlice/mocks.d.ts +107 -0
- package/dist/organizationSlice/mocks.js +101 -0
- package/dist/organizationSlice/mocks.js.map +1 -0
- package/dist/organizationSlice/selectors.cjs +301 -146
- package/dist/organizationSlice/selectors.cjs.map +1 -1
- package/dist/organizationSlice/selectors.d.cts +888 -52
- package/dist/organizationSlice/selectors.d.ts +888 -52
- package/dist/organizationSlice/selectors.js +14 -6
- package/dist/organizationSlice/thunks.cjs +2607 -2748
- package/dist/organizationSlice/thunks.cjs.map +1 -1
- package/dist/organizationSlice/thunks.d.cts +318 -127
- package/dist/organizationSlice/thunks.d.ts +318 -127
- package/dist/organizationSlice/thunks.js +44 -30
- package/dist/organizationSlice/types.cjs.map +1 -1
- package/dist/organizationSlice/types.d.cts +95 -3
- package/dist/organizationSlice/types.d.ts +95 -3
- package/dist/releasesSlice/constants.cjs +3 -0
- package/dist/releasesSlice/constants.cjs.map +1 -1
- package/dist/releasesSlice/constants.d.cts +2 -1
- package/dist/releasesSlice/constants.d.ts +2 -1
- package/dist/releasesSlice/constants.js +3 -1
- package/dist/releasesSlice/index.cjs +5 -222
- package/dist/releasesSlice/index.cjs.map +1 -1
- package/dist/releasesSlice/index.d.cts +52 -473
- package/dist/releasesSlice/index.d.ts +52 -473
- package/dist/releasesSlice/index.js +6 -6
- package/dist/releasesSlice/mocks.cjs +177 -0
- package/dist/releasesSlice/mocks.cjs.map +1 -0
- package/dist/releasesSlice/mocks.d.cts +49 -0
- package/dist/releasesSlice/mocks.d.ts +49 -0
- package/dist/releasesSlice/mocks.js +61 -0
- package/dist/releasesSlice/mocks.js.map +1 -0
- package/dist/releasesSlice/selectors.cjs +288 -158
- package/dist/releasesSlice/selectors.cjs.map +1 -1
- package/dist/releasesSlice/selectors.d.cts +886 -24
- package/dist/releasesSlice/selectors.d.ts +886 -24
- package/dist/releasesSlice/selectors.js +9 -7
- package/dist/releasesSlice/thunks.cjs +787 -982
- package/dist/releasesSlice/thunks.cjs.map +1 -1
- package/dist/releasesSlice/thunks.d.cts +150 -130
- package/dist/releasesSlice/thunks.d.ts +150 -130
- package/dist/releasesSlice/thunks.js +33 -27
- package/dist/selectors.cjs +565 -770
- package/dist/selectors.cjs.map +1 -1
- package/dist/selectors.d.cts +37 -9
- package/dist/selectors.d.ts +37 -9
- package/dist/selectors.js +79 -39
- package/dist/sockethook.cjs +271 -281
- package/dist/sockethook.cjs.map +1 -1
- package/dist/sockethook.js +7 -9
- package/dist/sockethook.js.map +1 -1
- package/dist/store.cjs +119 -834
- package/dist/store.cjs.map +1 -1
- package/dist/store.d.cts +698 -1963
- package/dist/store.d.ts +698 -1963
- package/dist/store.js +18 -16
- package/dist/storehooks.cjs +1793 -1907
- package/dist/storehooks.cjs.map +1 -1
- package/dist/storehooks.js +43 -49
- package/dist/storehooks.js.map +1 -1
- package/dist/thunks.cjs +2135 -2234
- package/dist/thunks.cjs.map +1 -1
- package/dist/thunks.d.cts +24 -6
- package/dist/thunks.d.ts +24 -6
- package/dist/thunks.js +56 -44
- package/dist/{deploymentdevicehook.cjs → useDeploymentDevice.cjs} +1760 -1975
- package/dist/useDeploymentDevice.cjs.map +1 -0
- package/dist/useDeploymentDevice.js +63 -0
- package/dist/useDeploymentDevice.js.map +1 -0
- package/dist/usersSlice/constants.cjs +5 -747
- package/dist/usersSlice/constants.cjs.map +1 -1
- package/dist/usersSlice/constants.d.cts +11 -769
- package/dist/usersSlice/constants.d.ts +11 -769
- package/dist/usersSlice/constants.js +7 -30
- package/dist/usersSlice/index.cjs +10 -721
- package/dist/usersSlice/index.cjs.map +1 -1
- package/dist/usersSlice/index.d.cts +136 -7900
- package/dist/usersSlice/index.d.ts +136 -7900
- package/dist/usersSlice/index.js +6 -6
- package/dist/usersSlice/mocks.cjs +200 -0
- package/dist/usersSlice/mocks.cjs.map +1 -0
- package/dist/usersSlice/mocks.d.cts +83 -0
- package/dist/usersSlice/mocks.d.ts +83 -0
- package/dist/usersSlice/mocks.js +47 -0
- package/dist/usersSlice/mocks.js.map +1 -0
- package/dist/usersSlice/selectors.cjs +319 -566
- package/dist/usersSlice/selectors.cjs.map +1 -1
- package/dist/usersSlice/selectors.d.cts +1651 -59
- package/dist/usersSlice/selectors.d.ts +1651 -59
- package/dist/usersSlice/selectors.js +13 -9
- package/dist/usersSlice/thunks.cjs +1661 -1872
- package/dist/usersSlice/thunks.cjs.map +1 -1
- package/dist/usersSlice/thunks.d.cts +372 -312
- package/dist/usersSlice/thunks.d.ts +372 -312
- package/dist/usersSlice/thunks.js +32 -30
- package/dist/utils.cjs +423 -285
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +44 -22
- package/dist/utils.d.ts +44 -22
- package/dist/utils.js +12 -6
- package/package.json +20 -11
- package/dist/BillingProfile-ChP2_Sqw.d.cts +0 -45
- package/dist/BillingProfile-ChP2_Sqw.d.ts +0 -45
- package/dist/api/types/AWSCredentials.ts +0 -16
- package/dist/api/types/Actor.ts +0 -35
- package/dist/api/types/Addon.ts +0 -17
- package/dist/api/types/AddonTenantadm.ts +0 -17
- package/dist/api/types/Address.ts +0 -6
- package/dist/api/types/AddressUpdate.ts +0 -12
- package/dist/api/types/Alert.ts +0 -34
- package/dist/api/types/AlertDetails.ts +0 -23
- package/dist/api/types/AlertSubject.ts +0 -23
- package/dist/api/types/ApiBurst.ts +0 -21
- package/dist/api/types/ApiBurstTenantadm.ts +0 -21
- package/dist/api/types/ApiLimits.ts +0 -16
- package/dist/api/types/ApiLimitsTenantadm.ts +0 -16
- package/dist/api/types/ApiQuota.ts +0 -17
- package/dist/api/types/ApiQuotaTenantadm.ts +0 -17
- package/dist/api/types/Artifact.ts +0 -48
- package/dist/api/types/ArtifactDeployments.ts +0 -48
- package/dist/api/types/ArtifactInfo.ts +0 -11
- package/dist/api/types/ArtifactInfoDeployments.ts +0 -11
- package/dist/api/types/ArtifactLink.ts +0 -11
- package/dist/api/types/ArtifactTypeInfo.ts +0 -13
- package/dist/api/types/ArtifactTypeInfoDeployments.ts +0 -13
- package/dist/api/types/ArtifactUpdate.ts +0 -10
- package/dist/api/types/ArtifactUploadLink.ts +0 -15
- package/dist/api/types/Attribute.ts +0 -36
- package/dist/api/types/AttributeInventory.ts +0 -32
- package/dist/api/types/AuditLog.ts +0 -26
- package/dist/api/types/AuthSet.ts +0 -37
- package/dist/api/types/AuthSetDeviceauth.ts +0 -37
- package/dist/api/types/AuthSetIot_manager.ts +0 -33
- package/dist/api/types/AutoAuthRequest.ts +0 -23
- package/dist/api/types/AzureSharedAccessSecret.ts +0 -11
- package/dist/api/types/BillingInfo.ts +0 -13
- package/dist/api/types/BillingProfile.ts +0 -37
- package/dist/api/types/BillingProfileUpdate.ts +0 -37
- package/dist/api/types/BinaryDeltaConfiguration.ts +0 -15
- package/dist/api/types/BinaryDeltaConfigurationDeployments.ts +0 -15
- package/dist/api/types/BinaryDeltaLimits.ts +0 -21
- package/dist/api/types/BinaryDeltaLimitsDeployments.ts +0 -15
- package/dist/api/types/BoundingBox.ts +0 -9
- package/dist/api/types/CancelRequest.ts +0 -10
- package/dist/api/types/CardData.ts +0 -49
- package/dist/api/types/CardSetupData.ts +0 -17
- package/dist/api/types/CheckoutData.ts +0 -13
- package/dist/api/types/Configuration.ts +0 -11
- package/dist/api/types/Count.ts +0 -13
- package/dist/api/types/Credentials.ts +0 -23
- package/dist/api/types/DBusSubsystem.ts +0 -27
- package/dist/api/types/DeltaConfiguration.ts +0 -14
- package/dist/api/types/DeltaConfigurationDeployments.ts +0 -14
- package/dist/api/types/Deployment.ts +0 -45
- package/dist/api/types/DeploymentAggregation.ts +0 -16
- package/dist/api/types/DeploymentAggregationItem.ts +0 -16
- package/dist/api/types/DeploymentAggregationTerm.ts +0 -22
- package/dist/api/types/DeploymentAggregationTerms.ts +0 -16
- package/dist/api/types/DeploymentAttributeProjection.ts +0 -10
- package/dist/api/types/DeploymentAuditlogs.ts +0 -11
- package/dist/api/types/DeploymentDeployments.ts +0 -98
- package/dist/api/types/DeploymentFilterTerm.ts +0 -35
- package/dist/api/types/DeploymentIdentifier.ts +0 -10
- package/dist/api/types/DeploymentPhase.ts +0 -23
- package/dist/api/types/DeploymentPhaseDeployments.ts +0 -23
- package/dist/api/types/DeploymentReporting.ts +0 -46
- package/dist/api/types/DeploymentSearchTerms.ts +0 -37
- package/dist/api/types/DeploymentSortTerm.ts +0 -23
- package/dist/api/types/DeploymentStatistics.ts +0 -15
- package/dist/api/types/DeploymentStatisticsDeployments.ts +0 -15
- package/dist/api/types/DeploymentStatusStatistics.ts +0 -54
- package/dist/api/types/DeploymentStatusStatisticsDeployments.ts +0 -54
- package/dist/api/types/Device.ts +0 -20
- package/dist/api/types/DeviceAggregation.ts +0 -16
- package/dist/api/types/DeviceAggregationItem.ts +0 -16
- package/dist/api/types/DeviceAggregationTerm.ts +0 -26
- package/dist/api/types/DeviceAggregationTerms.ts +0 -20
- package/dist/api/types/DeviceAttribute.ts +0 -22
- package/dist/api/types/DeviceAttributeProjection.ts +0 -14
- package/dist/api/types/DeviceAuditlogs.ts +0 -17
- package/dist/api/types/DeviceAuthEvent.ts +0 -23
- package/dist/api/types/DeviceConfiguration.ts +0 -16
- package/dist/api/types/DeviceDeployment.ts +0 -11
- package/dist/api/types/DeviceDeployments.ts +0 -29
- package/dist/api/types/DeviceDeviceauth.ts +0 -42
- package/dist/api/types/DeviceFilterAttribute.ts +0 -21
- package/dist/api/types/DeviceFilterTerm.ts +0 -39
- package/dist/api/types/DeviceInventory.ts +0 -19
- package/dist/api/types/DeviceInventoryInventory.ts +0 -19
- package/dist/api/types/DeviceReporting.ts +0 -22
- package/dist/api/types/DeviceSearchTerms.ts +0 -37
- package/dist/api/types/DeviceSortTerm.ts +0 -27
- package/dist/api/types/DeviceState.ts +0 -32
- package/dist/api/types/DeviceStateDeviceconnect.ts +0 -33
- package/dist/api/types/DeviceStateIot_manager.ts +0 -14
- package/dist/api/types/DeviceStatus.ts +0 -19
- package/dist/api/types/DeviceWithImage.ts +0 -80
- package/dist/api/types/DirectUploadMetadata.ts +0 -18
- package/dist/api/types/EmailVerificationCompletion.ts +0 -13
- package/dist/api/types/EmailVerificationRequest.ts +0 -13
- package/dist/api/types/Error.ts +0 -17
- package/dist/api/types/ErrorAuditlogs.ts +0 -13
- package/dist/api/types/ErrorDeployments.ts +0 -17
- package/dist/api/types/ErrorDeviceauth.ts +0 -13
- package/dist/api/types/ErrorDeviceconfig.ts +0 -17
- package/dist/api/types/ErrorDeviceconnect.ts +0 -17
- package/dist/api/types/ErrorDevicemonitor.ts +0 -17
- package/dist/api/types/ErrorExt.ts +0 -18
- package/dist/api/types/ErrorInventory.ts +0 -17
- package/dist/api/types/ErrorIot_manager.ts +0 -17
- package/dist/api/types/ErrorNotFound.ts +0 -17
- package/dist/api/types/ErrorReporting.ts +0 -18
- package/dist/api/types/ErrorTenantadm.ts +0 -13
- package/dist/api/types/ErrorUseradm.ts +0 -17
- package/dist/api/types/Event.ts +0 -48
- package/dist/api/types/ExternalIdentity.ts +0 -17
- package/dist/api/types/Features.ts +0 -17
- package/dist/api/types/FileUpload.ts +0 -23
- package/dist/api/types/Filter.ts +0 -19
- package/dist/api/types/FilterAttribute.ts +0 -21
- package/dist/api/types/FilterDefinition.ts +0 -18
- package/dist/api/types/FilterDeployments.ts +0 -19
- package/dist/api/types/FilterInventory.ts +0 -19
- package/dist/api/types/FilterPredicate.ts +0 -48
- package/dist/api/types/FilterPredicateDeployments.ts +0 -48
- package/dist/api/types/FilterPredicateInventory.ts +0 -78
- package/dist/api/types/GeoBoundingBox.ts +0 -8
- package/dist/api/types/GeoBoundingBoxFilter.ts +0 -5
- package/dist/api/types/GeoDistance.ts +0 -15
- package/dist/api/types/GeoDistanceFilter.ts +0 -8
- package/dist/api/types/GeoPoint.ts +0 -14
- package/dist/api/types/Group.ts +0 -10
- package/dist/api/types/HTTP.ts +0 -19
- package/dist/api/types/IdentityData.ts +0 -25
- package/dist/api/types/InputParameter.ts +0 -8
- package/dist/api/types/Integration.ts +0 -30
- package/dist/api/types/JobStatus.ts +0 -13
- package/dist/api/types/Limit.ts +0 -21
- package/dist/api/types/LimitDeployments.ts +0 -21
- package/dist/api/types/LimitDeviceauth.ts +0 -10
- package/dist/api/types/LimitUseradm.ts +0 -11
- package/dist/api/types/Limits.ts +0 -11
- package/dist/api/types/LineDescriptor.ts +0 -11
- package/dist/api/types/LogSubsystem.ts +0 -23
- package/dist/api/types/LoginOptions.ts +0 -18
- package/dist/api/types/ManagementAPIConfiguration.ts +0 -5
- package/dist/api/types/MenderTypes.ts +0 -213
- package/dist/api/types/MonitorConfiguration.ts +0 -22
- package/dist/api/types/NewConfigurationDeployment.ts +0 -15
- package/dist/api/types/NewConfigurationDeploymentResponse.ts +0 -10
- package/dist/api/types/NewDeployment.ts +0 -42
- package/dist/api/types/NewDeploymentForGroup.ts +0 -33
- package/dist/api/types/NewDeploymentPhase.ts +0 -37
- package/dist/api/types/NewDeploymentPhaseDeployments.ts +0 -20
- package/dist/api/types/NewDeploymentV2.ts +0 -34
- package/dist/api/types/NewTenant.ts +0 -49
- package/dist/api/types/Object.ts +0 -38
- package/dist/api/types/OwnUserUpdate.ts +0 -21
- package/dist/api/types/PasswordResetCompletion.ts +0 -17
- package/dist/api/types/PasswordResetRequest.ts +0 -13
- package/dist/api/types/Permission.ts +0 -21
- package/dist/api/types/PermissionObject.ts +0 -14
- package/dist/api/types/PermissionSet.ts +0 -22
- package/dist/api/types/PermissionSetWithScope.ts +0 -15
- package/dist/api/types/PersonalAccessToken.ts +0 -29
- package/dist/api/types/PersonalAccessTokenRequest.ts +0 -18
- package/dist/api/types/Plan.ts +0 -19
- package/dist/api/types/PlanBindingDetails.ts +0 -13
- package/dist/api/types/PlanChangeRequest.ts +0 -14
- package/dist/api/types/PlanLimits.ts +0 -12
- package/dist/api/types/PreAuthSet.ts +0 -16
- package/dist/api/types/Release.ts +0 -32
- package/dist/api/types/ReleaseDeployments.ts +0 -32
- package/dist/api/types/ReleaseUpdate.ts +0 -13
- package/dist/api/types/Releases.ts +0 -9
- package/dist/api/types/ReleasesDeleteError.ts +0 -21
- package/dist/api/types/ReleasesDeployments.ts +0 -9
- package/dist/api/types/Role.ts +0 -19
- package/dist/api/types/RolePermission.ts +0 -25
- package/dist/api/types/RolePermissionObject.ts +0 -17
- package/dist/api/types/RoleUseradm.ts +0 -19
- package/dist/api/types/SAMLMetadata.ts +0 -21
- package/dist/api/types/Scope.ts +0 -19
- package/dist/api/types/SelectAttribute.ts +0 -17
- package/dist/api/types/ServiceSubsystem.ts +0 -19
- package/dist/api/types/Settings.ts +0 -23
- package/dist/api/types/SortCriteria.ts +0 -30
- package/dist/api/types/SsoObject.ts +0 -21
- package/dist/api/types/Status.ts +0 -18
- package/dist/api/types/StatusDeviceauth.ts +0 -18
- package/dist/api/types/StatusTenantadm.ts +0 -17
- package/dist/api/types/StorageLimit.ts +0 -17
- package/dist/api/types/SubscriptionData.ts +0 -8
- package/dist/api/types/SupportRequest.ts +0 -17
- package/dist/api/types/Tag.ts +0 -27
- package/dist/api/types/Tags.ts +0 -10
- package/dist/api/types/TaskResult.ts +0 -13
- package/dist/api/types/TaskResultCLI.ts +0 -10
- package/dist/api/types/TaskResultHTTPRequest.ts +0 -8
- package/dist/api/types/TaskResultHTTPResponse.ts +0 -10
- package/dist/api/types/Tenant.ts +0 -26
- package/dist/api/types/TenantApiLimits.ts +0 -12
- package/dist/api/types/TenantApiLimitsTenantadm.ts +0 -12
- package/dist/api/types/TenantIdName.ts +0 -14
- package/dist/api/types/TenantIdsData.ts +0 -10
- package/dist/api/types/TenantInfo.ts +0 -14
- package/dist/api/types/TenantShortInfo.ts +0 -21
- package/dist/api/types/TenantTenantadm.ts +0 -54
- package/dist/api/types/TenantsIdName.ts +0 -6
- package/dist/api/types/Update.ts +0 -17
- package/dist/api/types/UpdateChildTenant.ts +0 -17
- package/dist/api/types/UpdateDeployments.ts +0 -18
- package/dist/api/types/UpdateFile.ts +0 -13
- package/dist/api/types/UpdateFileDeployments.ts +0 -13
- package/dist/api/types/UpdateTypes.ts +0 -8
- package/dist/api/types/UpgradeCompleteRequest.ts +0 -25
- package/dist/api/types/User.ts +0 -13
- package/dist/api/types/UserAuditlogs.ts +0 -13
- package/dist/api/types/UserNew.ts +0 -26
- package/dist/api/types/UserUpdate.ts +0 -25
- package/dist/api/types/UserUseradm.ts +0 -45
- package/dist/api/types/UserWithTenantInfo.ts +0 -12
- package/dist/api/types/XDeltaArgs.ts +0 -9
- package/dist/api/types/XDeltaArgsDeployments.ts +0 -9
- package/dist/api/types/XDeltaArgsLimits.ts +0 -10
- package/dist/api/types/XDeltaArgsLimitsDeployments.ts +0 -10
- package/dist/chunk-4RWZR3BN.js +0 -104
- package/dist/chunk-4RWZR3BN.js.map +0 -1
- package/dist/chunk-7YZCUAXZ.js.map +0 -1
- package/dist/chunk-AFICTIVU.js.map +0 -1
- package/dist/chunk-AUBJUUP3.js.map +0 -1
- package/dist/chunk-AVX7VVOK.js.map +0 -1
- package/dist/chunk-BSN2TOQC.js +0 -245
- package/dist/chunk-BSN2TOQC.js.map +0 -1
- package/dist/chunk-DCEKU6UV.js.map +0 -1
- package/dist/chunk-DGQKXSRI.js.map +0 -1
- package/dist/chunk-EQLHIPPR.js.map +0 -1
- package/dist/chunk-EYCORLYU.js.map +0 -1
- package/dist/chunk-FQDSV3NK.js.map +0 -1
- package/dist/chunk-FRSA2YB5.js.map +0 -1
- package/dist/chunk-FVCYB5OP.js.map +0 -1
- package/dist/chunk-GAI4VYRZ.js.map +0 -1
- package/dist/chunk-GWJIY56H.js.map +0 -1
- package/dist/chunk-JO33IORF.js.map +0 -1
- package/dist/chunk-K4MMUDYT.js.map +0 -1
- package/dist/chunk-L3SY3J5M.js.map +0 -1
- package/dist/chunk-LIJIIRON.js +0 -28
- package/dist/chunk-LIJIIRON.js.map +0 -1
- package/dist/chunk-MRCFLG45.js.map +0 -1
- package/dist/chunk-NCSKCF2S.js.map +0 -1
- package/dist/chunk-NOQR3TE7.js.map +0 -1
- package/dist/chunk-OEP2D6QL.js +0 -727
- package/dist/chunk-OEP2D6QL.js.map +0 -1
- package/dist/chunk-PAIB5V27.js.map +0 -1
- package/dist/chunk-RX32WLVJ.js.map +0 -1
- package/dist/chunk-X3GZILYD.js.map +0 -1
- package/dist/chunk-Y575RZHR.js.map +0 -1
- package/dist/chunk-ZWOAFHAR.js.map +0 -1
- package/dist/deploymentdevicehook.cjs.map +0 -1
- package/dist/deploymentdevicehook.js +0 -63
- package/dist/deploymentdevicehook.js.map +0 -1
- package/dist/flag-eu-5477R2P4.svg +0 -130
- package/dist/flag-us-HNQAF66I.svg +0 -63
- package/dist/types-DBj17FZO.d.cts +0 -135
- package/dist/types-DnfZa6xd.d.ts +0 -135
- /package/dist/{chunk-ZZMFXRQK.js.map → chunk-7PRZYHDP.js.map} +0 -0
- /package/dist/{deploymentdevicehook.d.cts → useDeploymentDevice.d.cts} +0 -0
- /package/dist/{deploymentdevicehook.d.ts → useDeploymentDevice.d.ts} +0 -0
|
@@ -14,6 +14,7 @@ var onboardingSteps = {
|
|
|
14
14
|
SCHEDULING_GROUP_SELECTION: "scheduling-group-selection",
|
|
15
15
|
SCHEDULING_RELEASE_TO_DEVICES: "scheduling-release-to-devices",
|
|
16
16
|
DEPLOYMENTS_INPROGRESS: "deployments-inprogress",
|
|
17
|
+
DEPLOYMENTS_COMPLETED: "deployments-completed",
|
|
17
18
|
DEPLOYMENTS_PAST: "deployments-past",
|
|
18
19
|
DEPLOYMENTS_PAST_COMPLETED: "deployments-past-completed",
|
|
19
20
|
DEPLOYMENTS_PAST_COMPLETED_FAILURE: "deployments-past-completed-failure",
|
|
@@ -43,4 +44,4 @@ export {
|
|
|
43
44
|
onboardingSteps,
|
|
44
45
|
orderedOnboardingSteps
|
|
45
46
|
};
|
|
46
|
-
//# sourceMappingURL=chunk-
|
|
47
|
+
//# sourceMappingURL=chunk-FAJ3I2UQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/onboardingSlice/constants.ts"],"sourcesContent":["// Copyright 2020 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.\nexport const onboardingSteps = {\n ONBOARDING_START: 'onboarding-start',\n DEVICES_PENDING_ONBOARDING_START: 'devices-pending-onboarding-start',\n DASHBOARD_ONBOARDING_START: 'dashboard-onboarding-start',\n DASHBOARD_ONBOARDING_PENDINGS: 'dashboard-onboarding-pendings',\n DEVICES_DELAYED_ONBOARDING: 'devices-delayed-onboarding',\n DEVICES_PENDING_ONBOARDING: 'devices-pending-onboarding',\n DEVICES_ACCEPTED_ONBOARDING: 'devices-accepted-onboarding',\n DEVICES_PENDING_ACCEPTING_ONBOARDING: 'devices-pending-accepting-onboarding',\n DEVICES_DEPLOY_RELEASE_ONBOARDING: 'devices-deploy-release-onboarding',\n SCHEDULING_ARTIFACT_SELECTION: 'scheduling-artifact-selection',\n SCHEDULING_ALL_DEVICES_SELECTION: 'scheduling-all-devices-selection',\n SCHEDULING_GROUP_SELECTION: 'scheduling-group-selection',\n SCHEDULING_RELEASE_TO_DEVICES: 'scheduling-release-to-devices',\n DEPLOYMENTS_INPROGRESS: 'deployments-inprogress',\n DEPLOYMENTS_COMPLETED: 'deployments-completed',\n DEPLOYMENTS_PAST: 'deployments-past',\n DEPLOYMENTS_PAST_COMPLETED: 'deployments-past-completed',\n DEPLOYMENTS_PAST_COMPLETED_FAILURE: 'deployments-past-completed-failure',\n ONBOARDING_CANCELED: 'onboarding-canceled'\n} as const;\n\nexport type OnboardingStepKey = keyof typeof onboardingSteps;\nexport type OnboardingStep = (typeof onboardingSteps)[OnboardingStepKey];\n\n// TODO: Update this to reflect the onboarding steps used in Mender?\nexport const orderedOnboardingSteps = [\n onboardingSteps.DASHBOARD_ONBOARDING_START,\n onboardingSteps.DEVICES_PENDING_ONBOARDING_START,\n onboardingSteps.DEVICES_DELAYED_ONBOARDING,\n onboardingSteps.DEVICES_PENDING_ONBOARDING,\n onboardingSteps.DEVICES_PENDING_ACCEPTING_ONBOARDING,\n onboardingSteps.DASHBOARD_ONBOARDING_PENDINGS,\n onboardingSteps.DEVICES_ACCEPTED_ONBOARDING,\n onboardingSteps.DEVICES_DEPLOY_RELEASE_ONBOARDING,\n onboardingSteps.SCHEDULING_ALL_DEVICES_SELECTION,\n onboardingSteps.SCHEDULING_GROUP_SELECTION,\n onboardingSteps.SCHEDULING_ARTIFACT_SELECTION,\n onboardingSteps.SCHEDULING_RELEASE_TO_DEVICES,\n onboardingSteps.DEPLOYMENTS_INPROGRESS,\n onboardingSteps.DEPLOYMENTS_PAST,\n onboardingSteps.DEPLOYMENTS_PAST_COMPLETED,\n onboardingSteps.DEPLOYMENTS_PAST_COMPLETED_FAILURE,\n onboardingSteps.ONBOARDING_CANCELED\n];\n"],"mappings":";AAaO,IAAM,kBAAkB;AAAA,EAC7B,kBAAkB;AAAA,EAClB,kCAAkC;AAAA,EAClC,4BAA4B;AAAA,EAC5B,+BAA+B;AAAA,EAC/B,4BAA4B;AAAA,EAC5B,4BAA4B;AAAA,EAC5B,6BAA6B;AAAA,EAC7B,sCAAsC;AAAA,EACtC,mCAAmC;AAAA,EACnC,+BAA+B;AAAA,EAC/B,kCAAkC;AAAA,EAClC,4BAA4B;AAAA,EAC5B,+BAA+B;AAAA,EAC/B,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,4BAA4B;AAAA,EAC5B,oCAAoC;AAAA,EACpC,qBAAqB;AACvB;AAMO,IAAM,yBAAyB;AAAA,EACpC,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAClB;","names":[]}
|
|
@@ -1,27 +1,9 @@
|
|
|
1
1
|
// src/appSlice/constants.ts
|
|
2
2
|
import { BarChart as BarChartIcon, PieChartOutline as PieChartIcon } from "@mui/icons-material";
|
|
3
|
-
|
|
4
|
-
// ../../assets/img/flag-eu.svg
|
|
5
|
-
var flag_eu_default = "./flag-eu-5477R2P4.svg";
|
|
6
|
-
|
|
7
|
-
// ../../assets/img/flag-us.svg
|
|
8
|
-
var flag_us_default = "./flag-us-HNQAF66I.svg";
|
|
9
|
-
|
|
10
|
-
// src/appSlice/constants.ts
|
|
11
3
|
var startingDeviceCount = {
|
|
12
4
|
os: "for first 50 devices",
|
|
13
5
|
professional: "for first 250 devices"
|
|
14
6
|
};
|
|
15
|
-
var apiRoot = "/api/management";
|
|
16
|
-
var apiUrl = {
|
|
17
|
-
v1: `${apiRoot}/v1`,
|
|
18
|
-
v2: `${apiRoot}/v2`
|
|
19
|
-
};
|
|
20
|
-
var headerNames = {
|
|
21
|
-
link: "link",
|
|
22
|
-
location: "location",
|
|
23
|
-
total: "x-total-count"
|
|
24
|
-
};
|
|
25
7
|
var chartTypes = {
|
|
26
8
|
bar: { key: "bar", Icon: BarChartIcon },
|
|
27
9
|
pie: { key: "pie", Icon: PieChartIcon }
|
|
@@ -31,35 +13,37 @@ var defaultReportType = "distribution";
|
|
|
31
13
|
var defaultReports = [{ ...emptyChartSelection, group: null, attribute: "artifact_name", type: defaultReportType }];
|
|
32
14
|
var BEGINNING_OF_TIME = "2016-01-01T00:00:00.000Z";
|
|
33
15
|
var locations = {
|
|
34
|
-
eu: { key: "eu", title: "EU", location: "eu.hosted.mender.io"
|
|
35
|
-
us: { key: "us", title: "US", location: "hosted.mender.io"
|
|
16
|
+
eu: { key: "eu", title: "EU", location: "eu.hosted.mender.io" },
|
|
17
|
+
us: { key: "us", title: "US", location: "hosted.mender.io" }
|
|
36
18
|
};
|
|
37
19
|
var PLANS = {
|
|
38
20
|
os: {
|
|
39
21
|
id: "os",
|
|
40
22
|
name: "Basic",
|
|
23
|
+
minimalDeviceCount: 50,
|
|
41
24
|
offer: true,
|
|
42
|
-
price: "$
|
|
25
|
+
price: "$34 / month",
|
|
43
26
|
deviceCount: startingDeviceCount.os,
|
|
44
|
-
|
|
45
|
-
price2: "for first 6 months;\n$29/month thereafter",
|
|
27
|
+
description: "The core features of Mender. To continue using Enterprise Trial features\u2014like Delta updates, scheduled deployments, phased rollouts, device filtering, dynamic groups, RBAC, audit logs, and more\u2014please upgrade to a higher plan.",
|
|
46
28
|
features: ["Access to core features of Mender", "Basic support"]
|
|
47
29
|
},
|
|
48
30
|
professional: {
|
|
49
31
|
id: "professional",
|
|
50
32
|
name: "Professional",
|
|
33
|
+
minimalDeviceCount: 250,
|
|
51
34
|
offer: true,
|
|
52
|
-
price: "$
|
|
35
|
+
price: "$291 / month",
|
|
53
36
|
deviceCount: startingDeviceCount.professional,
|
|
54
|
-
|
|
55
|
-
price2: "for first 6 months;\n$249/month thereafter",
|
|
37
|
+
description: "Everything in Basic, plus enhanced update management and automation features.",
|
|
56
38
|
features: ["Advanced OTA features", "Higher priority support"]
|
|
57
39
|
},
|
|
58
40
|
enterprise: {
|
|
59
41
|
id: "enterprise",
|
|
60
42
|
name: "Enterprise",
|
|
43
|
+
minimalDeviceCount: 1e3,
|
|
61
44
|
price: "Custom pricing",
|
|
62
45
|
deviceCount: "Unlimited devices",
|
|
46
|
+
description: "Every advanced feature of Mender, tailored for complex and large-scale deployments. Not available as a monthly subscription \u2014 ask us for a quote.",
|
|
63
47
|
features: ["All Mender features", "Advanced security features", "SLA-backed support"]
|
|
64
48
|
}
|
|
65
49
|
};
|
|
@@ -79,21 +63,6 @@ var ADDONS = {
|
|
|
79
63
|
},
|
|
80
64
|
eligible: ["os", "professional", "enterprise"]
|
|
81
65
|
},
|
|
82
|
-
troubleshoot: {
|
|
83
|
-
id: "troubleshoot",
|
|
84
|
-
title: "Troubleshoot",
|
|
85
|
-
description: "Expand your plan with device troubleshooting features",
|
|
86
|
-
needs: ["hasDeviceConnect"],
|
|
87
|
-
os: {
|
|
88
|
-
price: "$27/month",
|
|
89
|
-
deviceCount: startingDeviceCount.os
|
|
90
|
-
},
|
|
91
|
-
professional: {
|
|
92
|
-
price: "$72/month",
|
|
93
|
-
deviceCount: startingDeviceCount.professional
|
|
94
|
-
},
|
|
95
|
-
eligible: ["os", "professional", "enterprise"]
|
|
96
|
-
},
|
|
97
66
|
monitor: {
|
|
98
67
|
id: "monitor",
|
|
99
68
|
title: "Monitor",
|
|
@@ -108,6 +77,21 @@ var ADDONS = {
|
|
|
108
77
|
deviceCount: startingDeviceCount.professional
|
|
109
78
|
},
|
|
110
79
|
eligible: ["professional", "enterprise"]
|
|
80
|
+
},
|
|
81
|
+
troubleshoot: {
|
|
82
|
+
id: "troubleshoot",
|
|
83
|
+
title: "Troubleshoot",
|
|
84
|
+
description: "Expand your plan with device troubleshooting features",
|
|
85
|
+
needs: ["hasDeviceConnect"],
|
|
86
|
+
os: {
|
|
87
|
+
price: "$27/month",
|
|
88
|
+
deviceCount: startingDeviceCount.os
|
|
89
|
+
},
|
|
90
|
+
professional: {
|
|
91
|
+
price: "$72/month",
|
|
92
|
+
deviceCount: startingDeviceCount.professional
|
|
93
|
+
},
|
|
94
|
+
eligible: ["os", "professional", "enterprise"]
|
|
111
95
|
}
|
|
112
96
|
};
|
|
113
97
|
var BENEFITS = {
|
|
@@ -148,13 +132,8 @@ var yes = () => true;
|
|
|
148
132
|
var canAccess = yes;
|
|
149
133
|
var DARK_MODE = "dark";
|
|
150
134
|
var LIGHT_MODE = "light";
|
|
151
|
-
var APPLICATION_JSON_CONTENT_TYPE = "application/json";
|
|
152
|
-
var APPLICATION_JWT_CONTENT_TYPE = "application/jwt";
|
|
153
135
|
|
|
154
136
|
export {
|
|
155
|
-
apiRoot,
|
|
156
|
-
apiUrl,
|
|
157
|
-
headerNames,
|
|
158
137
|
chartTypes,
|
|
159
138
|
emptyChartSelection,
|
|
160
139
|
defaultReportType,
|
|
@@ -167,8 +146,6 @@ export {
|
|
|
167
146
|
yes,
|
|
168
147
|
canAccess,
|
|
169
148
|
DARK_MODE,
|
|
170
|
-
LIGHT_MODE
|
|
171
|
-
APPLICATION_JSON_CONTENT_TYPE,
|
|
172
|
-
APPLICATION_JWT_CONTENT_TYPE
|
|
149
|
+
LIGHT_MODE
|
|
173
150
|
};
|
|
174
|
-
//# sourceMappingURL=chunk-
|
|
151
|
+
//# sourceMappingURL=chunk-HFOTAPIJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/appSlice/constants.ts"],"sourcesContent":["// Copyright 2019 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { BarChart as BarChartIcon, PieChartOutline as PieChartIcon } from '@mui/icons-material';\n\nconst startingDeviceCount = {\n os: 'for first 50 devices',\n professional: 'for first 250 devices'\n} as const;\n\nexport const chartTypes = {\n bar: { key: 'bar', Icon: BarChartIcon },\n pie: { key: 'pie', Icon: PieChartIcon }\n} as const;\nexport const emptyChartSelection = { software: '', group: '', chartType: chartTypes.bar.key, attribute: 'artifact_name' };\nexport const defaultReportType = 'distribution';\nexport const defaultReports = [{ ...emptyChartSelection, group: null, attribute: 'artifact_name', type: defaultReportType }];\n\nexport const BEGINNING_OF_TIME = '2016-01-01T00:00:00.000Z';\n\nexport const locations = {\n eu: { key: 'eu', title: 'EU', location: 'eu.hosted.mender.io' },\n us: { key: 'us', title: 'US', location: 'hosted.mender.io' }\n} as const;\nexport type AvailablePlans = 'os' | 'professional' | 'enterprise';\n\nexport type Plan = {\n description: string;\n deviceCount: string;\n features: string[];\n id: AvailablePlans;\n minimalDeviceCount: number;\n name: string;\n offer?: boolean;\n offerprice?: string;\n price: string;\n price2?: string;\n};\n\nexport type AvailableAddon = 'configure' | 'troubleshoot' | 'monitor';\n\nexport const PLANS: { [key in AvailablePlans]: Plan } = {\n os: {\n id: 'os',\n name: 'Basic',\n minimalDeviceCount: 50,\n offer: true,\n price: '$34 / month',\n deviceCount: startingDeviceCount.os,\n description:\n 'The core features of Mender. To continue using Enterprise Trial features—like Delta updates, scheduled deployments, phased rollouts, device filtering, dynamic groups, RBAC, audit logs, and more—please upgrade to a higher plan.',\n features: ['Access to core features of Mender', 'Basic support']\n },\n professional: {\n id: 'professional',\n name: 'Professional',\n minimalDeviceCount: 250,\n offer: true,\n price: '$291 / month',\n deviceCount: startingDeviceCount.professional,\n description: 'Everything in Basic, plus enhanced update management and automation features.',\n features: ['Advanced OTA features', 'Higher priority support']\n },\n enterprise: {\n id: 'enterprise',\n name: 'Enterprise',\n minimalDeviceCount: 1000,\n price: 'Custom pricing',\n deviceCount: 'Unlimited devices',\n description:\n 'Every advanced feature of Mender, tailored for complex and large-scale deployments. Not available as a monthly subscription — ask us for a quote.',\n features: ['All Mender features', 'Advanced security features', 'SLA-backed support']\n }\n} as const;\nexport type Addon = {\n description: string;\n eligible: AvailablePlans[];\n id: string;\n needs: string[];\n title: string;\n} & {\n [key in Exclude<AvailablePlans, 'enterprise'>]: {\n deviceCount: string;\n price: string;\n };\n};\n\nexport type AddonId = keyof typeof ADDONS;\n\n// the needs names need to be aligned with the name of the features in the appReducer, as they will be checked in the addonselection\nexport const ADDONS: { [key in AvailableAddon]: Addon } = {\n configure: {\n id: 'configure',\n title: 'Configure',\n description: 'Expand your plan with device configuration features',\n needs: ['hasDeviceConfig'],\n os: {\n price: '$11/month',\n deviceCount: startingDeviceCount.os\n },\n professional: {\n price: '$65/month',\n deviceCount: startingDeviceCount.professional\n },\n eligible: ['os', 'professional', 'enterprise']\n },\n monitor: {\n id: 'monitor',\n title: 'Monitor',\n description: 'Expand your plan with device monitoring features',\n needs: ['hasMonitor'],\n os: {\n price: '-',\n deviceCount: '-'\n },\n professional: {\n price: '$86/month',\n deviceCount: startingDeviceCount.professional\n },\n eligible: ['professional', 'enterprise']\n },\n troubleshoot: {\n id: 'troubleshoot',\n title: 'Troubleshoot',\n description: 'Expand your plan with device troubleshooting features',\n needs: ['hasDeviceConnect'],\n os: {\n price: '$27/month',\n deviceCount: startingDeviceCount.os\n },\n professional: {\n price: '$72/month',\n deviceCount: startingDeviceCount.professional\n },\n eligible: ['os', 'professional', 'enterprise']\n }\n};\n\nexport const BENEFITS = {\n auditlog: { id: 'auditlog', benefit: 'trace change across your devices and access troubleshooting session replay', requiredPlan: PLANS.professional.id },\n dashboard: { id: 'dashboard', benefit: 'actionable insights into the devices you are updating with Mender', requiredPlan: PLANS.enterprise.id },\n deltaGeneration: {\n id: 'deltaGeneration',\n benefit: 'automatic delta artifacts generation to minimize data transfer and improve the update delivery',\n requiredPlan: PLANS.enterprise.id\n },\n deviceConfiguration: { id: 'deviceConfiguration', benefit: 'device configuration features', requiredAddon: ADDONS.configure.id },\n deviceMonitor: { id: 'deviceMonitor', benefit: 'device monitoring features', requiredAddon: ADDONS.monitor.id, requiredPlan: PLANS.professional.id },\n deviceTroubleshoot: { id: 'deviceTroubleshoot', benefit: 'device troubleshooting features', requiredAddon: ADDONS.troubleshoot.id },\n dynamicGroups: { id: 'dynamicGroups', benefit: 'create dynamic groups to ease device management', requiredPlan: PLANS.enterprise.id },\n fullFiltering: { id: 'fullFiltering', benefit: 'filtering by multiple attributes to improve the device overview', requiredPlan: PLANS.professional.id },\n gateway: { id: 'gateway', benefit: 'see devices connected to your gateway device for easy access', requiredPlans: PLANS.professional.id },\n pausedDeployments: {\n id: 'pausedDeployments',\n benefit: 'granular control about update rollout to allow synchronization across your fleet',\n requiredPlan: PLANS.enterprise.id\n },\n phasedDeployments: { id: 'phasedDeployments', benefit: 'choose to roll out deployments in multiple phases', requiredPlan: PLANS.enterprise.id },\n rbac: { id: 'rbac', benefit: 'granular role based access control', requiredPlan: PLANS.enterprise.id },\n retryDeployments: { id: 'retryDeployments', benefit: 'optional retries for failed rollout attempts', requiredPlan: PLANS.professional.id },\n scheduledDeployments: {\n id: 'scheduledDeployments',\n benefit: 'scheduled deployments to steer the distribution of your updates.',\n requiredPlan: PLANS.professional.id\n },\n webhookEvents: {\n id: 'webhookEvents',\n benefit: 'receive inventory events and select which type(s) of events the webhook will receive',\n requiredPlan: PLANS.professional.id\n },\n\n default: { id: 'default', benefit: 'gain access to this feature', requiredPlan: PLANS.enterprise.id }\n} as const;\n\nexport const yes = () => true;\nexport const canAccess = yes;\n\nexport const DARK_MODE = 'dark';\nexport const LIGHT_MODE = 'light';\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DEPLOYMENT_STATES
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7C4SQBEE.js";
|
|
4
4
|
|
|
5
5
|
// src/deploymentsSlice/selectors.ts
|
|
6
6
|
import { createSelector } from "@reduxjs/toolkit";
|
|
@@ -51,4 +51,4 @@ export {
|
|
|
51
51
|
DEPLOYMENT_CUTOFF,
|
|
52
52
|
getRecentDeployments
|
|
53
53
|
};
|
|
54
|
-
//# sourceMappingURL=chunk-
|
|
54
|
+
//# sourceMappingURL=chunk-JXQUFKID.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/deploymentsSlice/selectors.ts"],"sourcesContent":["// Copyright 2023 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { createSelector } from '@reduxjs/toolkit';\n\nimport type { Deployment } from '.';\nimport type { RootState } from '../store';\nimport { DEPLOYMENT_STATES } from './constants';\n\nexport const getDeploymentsById = (state: RootState) => state.deployments.byId;\nexport const getDeploymentsByStatus = (state: RootState) => state.deployments.byStatus;\nexport const getSelectedDeploymentDeviceIds = (state: RootState) => state.deployments.selectedDeviceIds;\nexport const getDeploymentsSelectionState = (state: RootState) => state.deployments.selectionState;\n\nexport const getMappedDeploymentSelection = createSelector(\n [getDeploymentsSelectionState, (_, deploymentsState) => deploymentsState, getDeploymentsById],\n (selectionState, deploymentsState, deploymentsById) => {\n const { selection = [] } = selectionState[deploymentsState] ?? {};\n return selection.reduce((accu, id) => {\n if (deploymentsById[id]) {\n accu.push(deploymentsById[id]);\n }\n return accu;\n }, []);\n }\n);\n\nconst relevantDeploymentStates = [DEPLOYMENT_STATES.pending, DEPLOYMENT_STATES.inprogress, DEPLOYMENT_STATES.finished] as const;\nexport const DEPLOYMENT_CUTOFF = 3;\nexport const getRecentDeployments = createSelector([getDeploymentsById, getDeploymentsByStatus], (deploymentsById, deploymentsByStatus) =>\n Object.entries(deploymentsByStatus).reduce(\n (accu, [state, byStatus]) => {\n if (!relevantDeploymentStates.includes(state as (typeof relevantDeploymentStates)[number]) || !byStatus.deploymentIds.length) {\n return accu;\n }\n accu[state] = byStatus.deploymentIds\n .reduce<Deployment[]>((accu, id) => {\n if (deploymentsById[id]) {\n accu.push(deploymentsById[id]);\n }\n return accu;\n }, [])\n .slice(0, DEPLOYMENT_CUTOFF);\n accu.total += byStatus.total;\n return accu;\n },\n { total: 0 }\n )\n);\n"],"mappings":";;;;;AAaA,SAAS,sBAAsB;AAMxB,IAAM,qBAAqB,CAAC,UAAqB,MAAM,YAAY;AACnE,IAAM,yBAAyB,CAAC,UAAqB,MAAM,YAAY;AACvE,IAAM,iCAAiC,CAAC,UAAqB,MAAM,YAAY;AAC/E,IAAM,+BAA+B,CAAC,UAAqB,MAAM,YAAY;AAE7E,IAAM,+BAA+B;AAAA,EAC1C,CAAC,8BAA8B,CAAC,GAAG,qBAAqB,kBAAkB,kBAAkB;AAAA,EAC5F,CAAC,gBAAgB,kBAAkB,oBAAoB;AACrD,UAAM,EAAE,YAAY,CAAC,EAAE,IAAI,eAAe,gBAAgB,KAAK,CAAC;AAChE,WAAO,UAAU,OAAO,CAAC,MAAM,OAAO;AACpC,UAAI,gBAAgB,EAAE,GAAG;AACvB,aAAK,KAAK,gBAAgB,EAAE,CAAC;AAAA,MAC/B;AACA,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAAA,EACP;AACF;AAEA,IAAM,2BAA2B,CAAC,kBAAkB,SAAS,kBAAkB,YAAY,kBAAkB,QAAQ;AAC9G,IAAM,oBAAoB;AAC1B,IAAM,uBAAuB;AAAA,EAAe,CAAC,oBAAoB,sBAAsB;AAAA,EAAG,CAAC,iBAAiB,wBACjH,OAAO,QAAQ,mBAAmB,EAAE;AAAA,IAClC,CAAC,MAAM,CAAC,OAAO,QAAQ,MAAM;AAC3B,UAAI,CAAC,yBAAyB,SAAS,KAAkD,KAAK,CAAC,SAAS,cAAc,QAAQ;AAC5H,eAAO;AAAA,MACT;AACA,WAAK,KAAK,IAAI,SAAS,cACpB,OAAqB,CAACA,OAAM,OAAO;AAClC,YAAI,gBAAgB,EAAE,GAAG;AACvB,UAAAA,MAAK,KAAK,gBAAgB,EAAE,CAAC;AAAA,QAC/B;AACA,eAAOA;AAAA,MACT,GAAG,CAAC,CAAC,EACJ,MAAM,GAAG,iBAAiB;AAC7B,WAAK,SAAS,SAAS;AACvB,aAAO;AAAA,IACT;AAAA,IACA,EAAE,OAAO,EAAE;AAAA,EACb;AACF;","names":["accu"]}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
|
+
ALL_DEVICES,
|
|
3
|
+
ATTRIBUTE_SCOPES,
|
|
2
4
|
AUDIT_LOGS_TYPES,
|
|
3
5
|
DEPLOYMENT_ROUTES,
|
|
4
6
|
DEPLOYMENT_STATES,
|
|
5
7
|
DEPLOYMENT_TYPES,
|
|
6
|
-
emptyFilter
|
|
7
|
-
} from "./chunk-OEP2D6QL.js";
|
|
8
|
-
import {
|
|
9
|
-
ALL_DEVICES,
|
|
10
|
-
ATTRIBUTE_SCOPES,
|
|
11
8
|
DEVICE_FILTERING_OPTIONS,
|
|
12
9
|
DEVICE_LIST_DEFAULTS,
|
|
13
|
-
UNGROUPED_GROUP
|
|
14
|
-
|
|
10
|
+
UNGROUPED_GROUP,
|
|
11
|
+
emptyFilter
|
|
12
|
+
} from "./chunk-7C4SQBEE.js";
|
|
15
13
|
|
|
16
14
|
// src/locationutils.ts
|
|
17
15
|
import { deepCompare, getISOStringBoundaries } from "@northern.tech/utils/helpers";
|
|
@@ -31,7 +29,7 @@ var scopes = {
|
|
|
31
29
|
tags: { delimiter: "tags", filters: [] }
|
|
32
30
|
};
|
|
33
31
|
var commonProcessor = (searchParams) => {
|
|
34
|
-
|
|
32
|
+
const params = new URLSearchParams(searchParams);
|
|
35
33
|
const pageState = Object.entries(commonFields).reduce((accu, [key, { parse, select, target }]) => {
|
|
36
34
|
const values = params.getAll(key);
|
|
37
35
|
if (!values.length) {
|
|
@@ -62,7 +60,7 @@ var commonProcessor = (searchParams) => {
|
|
|
62
60
|
return { pageState, params, sort };
|
|
63
61
|
};
|
|
64
62
|
var legacyDeviceQueryParse = (searchParams, filteringAttributes) => {
|
|
65
|
-
|
|
63
|
+
const params = new URLSearchParams(searchParams);
|
|
66
64
|
const result = Object.keys(scopes).reduce((accu, scope) => ({ ...accu, [scope]: [] }), {});
|
|
67
65
|
if (params.get("group")) {
|
|
68
66
|
result.inventory.push({ ...emptyFilter, key: "group", scope: "inventory", operator: DEVICE_FILTERING_OPTIONS.$eq.key, value: params.get("group") });
|
|
@@ -85,7 +83,7 @@ var legacyDeviceQueryParse = (searchParams, filteringAttributes) => {
|
|
|
85
83
|
return { filters, params };
|
|
86
84
|
};
|
|
87
85
|
var scopedFilterParse = (searchParams) => {
|
|
88
|
-
|
|
86
|
+
const params = new URLSearchParams(searchParams);
|
|
89
87
|
const filters = Object.keys(scopes).reduce(
|
|
90
88
|
(accu, scope) => {
|
|
91
89
|
accu[scope] = [];
|
|
@@ -388,4 +386,4 @@ export {
|
|
|
388
386
|
parseTenantsQuery,
|
|
389
387
|
formatTenants
|
|
390
388
|
};
|
|
391
|
-
//# sourceMappingURL=chunk-
|
|
389
|
+
//# sourceMappingURL=chunk-KC7SKI3U.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/locationutils.ts"],"sourcesContent":["// Copyright 2022 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { deepCompare, getISOStringBoundaries } from '@northern.tech/utils/helpers';\n\nimport {\n ALL_DEVICES,\n ATTRIBUTE_SCOPES,\n AUDIT_LOGS_TYPES,\n DEPLOYMENT_ROUTES,\n DEPLOYMENT_STATES,\n DEPLOYMENT_TYPES,\n DEVICE_FILTERING_OPTIONS,\n DEVICE_LIST_DEFAULTS,\n UNGROUPED_GROUP,\n emptyFilter\n} from './constants';\n\nconst SEPARATOR = ':';\n\nconst defaultSelector = result => result[0];\n\nconst commonFields = {\n ...Object.keys(DEVICE_LIST_DEFAULTS).reduce((accu, key) => ({ ...accu, [key]: { parse: Number, select: defaultSelector, target: key } }), {}),\n id: { parse: String, select: i => i, target: 'id' },\n issues: { parse: undefined, select: defaultSelector, target: 'selectedIssues' },\n open: { parse: Boolean, select: defaultSelector, target: 'open' }\n};\n\nconst scopes = {\n identity: { delimiter: 'identity', filters: [] },\n inventory: { delimiter: 'inventory', filters: [] },\n monitor: { delimiter: 'monitor', filters: [] },\n system: { delimiter: 'system', filters: [] },\n tags: { delimiter: 'tags', filters: [] }\n};\n\nexport const commonProcessor = searchParams => {\n const params = new URLSearchParams(searchParams);\n const pageState = Object.entries(commonFields).reduce((accu, [key, { parse, select, target }]) => {\n const values = params.getAll(key);\n if (!values.length) {\n return accu;\n }\n if (!parse) {\n accu[target] = values;\n } else {\n try {\n accu[target] = select(values.map(parse));\n } catch (error) {\n console.log('encountered faulty url param, continue...', error);\n }\n }\n return accu;\n }, {});\n Object.keys(commonFields).map(key => params.delete(key));\n const sort = params.has('sort')\n ? params.getAll('sort').reduce((sortAccu, scopedQuery) => {\n const items = scopedQuery.split(SEPARATOR).reverse();\n return ['direction', 'key', 'scope'].reduce((accu, key, index) => {\n if (items[index]) {\n accu[key] = items[index];\n }\n return accu;\n }, sortAccu);\n }, {})\n : undefined;\n params.delete('sort');\n return { pageState, params, sort };\n};\n\nconst legacyDeviceQueryParse = (searchParams, filteringAttributes) => {\n const params = new URLSearchParams(searchParams);\n const result = Object.keys(scopes).reduce((accu, scope) => ({ ...accu, [scope]: [] }), {});\n if (params.get('group')) {\n result.inventory.push({ ...emptyFilter, key: 'group', scope: 'inventory', operator: DEVICE_FILTERING_OPTIONS.$eq.key, value: params.get('group') });\n params.delete('group');\n }\n const filters = [...params.keys()].reduce(\n (accu, key) =>\n params.getAll(key).reduce((innerAccu, value) => {\n const scope =\n Object.entries(filteringAttributes).reduce((foundScope, [currentScope, attributes]) => {\n if (foundScope) {\n return foundScope;\n }\n return attributes.includes(key) ? currentScope.substring(0, currentScope.indexOf('Attributes')) : foundScope;\n }, undefined) ?? ATTRIBUTE_SCOPES.inventory;\n innerAccu[scope].push({ ...emptyFilter, scope, key, operator: DEVICE_FILTERING_OPTIONS.$eq.key, value });\n return innerAccu;\n }, accu),\n result\n );\n [...params.keys()].map(key => params.delete(key));\n return { filters, params };\n};\n\nconst scopedFilterParse = searchParams => {\n const params = new URLSearchParams(searchParams);\n const filters = Object.keys(scopes).reduce(\n (accu, scope) => {\n accu[scope] = [];\n if (!params.has(scope)) {\n return accu;\n }\n accu[scope] = params.getAll(scope).map(scopedQuery => {\n const items = scopedQuery.split(SEPARATOR);\n // URLSearchParams will automatically decode any URI encoding present in the query string, thus we have to also handle queries with a SEPARATOR separately\n return { ...emptyFilter, scope, key: items[0], operator: `$${items[1]}`, value: items.slice(2).join(SEPARATOR) };\n });\n return accu;\n },\n { ...scopes }\n );\n Object.keys(scopes).map(scope => params.delete(scope));\n return { filters, params };\n};\n\n// filters, selectedGroup\nexport const parseDeviceQuery = (searchParams, extraProps = {}) => {\n let queryParams = new URLSearchParams(searchParams);\n const { filteringAttributes = {}, pageState = {} } = extraProps;\n const pageStateExtension = pageState.id?.length === 1 ? { open: true } : {};\n\n let scopedFilters;\n const refersOldStyleAttributes = Object.values(filteringAttributes).some(scopeValues => scopeValues.some(scopedValue => queryParams.get(scopedValue)));\n if ((refersOldStyleAttributes && !Object.keys(scopes).some(scope => queryParams.get(scope))) || queryParams.get('group')) {\n const { filters, params } = legacyDeviceQueryParse(queryParams, filteringAttributes);\n scopedFilters = filters;\n queryParams = params;\n } else {\n const { filters, params } = scopedFilterParse(queryParams);\n scopedFilters = filters;\n queryParams = params;\n }\n\n let groupName = '';\n const groupFilterIndex = scopedFilters.inventory.findIndex(filter => filter.key === 'group' && filter.operator === DEVICE_FILTERING_OPTIONS.$eq.key);\n if (groupFilterIndex > -1) {\n groupName = scopedFilters.inventory[groupFilterIndex].value;\n scopedFilters.inventory.splice(groupFilterIndex, 1);\n }\n\n const detailsTab = queryParams.has('tab') ? queryParams.get('tab') : '';\n return { detailsTab, filters: Object.values(scopedFilters).flat(), groupName, ...pageStateExtension };\n};\n\nconst formatSorting = (sort, { sort: sortDefault }) => {\n if (!sort || deepCompare(sort, sortDefault)) {\n return '';\n }\n const sortQuery = ['scope', 'key', 'direction']\n .reduce((accu, key) => {\n if (!sort[key]) {\n return accu;\n }\n accu.push(sort[key]);\n return accu;\n }, [])\n .join(SEPARATOR);\n return `sort=${sortQuery}`;\n};\n\nexport const formatPageState = ({ selectedId, selectedIssues, page, perPage, sort }, { defaults }) =>\n Object.entries({ page, perPage, id: selectedId, issues: selectedIssues, open: selectedId ? true : undefined })\n .reduce(\n (accu, [key, value]) => {\n if (Array.isArray(value)) {\n accu.push(...value.map(item => `${key}=${encodeURIComponent(item)}`));\n } else if ((DEVICE_LIST_DEFAULTS[key] != value || !DEVICE_LIST_DEFAULTS.hasOwnProperty(key)) && value) {\n accu.push(`${key}=${encodeURIComponent(value)}`);\n }\n return accu;\n },\n [formatSorting(sort, defaults)]\n )\n .filter(i => i)\n .join('&');\n\nconst stripFilterOperator = operator => operator.replaceAll('$', '');\n\nconst formatFilters = filters => {\n const result = filters\n // group all filters by their scope to get a more organized result\n .reduce(\n (accu, filter) => {\n const { scope = ATTRIBUTE_SCOPES.inventory, operator = '$eq' } = filter;\n accu[scope].add(`${scopes[scope].delimiter}=${filter.key}${SEPARATOR}${stripFilterOperator(operator)}${SEPARATOR}${encodeURIComponent(filter.value)}`);\n return accu;\n },\n Object.keys(scopes).reduce((accu, item) => ({ ...accu, [item]: new Set() }), {})\n );\n // boil it all down to a single line containing all filters\n return Object.values(result)\n .map(filterSet => [...filterSet])\n .flat();\n};\n\nexport const formatDeviceSearch = ({ pageState, filters, selectedGroup }) => {\n let activeFilters = [...filters];\n if (selectedGroup && selectedGroup !== ALL_DEVICES) {\n const isUngroupedGroup = selectedGroup === UNGROUPED_GROUP.id;\n activeFilters = isUngroupedGroup\n ? activeFilters.filter(\n filter => !(filter.key === 'group' && filter.scope === ATTRIBUTE_SCOPES.system && filter.operator === DEVICE_FILTERING_OPTIONS.$nin.key)\n )\n : activeFilters;\n const groupName = isUngroupedGroup ? UNGROUPED_GROUP.name : selectedGroup;\n activeFilters.push({ scope: ATTRIBUTE_SCOPES.inventory, key: 'group', operator: DEVICE_FILTERING_OPTIONS.$eq.key, value: groupName });\n }\n const formattedFilters = formatFilters(activeFilters).filter(i => i);\n if (pageState.detailsTab && pageState.selectedId) {\n formattedFilters.push(`tab=${pageState.detailsTab}`);\n }\n return formattedFilters.join('&');\n};\n\nexport const generateDevicePath = ({ pageState }) => {\n const { state: selectedState } = pageState;\n const path = ['/devices'];\n if (selectedState !== '') {\n path.push(selectedState);\n }\n return path.join('/');\n};\n\nconst formatDates = ({ endDate, params, startDate, today, tonight }) => {\n if (endDate && endDate !== tonight) {\n params.set('endDate', endDate.split('T')[0]);\n }\n if (startDate && startDate !== today) {\n params.set('startDate', startDate.split('T')[0]);\n }\n return params;\n};\n\nconst paramReducer = (accu, [key, value]) => {\n if (value) {\n accu.set(key, value);\n }\n return accu;\n};\n\nexport const formatAuditlogs = ({ pageState }, { today, tonight }) => {\n const { detail, endDate, startDate, type, user } = pageState;\n let params = new URLSearchParams();\n let userId = user;\n if (user?.id) {\n userId = user.id;\n }\n params = Object.entries({ objectId: detail, userId }).reduce(paramReducer, params);\n if (type) {\n params.set('objectType', type.value ?? type);\n }\n params = formatDates({ endDate, params, startDate, today, tonight });\n return params.toString();\n};\n\nexport const parseDateParams = (params, today, tonight) => {\n let endDate = tonight;\n if (params.get('endDate')) {\n endDate = getISOStringBoundaries(new Date(params.get('endDate'))).end;\n }\n let startDate = today;\n if (params.get('startDate')) {\n startDate = getISOStringBoundaries(new Date(params.get('startDate'))).start;\n }\n return { endDate, startDate };\n};\n\nexport const parseAuditlogsQuery = (params, { today, tonight }) => {\n const type = AUDIT_LOGS_TYPES.find(typeObject => typeObject.value === params.get('objectType'));\n const { endDate, startDate } = parseDateParams(params, today, tonight);\n return {\n detail: params.get('objectId'),\n endDate,\n startDate,\n type,\n user: params.get('userId')\n };\n};\n\nconst formatActiveDeployments = (pageState, { defaults }) =>\n [DEPLOYMENT_STATES.inprogress, DEPLOYMENT_STATES.pending]\n .reduce((accu, state) => {\n const { page, perPage } = pageState[state] ?? {};\n const stateDefaults = defaults[state] ?? {};\n const items = Object.entries({ page, perPage })\n .reverse()\n .reduce((keyAccu, [key, value]) => {\n if ((value && value !== stateDefaults[key]) || keyAccu.length) {\n keyAccu.unshift(value || stateDefaults[key]);\n }\n return keyAccu;\n }, []);\n if (items.length) {\n accu.push(`${state}=${items.join(SEPARATOR)}`);\n }\n return accu;\n }, [])\n .filter(i => i)\n .join('&');\n\nexport const formatDeployments = ({ deploymentObject, pageState }, { defaults, today, tonight }) => {\n const { state: selectedState, showCreationDialog } = pageState.general;\n let params = new URLSearchParams();\n if (showCreationDialog) {\n params.set('open', true);\n if (deploymentObject.release) {\n params.set('release', deploymentObject.release.name);\n }\n if (deploymentObject.devices?.length) {\n deploymentObject.devices.map(({ id }) => params.append('deviceId', id));\n }\n }\n let pageStateQuery;\n if (selectedState === DEPLOYMENT_ROUTES.finished.key) {\n const { endDate, search, startDate, type } = pageState[selectedState];\n params = formatDates({ endDate, params, startDate, today, tonight });\n params = Object.entries({ search, type }).reduce(paramReducer, params);\n pageStateQuery = formatPageState(pageState[selectedState], { defaults });\n } else if (selectedState === DEPLOYMENT_ROUTES.scheduled.key) {\n pageStateQuery = formatPageState(pageState[selectedState], { defaults });\n } else {\n pageStateQuery = formatActiveDeployments(pageState, { defaults });\n }\n return [pageStateQuery, params.toString()].filter(i => i).join('&');\n};\n\nconst deploymentsPath = 'deployments/';\nconst parseDeploymentsPath = path => {\n const parts = path.split(deploymentsPath);\n if (parts.length > 1 && Object.keys(DEPLOYMENT_ROUTES).includes(parts[1])) {\n return parts[1];\n }\n return '';\n};\n\nconst parseActiveDeployments = params =>\n [DEPLOYMENT_STATES.inprogress, DEPLOYMENT_STATES.pending].reduce((accu, state) => {\n if (!params.has(state)) {\n return accu;\n }\n const items = params.get(state).split(SEPARATOR);\n accu[state] = ['page', 'perPage'].reduce((stateAccu, key, index) => (items[index] ? { ...stateAccu, [key]: Number(items[index]) } : stateAccu), {});\n return accu;\n }, {});\n\nconst deploymentFields = {\n deviceId: { attribute: 'devices', parse: id => ({ id }), select: i => i },\n release: { attribute: 'release', parse: String, select: defaultSelector }\n};\n\nexport const parseDeploymentsQuery = (params, { pageState, location, tonight }) => {\n // for deployments we get a startDate implicitly from a list of retrieved deployments if none is set, thus we're not defaulting to today\n const { endDate, startDate } = parseDateParams(params, '', tonight);\n const deploymentObject = Object.entries(deploymentFields).reduce(\n (accu, [key, { attribute, parse, select }]) => (params.has(key) ? { ...accu, [attribute]: select(params.getAll(key).map(parse)) } : accu),\n {}\n );\n const { state: selectedState, id, open, ...remainingPageState } = pageState;\n const tab = parseDeploymentsPath(location.pathname);\n const deploymentsTab = tab || selectedState || DEPLOYMENT_ROUTES.active.key;\n\n let state = {\n deploymentObject,\n general: {\n showCreationDialog: Boolean(open && !id),\n showReportDialog: Boolean(open && id),\n state: deploymentsTab\n }\n };\n if (deploymentsTab === DEPLOYMENT_ROUTES.finished.key) {\n const type = DEPLOYMENT_TYPES[params.get('type')] || '';\n const search = params.get('search') || '';\n state[deploymentsTab] = { ...remainingPageState, endDate, search, startDate, type };\n } else if (deploymentsTab === DEPLOYMENT_ROUTES.scheduled.key) {\n state[deploymentsTab] = { ...remainingPageState };\n } else {\n state = {\n ...state,\n ...parseActiveDeployments(params)\n };\n }\n return state;\n};\n\nexport const generateDeploymentsPath = ({ pageState }) => {\n const { state: selectedState = DEPLOYMENT_ROUTES.active.key } = pageState.general;\n return `/deployments/${selectedState}`;\n};\n\nexport interface FormatReleasesParams {\n pageState: {\n searchTerm?: string;\n selectedTags?: string[];\n tab?: string;\n type?: string;\n };\n}\nconst releasesRoot = '/releases';\nexport const formatReleases = ({ pageState: { searchTerm, selectedTags = [], tab, type } }: FormatReleasesParams) =>\n Object.entries({ name: searchTerm, tab, type })\n .reduce(\n (accu, [key, value]) => (value ? [...accu, `${key}=${value}`] : accu),\n selectedTags.map(tag => `tag=${tag}`)\n )\n .join('&');\n\nexport const generateReleasesPath = ({ pageState: { selectedRelease } }) =>\n `${releasesRoot}${selectedRelease ? `/${encodeURIComponent(selectedRelease)}` : ''}`;\n\nexport const parseReleasesQuery = (queryParams, extraProps) => {\n const name = queryParams.has('name') ? queryParams.get('name') : '';\n const tab = queryParams.has('tab') ? queryParams.get('tab') : undefined;\n const tags = queryParams.has('tag') ? queryParams.getAll('tag') : [];\n const type = queryParams.has('type') ? queryParams.get('type') : '';\n let selectedRelease = decodeURIComponent(extraProps.location.pathname.substring(releasesRoot.length + 1));\n if (!selectedRelease && extraProps.pageState.id?.length) {\n selectedRelease = extraProps.pageState.id[0];\n }\n return { searchTerm: name, selectedRelease, tab, tags, type };\n};\n\nconst tenantsRoot = '/tenants';\n\nexport const generateTenantPath = ({ pageState: { selectedTenant } }) => {\n if (selectedTenant) {\n return `${tenantsRoot}/${encodeURIComponent(selectedTenant)}`;\n } else {\n return tenantsRoot;\n }\n};\nexport const generateTenantPathById = id => (id ? `${tenantsRoot}/${encodeURIComponent(id)}` : tenantsRoot);\n\nexport const parseTenantsQuery = (queryParams, extraProps) => {\n const name = queryParams.has('name') ? queryParams.get('name') : '';\n let selectedTenant = extraProps.location.pathname.substring(tenantsRoot.length + 1);\n if (!selectedTenant && extraProps.pageState.id?.length) {\n selectedTenant = extraProps.pageState.id[0];\n }\n return { name, selectedTenant };\n};\n\nexport const formatTenants = () => '';\n"],"mappings":";;;;;;;;;;;;;;AAcA,SAAS,aAAa,8BAA8B;AAepD,IAAM,YAAY;AAElB,IAAM,kBAAkB,YAAU,OAAO,CAAC;AAE1C,IAAM,eAAe;AAAA,EACnB,GAAG,OAAO,KAAK,oBAAoB,EAAE,OAAO,CAAC,MAAM,SAAS,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,OAAO,QAAQ,QAAQ,iBAAiB,QAAQ,IAAI,EAAE,IAAI,CAAC,CAAC;AAAA,EAC5I,IAAI,EAAE,OAAO,QAAQ,QAAQ,OAAK,GAAG,QAAQ,KAAK;AAAA,EAClD,QAAQ,EAAE,OAAO,QAAW,QAAQ,iBAAiB,QAAQ,iBAAiB;AAAA,EAC9E,MAAM,EAAE,OAAO,SAAS,QAAQ,iBAAiB,QAAQ,OAAO;AAClE;AAEA,IAAM,SAAS;AAAA,EACb,UAAU,EAAE,WAAW,YAAY,SAAS,CAAC,EAAE;AAAA,EAC/C,WAAW,EAAE,WAAW,aAAa,SAAS,CAAC,EAAE;AAAA,EACjD,SAAS,EAAE,WAAW,WAAW,SAAS,CAAC,EAAE;AAAA,EAC7C,QAAQ,EAAE,WAAW,UAAU,SAAS,CAAC,EAAE;AAAA,EAC3C,MAAM,EAAE,WAAW,QAAQ,SAAS,CAAC,EAAE;AACzC;AAEO,IAAM,kBAAkB,kBAAgB;AAC7C,QAAM,SAAS,IAAI,gBAAgB,YAAY;AAC/C,QAAM,YAAY,OAAO,QAAQ,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,QAAQ,OAAO,CAAC,MAAM;AAChG,UAAM,SAAS,OAAO,OAAO,GAAG;AAChC,QAAI,CAAC,OAAO,QAAQ;AAClB,aAAO;AAAA,IACT;AACA,QAAI,CAAC,OAAO;AACV,WAAK,MAAM,IAAI;AAAA,IACjB,OAAO;AACL,UAAI;AACF,aAAK,MAAM,IAAI,OAAO,OAAO,IAAI,KAAK,CAAC;AAAA,MACzC,SAAS,OAAO;AACd,gBAAQ,IAAI,6CAA6C,KAAK;AAAA,MAChE;AAAA,IACF;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,SAAO,KAAK,YAAY,EAAE,IAAI,SAAO,OAAO,OAAO,GAAG,CAAC;AACvD,QAAM,OAAO,OAAO,IAAI,MAAM,IAC1B,OAAO,OAAO,MAAM,EAAE,OAAO,CAAC,UAAU,gBAAgB;AACtD,UAAM,QAAQ,YAAY,MAAM,SAAS,EAAE,QAAQ;AACnD,WAAO,CAAC,aAAa,OAAO,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,UAAU;AAChE,UAAI,MAAM,KAAK,GAAG;AAChB,aAAK,GAAG,IAAI,MAAM,KAAK;AAAA,MACzB;AACA,aAAO;AAAA,IACT,GAAG,QAAQ;AAAA,EACb,GAAG,CAAC,CAAC,IACL;AACJ,SAAO,OAAO,MAAM;AACpB,SAAO,EAAE,WAAW,QAAQ,KAAK;AACnC;AAEA,IAAM,yBAAyB,CAAC,cAAc,wBAAwB;AACpE,QAAM,SAAS,IAAI,gBAAgB,YAAY;AAC/C,QAAM,SAAS,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,MAAM,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACzF,MAAI,OAAO,IAAI,OAAO,GAAG;AACvB,WAAO,UAAU,KAAK,EAAE,GAAG,aAAa,KAAK,SAAS,OAAO,aAAa,UAAU,yBAAyB,IAAI,KAAK,OAAO,OAAO,IAAI,OAAO,EAAE,CAAC;AAClJ,WAAO,OAAO,OAAO;AAAA,EACvB;AACA,QAAM,UAAU,CAAC,GAAG,OAAO,KAAK,CAAC,EAAE;AAAA,IACjC,CAAC,MAAM,QACL,OAAO,OAAO,GAAG,EAAE,OAAO,CAAC,WAAW,UAAU;AAC9C,YAAM,QACJ,OAAO,QAAQ,mBAAmB,EAAE,OAAO,CAAC,YAAY,CAAC,cAAc,UAAU,MAAM;AACrF,YAAI,YAAY;AACd,iBAAO;AAAA,QACT;AACA,eAAO,WAAW,SAAS,GAAG,IAAI,aAAa,UAAU,GAAG,aAAa,QAAQ,YAAY,CAAC,IAAI;AAAA,MACpG,GAAG,MAAS,KAAK,iBAAiB;AACpC,gBAAU,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,OAAO,KAAK,UAAU,yBAAyB,IAAI,KAAK,MAAM,CAAC;AACvG,aAAO;AAAA,IACT,GAAG,IAAI;AAAA,IACT;AAAA,EACF;AACA,GAAC,GAAG,OAAO,KAAK,CAAC,EAAE,IAAI,SAAO,OAAO,OAAO,GAAG,CAAC;AAChD,SAAO,EAAE,SAAS,OAAO;AAC3B;AAEA,IAAM,oBAAoB,kBAAgB;AACxC,QAAM,SAAS,IAAI,gBAAgB,YAAY;AAC/C,QAAM,UAAU,OAAO,KAAK,MAAM,EAAE;AAAA,IAClC,CAAC,MAAM,UAAU;AACf,WAAK,KAAK,IAAI,CAAC;AACf,UAAI,CAAC,OAAO,IAAI,KAAK,GAAG;AACtB,eAAO;AAAA,MACT;AACA,WAAK,KAAK,IAAI,OAAO,OAAO,KAAK,EAAE,IAAI,iBAAe;AACpD,cAAM,QAAQ,YAAY,MAAM,SAAS;AAEzC,eAAO,EAAE,GAAG,aAAa,OAAO,KAAK,MAAM,CAAC,GAAG,UAAU,IAAI,MAAM,CAAC,CAAC,IAAI,OAAO,MAAM,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE;AAAA,MACjH,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA,EAAE,GAAG,OAAO;AAAA,EACd;AACA,SAAO,KAAK,MAAM,EAAE,IAAI,WAAS,OAAO,OAAO,KAAK,CAAC;AACrD,SAAO,EAAE,SAAS,OAAO;AAC3B;AAGO,IAAM,mBAAmB,CAAC,cAAc,aAAa,CAAC,MAAM;AACjE,MAAI,cAAc,IAAI,gBAAgB,YAAY;AAClD,QAAM,EAAE,sBAAsB,CAAC,GAAG,YAAY,CAAC,EAAE,IAAI;AACrD,QAAM,qBAAqB,UAAU,IAAI,WAAW,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAE1E,MAAI;AACJ,QAAM,2BAA2B,OAAO,OAAO,mBAAmB,EAAE,KAAK,iBAAe,YAAY,KAAK,iBAAe,YAAY,IAAI,WAAW,CAAC,CAAC;AACrJ,MAAK,4BAA4B,CAAC,OAAO,KAAK,MAAM,EAAE,KAAK,WAAS,YAAY,IAAI,KAAK,CAAC,KAAM,YAAY,IAAI,OAAO,GAAG;AACxH,UAAM,EAAE,SAAS,OAAO,IAAI,uBAAuB,aAAa,mBAAmB;AACnF,oBAAgB;AAChB,kBAAc;AAAA,EAChB,OAAO;AACL,UAAM,EAAE,SAAS,OAAO,IAAI,kBAAkB,WAAW;AACzD,oBAAgB;AAChB,kBAAc;AAAA,EAChB;AAEA,MAAI,YAAY;AAChB,QAAM,mBAAmB,cAAc,UAAU,UAAU,YAAU,OAAO,QAAQ,WAAW,OAAO,aAAa,yBAAyB,IAAI,GAAG;AACnJ,MAAI,mBAAmB,IAAI;AACzB,gBAAY,cAAc,UAAU,gBAAgB,EAAE;AACtD,kBAAc,UAAU,OAAO,kBAAkB,CAAC;AAAA,EACpD;AAEA,QAAM,aAAa,YAAY,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK,IAAI;AACrE,SAAO,EAAE,YAAY,SAAS,OAAO,OAAO,aAAa,EAAE,KAAK,GAAG,WAAW,GAAG,mBAAmB;AACtG;AAEA,IAAM,gBAAgB,CAAC,MAAM,EAAE,MAAM,YAAY,MAAM;AACrD,MAAI,CAAC,QAAQ,YAAY,MAAM,WAAW,GAAG;AAC3C,WAAO;AAAA,EACT;AACA,QAAM,YAAY,CAAC,SAAS,OAAO,WAAW,EAC3C,OAAO,CAAC,MAAM,QAAQ;AACrB,QAAI,CAAC,KAAK,GAAG,GAAG;AACd,aAAO;AAAA,IACT;AACA,SAAK,KAAK,KAAK,GAAG,CAAC;AACnB,WAAO;AAAA,EACT,GAAG,CAAC,CAAC,EACJ,KAAK,SAAS;AACjB,SAAO,QAAQ,SAAS;AAC1B;AAEO,IAAM,kBAAkB,CAAC,EAAE,YAAY,gBAAgB,MAAM,SAAS,KAAK,GAAG,EAAE,SAAS,MAC9F,OAAO,QAAQ,EAAE,MAAM,SAAS,IAAI,YAAY,QAAQ,gBAAgB,MAAM,aAAa,OAAO,OAAU,CAAC,EAC1G;AAAA,EACC,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM;AACtB,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAK,KAAK,GAAG,MAAM,IAAI,UAAQ,GAAG,GAAG,IAAI,mBAAmB,IAAI,CAAC,EAAE,CAAC;AAAA,IACtE,YAAY,qBAAqB,GAAG,KAAK,SAAS,CAAC,qBAAqB,eAAe,GAAG,MAAM,OAAO;AACrG,WAAK,KAAK,GAAG,GAAG,IAAI,mBAAmB,KAAK,CAAC,EAAE;AAAA,IACjD;AACA,WAAO;AAAA,EACT;AAAA,EACA,CAAC,cAAc,MAAM,QAAQ,CAAC;AAChC,EACC,OAAO,OAAK,CAAC,EACb,KAAK,GAAG;AAEb,IAAM,sBAAsB,cAAY,SAAS,WAAW,KAAK,EAAE;AAEnE,IAAM,gBAAgB,aAAW;AAC/B,QAAM,SAAS,QAEZ;AAAA,IACC,CAAC,MAAM,WAAW;AAChB,YAAM,EAAE,QAAQ,iBAAiB,WAAW,WAAW,MAAM,IAAI;AACjE,WAAK,KAAK,EAAE,IAAI,GAAG,OAAO,KAAK,EAAE,SAAS,IAAI,OAAO,GAAG,GAAG,SAAS,GAAG,oBAAoB,QAAQ,CAAC,GAAG,SAAS,GAAG,mBAAmB,OAAO,KAAK,CAAC,EAAE;AACrJ,aAAO;AAAA,IACT;AAAA,IACA,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,MAAM,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,GAAG,oBAAI,IAAI,EAAE,IAAI,CAAC,CAAC;AAAA,EACjF;AAEF,SAAO,OAAO,OAAO,MAAM,EACxB,IAAI,eAAa,CAAC,GAAG,SAAS,CAAC,EAC/B,KAAK;AACV;AAEO,IAAM,qBAAqB,CAAC,EAAE,WAAW,SAAS,cAAc,MAAM;AAC3E,MAAI,gBAAgB,CAAC,GAAG,OAAO;AAC/B,MAAI,iBAAiB,kBAAkB,aAAa;AAClD,UAAM,mBAAmB,kBAAkB,gBAAgB;AAC3D,oBAAgB,mBACZ,cAAc;AAAA,MACZ,YAAU,EAAE,OAAO,QAAQ,WAAW,OAAO,UAAU,iBAAiB,UAAU,OAAO,aAAa,yBAAyB,KAAK;AAAA,IACtI,IACA;AACJ,UAAM,YAAY,mBAAmB,gBAAgB,OAAO;AAC5D,kBAAc,KAAK,EAAE,OAAO,iBAAiB,WAAW,KAAK,SAAS,UAAU,yBAAyB,IAAI,KAAK,OAAO,UAAU,CAAC;AAAA,EACtI;AACA,QAAM,mBAAmB,cAAc,aAAa,EAAE,OAAO,OAAK,CAAC;AACnE,MAAI,UAAU,cAAc,UAAU,YAAY;AAChD,qBAAiB,KAAK,OAAO,UAAU,UAAU,EAAE;AAAA,EACrD;AACA,SAAO,iBAAiB,KAAK,GAAG;AAClC;AAEO,IAAM,qBAAqB,CAAC,EAAE,UAAU,MAAM;AACnD,QAAM,EAAE,OAAO,cAAc,IAAI;AACjC,QAAM,OAAO,CAAC,UAAU;AACxB,MAAI,kBAAkB,IAAI;AACxB,SAAK,KAAK,aAAa;AAAA,EACzB;AACA,SAAO,KAAK,KAAK,GAAG;AACtB;AAEA,IAAM,cAAc,CAAC,EAAE,SAAS,QAAQ,WAAW,OAAO,QAAQ,MAAM;AACtE,MAAI,WAAW,YAAY,SAAS;AAClC,WAAO,IAAI,WAAW,QAAQ,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,EAC7C;AACA,MAAI,aAAa,cAAc,OAAO;AACpC,WAAO,IAAI,aAAa,UAAU,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,EACjD;AACA,SAAO;AACT;AAEA,IAAM,eAAe,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM;AAC3C,MAAI,OAAO;AACT,SAAK,IAAI,KAAK,KAAK;AAAA,EACrB;AACA,SAAO;AACT;AAEO,IAAM,kBAAkB,CAAC,EAAE,UAAU,GAAG,EAAE,OAAO,QAAQ,MAAM;AACpE,QAAM,EAAE,QAAQ,SAAS,WAAW,MAAM,KAAK,IAAI;AACnD,MAAI,SAAS,IAAI,gBAAgB;AACjC,MAAI,SAAS;AACb,MAAI,MAAM,IAAI;AACZ,aAAS,KAAK;AAAA,EAChB;AACA,WAAS,OAAO,QAAQ,EAAE,UAAU,QAAQ,OAAO,CAAC,EAAE,OAAO,cAAc,MAAM;AACjF,MAAI,MAAM;AACR,WAAO,IAAI,cAAc,KAAK,SAAS,IAAI;AAAA,EAC7C;AACA,WAAS,YAAY,EAAE,SAAS,QAAQ,WAAW,OAAO,QAAQ,CAAC;AACnE,SAAO,OAAO,SAAS;AACzB;AAEO,IAAM,kBAAkB,CAAC,QAAQ,OAAO,YAAY;AACzD,MAAI,UAAU;AACd,MAAI,OAAO,IAAI,SAAS,GAAG;AACzB,cAAU,uBAAuB,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE;AAAA,EACpE;AACA,MAAI,YAAY;AAChB,MAAI,OAAO,IAAI,WAAW,GAAG;AAC3B,gBAAY,uBAAuB,IAAI,KAAK,OAAO,IAAI,WAAW,CAAC,CAAC,EAAE;AAAA,EACxE;AACA,SAAO,EAAE,SAAS,UAAU;AAC9B;AAEO,IAAM,sBAAsB,CAAC,QAAQ,EAAE,OAAO,QAAQ,MAAM;AACjE,QAAM,OAAO,iBAAiB,KAAK,gBAAc,WAAW,UAAU,OAAO,IAAI,YAAY,CAAC;AAC9F,QAAM,EAAE,SAAS,UAAU,IAAI,gBAAgB,QAAQ,OAAO,OAAO;AACrE,SAAO;AAAA,IACL,QAAQ,OAAO,IAAI,UAAU;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,OAAO,IAAI,QAAQ;AAAA,EAC3B;AACF;AAEA,IAAM,0BAA0B,CAAC,WAAW,EAAE,SAAS,MACrD,CAAC,kBAAkB,YAAY,kBAAkB,OAAO,EACrD,OAAO,CAAC,MAAM,UAAU;AACvB,QAAM,EAAE,MAAM,QAAQ,IAAI,UAAU,KAAK,KAAK,CAAC;AAC/C,QAAM,gBAAgB,SAAS,KAAK,KAAK,CAAC;AAC1C,QAAM,QAAQ,OAAO,QAAQ,EAAE,MAAM,QAAQ,CAAC,EAC3C,QAAQ,EACR,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,MAAM;AACjC,QAAK,SAAS,UAAU,cAAc,GAAG,KAAM,QAAQ,QAAQ;AAC7D,cAAQ,QAAQ,SAAS,cAAc,GAAG,CAAC;AAAA,IAC7C;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACP,MAAI,MAAM,QAAQ;AAChB,SAAK,KAAK,GAAG,KAAK,IAAI,MAAM,KAAK,SAAS,CAAC,EAAE;AAAA,EAC/C;AACA,SAAO;AACT,GAAG,CAAC,CAAC,EACJ,OAAO,OAAK,CAAC,EACb,KAAK,GAAG;AAEN,IAAM,oBAAoB,CAAC,EAAE,kBAAkB,UAAU,GAAG,EAAE,UAAU,OAAO,QAAQ,MAAM;AAClG,QAAM,EAAE,OAAO,eAAe,mBAAmB,IAAI,UAAU;AAC/D,MAAI,SAAS,IAAI,gBAAgB;AACjC,MAAI,oBAAoB;AACtB,WAAO,IAAI,QAAQ,IAAI;AACvB,QAAI,iBAAiB,SAAS;AAC5B,aAAO,IAAI,WAAW,iBAAiB,QAAQ,IAAI;AAAA,IACrD;AACA,QAAI,iBAAiB,SAAS,QAAQ;AACpC,uBAAiB,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,OAAO,OAAO,YAAY,EAAE,CAAC;AAAA,IACxE;AAAA,EACF;AACA,MAAI;AACJ,MAAI,kBAAkB,kBAAkB,SAAS,KAAK;AACpD,UAAM,EAAE,SAAS,QAAQ,WAAW,KAAK,IAAI,UAAU,aAAa;AACpE,aAAS,YAAY,EAAE,SAAS,QAAQ,WAAW,OAAO,QAAQ,CAAC;AACnE,aAAS,OAAO,QAAQ,EAAE,QAAQ,KAAK,CAAC,EAAE,OAAO,cAAc,MAAM;AACrE,qBAAiB,gBAAgB,UAAU,aAAa,GAAG,EAAE,SAAS,CAAC;AAAA,EACzE,WAAW,kBAAkB,kBAAkB,UAAU,KAAK;AAC5D,qBAAiB,gBAAgB,UAAU,aAAa,GAAG,EAAE,SAAS,CAAC;AAAA,EACzE,OAAO;AACL,qBAAiB,wBAAwB,WAAW,EAAE,SAAS,CAAC;AAAA,EAClE;AACA,SAAO,CAAC,gBAAgB,OAAO,SAAS,CAAC,EAAE,OAAO,OAAK,CAAC,EAAE,KAAK,GAAG;AACpE;AAEA,IAAM,kBAAkB;AACxB,IAAM,uBAAuB,UAAQ;AACnC,QAAM,QAAQ,KAAK,MAAM,eAAe;AACxC,MAAI,MAAM,SAAS,KAAK,OAAO,KAAK,iBAAiB,EAAE,SAAS,MAAM,CAAC,CAAC,GAAG;AACzE,WAAO,MAAM,CAAC;AAAA,EAChB;AACA,SAAO;AACT;AAEA,IAAM,yBAAyB,YAC7B,CAAC,kBAAkB,YAAY,kBAAkB,OAAO,EAAE,OAAO,CAAC,MAAM,UAAU;AAChF,MAAI,CAAC,OAAO,IAAI,KAAK,GAAG;AACtB,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS;AAC/C,OAAK,KAAK,IAAI,CAAC,QAAQ,SAAS,EAAE,OAAO,CAAC,WAAW,KAAK,UAAW,MAAM,KAAK,IAAI,EAAE,GAAG,WAAW,CAAC,GAAG,GAAG,OAAO,MAAM,KAAK,CAAC,EAAE,IAAI,WAAY,CAAC,CAAC;AAClJ,SAAO;AACT,GAAG,CAAC,CAAC;AAEP,IAAM,mBAAmB;AAAA,EACvB,UAAU,EAAE,WAAW,WAAW,OAAO,SAAO,EAAE,GAAG,IAAI,QAAQ,OAAK,EAAE;AAAA,EACxE,SAAS,EAAE,WAAW,WAAW,OAAO,QAAQ,QAAQ,gBAAgB;AAC1E;AAEO,IAAM,wBAAwB,CAAC,QAAQ,EAAE,WAAW,UAAU,QAAQ,MAAM;AAEjF,QAAM,EAAE,SAAS,UAAU,IAAI,gBAAgB,QAAQ,IAAI,OAAO;AAClE,QAAM,mBAAmB,OAAO,QAAQ,gBAAgB,EAAE;AAAA,IACxD,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,OAAO,OAAO,CAAC,MAAO,OAAO,IAAI,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,OAAO,OAAO,OAAO,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,IAAI;AAAA,IACpI,CAAC;AAAA,EACH;AACA,QAAM,EAAE,OAAO,eAAe,IAAI,MAAM,GAAG,mBAAmB,IAAI;AAClE,QAAM,MAAM,qBAAqB,SAAS,QAAQ;AAClD,QAAM,iBAAiB,OAAO,iBAAiB,kBAAkB,OAAO;AAExE,MAAI,QAAQ;AAAA,IACV;AAAA,IACA,SAAS;AAAA,MACP,oBAAoB,QAAQ,QAAQ,CAAC,EAAE;AAAA,MACvC,kBAAkB,QAAQ,QAAQ,EAAE;AAAA,MACpC,OAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,mBAAmB,kBAAkB,SAAS,KAAK;AACrD,UAAM,OAAO,iBAAiB,OAAO,IAAI,MAAM,CAAC,KAAK;AACrD,UAAM,SAAS,OAAO,IAAI,QAAQ,KAAK;AACvC,UAAM,cAAc,IAAI,EAAE,GAAG,oBAAoB,SAAS,QAAQ,WAAW,KAAK;AAAA,EACpF,WAAW,mBAAmB,kBAAkB,UAAU,KAAK;AAC7D,UAAM,cAAc,IAAI,EAAE,GAAG,mBAAmB;AAAA,EAClD,OAAO;AACL,YAAQ;AAAA,MACN,GAAG;AAAA,MACH,GAAG,uBAAuB,MAAM;AAAA,IAClC;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,0BAA0B,CAAC,EAAE,UAAU,MAAM;AACxD,QAAM,EAAE,OAAO,gBAAgB,kBAAkB,OAAO,IAAI,IAAI,UAAU;AAC1E,SAAO,gBAAgB,aAAa;AACtC;AAUA,IAAM,eAAe;AACd,IAAM,iBAAiB,CAAC,EAAE,WAAW,EAAE,YAAY,eAAe,CAAC,GAAG,KAAK,KAAK,EAAE,MACvF,OAAO,QAAQ,EAAE,MAAM,YAAY,KAAK,KAAK,CAAC,EAC3C;AAAA,EACC,CAAC,MAAM,CAAC,KAAK,KAAK,MAAO,QAAQ,CAAC,GAAG,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,IAAI;AAAA,EAChE,aAAa,IAAI,SAAO,OAAO,GAAG,EAAE;AACtC,EACC,KAAK,GAAG;AAEN,IAAM,uBAAuB,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,MACpE,GAAG,YAAY,GAAG,kBAAkB,IAAI,mBAAmB,eAAe,CAAC,KAAK,EAAE;AAE7E,IAAM,qBAAqB,CAAC,aAAa,eAAe;AAC7D,QAAM,OAAO,YAAY,IAAI,MAAM,IAAI,YAAY,IAAI,MAAM,IAAI;AACjE,QAAM,MAAM,YAAY,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK,IAAI;AAC9D,QAAM,OAAO,YAAY,IAAI,KAAK,IAAI,YAAY,OAAO,KAAK,IAAI,CAAC;AACnE,QAAM,OAAO,YAAY,IAAI,MAAM,IAAI,YAAY,IAAI,MAAM,IAAI;AACjE,MAAI,kBAAkB,mBAAmB,WAAW,SAAS,SAAS,UAAU,aAAa,SAAS,CAAC,CAAC;AACxG,MAAI,CAAC,mBAAmB,WAAW,UAAU,IAAI,QAAQ;AACvD,sBAAkB,WAAW,UAAU,GAAG,CAAC;AAAA,EAC7C;AACA,SAAO,EAAE,YAAY,MAAM,iBAAiB,KAAK,MAAM,KAAK;AAC9D;AAEA,IAAM,cAAc;AAEb,IAAM,qBAAqB,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM;AACvE,MAAI,gBAAgB;AAClB,WAAO,GAAG,WAAW,IAAI,mBAAmB,cAAc,CAAC;AAAA,EAC7D,OAAO;AACL,WAAO;AAAA,EACT;AACF;AACO,IAAM,yBAAyB,QAAO,KAAK,GAAG,WAAW,IAAI,mBAAmB,EAAE,CAAC,KAAK;AAExF,IAAM,oBAAoB,CAAC,aAAa,eAAe;AAC5D,QAAM,OAAO,YAAY,IAAI,MAAM,IAAI,YAAY,IAAI,MAAM,IAAI;AACjE,MAAI,iBAAiB,WAAW,SAAS,SAAS,UAAU,YAAY,SAAS,CAAC;AAClF,MAAI,CAAC,kBAAkB,WAAW,UAAU,IAAI,QAAQ;AACtD,qBAAiB,WAAW,UAAU,GAAG,CAAC;AAAA,EAC5C;AACA,SAAO,EAAE,MAAM,eAAe;AAChC;AAEO,IAAM,gBAAgB,MAAM;","names":[]}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
DEVICE_STATES
|
|
3
|
-
} from "./chunk-OEP2D6QL.js";
|
|
4
|
-
import {
|
|
2
|
+
DEVICE_STATES,
|
|
5
3
|
UNGROUPED_GROUP
|
|
6
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-7C4SQBEE.js";
|
|
7
5
|
|
|
8
6
|
// src/devicesSlice/selectors.ts
|
|
9
7
|
import { duplicateFilter } from "@northern.tech/utils/helpers";
|
|
@@ -55,7 +53,7 @@ var getSelectedGroupInfo = createSelector(
|
|
|
55
53
|
let groupCount = acceptedDeviceTotal;
|
|
56
54
|
let groupFilters = [];
|
|
57
55
|
if (selectedGroup && groupsById[selectedGroup]) {
|
|
58
|
-
groupCount = groupsById[selectedGroup].total;
|
|
56
|
+
groupCount = groupsById[selectedGroup].total || 0;
|
|
59
57
|
groupFilters = groupsById[selectedGroup].filters || [];
|
|
60
58
|
}
|
|
61
59
|
return { groupCount, selectedGroup, groupFilters };
|
|
@@ -66,13 +64,18 @@ var getLimitMaxed = createSelector(
|
|
|
66
64
|
({ total: acceptedDevices = 0 }, deviceLimit) => Boolean(deviceLimit && deviceLimit <= acceptedDevices)
|
|
67
65
|
);
|
|
68
66
|
var getGroupsByIdWithoutUngrouped = createSelector([getGroupsById], ({ [UNGROUPED_GROUP.id]: ungrouped, ...groups }) => groups);
|
|
67
|
+
var getGroupData = createSelector([getGroupsByIdWithoutUngrouped], (groups) => {
|
|
68
|
+
const createdGroup = Object.keys(groups).length ? Object.keys(groups)[0] : void 0;
|
|
69
|
+
const hasDynamicGroups = Object.values(groups).some((group) => !!group.id);
|
|
70
|
+
return { createdGroup, hasDynamicGroups, groups };
|
|
71
|
+
});
|
|
69
72
|
var getGroups = createSelector([getGroupsById], (groupsById) => {
|
|
70
73
|
const groupNames = Object.keys(groupsById).sort();
|
|
71
74
|
const groupedGroups = Object.entries(groupsById).sort((a, b) => a[0].localeCompare(b[0])).reduce(
|
|
72
75
|
(accu, [groupname, group]) => {
|
|
73
76
|
const name = groupname === UNGROUPED_GROUP.id ? UNGROUPED_GROUP.name : groupname;
|
|
74
77
|
const groupItem = { ...group, groupId: name, name: groupname };
|
|
75
|
-
if (group.filters
|
|
78
|
+
if ((group.filters ?? []).length > 0) {
|
|
76
79
|
if (groupname !== UNGROUPED_GROUP.id) {
|
|
77
80
|
accu.dynamic.push(groupItem);
|
|
78
81
|
} else {
|
|
@@ -126,8 +129,9 @@ export {
|
|
|
126
129
|
getSelectedGroupInfo,
|
|
127
130
|
getLimitMaxed,
|
|
128
131
|
getGroupsByIdWithoutUngrouped,
|
|
132
|
+
getGroupData,
|
|
129
133
|
getGroups,
|
|
130
134
|
getAttributesList,
|
|
131
135
|
getDeviceTypes
|
|
132
136
|
};
|
|
133
|
-
//# sourceMappingURL=chunk-
|
|
137
|
+
//# sourceMappingURL=chunk-KJNNEDRV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/devicesSlice/selectors.ts"],"sourcesContent":["// Copyright 2023 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { 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 getDeviceLimit = (state: RootState) => state.devices.limit;\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 getLimitMaxed = createSelector([getAcceptedDevices, getDeviceLimit], ({ total: acceptedDevices = 0 }, deviceLimit) =>\n Boolean(deviceLimit && deviceLimit <= 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"],"mappings":"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","names":[]}
|
|
@@ -1,43 +1,45 @@
|
|
|
1
1
|
import {
|
|
2
2
|
actions_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7PRZYHDP.js";
|
|
4
4
|
import {
|
|
5
|
-
|
|
6
|
-
} from "./chunk-
|
|
5
|
+
releasesSlice_default
|
|
6
|
+
} from "./chunk-OOICURFL.js";
|
|
7
7
|
import {
|
|
8
|
+
actions as actions2,
|
|
8
9
|
usersSlice_default
|
|
9
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-UGSLGUS6.js";
|
|
10
11
|
import {
|
|
11
12
|
actions,
|
|
12
13
|
organizationSlice_default
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import {
|
|
15
|
-
releasesSlice_default
|
|
16
|
-
} from "./chunk-NOQR3TE7.js";
|
|
14
|
+
} from "./chunk-MZNANSS2.js";
|
|
17
15
|
import {
|
|
18
16
|
monitorSlice_default
|
|
19
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-PGFVHKP5.js";
|
|
20
18
|
import {
|
|
21
19
|
onboardingSlice_default
|
|
22
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-VANBSJS5.js";
|
|
23
21
|
import {
|
|
24
|
-
|
|
25
|
-
} from "./chunk-
|
|
22
|
+
deploymentsSlice_default
|
|
23
|
+
} from "./chunk-VUFRP6P3.js";
|
|
26
24
|
import {
|
|
27
25
|
appSlice_default
|
|
28
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-6KGTHJKC.js";
|
|
27
|
+
import {
|
|
28
|
+
devicesSlice_default
|
|
29
|
+
} from "./chunk-ABJLRDCO.js";
|
|
29
30
|
import {
|
|
30
31
|
getToken
|
|
31
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-ZJW3QIPM.js";
|
|
32
33
|
import {
|
|
33
34
|
USER_LOGOUT,
|
|
34
35
|
settingsKeys
|
|
35
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-7C4SQBEE.js";
|
|
36
37
|
|
|
37
38
|
// src/store.ts
|
|
38
39
|
import { useDispatch } from "react-redux";
|
|
39
40
|
import { extractErrorMessage, preformatWithRequestID } from "@northern.tech/utils/helpers";
|
|
40
|
-
import { combineReducers, configureStore } from "@reduxjs/toolkit";
|
|
41
|
+
import { combineReducers, configureStore, createAsyncThunk } from "@reduxjs/toolkit";
|
|
42
|
+
import { createReduxEnhancer } from "@sentry/react";
|
|
41
43
|
var { setSnackbar, uploadProgress } = actions_default;
|
|
42
44
|
var keys = ["sessionDeploymentChecker", settingsKeys.initialized];
|
|
43
45
|
var resetEnvironment = () => keys.forEach((key) => window.sessionStorage.removeItem(key));
|
|
@@ -74,20 +76,50 @@ var rejectionLoggerMiddleware = () => (next) => (action) => {
|
|
|
74
76
|
}
|
|
75
77
|
return next(action);
|
|
76
78
|
};
|
|
79
|
+
var tracingActionIgnoreList = [actions2.successfullyLoggedIn.type, "users/loginUser/pending", "users/loginUser/fulfilled", "users/loginUser/rejected"];
|
|
80
|
+
var sentryReduxEnhancer = createReduxEnhancer({
|
|
81
|
+
actionTransformer: (action) => {
|
|
82
|
+
if (tracingActionIgnoreList.includes(action.type)) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
return action;
|
|
86
|
+
},
|
|
87
|
+
// Transform the state to remove sensitive information
|
|
88
|
+
stateTransformer: (state) => {
|
|
89
|
+
const transformedState = {
|
|
90
|
+
...state,
|
|
91
|
+
users: { ...state.users, currentSession: null },
|
|
92
|
+
organization: {
|
|
93
|
+
...state.organization,
|
|
94
|
+
organization: {
|
|
95
|
+
...state.organization.organization,
|
|
96
|
+
tenant_token: null
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
return transformedState;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
77
103
|
var getConfiguredStore = (options = {}) => {
|
|
78
104
|
const { preloadedState = {}, ...config } = options;
|
|
79
105
|
return configureStore({
|
|
80
106
|
...config,
|
|
81
107
|
preloadedState,
|
|
108
|
+
enhancers: (getDefaultEnhancers) => {
|
|
109
|
+
if (window.mender_environment?.sentry?.isReduxEnabled) {
|
|
110
|
+
return getDefaultEnhancers().concat(sentryReduxEnhancer);
|
|
111
|
+
}
|
|
112
|
+
return getDefaultEnhancers();
|
|
113
|
+
},
|
|
82
114
|
reducer: sessionReducer,
|
|
83
115
|
middleware: (getDefaultMiddleware) => getDefaultMiddleware({
|
|
84
116
|
immutableCheck: {
|
|
85
117
|
ignoredPaths: ["app.uploadsById"]
|
|
86
118
|
},
|
|
87
119
|
serializableCheck: {
|
|
88
|
-
ignoredActions: [actions.receiveExternalDeviceIntegrations.name,
|
|
89
|
-
ignoredActionPaths: ["uploads", "
|
|
90
|
-
ignoredPaths: ["app.uploadsById", "
|
|
120
|
+
ignoredActions: [actions.receiveExternalDeviceIntegrations.name, uploadProgress.name],
|
|
121
|
+
ignoredActionPaths: ["uploads", /payload\..*$/, "meta.arg.file", "meta.arg.integration.configHint"],
|
|
122
|
+
ignoredPaths: ["app.uploadsById", "organization.externalDeviceIntegrations"]
|
|
91
123
|
}
|
|
92
124
|
}).concat(rejectionLoggerMiddleware)
|
|
93
125
|
});
|
|
@@ -96,6 +128,7 @@ var store = getConfiguredStore({
|
|
|
96
128
|
preloadedState: {}
|
|
97
129
|
});
|
|
98
130
|
var useAppDispatch = useDispatch;
|
|
131
|
+
var createAppAsyncThunk = createAsyncThunk.withTypes();
|
|
99
132
|
|
|
100
133
|
export {
|
|
101
134
|
commonErrorFallback,
|
|
@@ -103,6 +136,7 @@ export {
|
|
|
103
136
|
sessionReducer,
|
|
104
137
|
getConfiguredStore,
|
|
105
138
|
store,
|
|
106
|
-
useAppDispatch
|
|
139
|
+
useAppDispatch,
|
|
140
|
+
createAppAsyncThunk
|
|
107
141
|
};
|
|
108
|
-
//# sourceMappingURL=chunk-
|
|
142
|
+
//# sourceMappingURL=chunk-MPYYSFPL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/store.ts"],"sourcesContent":["// Copyright 2019 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { useDispatch } from 'react-redux';\n\nimport { extractErrorMessage, preformatWithRequestID } from '@northern.tech/utils/helpers';\nimport { combineReducers, configureStore, createAsyncThunk } from '@reduxjs/toolkit';\nimport { createReduxEnhancer } from '@sentry/react';\n\nimport actions from './actions';\nimport appSlice from './appSlice';\nimport { getToken } from './auth';\nimport { USER_LOGOUT, settingsKeys } from './constants';\nimport deploymentSlice from './deploymentsSlice';\nimport deviceSlice from './devicesSlice';\nimport monitorSlice from './monitorSlice';\nimport onboardingSlice from './onboardingSlice';\nimport organizationSlice, { actions as organizationActions } from './organizationSlice';\nimport releaseSlice from './releasesSlice';\nimport userSlice, { actions as userActions } from './usersSlice';\n\nconst { setSnackbar, uploadProgress } = actions;\n\n// exclude 'pendings-redirect' since this is expected to persist refreshes - the rest should be better to be redone\nconst keys = ['sessionDeploymentChecker', settingsKeys.initialized];\nconst resetEnvironment = () => keys.forEach(key => window.sessionStorage.removeItem(key));\n\nresetEnvironment();\n\nexport const commonErrorFallback = 'Please check your connection.';\nexport const commonErrorHandler = (err, errorContext, dispatch, fallback?: string, mightBeAuthRelated = false): Promise<never> => {\n const errMsg = extractErrorMessage(err, fallback);\n if (mightBeAuthRelated || getToken()) {\n dispatch(setSnackbar({ message: preformatWithRequestID(err.response, `${errorContext} ${errMsg}`), action: 'Copy to clipboard' }));\n }\n return Promise.reject(err);\n};\n\nconst rootReducer = combineReducers({\n app: appSlice,\n devices: deviceSlice,\n deployments: deploymentSlice,\n monitor: monitorSlice,\n onboarding: onboardingSlice,\n organization: organizationSlice,\n releases: releaseSlice,\n users: userSlice\n});\n\nexport const sessionReducer = (state, action) => {\n if (action.type === USER_LOGOUT) {\n state = undefined;\n }\n return rootReducer(state, action);\n};\n\nconst rejectionLoggerMiddleware = () => next => action => {\n if (action.type.endsWith('/rejected')) {\n const { error } = action;\n console.error('Rejection in action:', action);\n console.error(error.stack);\n }\n return next(action);\n};\n\nconst tracingActionIgnoreList = [userActions.successfullyLoggedIn.type, 'users/loginUser/pending', 'users/loginUser/fulfilled', 'users/loginUser/rejected'];\n\nconst sentryReduxEnhancer = createReduxEnhancer({\n actionTransformer: action => {\n if (tracingActionIgnoreList.includes(action.type)) {\n return null;\n }\n return action;\n },\n // Transform the state to remove sensitive information\n stateTransformer: (state: RootState) => {\n const transformedState = {\n ...state,\n users: { ...state.users, currentSession: null },\n organization: {\n ...state.organization,\n organization: {\n ...state.organization.organization,\n tenant_token: null\n }\n }\n };\n return transformedState;\n }\n});\n\nexport const getConfiguredStore = (options = {}) => {\n const { preloadedState = {}, ...config } = options;\n return configureStore({\n ...config,\n preloadedState,\n enhancers: getDefaultEnhancers => {\n // rely on the plain injected env object, as we're initializing the store only here\n if (window.mender_environment?.sentry?.isReduxEnabled) {\n return getDefaultEnhancers().concat(sentryReduxEnhancer);\n }\n return getDefaultEnhancers();\n },\n reducer: sessionReducer,\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware({\n immutableCheck: {\n ignoredPaths: ['app.uploadsById']\n },\n serializableCheck: {\n ignoredActions: [organizationActions.receiveExternalDeviceIntegrations.name, uploadProgress.name],\n ignoredActionPaths: ['uploads', /payload\\..*$/, 'meta.arg.file', 'meta.arg.integration.configHint'],\n ignoredPaths: ['app.uploadsById', 'organization.externalDeviceIntegrations']\n }\n }).concat(rejectionLoggerMiddleware)\n });\n};\nexport const store = getConfiguredStore({\n preloadedState: {}\n});\nexport type AppDispatch = typeof store.dispatch;\nexport const useAppDispatch: () => AppDispatch = useDispatch;\nexport type RootState = ReturnType<typeof store.getState>;\n\nexport const createAppAsyncThunk = createAsyncThunk.withTypes<{\n dispatch: AppDispatch;\n state: RootState;\n}>();\n"],"mappings":"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","names":["actions"]}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
TENANT_LIST_DEFAULT
|
|
3
|
-
} from "./chunk-OEP2D6QL.js";
|
|
4
1
|
import {
|
|
5
2
|
DEVICE_LIST_DEFAULTS,
|
|
6
|
-
SORTING_OPTIONS
|
|
7
|
-
|
|
3
|
+
SORTING_OPTIONS,
|
|
4
|
+
TENANT_LIST_DEFAULT
|
|
5
|
+
} from "./chunk-7C4SQBEE.js";
|
|
8
6
|
|
|
9
7
|
// src/organizationSlice/index.ts
|
|
10
8
|
import { createSlice } from "@reduxjs/toolkit";
|
|
@@ -40,7 +38,8 @@ var initialState = {
|
|
|
40
38
|
startDate: void 0,
|
|
41
39
|
total: 0,
|
|
42
40
|
type: void 0,
|
|
43
|
-
user: void 0
|
|
41
|
+
user: void 0,
|
|
42
|
+
isLoading: false
|
|
44
43
|
}
|
|
45
44
|
},
|
|
46
45
|
externalDeviceIntegrations: [
|
|
@@ -78,6 +77,12 @@ var organizationSlice = createSlice({
|
|
|
78
77
|
setOrganization: (state, action) => {
|
|
79
78
|
state.organization = { ...state.organization, ...action.payload };
|
|
80
79
|
},
|
|
80
|
+
setSubscription: (state, action) => {
|
|
81
|
+
state.organization.subscription = { ...state.organization.subscription, ...action.payload };
|
|
82
|
+
},
|
|
83
|
+
setBillingProfile: (state, action) => {
|
|
84
|
+
state.organization.billing_profile = action.payload;
|
|
85
|
+
},
|
|
81
86
|
setTenantListState: (state, action) => {
|
|
82
87
|
state.tenantList = action.payload;
|
|
83
88
|
},
|
|
@@ -104,4 +109,4 @@ export {
|
|
|
104
109
|
actions,
|
|
105
110
|
organizationSlice_default
|
|
106
111
|
};
|
|
107
|
-
//# sourceMappingURL=chunk-
|
|
112
|
+
//# sourceMappingURL=chunk-MZNANSS2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/organizationSlice/index.ts"],"sourcesContent":["// Copyright 2023 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport type { AuditLog, BillingProfile, Integration, Event as WebhookEvent } from '@northern.tech/types/MenderTypes';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport { DEVICE_LIST_DEFAULTS, SORTING_OPTIONS, TENANT_LIST_DEFAULT } from '../constants';\nimport type { AuditLogSelectionState, Card, Organization, OrganizationState, SSOConfig, TenantList } from '../organizationSlice/types';\n\nexport const sliceName = 'organization';\n\nexport const initialState: OrganizationState = {\n card: {\n last4: '',\n expiration: { month: 1, year: 2020 },\n brand: ''\n },\n intentId: null,\n tenantList: {\n ...TENANT_LIST_DEFAULT,\n total: 0,\n tenants: [],\n selectedTenant: null,\n sort: {\n direction: SORTING_OPTIONS.desc,\n key: 'name'\n }\n },\n organization: {\n // id, name, status, tenant_token, plan\n },\n auditlog: {\n events: [],\n selectionState: {\n ...DEVICE_LIST_DEFAULTS,\n detail: undefined,\n endDate: undefined,\n selectedIssue: undefined,\n sort: { direction: SORTING_OPTIONS.desc },\n startDate: undefined,\n total: 0,\n type: undefined,\n user: undefined,\n isLoading: false\n }\n },\n externalDeviceIntegrations: [\n // { <connection_string|x509|...>, id, provider }\n ],\n ssoConfigs: [],\n webhooks: {\n // [id]: { events: [] }\n // for now:\n events: [],\n eventsTotal: 0\n }\n};\n\nexport const organizationSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n receiveAuditLogs: (state, action: PayloadAction<{ events: AuditLog[]; total: number }>) => {\n const { events, total } = action.payload;\n state.auditlog.events = events;\n state.auditlog.selectionState.total = total;\n },\n setAuditLogState: (state, action: PayloadAction<Partial<AuditLogSelectionState>>) => {\n state.auditlog.selectionState = {\n ...state.auditlog.selectionState,\n ...action.payload\n };\n },\n receiveCurrentCard: (state, action: PayloadAction<Card>) => {\n state.card = action.payload;\n },\n receiveSetupIntent: (state, action: PayloadAction<string | null>) => {\n state.intentId = action.payload;\n },\n setOrganization: (state, action: PayloadAction<Partial<Organization>>) => {\n state.organization = { ...state.organization, ...action.payload };\n },\n setSubscription: (state, action) => {\n state.organization.subscription = { ...state.organization.subscription, ...action.payload };\n },\n setBillingProfile: (state, action: PayloadAction<BillingProfile>) => {\n state.organization.billing_profile = action.payload;\n },\n setTenantListState: (state, action: PayloadAction<TenantList>) => {\n state.tenantList = action.payload;\n },\n receiveExternalDeviceIntegrations: (state, action: PayloadAction<Integration[]>) => {\n state.externalDeviceIntegrations = action.payload;\n },\n receiveSsoConfigs: (state, action: PayloadAction<SSOConfig[]>) => {\n state.ssoConfigs = action.payload;\n },\n receiveWebhookEvents: (state, action: PayloadAction<{ total: number; value: WebhookEvent[] }>) => {\n const { value, total } = action.payload;\n state.webhooks.events = value;\n state.webhooks.eventsTotal = total;\n }\n }\n});\n\nexport const actions = organizationSlice.actions;\nexport default organizationSlice.reducer;\n"],"mappings":";;;;;;;AAeA,SAAS,mBAAmB;AAKrB,IAAM,YAAY;AAElB,IAAM,eAAkC;AAAA,EAC7C,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,YAAY,EAAE,OAAO,GAAG,MAAM,KAAK;AAAA,IACnC,OAAO;AAAA,EACT;AAAA,EACA,UAAU;AAAA,EACV,YAAY;AAAA,IACV,GAAG;AAAA,IACH,OAAO;AAAA,IACP,SAAS,CAAC;AAAA,IACV,gBAAgB;AAAA,IAChB,MAAM;AAAA,MACJ,WAAW,gBAAgB;AAAA,MAC3B,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,cAAc;AAAA;AAAA,EAEd;AAAA,EACA,UAAU;AAAA,IACR,QAAQ,CAAC;AAAA,IACT,gBAAgB;AAAA,MACd,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,eAAe;AAAA,MACf,MAAM,EAAE,WAAW,gBAAgB,KAAK;AAAA,MACxC,WAAW;AAAA,MACX,OAAO;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,4BAA4B;AAAA;AAAA,EAE5B;AAAA,EACA,YAAY,CAAC;AAAA,EACb,UAAU;AAAA;AAAA;AAAA,IAGR,QAAQ,CAAC;AAAA,IACT,aAAa;AAAA,EACf;AACF;AAEO,IAAM,oBAAoB,YAAY;AAAA,EAC3C,MAAM;AAAA,EACN;AAAA,EACA,UAAU;AAAA,IACR,kBAAkB,CAAC,OAAO,WAAiE;AACzF,YAAM,EAAE,QAAQ,MAAM,IAAI,OAAO;AACjC,YAAM,SAAS,SAAS;AACxB,YAAM,SAAS,eAAe,QAAQ;AAAA,IACxC;AAAA,IACA,kBAAkB,CAAC,OAAO,WAA2D;AACnF,YAAM,SAAS,iBAAiB;AAAA,QAC9B,GAAG,MAAM,SAAS;AAAA,QAClB,GAAG,OAAO;AAAA,MACZ;AAAA,IACF;AAAA,IACA,oBAAoB,CAAC,OAAO,WAAgC;AAC1D,YAAM,OAAO,OAAO;AAAA,IACtB;AAAA,IACA,oBAAoB,CAAC,OAAO,WAAyC;AACnE,YAAM,WAAW,OAAO;AAAA,IAC1B;AAAA,IACA,iBAAiB,CAAC,OAAO,WAAiD;AACxE,YAAM,eAAe,EAAE,GAAG,MAAM,cAAc,GAAG,OAAO,QAAQ;AAAA,IAClE;AAAA,IACA,iBAAiB,CAAC,OAAO,WAAW;AAClC,YAAM,aAAa,eAAe,EAAE,GAAG,MAAM,aAAa,cAAc,GAAG,OAAO,QAAQ;AAAA,IAC5F;AAAA,IACA,mBAAmB,CAAC,OAAO,WAA0C;AACnE,YAAM,aAAa,kBAAkB,OAAO;AAAA,IAC9C;AAAA,IACA,oBAAoB,CAAC,OAAO,WAAsC;AAChE,YAAM,aAAa,OAAO;AAAA,IAC5B;AAAA,IACA,mCAAmC,CAAC,OAAO,WAAyC;AAClF,YAAM,6BAA6B,OAAO;AAAA,IAC5C;AAAA,IACA,mBAAmB,CAAC,OAAO,WAAuC;AAChE,YAAM,aAAa,OAAO;AAAA,IAC5B;AAAA,IACA,sBAAsB,CAAC,OAAO,WAAoE;AAChG,YAAM,EAAE,OAAO,MAAM,IAAI,OAAO;AAChC,YAAM,SAAS,SAAS;AACxB,YAAM,SAAS,cAAc;AAAA,IAC/B;AAAA,EACF;AACF,CAAC;AAEM,IAAM,UAAU,kBAAkB;AACzC,IAAO,4BAAQ,kBAAkB;","names":[]}
|