@northern.tech/store 0.3.2 → 0.3.4
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/BillingProfile-ChP2_Sqw.d.cts +45 -0
- package/dist/BillingProfile-ChP2_Sqw.d.ts +45 -0
- package/dist/actions.cjs +22 -23
- package/dist/actions.cjs.map +1 -1
- package/dist/actions.js +12 -12
- package/dist/api/general-api.cjs.map +1 -1
- package/dist/api/general-api.js +5 -5
- package/dist/api/types/Tenant.ts +17 -12
- package/dist/api/users-api.cjs.map +1 -1
- package/dist/api/users-api.js +6 -6
- package/dist/appSlice/constants.cjs +18 -10
- package/dist/appSlice/constants.cjs.map +1 -1
- package/dist/appSlice/constants.d.cts +41 -84
- package/dist/appSlice/constants.d.ts +41 -84
- package/dist/appSlice/constants.js +1 -1
- package/dist/appSlice/index.cjs +1 -3
- package/dist/appSlice/index.cjs.map +1 -1
- package/dist/appSlice/index.js +4 -4
- package/dist/appSlice/thunks.cjs +153 -120
- package/dist/appSlice/thunks.cjs.map +1 -1
- package/dist/appSlice/thunks.js +28 -27
- package/dist/auth.cjs.map +1 -1
- package/dist/auth.js +4 -4
- package/dist/{chunk-NI4SZOCF.js → chunk-4RWZR3BN.js} +23 -25
- package/dist/{chunk-NI4SZOCF.js.map → chunk-4RWZR3BN.js.map} +1 -1
- package/dist/{chunk-YGBFDXXA.js → chunk-7YZCUAXZ.js} +2 -2
- package/dist/{chunk-7PVGDMNM.js → chunk-AFICTIVU.js} +3 -5
- package/dist/{chunk-7PVGDMNM.js.map → chunk-AFICTIVU.js.map} +1 -1
- package/dist/{chunk-YT73QWCN.js → chunk-AUBJUUP3.js} +3 -3
- package/dist/{chunk-UEP36GCI.js → chunk-AVX7VVOK.js} +3 -3
- package/dist/{chunk-4B3IMP4I.js → chunk-BSN2TOQC.js} +1 -1
- package/dist/{chunk-4B3IMP4I.js.map → chunk-BSN2TOQC.js.map} +1 -1
- package/dist/{chunk-VOCOFE4I.js → chunk-DCEKU6UV.js} +2 -2
- package/dist/{chunk-E5LEU5PF.js → chunk-DGQKXSRI.js} +3 -3
- package/dist/{chunk-74OJIKXF.js → chunk-EQLHIPPR.js} +182 -142
- package/dist/chunk-EQLHIPPR.js.map +1 -0
- package/dist/{chunk-MDC7Y3EX.js → chunk-EYCORLYU.js} +44 -40
- package/dist/chunk-EYCORLYU.js.map +1 -0
- package/dist/{chunk-KAQJH2YL.js → chunk-FQDSV3NK.js} +13 -5
- package/dist/chunk-FQDSV3NK.js.map +1 -0
- package/dist/{chunk-XTRPX7JZ.js → chunk-FRSA2YB5.js} +3 -3
- package/dist/chunk-FRSA2YB5.js.map +1 -0
- package/dist/{chunk-ANB5BM5J.js → chunk-FVCYB5OP.js} +37 -32
- package/dist/chunk-FVCYB5OP.js.map +1 -0
- package/dist/{chunk-AMGWP7A4.js → chunk-GAI4VYRZ.js} +2 -2
- package/dist/{chunk-YETZPQFR.js → chunk-GWJIY56H.js} +19 -20
- package/dist/chunk-GWJIY56H.js.map +1 -0
- package/dist/{chunk-Q6M5TTDQ.js → chunk-JO33IORF.js} +2 -2
- package/dist/chunk-JO33IORF.js.map +1 -0
- package/dist/chunk-K4MMUDYT.js +391 -0
- package/dist/chunk-K4MMUDYT.js.map +1 -0
- package/dist/{chunk-XXHONFSQ.js → chunk-L3SY3J5M.js} +4 -4
- package/dist/{chunk-XXHONFSQ.js.map → chunk-L3SY3J5M.js.map} +1 -1
- package/dist/{chunk-JAROCU6M.js → chunk-NCSKCF2S.js} +3 -3
- package/dist/{chunk-CYV6632F.js → chunk-NOQR3TE7.js} +2 -2
- package/dist/{chunk-A6CT6GTI.js → chunk-OEP2D6QL.js} +18 -12
- package/dist/chunk-OEP2D6QL.js.map +1 -0
- package/dist/{chunk-2RJIDREZ.js → chunk-PAIB5V27.js} +32 -23
- package/dist/chunk-PAIB5V27.js.map +1 -0
- package/dist/{chunk-FGKMJS3B.js → chunk-RX32WLVJ.js} +2 -4
- package/dist/chunk-RX32WLVJ.js.map +1 -0
- package/dist/{chunk-YTQUNAZP.js → chunk-X3GZILYD.js} +3 -3
- package/dist/{chunk-25AKG5HH.js → chunk-Y575RZHR.js} +19 -11
- package/dist/chunk-Y575RZHR.js.map +1 -0
- package/dist/{chunk-RX55KAKX.js → chunk-ZWOAFHAR.js} +2 -2
- package/dist/{chunk-NNADGHSL.js → chunk-ZZMFXRQK.js} +14 -14
- package/dist/commonConstants.cjs.map +1 -1
- package/dist/commonConstants.d.cts +1 -1
- package/dist/commonConstants.d.ts +1 -1
- package/dist/commonConstants.js +1 -1
- package/dist/commonSelectors.cjs +47 -29
- package/dist/commonSelectors.cjs.map +1 -1
- package/dist/commonSelectors.d.cts +55 -46
- package/dist/commonSelectors.d.ts +55 -46
- package/dist/commonSelectors.js +11 -11
- package/dist/constants.cjs +35 -19
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +3 -3
- package/dist/constants.d.ts +3 -3
- package/dist/constants.js +7 -3
- package/dist/deploymentdevicehook.cjs +159 -125
- package/dist/deploymentdevicehook.cjs.map +1 -1
- package/dist/deploymentdevicehook.d.cts +1 -1
- package/dist/deploymentdevicehook.d.ts +1 -1
- package/dist/deploymentdevicehook.js +34 -31
- package/dist/deploymentdevicehook.js.map +1 -1
- package/dist/deploymentsSlice/constants.cjs +8 -8
- package/dist/deploymentsSlice/constants.cjs.map +1 -1
- package/dist/deploymentsSlice/constants.js +3 -3
- package/dist/deploymentsSlice/index.cjs +8 -8
- package/dist/deploymentsSlice/index.cjs.map +1 -1
- package/dist/deploymentsSlice/index.js +4 -4
- package/dist/deploymentsSlice/selectors.cjs +8 -8
- package/dist/deploymentsSlice/selectors.cjs.map +1 -1
- package/dist/deploymentsSlice/selectors.js +4 -4
- package/dist/deploymentsSlice/thunks.cjs +153 -120
- package/dist/deploymentsSlice/thunks.cjs.map +1 -1
- package/dist/deploymentsSlice/thunks.js +28 -27
- package/dist/devicesSlice/constants.cjs +11 -8
- package/dist/devicesSlice/constants.cjs.map +1 -1
- package/dist/devicesSlice/constants.d.cts +2 -1
- package/dist/devicesSlice/constants.d.ts +2 -1
- package/dist/devicesSlice/constants.js +5 -3
- package/dist/devicesSlice/index.cjs +8 -8
- package/dist/devicesSlice/index.cjs.map +1 -1
- package/dist/devicesSlice/index.js +4 -4
- package/dist/devicesSlice/selectors.cjs +9 -9
- package/dist/devicesSlice/selectors.cjs.map +1 -1
- package/dist/devicesSlice/selectors.js +4 -4
- package/dist/devicesSlice/thunks.cjs +155 -120
- package/dist/devicesSlice/thunks.cjs.map +1 -1
- package/dist/devicesSlice/thunks.d.cts +12 -2
- package/dist/devicesSlice/thunks.d.ts +12 -2
- package/dist/devicesSlice/thunks.js +30 -27
- package/dist/flag-eu-5477R2P4.svg +130 -0
- package/dist/flag-us-HNQAF66I.svg +63 -0
- package/dist/liststatehook.cjs +971 -0
- package/dist/liststatehook.cjs.map +1 -0
- package/dist/liststatehook.d.cts +246 -0
- package/dist/liststatehook.d.ts +246 -0
- package/dist/liststatehook.js +88 -0
- package/dist/liststatehook.js.map +1 -0
- package/dist/locationutils.cjs +942 -0
- package/dist/locationutils.cjs.map +1 -0
- package/dist/locationutils.d.cts +113 -0
- package/dist/locationutils.d.ts +113 -0
- package/dist/locationutils.js +46 -0
- package/dist/locationutils.js.map +1 -0
- package/dist/monitorSlice/constants.cjs +8 -8
- package/dist/monitorSlice/constants.cjs.map +1 -1
- package/dist/monitorSlice/constants.js +3 -3
- package/dist/monitorSlice/index.cjs +8 -8
- package/dist/monitorSlice/index.cjs.map +1 -1
- package/dist/monitorSlice/index.js +4 -4
- package/dist/monitorSlice/thunks.cjs +74 -62
- package/dist/monitorSlice/thunks.cjs.map +1 -1
- package/dist/monitorSlice/thunks.js +24 -24
- package/dist/onboardingSlice/index.cjs +1 -3
- package/dist/onboardingSlice/index.cjs.map +1 -1
- package/dist/onboardingSlice/index.js +1 -1
- package/dist/onboardingSlice/thunks.cjs +157 -124
- package/dist/onboardingSlice/thunks.cjs.map +1 -1
- package/dist/onboardingSlice/thunks.d.cts +2 -34
- package/dist/onboardingSlice/thunks.d.ts +2 -34
- package/dist/onboardingSlice/thunks.js +28 -29
- package/dist/organizationSlice/constants.cjs +22 -17
- package/dist/organizationSlice/constants.cjs.map +1 -1
- package/dist/organizationSlice/constants.d.cts +33 -1
- package/dist/organizationSlice/constants.d.ts +33 -1
- package/dist/organizationSlice/constants.js +5 -3
- package/dist/organizationSlice/index.cjs +18 -15
- package/dist/organizationSlice/index.cjs.map +1 -1
- package/dist/organizationSlice/index.d.cts +27 -1012
- package/dist/organizationSlice/index.d.ts +27 -1012
- package/dist/organizationSlice/index.js +4 -4
- package/dist/organizationSlice/selectors.cjs.map +1 -1
- package/dist/organizationSlice/selectors.d.cts +10 -1
- package/dist/organizationSlice/selectors.d.ts +10 -1
- package/dist/organizationSlice/selectors.js +4 -4
- package/dist/organizationSlice/thunks.cjs +1619 -1559
- package/dist/organizationSlice/thunks.cjs.map +1 -1
- package/dist/organizationSlice/thunks.d.cts +62 -37
- package/dist/organizationSlice/thunks.d.ts +62 -37
- package/dist/organizationSlice/thunks.js +28 -27
- package/dist/organizationSlice/types.cjs +19 -0
- package/dist/organizationSlice/types.cjs.map +1 -0
- package/dist/organizationSlice/types.d.cts +5 -0
- package/dist/organizationSlice/types.d.ts +5 -0
- package/dist/organizationSlice/types.js +1 -0
- package/dist/organizationSlice/types.js.map +1 -0
- package/dist/releasesSlice/index.cjs.map +1 -1
- package/dist/releasesSlice/index.js +4 -4
- package/dist/releasesSlice/selectors.cjs +17 -8
- package/dist/releasesSlice/selectors.cjs.map +1 -1
- package/dist/releasesSlice/selectors.js +5 -5
- package/dist/releasesSlice/thunks.cjs +123 -94
- package/dist/releasesSlice/thunks.cjs.map +1 -1
- package/dist/releasesSlice/thunks.d.cts +1 -4
- package/dist/releasesSlice/thunks.d.ts +1 -4
- package/dist/releasesSlice/thunks.js +25 -24
- package/dist/selectors.cjs +53 -29
- package/dist/selectors.cjs.map +1 -1
- package/dist/selectors.d.cts +10 -1
- package/dist/selectors.d.ts +10 -1
- package/dist/selectors.js +49 -43
- package/dist/sockethook.cjs +529 -0
- package/dist/sockethook.cjs.map +1 -0
- package/dist/sockethook.d.cts +10 -0
- package/dist/sockethook.d.ts +10 -0
- package/dist/sockethook.js +141 -0
- package/dist/sockethook.js.map +1 -0
- package/dist/store.cjs +38 -29
- package/dist/store.cjs.map +1 -1
- package/dist/store.d.cts +13 -231
- package/dist/store.d.ts +13 -231
- package/dist/store.js +18 -16
- package/dist/storehooks.cjs +273 -198
- package/dist/storehooks.cjs.map +1 -1
- package/dist/storehooks.js +38 -37
- package/dist/storehooks.js.map +1 -1
- package/dist/thunks.cjs +259 -184
- package/dist/thunks.cjs.map +1 -1
- package/dist/thunks.d.cts +6 -2
- package/dist/thunks.d.ts +6 -2
- package/dist/thunks.js +30 -29
- package/dist/types-DBj17FZO.d.cts +135 -0
- package/dist/types-DnfZa6xd.d.ts +135 -0
- package/dist/usersSlice/constants.cjs +10 -10
- package/dist/usersSlice/constants.cjs.map +1 -1
- package/dist/usersSlice/constants.d.cts +6 -6
- package/dist/usersSlice/constants.d.ts +6 -6
- package/dist/usersSlice/constants.js +3 -3
- package/dist/usersSlice/index.cjs +10 -10
- package/dist/usersSlice/index.cjs.map +1 -1
- package/dist/usersSlice/index.js +4 -4
- package/dist/usersSlice/selectors.cjs +35 -13
- package/dist/usersSlice/selectors.cjs.map +1 -1
- package/dist/usersSlice/selectors.d.cts +44 -1
- package/dist/usersSlice/selectors.d.ts +44 -1
- package/dist/usersSlice/selectors.js +13 -7
- package/dist/usersSlice/thunks.cjs +151 -120
- package/dist/usersSlice/thunks.cjs.map +1 -1
- package/dist/usersSlice/thunks.d.cts +10 -9
- package/dist/usersSlice/thunks.d.ts +10 -9
- package/dist/usersSlice/thunks.js +28 -27
- package/dist/utils.cjs +23 -24
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.js +4 -4
- package/package.json +7 -6
- package/dist/chunk-25AKG5HH.js.map +0 -1
- package/dist/chunk-2RJIDREZ.js.map +0 -1
- package/dist/chunk-74OJIKXF.js.map +0 -1
- package/dist/chunk-A6CT6GTI.js.map +0 -1
- package/dist/chunk-ANB5BM5J.js.map +0 -1
- package/dist/chunk-FGKMJS3B.js.map +0 -1
- package/dist/chunk-KAQJH2YL.js.map +0 -1
- package/dist/chunk-MDC7Y3EX.js.map +0 -1
- package/dist/chunk-Q6M5TTDQ.js.map +0 -1
- package/dist/chunk-XTRPX7JZ.js.map +0 -1
- package/dist/chunk-YETZPQFR.js.map +0 -1
- /package/dist/{chunk-YGBFDXXA.js.map → chunk-7YZCUAXZ.js.map} +0 -0
- /package/dist/{chunk-YT73QWCN.js.map → chunk-AUBJUUP3.js.map} +0 -0
- /package/dist/{chunk-UEP36GCI.js.map → chunk-AVX7VVOK.js.map} +0 -0
- /package/dist/{chunk-VOCOFE4I.js.map → chunk-DCEKU6UV.js.map} +0 -0
- /package/dist/{chunk-E5LEU5PF.js.map → chunk-DGQKXSRI.js.map} +0 -0
- /package/dist/{chunk-AMGWP7A4.js.map → chunk-GAI4VYRZ.js.map} +0 -0
- /package/dist/{chunk-JAROCU6M.js.map → chunk-NCSKCF2S.js.map} +0 -0
- /package/dist/{chunk-CYV6632F.js.map → chunk-NOQR3TE7.js.map} +0 -0
- /package/dist/{chunk-YTQUNAZP.js.map → chunk-X3GZILYD.js.map} +0 -0
- /package/dist/{chunk-RX55KAKX.js.map → chunk-ZWOAFHAR.js.map} +0 -0
- /package/dist/{chunk-NNADGHSL.js.map → chunk-ZZMFXRQK.js.map} +0 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEVICE_MESSAGE_PROTOCOLS,
|
|
3
|
+
DEVICE_MESSAGE_TYPES
|
|
4
|
+
} from "./chunk-OEP2D6QL.js";
|
|
5
|
+
import "./chunk-CK6YE6AN.js";
|
|
6
|
+
import "./chunk-MRCFLG45.js";
|
|
7
|
+
import {
|
|
8
|
+
apiUrl
|
|
9
|
+
} from "./chunk-Y575RZHR.js";
|
|
10
|
+
import {
|
|
11
|
+
TIMEOUTS
|
|
12
|
+
} from "./chunk-BSN2TOQC.js";
|
|
13
|
+
|
|
14
|
+
// src/sockethook.ts
|
|
15
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
16
|
+
import { blobToString, byteArrayToString } from "@northern.tech/utils/helpers";
|
|
17
|
+
import msgpack5 from "msgpack5";
|
|
18
|
+
import Cookies from "universal-cookie";
|
|
19
|
+
var cookies = new Cookies();
|
|
20
|
+
var MessagePack = msgpack5();
|
|
21
|
+
var useSession = ({ onClose, onHealthCheckFailed, onMessageReceived, onNotify, onOpen, token }) => {
|
|
22
|
+
const [sessionId, setSessionId] = useState();
|
|
23
|
+
const healthcheckTimeout = useRef();
|
|
24
|
+
const socketRef = useRef();
|
|
25
|
+
const sendMessage = useCallback(({ typ, body, props }) => {
|
|
26
|
+
if (!socketRef.current) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const proto_header = { proto: DEVICE_MESSAGE_PROTOCOLS.Shell, typ, sid: socketRef.current.sessionId, props };
|
|
30
|
+
const encodedData = MessagePack.encode({ hdr: proto_header, body });
|
|
31
|
+
socketRef.current.send(encodedData);
|
|
32
|
+
}, []);
|
|
33
|
+
const close = useCallback(() => {
|
|
34
|
+
if (!socketRef.current || socketRef.current?.readyState !== WebSocket.OPEN) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
sendMessage({ typ: DEVICE_MESSAGE_TYPES.Stop, body: {}, props: {} });
|
|
38
|
+
socketRef.current.close();
|
|
39
|
+
setSessionId();
|
|
40
|
+
}, [sendMessage]);
|
|
41
|
+
const healthcheckFailed = useCallback(() => {
|
|
42
|
+
onHealthCheckFailed();
|
|
43
|
+
close();
|
|
44
|
+
}, [close, onHealthCheckFailed]);
|
|
45
|
+
const onSocketMessage = useCallback(
|
|
46
|
+
(event) => blobToString(event.data).then((data) => {
|
|
47
|
+
const {
|
|
48
|
+
hdr: { props = {}, proto, sid, typ },
|
|
49
|
+
body
|
|
50
|
+
} = MessagePack.decode(data);
|
|
51
|
+
if (proto !== DEVICE_MESSAGE_PROTOCOLS.Shell) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
switch (typ) {
|
|
55
|
+
case DEVICE_MESSAGE_TYPES.New: {
|
|
56
|
+
if (props.status == WebSocket.CLOSING) {
|
|
57
|
+
onNotify(`Error: ${byteArrayToString(body)}`);
|
|
58
|
+
setSessionId();
|
|
59
|
+
return close();
|
|
60
|
+
} else {
|
|
61
|
+
clearTimeout(healthcheckTimeout.current);
|
|
62
|
+
healthcheckTimeout.current = setTimeout(healthcheckFailed, 65 * TIMEOUTS.oneSecond);
|
|
63
|
+
socketRef.current.sessionId = sid;
|
|
64
|
+
return setSessionId(sid);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
case DEVICE_MESSAGE_TYPES.Shell:
|
|
68
|
+
return onMessageReceived(body);
|
|
69
|
+
case DEVICE_MESSAGE_TYPES.Stop:
|
|
70
|
+
return close();
|
|
71
|
+
case DEVICE_MESSAGE_TYPES.Ping: {
|
|
72
|
+
if (healthcheckTimeout.current) {
|
|
73
|
+
clearTimeout(healthcheckTimeout.current);
|
|
74
|
+
}
|
|
75
|
+
sendMessage({ typ: DEVICE_MESSAGE_TYPES.Pong });
|
|
76
|
+
const timeout = parseInt(props.timeout);
|
|
77
|
+
if (timeout > 0) {
|
|
78
|
+
healthcheckTimeout.current = setTimeout(healthcheckFailed, timeout * TIMEOUTS.oneSecond);
|
|
79
|
+
}
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
default:
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}),
|
|
86
|
+
[close, healthcheckFailed, onMessageReceived, onNotify, sendMessage]
|
|
87
|
+
);
|
|
88
|
+
const onSocketError = useCallback(
|
|
89
|
+
(error) => {
|
|
90
|
+
onNotify(`WebSocket error: ${error.message}`);
|
|
91
|
+
close();
|
|
92
|
+
clearTimeout(healthcheckTimeout.current);
|
|
93
|
+
},
|
|
94
|
+
[close, onNotify]
|
|
95
|
+
);
|
|
96
|
+
const onSocketOpen = useCallback(() => {
|
|
97
|
+
sendMessage({ typ: DEVICE_MESSAGE_TYPES.New, props: {} });
|
|
98
|
+
onOpen(true);
|
|
99
|
+
}, [onOpen, sendMessage]);
|
|
100
|
+
const onSocketClose = useCallback(
|
|
101
|
+
(e) => {
|
|
102
|
+
console.log("closing");
|
|
103
|
+
onClose(e);
|
|
104
|
+
close();
|
|
105
|
+
},
|
|
106
|
+
[close, onClose]
|
|
107
|
+
);
|
|
108
|
+
const connect = useCallback(
|
|
109
|
+
(deviceId) => {
|
|
110
|
+
const uri = `wss://${window.location.host}${apiUrl.v1}/deviceconnect/devices/${deviceId}/connect`;
|
|
111
|
+
setSessionId();
|
|
112
|
+
cookies.set("JWT", token, { path: "/", secure: true, sameSite: "strict", maxAge: 5 });
|
|
113
|
+
try {
|
|
114
|
+
socketRef.current = new WebSocket(uri);
|
|
115
|
+
} catch (error) {
|
|
116
|
+
console.log(error);
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
[token]
|
|
120
|
+
);
|
|
121
|
+
useEffect(() => {
|
|
122
|
+
if (!socketRef.current) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
socketRef.current.addEventListener("close", onSocketClose);
|
|
126
|
+
socketRef.current.addEventListener("error", onSocketError);
|
|
127
|
+
socketRef.current.addEventListener("message", onSocketMessage);
|
|
128
|
+
socketRef.current.addEventListener("open", onSocketOpen);
|
|
129
|
+
return () => {
|
|
130
|
+
socketRef.current.removeEventListener("close", onSocketClose);
|
|
131
|
+
socketRef.current.removeEventListener("error", onSocketError);
|
|
132
|
+
socketRef.current.removeEventListener("message", onSocketMessage);
|
|
133
|
+
socketRef.current.removeEventListener("open", onSocketOpen);
|
|
134
|
+
};
|
|
135
|
+
}, [onSocketClose, onSocketError, onSocketMessage, onSocketOpen, socketRef.current?.readyState]);
|
|
136
|
+
return [connect, sendMessage, close, socketRef.current?.readyState ?? WebSocket.CLOSED, sessionId];
|
|
137
|
+
};
|
|
138
|
+
export {
|
|
139
|
+
useSession
|
|
140
|
+
};
|
|
141
|
+
//# sourceMappingURL=sockethook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/sockethook.ts"],"sourcesContent":["// Copyright 2022 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { blobToString, byteArrayToString } from '@northern.tech/utils/helpers';\nimport msgpack5 from 'msgpack5';\nimport Cookies from 'universal-cookie';\n\nimport { DEVICE_MESSAGE_PROTOCOLS as MessageProtocols, DEVICE_MESSAGE_TYPES as MessageTypes, TIMEOUTS, apiUrl } from './constants';\n\nconst cookies = new Cookies();\n\nconst MessagePack = msgpack5();\n\nexport const useSession = ({ onClose, onHealthCheckFailed, onMessageReceived, onNotify, onOpen, token }) => {\n const [sessionId, setSessionId] = useState();\n const healthcheckTimeout = useRef();\n const socketRef = useRef();\n const sendMessage = useCallback(({ typ, body, props }) => {\n if (!socketRef.current) {\n return;\n }\n const proto_header = { proto: MessageProtocols.Shell, typ, sid: socketRef.current.sessionId, props };\n const encodedData = MessagePack.encode({ hdr: proto_header, body });\n socketRef.current.send(encodedData);\n }, []);\n\n const close = useCallback(() => {\n if (!socketRef.current || socketRef.current?.readyState !== WebSocket.OPEN) {\n return;\n }\n sendMessage({ typ: MessageTypes.Stop, body: {}, props: {} });\n socketRef.current.close();\n setSessionId();\n }, [sendMessage]);\n\n const healthcheckFailed = useCallback(() => {\n onHealthCheckFailed();\n close();\n }, [close, onHealthCheckFailed]);\n\n const onSocketMessage = useCallback(\n event =>\n blobToString(event.data).then(data => {\n const {\n hdr: { props = {}, proto, sid, typ },\n body\n } = MessagePack.decode(data);\n if (proto !== MessageProtocols.Shell) {\n return;\n }\n switch (typ) {\n case MessageTypes.New: {\n if (props.status == WebSocket.CLOSING) {\n onNotify(`Error: ${byteArrayToString(body)}`);\n setSessionId();\n return close();\n } else {\n clearTimeout(healthcheckTimeout.current);\n healthcheckTimeout.current = setTimeout(healthcheckFailed, 65 * TIMEOUTS.oneSecond);\n socketRef.current.sessionId = sid;\n return setSessionId(sid);\n }\n }\n case MessageTypes.Shell:\n return onMessageReceived(body);\n case MessageTypes.Stop:\n return close();\n case MessageTypes.Ping: {\n if (healthcheckTimeout.current) {\n clearTimeout(healthcheckTimeout.current);\n }\n sendMessage({ typ: MessageTypes.Pong });\n //\n const timeout = parseInt(props.timeout);\n if (timeout > 0) {\n healthcheckTimeout.current = setTimeout(healthcheckFailed, timeout * TIMEOUTS.oneSecond);\n }\n return;\n }\n default:\n break;\n }\n }),\n [close, healthcheckFailed, onMessageReceived, onNotify, sendMessage]\n );\n\n const onSocketError = useCallback(\n error => {\n onNotify(`WebSocket error: ${error.message}`);\n close();\n clearTimeout(healthcheckTimeout.current);\n },\n [close, onNotify]\n );\n\n const onSocketOpen = useCallback(() => {\n sendMessage({ typ: MessageTypes.New, props: {} });\n onOpen(true);\n }, [onOpen, sendMessage]);\n\n const onSocketClose = useCallback(\n e => {\n console.log('closing');\n onClose(e);\n close();\n },\n [close, onClose]\n );\n\n const connect = useCallback(\n deviceId => {\n const uri = `wss://${window.location.host}${apiUrl.v1}/deviceconnect/devices/${deviceId}/connect`;\n setSessionId();\n cookies.set('JWT', token, { path: '/', secure: true, sameSite: 'strict', maxAge: 5 });\n try {\n socketRef.current = new WebSocket(uri);\n } catch (error) {\n console.log(error);\n }\n },\n [token]\n );\n\n useEffect(() => {\n if (!socketRef.current) {\n return;\n }\n\n socketRef.current.addEventListener('close', onSocketClose);\n socketRef.current.addEventListener('error', onSocketError);\n socketRef.current.addEventListener('message', onSocketMessage);\n socketRef.current.addEventListener('open', onSocketOpen);\n\n return () => {\n socketRef.current.removeEventListener('close', onSocketClose);\n socketRef.current.removeEventListener('error', onSocketError);\n socketRef.current.removeEventListener('message', onSocketMessage);\n socketRef.current.removeEventListener('open', onSocketOpen);\n };\n }, [onSocketClose, onSocketError, onSocketMessage, onSocketOpen, socketRef.current?.readyState]);\n\n return [connect, sendMessage, close, socketRef.current?.readyState ?? WebSocket.CLOSED, sessionId];\n};\n"],"mappings":"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","names":[]}
|
package/dist/store.cjs
CHANGED
|
@@ -34,9 +34,11 @@ __export(store_exports, {
|
|
|
34
34
|
commonErrorHandler: () => commonErrorHandler,
|
|
35
35
|
getConfiguredStore: () => getConfiguredStore,
|
|
36
36
|
sessionReducer: () => sessionReducer,
|
|
37
|
-
store: () => store
|
|
37
|
+
store: () => store,
|
|
38
|
+
useAppDispatch: () => useAppDispatch
|
|
38
39
|
});
|
|
39
40
|
module.exports = __toCommonJS(store_exports);
|
|
41
|
+
var import_react_redux = require("react-redux");
|
|
40
42
|
var import_helpers2 = require("@northern.tech/utils/helpers");
|
|
41
43
|
var import_toolkit9 = require("@reduxjs/toolkit");
|
|
42
44
|
|
|
@@ -63,28 +65,28 @@ var PLANS = {
|
|
|
63
65
|
id: "os",
|
|
64
66
|
name: "Basic",
|
|
65
67
|
offer: true,
|
|
66
|
-
price: "$32/month",
|
|
68
|
+
price: "$32 / month",
|
|
67
69
|
deviceCount: startingDeviceCount.os,
|
|
68
|
-
offerprice: "$23/month for first 50 devices",
|
|
70
|
+
offerprice: "$23 / month for first 50 devices",
|
|
69
71
|
price2: "for first 6 months;\n$29/month thereafter",
|
|
70
|
-
features: ["
|
|
72
|
+
features: ["Access to core features of Mender", "Basic support"]
|
|
71
73
|
},
|
|
72
74
|
professional: {
|
|
73
75
|
id: "professional",
|
|
74
76
|
name: "Professional",
|
|
75
77
|
offer: true,
|
|
76
|
-
price: "$269/month",
|
|
78
|
+
price: "$269 / month",
|
|
77
79
|
deviceCount: startingDeviceCount.professional,
|
|
78
|
-
offerprice: "$200/month for first 50 devices",
|
|
80
|
+
offerprice: "$200 / month for first 50 devices",
|
|
79
81
|
price2: "for first 6 months;\n$249/month thereafter",
|
|
80
|
-
features: ["
|
|
82
|
+
features: ["Advanced OTA features", "Higher priority support"]
|
|
81
83
|
},
|
|
82
84
|
enterprise: {
|
|
83
85
|
id: "enterprise",
|
|
84
86
|
name: "Enterprise",
|
|
85
87
|
price: "Custom pricing",
|
|
86
|
-
deviceCount: "
|
|
87
|
-
features: ["
|
|
88
|
+
deviceCount: "Unlimited devices",
|
|
89
|
+
features: ["All Mender features", "Advanced security features", "SLA-backed support"]
|
|
88
90
|
}
|
|
89
91
|
};
|
|
90
92
|
var ADDONS = {
|
|
@@ -554,13 +556,16 @@ var auditLogsApiUrl = `${apiUrl.v1}/auditlogs`;
|
|
|
554
556
|
var tenantadmApiUrlv1 = `${apiUrl.v1}/tenantadm`;
|
|
555
557
|
var tenantadmApiUrlv2 = `${apiUrl.v2}/tenantadm`;
|
|
556
558
|
var ssoIdpApiUrlv1 = `${apiUrl.v1}/useradm/sso/idp/metadata`;
|
|
557
|
-
var
|
|
558
|
-
{ title: "Artifact", queryParameter: "object_type", value: "artifact" },
|
|
559
|
-
{ title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
|
|
560
|
-
{ title: "Device", queryParameter: "object_id", value: "device" },
|
|
561
|
-
{ title: "
|
|
562
|
-
|
|
563
|
-
|
|
559
|
+
var auditlogTypes = {
|
|
560
|
+
artifact: { title: "Artifact", queryParameter: "object_type", value: "artifact" },
|
|
561
|
+
deployment: { title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
|
|
562
|
+
device: { title: "Device", queryParameter: "object_id", value: "device" },
|
|
563
|
+
user_access_token: { title: "Personal Access Token", queryParameter: "user_access_token", value: "user_access_token" },
|
|
564
|
+
user: { title: "User", queryParameter: "object_id", value: "user" },
|
|
565
|
+
tenant: { title: "Tenant", queryParameter: "object_id", value: "tenant" }
|
|
566
|
+
};
|
|
567
|
+
var AUDIT_LOGS_TYPES = [auditlogTypes.artifact, auditlogTypes.deployment, auditlogTypes.device, auditlogTypes.user_access_token, auditlogTypes.user];
|
|
568
|
+
var SP_AUDIT_LOGS_TYPES = [auditlogTypes.user, auditlogTypes.tenant];
|
|
564
569
|
var emptyWebhook = {
|
|
565
570
|
description: "",
|
|
566
571
|
enabled: true,
|
|
@@ -689,7 +694,7 @@ var uiPermissionsByArea = {
|
|
|
689
694
|
explanation: "Granting access to the audit log will allow tracing changes to devices, releases and user accounts, as well as providing information about deployments.",
|
|
690
695
|
key: "auditlog",
|
|
691
696
|
uiPermissions: [uiPermissionsById.read],
|
|
692
|
-
title: "System
|
|
697
|
+
title: "System Audit Log"
|
|
693
698
|
},
|
|
694
699
|
deployments: {
|
|
695
700
|
endpoints: [
|
|
@@ -839,7 +844,7 @@ var serviceProviderRolesById = {
|
|
|
839
844
|
},
|
|
840
845
|
readOnly: {
|
|
841
846
|
name: "Read access",
|
|
842
|
-
value: staticRolesByName.
|
|
847
|
+
value: staticRolesByName.readOnly,
|
|
843
848
|
description: "This role can see all linked organizations but cannot make any changes",
|
|
844
849
|
permissions: [],
|
|
845
850
|
uiPermissions: {
|
|
@@ -1091,9 +1096,7 @@ var appSlice = (0, import_toolkit.createSlice)({
|
|
|
1091
1096
|
...action.payload
|
|
1092
1097
|
};
|
|
1093
1098
|
},
|
|
1094
|
-
setEnvironmentData: (state, action) => {
|
|
1095
|
-
return { ...state, ...action.payload };
|
|
1096
|
-
}
|
|
1099
|
+
setEnvironmentData: (state, action) => ({ ...state, ...action.payload })
|
|
1097
1100
|
}
|
|
1098
1101
|
});
|
|
1099
1102
|
var actions = appSlice.actions;
|
|
@@ -1468,9 +1471,7 @@ var onboardingSlice = (0, import_toolkit5.createSlice)({
|
|
|
1468
1471
|
name: sliceName5,
|
|
1469
1472
|
initialState: initialState5,
|
|
1470
1473
|
reducers: {
|
|
1471
|
-
setOnboardingState: (state, action) => {
|
|
1472
|
-
return { ...state, ...action.payload };
|
|
1473
|
-
},
|
|
1474
|
+
setOnboardingState: (state, action) => ({ ...state, ...action.payload }),
|
|
1474
1475
|
setDemoArtifactPort: (state, action) => {
|
|
1475
1476
|
state.demoArtifactPort = action.payload;
|
|
1476
1477
|
},
|
|
@@ -1872,9 +1873,7 @@ var cleanUp = () => {
|
|
|
1872
1873
|
// src/store.ts
|
|
1873
1874
|
var { setSnackbar, uploadProgress } = actions_default;
|
|
1874
1875
|
var keys = ["sessionDeploymentChecker", settingsKeys.initialized];
|
|
1875
|
-
var resetEnvironment = () =>
|
|
1876
|
-
keys.map((key) => window.sessionStorage.removeItem(key));
|
|
1877
|
-
};
|
|
1876
|
+
var resetEnvironment = () => keys.forEach((key) => window.sessionStorage.removeItem(key));
|
|
1878
1877
|
resetEnvironment();
|
|
1879
1878
|
var commonErrorFallback = "Please check your connection.";
|
|
1880
1879
|
var commonErrorHandler = (err, errorContext, dispatch, fallback, mightBeAuthRelated = false) => {
|
|
@@ -1900,6 +1899,14 @@ var sessionReducer = (state, action) => {
|
|
|
1900
1899
|
}
|
|
1901
1900
|
return rootReducer(state, action);
|
|
1902
1901
|
};
|
|
1902
|
+
var rejectionLoggerMiddleware = () => (next) => (action) => {
|
|
1903
|
+
if (action.type.endsWith("/rejected")) {
|
|
1904
|
+
const { error } = action;
|
|
1905
|
+
console.error("Rejection in action:", action);
|
|
1906
|
+
console.error(error.stack);
|
|
1907
|
+
}
|
|
1908
|
+
return next(action);
|
|
1909
|
+
};
|
|
1903
1910
|
var getConfiguredStore = (options = {}) => {
|
|
1904
1911
|
const { preloadedState = {}, ...config } = options;
|
|
1905
1912
|
return (0, import_toolkit9.configureStore)({
|
|
@@ -1915,18 +1922,20 @@ var getConfiguredStore = (options = {}) => {
|
|
|
1915
1922
|
ignoredActionPaths: ["uploads", "snackbar", /payload\..*$/],
|
|
1916
1923
|
ignoredPaths: ["app.uploadsById", "app.snackbar", "organization.externalDeviceIntegrations"]
|
|
1917
1924
|
}
|
|
1918
|
-
})
|
|
1925
|
+
}).concat(rejectionLoggerMiddleware)
|
|
1919
1926
|
});
|
|
1920
1927
|
};
|
|
1921
1928
|
var store = getConfiguredStore({
|
|
1922
1929
|
preloadedState: {}
|
|
1923
1930
|
});
|
|
1931
|
+
var useAppDispatch = import_react_redux.useDispatch;
|
|
1924
1932
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1925
1933
|
0 && (module.exports = {
|
|
1926
1934
|
commonErrorFallback,
|
|
1927
1935
|
commonErrorHandler,
|
|
1928
1936
|
getConfiguredStore,
|
|
1929
1937
|
sessionReducer,
|
|
1930
|
-
store
|
|
1938
|
+
store,
|
|
1939
|
+
useAppDispatch
|
|
1931
1940
|
});
|
|
1932
1941
|
//# sourceMappingURL=store.cjs.map
|