@sudoplatform/sudo-secure-communications 5.1.3 → 5.1.5
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/cjs/private/data/messaging/matrixMessagingService.js +6 -1
- package/cjs/private/data/messaging/matrixMessagingService.js.map +1 -1
- package/cjs/private/data/session/sessionManager.js +167 -66
- package/cjs/private/data/session/sessionManager.js.map +1 -1
- package/cjs/public/secureCommsClient.js +1 -1
- package/cjs/public/secureCommsClient.js.map +1 -1
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/DefaultSecureCommsClient.html +15 -15
- package/docs/hierarchy.html +1 -1
- package/docs/interfaces/Audio.html +1 -1
- package/docs/interfaces/AudioMedia.html +1 -1
- package/docs/interfaces/BaseMessageContent.html +1 -1
- package/docs/interfaces/ChannelInvite.html +1 -1
- package/docs/interfaces/ChannelMember.html +1 -1
- package/docs/interfaces/DirectChatInvite.html +1 -1
- package/docs/interfaces/Emote.html +1 -1
- package/docs/interfaces/EncryptedMessage.html +1 -1
- package/docs/interfaces/File.html +1 -1
- package/docs/interfaces/FileMedia.html +1 -1
- package/docs/interfaces/GroupInvite.html +1 -1
- package/docs/interfaces/GroupMember.html +1 -1
- package/docs/interfaces/Handle.html +1 -1
- package/docs/interfaces/Image.html +1 -1
- package/docs/interfaces/ImageMedia.html +1 -1
- package/docs/interfaces/Invite.html +1 -1
- package/docs/interfaces/KeyVerificationRequest.html +1 -1
- package/docs/interfaces/Location.html +1 -1
- package/docs/interfaces/Member.html +1 -1
- package/docs/interfaces/MembershipChange.html +1 -1
- package/docs/interfaces/MessageNotification.html +1 -1
- package/docs/interfaces/Notice.html +1 -1
- package/docs/interfaces/NotificationInfo.html +1 -1
- package/docs/interfaces/OwnedHandle.html +1 -1
- package/docs/interfaces/Poll.html +1 -1
- package/docs/interfaces/PollResponse.html +1 -1
- package/docs/interfaces/RedactedMessage.html +1 -1
- package/docs/interfaces/SelfDestructedMessage.html +1 -1
- package/docs/interfaces/Text.html +1 -1
- package/docs/interfaces/Video.html +1 -1
- package/docs/interfaces/VideoMedia.html +1 -1
- package/docs/types/SecureCommsClientOptions.html +5 -3
- package/lib/private/data/messaging/matrixMessagingService.js +6 -1
- package/lib/private/data/messaging/matrixMessagingService.js.map +1 -1
- package/lib/private/data/session/sessionManager.js +167 -66
- package/lib/private/data/session/sessionManager.js.map +1 -1
- package/lib/public/secureCommsClient.js +1 -1
- package/lib/public/secureCommsClient.js.map +1 -1
- package/package.json +19 -10
- package/types/private/data/session/sessionManager.d.ts +14 -1
- package/types/public/secureCommsClient.d.ts +2 -0
|
@@ -10,15 +10,20 @@ import { HandleId } from '../../../public';
|
|
|
10
10
|
import { delay } from '../../util/delay';
|
|
11
11
|
import { MatrixClientManager } from '../common/matrixClientManager';
|
|
12
12
|
export class SessionManager {
|
|
13
|
-
constructor(sessionService, storageModule) {
|
|
13
|
+
constructor(sessionService, storageModule, autoRefreshTokenMinutesBeforeExpiration) {
|
|
14
14
|
this.sessionService = sessionService;
|
|
15
15
|
this.storageModule = storageModule;
|
|
16
|
+
this.autoRefreshTokenMinutesBeforeExpiration = autoRefreshTokenMinutesBeforeExpiration;
|
|
16
17
|
this.sessions = {};
|
|
17
18
|
this.log = new DefaultLogger(this.constructor.name);
|
|
18
19
|
}
|
|
19
20
|
async deleteSession(handleId, deleteStorage = false) {
|
|
20
21
|
const session = this.sessions[handleId.toString()];
|
|
21
22
|
if (session) {
|
|
23
|
+
// Clear any scheduled token refresh
|
|
24
|
+
if (session.refreshTimeout) {
|
|
25
|
+
clearTimeout(session.refreshTimeout);
|
|
26
|
+
}
|
|
22
27
|
// stop syncing matrix client
|
|
23
28
|
await session.matrixClient.stopSyncing();
|
|
24
29
|
// Flush any still existing background watchers
|
|
@@ -53,88 +58,184 @@ export class SessionManager {
|
|
|
53
58
|
}
|
|
54
59
|
// MARK: Access Tokens
|
|
55
60
|
async ensureValidSession(handleId, storePassphrase) {
|
|
56
|
-
// check if we have a cached session for this handleId
|
|
57
61
|
const cachedSession = this.sessions[handleId.toString()];
|
|
58
62
|
const newStorePassphrase = cachedSession?.storePassphrase ?? storePassphrase ?? undefined;
|
|
59
|
-
|
|
63
|
+
// Try to use cached session if valid
|
|
60
64
|
if (cachedSession) {
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const now = Math.floor(Date.now() / 1000);
|
|
65
|
-
const isExpiredOrExpiringSoon = expiry - now <= 300; // Check if the token has expired or will expire in 300 seconds
|
|
66
|
-
if (!isExpiredOrExpiringSoon &&
|
|
67
|
-
cachedSession.matrixClient.isUsingToken(cachedSession.accessToken)) {
|
|
68
|
-
return cachedSession.accessToken;
|
|
69
|
-
}
|
|
70
|
-
// token is expired or different than matrix token. Refresh
|
|
71
|
-
try {
|
|
72
|
-
const newSession = await this.sessionService.get({
|
|
73
|
-
handleId: handleId.toString(),
|
|
74
|
-
deviceId: deviceId ?? v4(),
|
|
75
|
-
});
|
|
76
|
-
const newToken = newSession.token;
|
|
77
|
-
// update matrix client and session with new token
|
|
78
|
-
cachedSession.matrixClient.updateAccessToken(newToken);
|
|
79
|
-
this.sessions[handleId.toString()] = {
|
|
80
|
-
accessToken: newToken,
|
|
81
|
-
storePassphrase: newStorePassphrase,
|
|
82
|
-
matrixClient: cachedSession.matrixClient,
|
|
83
|
-
};
|
|
84
|
-
// store session for future reloads
|
|
85
|
-
const handleStorage = await this.storageModule.useHandleStorage(handleId.toString(), newStorePassphrase);
|
|
86
|
-
await handleStorage?.secureCommsStore.sessionAPIs.saveAccessToken(newToken);
|
|
87
|
-
return newToken;
|
|
65
|
+
const validAccessToken = await this.tryUseCachedSession(handleId, cachedSession, newStorePassphrase);
|
|
66
|
+
if (validAccessToken) {
|
|
67
|
+
return validAccessToken;
|
|
88
68
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
69
|
+
}
|
|
70
|
+
// Create new session from storage or fresh token
|
|
71
|
+
return await this.createNewSession(handleId, newStorePassphrase);
|
|
72
|
+
}
|
|
73
|
+
decodeToken(token) {
|
|
74
|
+
const decoded = JWT.decode(token);
|
|
75
|
+
if (!decoded || !decoded.exp || !decoded.device_id) {
|
|
76
|
+
throw new Error('Invalid token');
|
|
77
|
+
}
|
|
78
|
+
const expiry = parseInt(decoded.exp, 10);
|
|
79
|
+
const deviceId = decoded.device_id;
|
|
80
|
+
return { decoded, expiry, deviceId };
|
|
81
|
+
}
|
|
82
|
+
isTokenExpired(expiry) {
|
|
83
|
+
const now = Math.floor(Date.now() / 1000);
|
|
84
|
+
return expiry - now <= 0;
|
|
85
|
+
}
|
|
86
|
+
isTokenExpiringSoon(expiry) {
|
|
87
|
+
const now = Math.floor(Date.now() / 1000);
|
|
88
|
+
const refreshThresholdSeconds = this.autoRefreshTokenMinutesBeforeExpiration * 60;
|
|
89
|
+
const timeUntilExpiry = expiry - now;
|
|
90
|
+
return timeUntilExpiry > 0 && timeUntilExpiry <= refreshThresholdSeconds;
|
|
91
|
+
}
|
|
92
|
+
isTokenExpiredOrExpiringSoon(expiry) {
|
|
93
|
+
return this.isTokenExpired(expiry) || this.isTokenExpiringSoon(expiry);
|
|
94
|
+
}
|
|
95
|
+
scheduleTokenRefresh(handleId, expiry, storePassphrase) {
|
|
96
|
+
const now = Math.floor(Date.now() / 1000);
|
|
97
|
+
const timeUntilExpiry = expiry - now;
|
|
98
|
+
const refreshThresholdSeconds = this.autoRefreshTokenMinutesBeforeExpiration * 60;
|
|
99
|
+
const timeBeforeExpiryToSchedule = timeUntilExpiry - refreshThresholdSeconds;
|
|
100
|
+
// Only schedule refresh if auto-refresh is enabled and there's enough time until expiry
|
|
101
|
+
// If auto-refresh is disabled (0) or less than the threshold, the token will not be auto refreshed.
|
|
102
|
+
if (this.autoRefreshTokenMinutesBeforeExpiration > 0 &&
|
|
103
|
+
timeBeforeExpiryToSchedule > 0) {
|
|
104
|
+
return setTimeout(async () => {
|
|
105
|
+
try {
|
|
106
|
+
await this.ensureValidSession(handleId, storePassphrase);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
this.log.error(`Failed to refresh token for handle ${handleId.toString()}`, { err: error });
|
|
110
|
+
}
|
|
111
|
+
}, timeBeforeExpiryToSchedule * 1000);
|
|
112
|
+
}
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
// Test if the cached session is still valid.
|
|
116
|
+
// Returns access token if it is still valid or can be refreshed.
|
|
117
|
+
// Returns undefined if the token is expired or cannot be refreshed.
|
|
118
|
+
async tryUseCachedSession(handleId, cachedSession, storePassphrase) {
|
|
119
|
+
const { expiry, deviceId } = this.decodeToken(cachedSession.accessToken);
|
|
120
|
+
if (!this.isTokenExpiredOrExpiringSoon(expiry) &&
|
|
121
|
+
cachedSession.matrixClient.isUsingToken(cachedSession.accessToken)) {
|
|
122
|
+
return cachedSession.accessToken;
|
|
123
|
+
}
|
|
124
|
+
if (this.isTokenExpired(expiry)) {
|
|
125
|
+
return await this.handleExpiredToken(handleId);
|
|
126
|
+
}
|
|
127
|
+
return await this.refreshCachedSessionToken(handleId, cachedSession, deviceId, storePassphrase);
|
|
128
|
+
}
|
|
129
|
+
async handleExpiredToken(handleId) {
|
|
130
|
+
this.log.debug(`Token expired for handle ${handleId.toString()}, cleaned up session`);
|
|
131
|
+
// Stop syncing the matrix client since token is expired
|
|
132
|
+
await this.deleteSession(handleId);
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
async refreshCachedSessionToken(handleId, cachedSession, deviceId, storePassphrase) {
|
|
136
|
+
try {
|
|
137
|
+
const newSession = await this.getAccessTokenFromService(handleId, deviceId);
|
|
138
|
+
const newToken = newSession.token;
|
|
139
|
+
const { expiry: newExpiry } = this.decodeToken(newToken);
|
|
140
|
+
// Schedule new refresh timeout
|
|
141
|
+
if (cachedSession.refreshTimeout) {
|
|
142
|
+
clearTimeout(cachedSession.refreshTimeout);
|
|
93
143
|
}
|
|
144
|
+
const refreshTimeout = this.scheduleTokenRefresh(handleId, newExpiry, storePassphrase);
|
|
145
|
+
// Update matrix client and session with new token
|
|
146
|
+
cachedSession.matrixClient.updateAccessToken(newToken);
|
|
147
|
+
this.sessions[handleId.toString()] = {
|
|
148
|
+
accessToken: newToken,
|
|
149
|
+
storePassphrase: storePassphrase,
|
|
150
|
+
matrixClient: cachedSession.matrixClient,
|
|
151
|
+
refreshTimeout,
|
|
152
|
+
};
|
|
153
|
+
// Store session for future reloads
|
|
154
|
+
const handleStorage = await this.storageModule.useHandleStorage(handleId.toString(), storePassphrase);
|
|
155
|
+
await handleStorage?.secureCommsStore.sessionAPIs.saveAccessToken(newToken);
|
|
156
|
+
return newToken;
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
// If refresh fails, clean up defunct matrix client and remove cached session
|
|
160
|
+
this.log.error(`Failed to refresh token for handle ${handleId.toString()}: ${error}`);
|
|
161
|
+
await this.deleteSession(handleId);
|
|
162
|
+
return undefined;
|
|
94
163
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
let accessToken;
|
|
98
|
-
// Retrieve access token from store if cached session does not exist
|
|
164
|
+
}
|
|
165
|
+
async getAccessTokenFromStorage(handleStorage) {
|
|
99
166
|
const storedAccessToken = await handleStorage?.secureCommsStore.sessionAPIs.getAccessToken();
|
|
100
|
-
if (storedAccessToken) {
|
|
101
|
-
|
|
102
|
-
deviceId = decoded.device_id;
|
|
103
|
-
const expiry = parseInt(decoded.exp, 10);
|
|
104
|
-
const now = Math.floor(Date.now() / 1000);
|
|
105
|
-
const isExpiredOrExpiringSoon = expiry - now <= 300; // Check if the token has expired or will expire in 300 seconds
|
|
106
|
-
if (!isExpiredOrExpiringSoon) {
|
|
107
|
-
accessToken = storedAccessToken;
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
// get new access token
|
|
111
|
-
accessToken = (await this.sessionService.get({
|
|
112
|
-
handleId: handleId.toString(),
|
|
113
|
-
deviceId: deviceId ?? v4(),
|
|
114
|
-
})).token;
|
|
115
|
-
}
|
|
167
|
+
if (!storedAccessToken) {
|
|
168
|
+
return undefined;
|
|
116
169
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
170
|
+
// Parse token once to check validity
|
|
171
|
+
const { expiry, deviceId } = this.decodeToken(storedAccessToken);
|
|
172
|
+
// If token is still valid (not expired and not expiring soon), use it
|
|
173
|
+
if (!this.isTokenExpired(expiry) && !this.isTokenExpiringSoon(expiry)) {
|
|
174
|
+
return {
|
|
175
|
+
token: storedAccessToken,
|
|
176
|
+
deviceId,
|
|
177
|
+
isValid: true,
|
|
178
|
+
};
|
|
123
179
|
}
|
|
180
|
+
// Token is expired or expiring soon, return it with isValid: false
|
|
181
|
+
return {
|
|
182
|
+
token: storedAccessToken,
|
|
183
|
+
deviceId,
|
|
184
|
+
isValid: false,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
async getAccessTokenFromService(handleId, deviceId) {
|
|
188
|
+
const newSession = await this.sessionService.get({
|
|
189
|
+
handleId: handleId.toString(),
|
|
190
|
+
deviceId: deviceId ?? v4(),
|
|
191
|
+
});
|
|
192
|
+
// Parse new token to get deviceId (in case deviceId wasn't provided)
|
|
193
|
+
const { deviceId: tokenDeviceId } = this.decodeToken(newSession.token);
|
|
194
|
+
return {
|
|
195
|
+
token: newSession.token,
|
|
196
|
+
deviceId: deviceId ?? tokenDeviceId,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
async getAccessTokenFromStorageOrService(handleId, handleStorage) {
|
|
200
|
+
// Try to get token from storage first
|
|
201
|
+
const storedToken = await this.getAccessTokenFromStorage(handleStorage);
|
|
202
|
+
if (storedToken?.isValid) {
|
|
203
|
+
return {
|
|
204
|
+
token: storedToken.token,
|
|
205
|
+
deviceId: storedToken.deviceId,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
// Token not in storage or invalid, get from service
|
|
209
|
+
// Use deviceId from invalid stored token if available
|
|
210
|
+
const deviceId = storedToken?.deviceId;
|
|
211
|
+
const serviceToken = await this.getAccessTokenFromService(handleId, deviceId);
|
|
212
|
+
return {
|
|
213
|
+
token: serviceToken.token,
|
|
214
|
+
deviceId: serviceToken.deviceId,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
async createNewSession(handleId, storePassphrase) {
|
|
218
|
+
// useHandleStorage will initialize the handle storage if it is not already initialized
|
|
219
|
+
const handleStorage = await this.storageModule.useHandleStorage(handleId.toString(), storePassphrase);
|
|
220
|
+
// Get access token from storage or service
|
|
221
|
+
const { token: accessToken } = await this.getAccessTokenFromStorageOrService(handleId, handleStorage);
|
|
222
|
+
// Parse token once for both matrix client creation and refresh scheduling
|
|
223
|
+
const { decoded, expiry } = this.decodeToken(accessToken);
|
|
124
224
|
// Create a new matrix client
|
|
125
|
-
const matrixClient = await this.createMatrixClient(handleId.toString(), accessToken,
|
|
126
|
-
|
|
225
|
+
const matrixClient = await this.createMatrixClient(handleId.toString(), accessToken, decoded, storePassphrase, handleStorage);
|
|
226
|
+
// Schedule token refresh before expiry
|
|
227
|
+
const refreshTimeout = this.scheduleTokenRefresh(handleId, expiry, storePassphrase);
|
|
228
|
+
// Store session
|
|
127
229
|
this.sessions[handleId.toString()] = {
|
|
128
230
|
accessToken: accessToken,
|
|
129
|
-
storePassphrase:
|
|
231
|
+
storePassphrase: storePassphrase,
|
|
130
232
|
matrixClient,
|
|
233
|
+
refreshTimeout,
|
|
131
234
|
};
|
|
132
|
-
// store session for future reloads
|
|
133
235
|
await handleStorage?.secureCommsStore.sessionAPIs.saveAccessToken(accessToken);
|
|
134
236
|
return accessToken;
|
|
135
237
|
}
|
|
136
|
-
async createMatrixClient(handleId, token, storePassphrase, handleStorage) {
|
|
137
|
-
const decoded = JWT.decode(token);
|
|
238
|
+
async createMatrixClient(handleId, token, decoded, storePassphrase, handleStorage) {
|
|
138
239
|
const client = new MatrixClientManager(token, decoded, handleStorage);
|
|
139
240
|
if (typeof indexedDB !== 'undefined') {
|
|
140
241
|
// use indexedDB if available (i.e., in browser or Node with polyfill)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../../../src/private/data/session/sessionManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAU,MAAM,2BAA2B,CAAA;AACjE,OAAO,KAAK,GAAG,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAgC,MAAM,iBAAiB,CAAA;AAExE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAEnE,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../../../src/private/data/session/sessionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ export class DefaultSecureCommsClient {
|
|
|
36
36
|
this.keyManager =
|
|
37
37
|
opts.sudoKeyManager ?? new DefaultSudoKeyManager(this.sudoCryptoProvider);
|
|
38
38
|
this.sessionService = new DefaultSessionService(this.apiClient);
|
|
39
|
-
this.sessionManager = new SessionManager(this.sessionService, this.storage);
|
|
39
|
+
this.sessionManager = new SessionManager(this.sessionService, this.storage, opts.autoRefreshTokenMinutesBeforeExpiration ?? 5);
|
|
40
40
|
this.mediaCredentialService = new DefaultMediaCredentialService(this.apiClient);
|
|
41
41
|
this.mediaCredentialManager = new MediaCredentialManager(this.userClient, this.mediaCredentialService, this.identityServiceConfig, this.secureCommsServiceConfig);
|
|
42
42
|
this.handles = new DefaultHandlesModule(this.apiClient, this.sessionManager);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secureCommsClient.js","sourceRoot":"","sources":["../../src/public/secureCommsClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,qBAAqB,EAErB,kBAAkB,GAGnB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAEL,QAAQ,IAAI,gBAAgB,GAC7B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,GAOrB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAkB,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChF,OAAO,EACL,wBAAwB,GAEzB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,oBAAoB,EAAiB,MAAM,yBAAyB,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAe,MAAM,uBAAuB,CAAA;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAC5D,OAAO,EAEL,2BAA2B,GAC5B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,6BAA6B,EAAE,MAAM,qDAAqD,CAAA;AACnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAA;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAA;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;
|
|
1
|
+
{"version":3,"file":"secureCommsClient.js","sourceRoot":"","sources":["../../src/public/secureCommsClient.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sudoplatform/sudo-secure-communications",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.5",
|
|
4
4
|
"author": "Anonyome Labs, Inc.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -65,15 +65,14 @@
|
|
|
65
65
|
"@sudoplatform/sudo-user": "^16.0.0"
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@aws-sdk/client-s3": "^3.
|
|
69
|
-
"@aws-sdk/credential-provider-cognito-identity": "^3.
|
|
70
|
-
"@aws-sdk/credential-providers": "^3.
|
|
71
|
-
"@aws-sdk/lib-storage": "^3.
|
|
68
|
+
"@aws-sdk/client-s3": "^3.965.0",
|
|
69
|
+
"@aws-sdk/credential-provider-cognito-identity": "^3.965.0",
|
|
70
|
+
"@aws-sdk/credential-providers": "^3.965.0",
|
|
71
|
+
"@aws-sdk/lib-storage": "^3.965.0",
|
|
72
72
|
"@matrix-org/matrix-sdk-crypto-wasm": "15.3.0",
|
|
73
73
|
"@sudoplatform/sudo-web-crypto-provider": "^10.0.1",
|
|
74
74
|
"@types/md5": "^2.3.6",
|
|
75
75
|
"async-mutex": "^0.5.0",
|
|
76
|
-
"aws-sdk": "^2.1412.0",
|
|
77
76
|
"blurhash": "^2.0.5",
|
|
78
77
|
"fflate": "^0.8.2",
|
|
79
78
|
"fp-ts": "^2.16.11",
|
|
@@ -165,10 +164,20 @@
|
|
|
165
164
|
},
|
|
166
165
|
"packageManager": "yarn@4.12.0+sha512.f45ab632439a67f8bc759bf32ead036a1f413287b9042726b7cc4818b7b49e14e9423ba49b18f9e06ea4941c1ad062385b1d8760a8d5091a1a31e5f6219afca8",
|
|
167
166
|
"auditSuppressions": {
|
|
168
|
-
"
|
|
169
|
-
"until":
|
|
170
|
-
"untilISO": "
|
|
171
|
-
"reason": "
|
|
167
|
+
"1111987": {
|
|
168
|
+
"until": 1772203020,
|
|
169
|
+
"untilISO": "2026-2-28T00:37:00Z",
|
|
170
|
+
"reason": "Waiting for patch - @smithy/config-resolver"
|
|
171
|
+
},
|
|
172
|
+
"1112255": {
|
|
173
|
+
"until": 1772203020,
|
|
174
|
+
"untilISO": "2026-2-28T00:37:00Z",
|
|
175
|
+
"reason": "node-tar used by bufferutil by websocket"
|
|
176
|
+
},
|
|
177
|
+
"1112329": {
|
|
178
|
+
"until": 1772203020,
|
|
179
|
+
"untilISO": "2026-2-28T00:37:00Z",
|
|
180
|
+
"reason": "node-tar used by bufferutil by websocket"
|
|
172
181
|
}
|
|
173
182
|
}
|
|
174
183
|
}
|
|
@@ -4,12 +4,25 @@ import { MatrixClientManager } from '../common/matrixClientManager';
|
|
|
4
4
|
export declare class SessionManager {
|
|
5
5
|
private readonly sessionService;
|
|
6
6
|
private readonly storageModule;
|
|
7
|
+
private readonly autoRefreshTokenMinutesBeforeExpiration;
|
|
7
8
|
private readonly log;
|
|
8
9
|
private readonly sessions;
|
|
9
|
-
constructor(sessionService: SessionService, storageModule: StorageModule);
|
|
10
|
+
constructor(sessionService: SessionService, storageModule: StorageModule, autoRefreshTokenMinutesBeforeExpiration: number);
|
|
10
11
|
deleteSession(handleId: HandleId, deleteStorage?: boolean): Promise<void>;
|
|
11
12
|
reset(): Promise<void>;
|
|
12
13
|
getMatrixClient(handleId: HandleId): Promise<MatrixClientManager>;
|
|
13
14
|
ensureValidSession(handleId: HandleId, storePassphrase?: string): Promise<string>;
|
|
15
|
+
private decodeToken;
|
|
16
|
+
private isTokenExpired;
|
|
17
|
+
private isTokenExpiringSoon;
|
|
18
|
+
private isTokenExpiredOrExpiringSoon;
|
|
19
|
+
private scheduleTokenRefresh;
|
|
20
|
+
private tryUseCachedSession;
|
|
21
|
+
private handleExpiredToken;
|
|
22
|
+
private refreshCachedSessionToken;
|
|
23
|
+
private getAccessTokenFromStorage;
|
|
24
|
+
private getAccessTokenFromService;
|
|
25
|
+
private getAccessTokenFromStorageOrService;
|
|
26
|
+
private createNewSession;
|
|
14
27
|
private createMatrixClient;
|
|
15
28
|
}
|
|
@@ -111,6 +111,8 @@ export type SecureCommsClientOptions = {
|
|
|
111
111
|
sudoKeyManager?: SudoKeyManager;
|
|
112
112
|
/** StorageProviderFactory to use. Default is undefined, which will make the client use in-memory storage. */
|
|
113
113
|
storageProviderFactory?: StorageProviderFactory;
|
|
114
|
+
/** AutoRefreshTokenMinutesBeforeExpiration to use. Default is 5 minutes. Set to 0 to disable automatic token refresh. */
|
|
115
|
+
autoRefreshTokenMinutesBeforeExpiration?: number;
|
|
114
116
|
};
|
|
115
117
|
export declare class DefaultSecureCommsClient implements SecureCommsClient {
|
|
116
118
|
handles: HandlesModule;
|