@lyxa.ai/core 1.4.83-alpha.0 → 1.4.83-alpha.1
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.
|
@@ -6,7 +6,6 @@ const __1 = require("../../..");
|
|
|
6
6
|
const event_1 = require("../../event");
|
|
7
7
|
const PushNotificationEvent_1 = require("../PushNotificationEvent");
|
|
8
8
|
const connections_1 = require("../connections");
|
|
9
|
-
const enum_1 = require("../../../utilities/enum");
|
|
10
9
|
function fanOutToInstances(recipientsWithInstances, localKey, payload) {
|
|
11
10
|
if (recipientsWithInstances.length === 0)
|
|
12
11
|
return;
|
|
@@ -41,14 +40,6 @@ async function getActiveSubscribedRecipients(recipients, localKey) {
|
|
|
41
40
|
}
|
|
42
41
|
async function publishSocketEvent(event, recipients) {
|
|
43
42
|
const logger = (0, __1.getLibraries)().getLogger().logger;
|
|
44
|
-
const loggerKit = (0, __1.getLibraries)().getLoggerKit();
|
|
45
|
-
loggerKit.debug('Publish Socket Event', {
|
|
46
|
-
tag: enum_1.LogTag.INFRA_INTERNAL,
|
|
47
|
-
data: {
|
|
48
|
-
event,
|
|
49
|
-
recipients,
|
|
50
|
-
},
|
|
51
|
-
});
|
|
52
43
|
if (recipients.length === 0)
|
|
53
44
|
return;
|
|
54
45
|
const localKey = event.getSubscriptionKey();
|
|
@@ -56,12 +47,14 @@ async function publishSocketEvent(event, recipients) {
|
|
|
56
47
|
const { subscribed, unsubscribed } = await getActiveSubscribedRecipients(recipients, localKey);
|
|
57
48
|
logger.debug({ subscribed }, '[Socket] Subscribed recipients:');
|
|
58
49
|
logger.debug({ unsubscribed }, '[Socket] Unsubscribed recipients:');
|
|
59
|
-
|
|
60
|
-
tag:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
50
|
+
console.log({
|
|
51
|
+
tag: 'publishSocketEvent',
|
|
52
|
+
eventType: JSON.stringify(event.eventType()),
|
|
53
|
+
subscribed: JSON.stringify(subscribed),
|
|
54
|
+
unsubscribed: JSON.stringify(unsubscribed),
|
|
55
|
+
notificationSettings: JSON.stringify(event.notificationSettings),
|
|
56
|
+
pushNotificationPayload: JSON.stringify(event.getPushNotificationPayload()),
|
|
57
|
+
socketNotificationPayload: JSON.stringify(event.getSocketNotificationEvent()),
|
|
65
58
|
});
|
|
66
59
|
if (subscribed.length > 0)
|
|
67
60
|
fanOutToInstances(subscribed, localKey, payload);
|
|
@@ -70,21 +63,9 @@ async function publishSocketEvent(event, recipients) {
|
|
|
70
63
|
if (event.notificationSettings?.isPushNotification) {
|
|
71
64
|
const pushNotificationPayload = event.getPushNotificationPayload();
|
|
72
65
|
await (0, event_1.publishEvent)(new PushNotificationEvent_1.PushNotificationEvent(event.eventType(), pushNotificationPayload, unsubscribed, event.notificationSettings)).catch(err => console.error('[Socket] Push notification failed:', err));
|
|
73
|
-
loggerKit.debug('Publish Socket Event', {
|
|
74
|
-
tag: enum_1.LogTag.INFRA_INTERNAL,
|
|
75
|
-
data: {
|
|
76
|
-
pushNotificationPayload,
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
66
|
}
|
|
80
67
|
const socketNotificationPayload = event.getSocketNotificationEvent();
|
|
81
68
|
logger.debug({ socketNotificationPayload }, '[Socket] Socket notification payload');
|
|
82
|
-
loggerKit.debug('Publish Socket Event', {
|
|
83
|
-
tag: enum_1.LogTag.INFRA_INTERNAL,
|
|
84
|
-
data: {
|
|
85
|
-
socketNotificationPayload,
|
|
86
|
-
},
|
|
87
|
-
});
|
|
88
69
|
if (socketNotificationPayload) {
|
|
89
70
|
await publishNotificationSocketEvent(socketNotificationPayload, unsubscribed);
|
|
90
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-event-publisher.js","sourceRoot":"/","sources":["libraries/socket/core/socket-event-publisher.ts"],"names":[],"mappings":";;AAuDA,
|
|
1
|
+
{"version":3,"file":"socket-event-publisher.js","sourceRoot":"/","sources":["libraries/socket/core/socket-event-publisher.ts"],"names":[],"mappings":"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","sourcesContent":["import { getLibraries } from '../../..';\nimport { BaseSocketEvent } from '../BaseSocketEvent';\nimport { SocketNotificationEvent } from '../events';\nimport { publish, publishEvent } from '../../event';\nimport { PushNotificationEvent } from '../PushNotificationEvent';\nimport type { ZodTypeAny } from 'zod';\nimport { EntitySubscription, kEntityEventSockets } from '../connections';\nimport { LogTag } from '../../../utilities/enum';\n\nfunction fanOutToInstances(\n\trecipientsWithInstances: Array<{ recipient: EntitySubscription; instances: string[] }>,\n\tlocalKey: string,\n\tpayload: unknown\n): void {\n\tif (recipientsWithInstances.length === 0) return;\n\n\tfor (const { recipient, instances } of recipientsWithInstances) {\n\t\tconst message = { localKey, payload, recipient };\n\t\tfor (const instanceId of instances) {\n\t\t\tpublish(`instance.${instanceId}`, message).catch((error: unknown) => {\n\t\t\t\tconsole.error(`[Socket] Publish failed for instance ${instanceId}`, error);\n\t\t\t});\n\t\t}\n\t}\n}\n\nasync function getActiveSubscribedRecipients(\n\trecipients: EntitySubscription[],\n\tlocalKey: string\n): Promise<{\n\tsubscribed: Array<{ recipient: EntitySubscription; instances: string[] }>;\n\tunsubscribed: EntitySubscription[];\n}> {\n\tif (recipients.length === 0) return { subscribed: [], unsubscribed: [] };\n\n\tconst redis = getLibraries().getRedisService();\n\tconst subscribed: Array<{ recipient: EntitySubscription; instances: string[] }> = [];\n\tconst unsubscribed: EntitySubscription[] = [];\n\n\tawait Promise.all(\n\t\trecipients.map(async recipient => {\n\t\t\tconst sockets = await redis.getSetMembers(kEntityEventSockets(recipient, localKey));\n\t\t\tif (sockets.length === 0) {\n\t\t\t\tunsubscribed.push(recipient);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst instances = [...new Set(sockets.map(s => s.split('|')[0]).filter(Boolean))];\n\t\t\tif (instances.length > 0) subscribed.push({ recipient, instances });\n\t\t\telse unsubscribed.push(recipient);\n\t\t})\n\t);\n\n\treturn { subscribed, unsubscribed };\n}\n\nexport async function publishSocketEvent(\n\tevent: BaseSocketEvent<ZodTypeAny, ZodTypeAny, ZodTypeAny | undefined>,\n\trecipients: EntitySubscription[]\n): Promise<void> {\n\tconst logger = getLibraries().getLogger().logger;\n\tif (recipients.length === 0) return;\n\n\tconst localKey = event.getSubscriptionKey();\n\tconst payload = event.payload();\n\n\tconst { subscribed, unsubscribed } = await getActiveSubscribedRecipients(recipients, localKey);\n\n\tlogger.debug({ subscribed }, '[Socket] Subscribed recipients:');\n\tlogger.debug({ unsubscribed }, '[Socket] Unsubscribed recipients:');\n\n\tconsole.log({\n\t\ttag: 'publishSocketEvent',\n\t\teventType: JSON.stringify(event.eventType()),\n\t\tsubscribed: JSON.stringify(subscribed),\n\t\tunsubscribed: JSON.stringify(unsubscribed),\n\t\tnotificationSettings: JSON.stringify(event.notificationSettings),\n\t\tpushNotificationPayload: JSON.stringify(event.getPushNotificationPayload()),\n\t\tsocketNotificationPayload: JSON.stringify(event.getSocketNotificationEvent()),\n\t})\n\n\tif (subscribed.length > 0) fanOutToInstances(subscribed, localKey, payload);\n\n\tif (unsubscribed.length > 0) {\n\t\tlogger.debug({ unsubscribed }, '[Socket] Processing unsubscribed recipients');\n\n\t\tif (event.notificationSettings?.isPushNotification) {\n\t\t\tconst pushNotificationPayload = event.getPushNotificationPayload();\n\t\t\tawait publishEvent(\n\t\t\t\tnew PushNotificationEvent(event.eventType(), pushNotificationPayload, unsubscribed, event.notificationSettings)\n\t\t\t).catch(err => console.error('[Socket] Push notification failed:', err));\n\t\t}\n\n\t\tconst socketNotificationPayload = event.getSocketNotificationEvent();\n\t\tlogger.debug({ socketNotificationPayload }, '[Socket] Socket notification payload');\n\n\t\tif (socketNotificationPayload) {\n\t\t\tawait publishNotificationSocketEvent(socketNotificationPayload, unsubscribed);\n\t\t}\n\t}\n}\n\nexport async function publishNotificationSocketEvent(\n\tevent: SocketNotificationEvent,\n\trecipients: EntitySubscription[]\n): Promise<void> {\n\tif (recipients.length === 0) return;\n\n\tconst eventKey = event.getSubscriptionKey();\n\tconst redis = getLibraries().getRedisService();\n\tconst validInstances: Array<{ recipient: EntitySubscription; instances: string[] }> = [];\n\n\tawait Promise.all(\n\t\trecipients.map(async recipient => {\n\t\t\tconst sockets = await redis.getSetMembers(kEntityEventSockets(recipient, eventKey));\n\t\t\tif (sockets.length === 0) return;\n\t\t\tconst instances = [...new Set(sockets.map(s => s.split('|')[0]).filter(Boolean))];\n\t\t\tif (instances.length > 0) validInstances.push({ recipient, instances });\n\t\t})\n\t);\n\n\tif (validInstances.length > 0) fanOutToInstances(validInstances, eventKey, event.payload());\n}\n"]}
|
package/dist/types/README.md
CHANGED
package/dist/types/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lyxa.ai/types",
|
|
3
|
-
"version": "1.4.83-alpha.
|
|
3
|
+
"version": "1.4.83-alpha.1",
|
|
4
4
|
"description": "Lyxa type definitions and validation schemas for both frontend and backend",
|
|
5
5
|
"author": "elie <42282499+Internalizable@users.noreply.github.com>",
|
|
6
6
|
"license": "MIT",
|
package/package.json
CHANGED