@remits/remits-cli 0.1.107 → 0.1.108
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/index.js +54 -6
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -1329,12 +1329,28 @@ function serviceRegistrationState() {
|
|
|
1329
1329
|
|
|
1330
1330
|
function listenerRegistrationPayload(session, options = {}) {
|
|
1331
1331
|
const service = serviceRegistrationState();
|
|
1332
|
+
const groupedSessions = Array.isArray(options.groupedSessions)
|
|
1333
|
+
? options.groupedSessions.filter((entry) => entry && entry.token)
|
|
1334
|
+
: [];
|
|
1335
|
+
const sessionDataModes = Array.from(new Set(
|
|
1336
|
+
(groupedSessions.length ? groupedSessions : [session])
|
|
1337
|
+
.map((entry) => normalizeDataMode(entry && entry.dataMode))
|
|
1338
|
+
.filter(Boolean)
|
|
1339
|
+
)).sort();
|
|
1340
|
+
const sessionAccountIds = Array.from(new Set(
|
|
1341
|
+
(groupedSessions.length ? groupedSessions : [session])
|
|
1342
|
+
.map((entry) => Number(entry && entry.accountId))
|
|
1343
|
+
.filter((accountId) => Number.isFinite(accountId) && accountId > 0)
|
|
1344
|
+
)).sort((a, b) => a - b);
|
|
1332
1345
|
return {
|
|
1333
1346
|
client: 'remits-cli',
|
|
1334
1347
|
reason: options.reason || 'heartbeat',
|
|
1335
1348
|
baseUrl: normalizeBaseUrl(session.baseUrl || DEFAULT_BASE_URL),
|
|
1336
1349
|
accountId: Number(session.accountId),
|
|
1337
1350
|
dataMode: normalizeDataMode(session.dataMode),
|
|
1351
|
+
dataModes: sessionDataModes,
|
|
1352
|
+
sessionAccountIds,
|
|
1353
|
+
registrationSessionCount: groupedSessions.length || 1,
|
|
1338
1354
|
websocketTopic: session.websocketTopic || (session.user && session.user.uuid ? String(session.user.uuid).replace(/-/g, '') : null),
|
|
1339
1355
|
dashboardUrl: service.dashboardUrl || null,
|
|
1340
1356
|
agent: getPreferredAgent(),
|
|
@@ -1348,6 +1364,8 @@ function listenerRegistrationSignature(payload) {
|
|
|
1348
1364
|
baseUrl: payload.baseUrl,
|
|
1349
1365
|
accountId: payload.accountId,
|
|
1350
1366
|
dataMode: payload.dataMode,
|
|
1367
|
+
dataModes: payload.dataModes || [],
|
|
1368
|
+
sessionAccountIds: payload.sessionAccountIds || [],
|
|
1351
1369
|
websocketTopic: payload.websocketTopic,
|
|
1352
1370
|
dashboardUrl: payload.dashboardUrl,
|
|
1353
1371
|
agent: payload.agent,
|
|
@@ -1386,6 +1404,9 @@ function rememberCliListenerRegistration(session, payload) {
|
|
|
1386
1404
|
userId: session.user && session.user.id ? session.user.id : null,
|
|
1387
1405
|
signature: listenerRegistrationSignature(payload),
|
|
1388
1406
|
accountCount: Array.isArray(payload.repoAccounts) ? payload.repoAccounts.length : 0,
|
|
1407
|
+
sessionAccountIds: payload.sessionAccountIds || [],
|
|
1408
|
+
dataModes: payload.dataModes || [],
|
|
1409
|
+
registrationSessionCount: payload.registrationSessionCount || 1,
|
|
1389
1410
|
lastRegisteredAt: new Date().toISOString(),
|
|
1390
1411
|
lastRegisteredAtMs: Date.now()
|
|
1391
1412
|
};
|
|
@@ -1412,17 +1433,44 @@ async function bestEffortRegisterCliListeners(options = {}) {
|
|
|
1412
1433
|
if (!sessions.length) {
|
|
1413
1434
|
return [];
|
|
1414
1435
|
}
|
|
1415
|
-
const
|
|
1436
|
+
const groupedSessions = [];
|
|
1437
|
+
for (const session of sessions) {
|
|
1438
|
+
const key = listenerRegistrationStateKey(session);
|
|
1439
|
+
let group = groupedSessions.find((entry) => entry.key === key);
|
|
1440
|
+
if (!group) {
|
|
1441
|
+
group = { key, session, sessions: [] };
|
|
1442
|
+
groupedSessions.push(group);
|
|
1443
|
+
}
|
|
1444
|
+
group.sessions.push(session);
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
const results = await Promise.all(groupedSessions.map(async (group) => {
|
|
1416
1448
|
try {
|
|
1417
|
-
const data = await registerCliListenerSession(session,
|
|
1418
|
-
|
|
1449
|
+
const data = await registerCliListenerSession(group.session, {
|
|
1450
|
+
...options,
|
|
1451
|
+
groupedSessions: group.sessions
|
|
1452
|
+
});
|
|
1453
|
+
return {
|
|
1454
|
+
success: true,
|
|
1455
|
+
accountId: group.session.accountId,
|
|
1456
|
+
baseUrl: group.session.baseUrl,
|
|
1457
|
+
groupedAccountIds: group.sessions.map((session) => session.accountId),
|
|
1458
|
+
data
|
|
1459
|
+
};
|
|
1419
1460
|
} catch (err) {
|
|
1420
1461
|
appendGlobalActivityLog('listener', 'registration.failed', {
|
|
1421
|
-
accountId: session.accountId,
|
|
1422
|
-
baseUrl: normalizeBaseUrl(session.baseUrl || DEFAULT_BASE_URL),
|
|
1462
|
+
accountId: group.session.accountId,
|
|
1463
|
+
baseUrl: normalizeBaseUrl(group.session.baseUrl || DEFAULT_BASE_URL),
|
|
1464
|
+
groupedAccountIds: group.sessions.map((session) => session.accountId),
|
|
1423
1465
|
error: describeError(err)
|
|
1424
1466
|
}, 'error');
|
|
1425
|
-
return {
|
|
1467
|
+
return {
|
|
1468
|
+
success: false,
|
|
1469
|
+
accountId: group.session.accountId,
|
|
1470
|
+
baseUrl: group.session.baseUrl,
|
|
1471
|
+
groupedAccountIds: group.sessions.map((session) => session.accountId),
|
|
1472
|
+
error: describeError(err)
|
|
1473
|
+
};
|
|
1426
1474
|
}
|
|
1427
1475
|
}));
|
|
1428
1476
|
return results;
|