@genesislcap/foundation-comms 14.238.1 → 14.238.2
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.
@@ -142,6 +142,14 @@ export declare class DefaultSocket implements Socket {
|
|
142
142
|
private get heartbeatLoggingIsEnabled();
|
143
143
|
private get messageLoggingIsEnabled();
|
144
144
|
connect(host?: string, connectOptions?: SocketConnectOptions, reconnectOptions?: SocketReconnectOptions): Promise<boolean>;
|
145
|
+
/**
|
146
|
+
*
|
147
|
+
* @remarks
|
148
|
+
* This is triggered after `sessionTimeoutMins` elapses and all dataservers would simultaneously send LOGOFF_ACK message
|
149
|
+
* more info here https://docs.genesis.global/docs/develop/server-capabilities/access-control/authentication/#sessiontimeoutmins
|
150
|
+
*/
|
151
|
+
private handleExpiredSession;
|
152
|
+
private updateSessionAndSubscriptions;
|
145
153
|
private prepareHeartbeat;
|
146
154
|
private reconnect;
|
147
155
|
reset(): void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/connect/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/connect/socket.ts"],"names":[],"mappings":"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"}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { __awaiter, __decorate, __param } from "tslib";
|
2
2
|
import { User } from '@genesislcap/foundation-user';
|
3
|
+
import { LOGIN_URL } from '@genesislcap/foundation-utils';
|
3
4
|
import { GENESIS_SOCKET_URL, JSONSerializer, UUID } from '@genesislcap/foundation-utils';
|
4
5
|
import { DOM, observable } from '@microsoft/fast-element';
|
5
6
|
import { DI } from '@microsoft/fast-foundation';
|
@@ -219,23 +220,6 @@ let DefaultSocket = class DefaultSocket {
|
|
219
220
|
case MessageType.LOGON_ACK:
|
220
221
|
return;
|
221
222
|
case MessageType.LOGOFF_ACK: {
|
222
|
-
/**
|
223
|
-
* Needs review as I don't quite get the original logic, ie. LOGGED_OUT + hasValidSession.
|
224
|
-
* Perhaps these things should not be the concern of this actor. Temp putting the user in place instead.
|
225
|
-
*/
|
226
|
-
if (receivedMessage.LOGGED_OUT && this.user.isAuthenticated) {
|
227
|
-
const refreshTokenMessage = this.messageBuilder.createRefreshTokenMessage();
|
228
|
-
const refreshTokenResult = yield this.send(refreshTokenMessage);
|
229
|
-
if ((refreshTokenResult === null || refreshTokenResult === void 0 ? void 0 : refreshTokenResult.MESSAGE_TYPE) === EventMessageType.EVENT_LOGIN_AUTH_ACK) {
|
230
|
-
this.session.setAuthResult(refreshTokenResult);
|
231
|
-
this.wsMessageHandlers.forEach((mh) => {
|
232
|
-
if (mh.isSubscription) {
|
233
|
-
mh.sentMessage.SESSION_AUTH_TOKEN = refreshTokenResult.SESSION_AUTH_TOKEN;
|
234
|
-
this.websocket.next(mh.sentMessage);
|
235
|
-
}
|
236
|
-
});
|
237
|
-
}
|
238
|
-
}
|
239
223
|
break;
|
240
224
|
}
|
241
225
|
case MessageType.QUERY_UPDATE: {
|
@@ -284,6 +268,51 @@ let DefaultSocket = class DefaultSocket {
|
|
284
268
|
this.status.isConfigured = true;
|
285
269
|
});
|
286
270
|
}
|
271
|
+
/**
|
272
|
+
*
|
273
|
+
* @remarks
|
274
|
+
* This is triggered after `sessionTimeoutMins` elapses and all dataservers would simultaneously send LOGOFF_ACK message
|
275
|
+
* more info here https://docs.genesis.global/docs/develop/server-capabilities/access-control/authentication/#sessiontimeoutmins
|
276
|
+
*/
|
277
|
+
handleExpiredSession() {
|
278
|
+
return __awaiter(this, void 0, void 0, function* () {
|
279
|
+
let refreshTokenResult;
|
280
|
+
// to detect which auth method is used we check if refreshToken is present in session storage
|
281
|
+
// it would not be available in cookies method as it's securely stored within cookie
|
282
|
+
// and not accessible from the client
|
283
|
+
if (this.session.getSessionStorageItem('refreshToken')) {
|
284
|
+
const refreshTokenMessage = this.messageBuilder.createRefreshTokenMessage();
|
285
|
+
refreshTokenResult = yield this.send(refreshTokenMessage);
|
286
|
+
this.session.setAuthResult(refreshTokenResult);
|
287
|
+
}
|
288
|
+
else {
|
289
|
+
const refreshTokenFetch = yield fetch(LOGIN_URL, {
|
290
|
+
credentials: 'include',
|
291
|
+
headers: { 'Content-type': 'application/json; charset=UTF-8' },
|
292
|
+
method: 'POST',
|
293
|
+
body: JSON.stringify({
|
294
|
+
DETAILS: {},
|
295
|
+
MESSAGE_TYPE: 'EVENT_LOGIN_AUTH',
|
296
|
+
}),
|
297
|
+
});
|
298
|
+
refreshTokenResult = yield refreshTokenFetch.json();
|
299
|
+
refreshTokenResult.SESSION_AUTH_TOKEN = null;
|
300
|
+
// connect again to all new stream to use new session token from obtained cookie
|
301
|
+
yield this.connect();
|
302
|
+
}
|
303
|
+
this.updateSessionAndSubscriptions(refreshTokenResult);
|
304
|
+
});
|
305
|
+
}
|
306
|
+
updateSessionAndSubscriptions(refreshTokenResult) {
|
307
|
+
if ((refreshTokenResult === null || refreshTokenResult === void 0 ? void 0 : refreshTokenResult.MESSAGE_TYPE) === EventMessageType.EVENT_LOGIN_AUTH_ACK) {
|
308
|
+
this.wsMessageHandlers.forEach((mh) => {
|
309
|
+
if (mh.isSubscription) {
|
310
|
+
mh.sentMessage.SESSION_AUTH_TOKEN = refreshTokenResult.SESSION_AUTH_TOKEN;
|
311
|
+
this.websocket.next(mh.sentMessage);
|
312
|
+
}
|
313
|
+
});
|
314
|
+
}
|
315
|
+
}
|
287
316
|
prepareHeartbeat() {
|
288
317
|
var _a, _b, _c, _d;
|
289
318
|
if (this.heartbeatTicker) {
|
@@ -298,6 +327,9 @@ let DefaultSocket = class DefaultSocket {
|
|
298
327
|
this.connectOptions.heartbeatPingCallback(ping);
|
299
328
|
}
|
300
329
|
const pong = yield this.send(ping);
|
330
|
+
if (!pong.IS_AUTHENTICATED) {
|
331
|
+
this.handleExpiredSession();
|
332
|
+
}
|
301
333
|
if ((_g = this.connectOptions) === null || _g === void 0 ? void 0 : _g.heartbeatPongCallback) {
|
302
334
|
this.connectOptions.heartbeatPongCallback(pong);
|
303
335
|
}
|
@@ -2335,6 +2335,14 @@ export declare class DefaultSocket implements Socket {
|
|
2335
2335
|
private get heartbeatLoggingIsEnabled();
|
2336
2336
|
private get messageLoggingIsEnabled();
|
2337
2337
|
connect(host?: string, connectOptions?: SocketConnectOptions, reconnectOptions?: SocketReconnectOptions): Promise<boolean>;
|
2338
|
+
/**
|
2339
|
+
*
|
2340
|
+
* @remarks
|
2341
|
+
* This is triggered after `sessionTimeoutMins` elapses and all dataservers would simultaneously send LOGOFF_ACK message
|
2342
|
+
* more info here https://docs.genesis.global/docs/develop/server-capabilities/access-control/authentication/#sessiontimeoutmins
|
2343
|
+
*/
|
2344
|
+
private handleExpiredSession;
|
2345
|
+
private updateSessionAndSubscriptions;
|
2338
2346
|
private prepareHeartbeat;
|
2339
2347
|
private reconnect;
|
2340
2348
|
reset(): void;
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@genesislcap/foundation-comms",
|
3
3
|
"description": "Genesis Foundation UI Comms",
|
4
|
-
"version": "14.238.
|
4
|
+
"version": "14.238.2",
|
5
5
|
"sideEffects": false,
|
6
6
|
"license": "SEE LICENSE IN license.txt",
|
7
7
|
"main": "dist/esm/index.js",
|
@@ -75,23 +75,23 @@
|
|
75
75
|
}
|
76
76
|
},
|
77
77
|
"devDependencies": {
|
78
|
-
"@genesislcap/foundation-testing": "14.238.
|
79
|
-
"@genesislcap/genx": "14.238.
|
80
|
-
"@genesislcap/rollup-builder": "14.238.
|
81
|
-
"@genesislcap/ts-builder": "14.238.
|
82
|
-
"@genesislcap/uvu-playwright-builder": "14.238.
|
83
|
-
"@genesislcap/vite-builder": "14.238.
|
84
|
-
"@genesislcap/webpack-builder": "14.238.
|
78
|
+
"@genesislcap/foundation-testing": "14.238.2",
|
79
|
+
"@genesislcap/genx": "14.238.2",
|
80
|
+
"@genesislcap/rollup-builder": "14.238.2",
|
81
|
+
"@genesislcap/ts-builder": "14.238.2",
|
82
|
+
"@genesislcap/uvu-playwright-builder": "14.238.2",
|
83
|
+
"@genesislcap/vite-builder": "14.238.2",
|
84
|
+
"@genesislcap/webpack-builder": "14.238.2",
|
85
85
|
"@types/js-cookie": "^3.0.2",
|
86
86
|
"@types/json-schema": "^7.0.11",
|
87
87
|
"@types/webappsec-credential-management": "^0.6.2",
|
88
88
|
"rimraf": "^5.0.0"
|
89
89
|
},
|
90
90
|
"dependencies": {
|
91
|
-
"@genesislcap/foundation-broadcast-channel": "14.238.
|
92
|
-
"@genesislcap/foundation-logger": "14.238.
|
93
|
-
"@genesislcap/foundation-user": "14.238.
|
94
|
-
"@genesislcap/foundation-utils": "14.238.
|
91
|
+
"@genesislcap/foundation-broadcast-channel": "14.238.2",
|
92
|
+
"@genesislcap/foundation-logger": "14.238.2",
|
93
|
+
"@genesislcap/foundation-user": "14.238.2",
|
94
|
+
"@genesislcap/foundation-utils": "14.238.2",
|
95
95
|
"@microsoft/fast-element": "1.14.0",
|
96
96
|
"@microsoft/fast-foundation": "2.49.6",
|
97
97
|
"analytics": "^0.8.0",
|
@@ -111,5 +111,5 @@
|
|
111
111
|
"publishConfig": {
|
112
112
|
"access": "public"
|
113
113
|
},
|
114
|
-
"gitHead": "
|
114
|
+
"gitHead": "44e2630e58af14a1db9f26950b01ca389031f7cf"
|
115
115
|
}
|