@lyxa.ai/core 1.1.111 → 1.1.112
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/libraries/socket/core/socket-redis-connections.d.ts +1 -0
- package/dist/libraries/socket/core/socket-redis-connections.js +26 -0
- package/dist/libraries/socket/core/socket-redis-connections.js.map +1 -1
- package/dist/types/README.md +1 -1
- package/dist/types/package.json +1 -1
- package/package.json +1 -1
|
@@ -16,4 +16,5 @@ export declare function getConnectedEntityByType(type: AuthEntityType): Promise<
|
|
|
16
16
|
export declare function disconnectEntityFromSocketEvent(entity: EntitySubscription, socketRedisEventInformation: SocketRedisEventInformation): Promise<void>;
|
|
17
17
|
export declare function isEntitySubscribed(entity: EntitySubscription, eventKey: string): Promise<boolean>;
|
|
18
18
|
export declare function isEntityConnected(entity: EntitySubscription): Promise<boolean>;
|
|
19
|
+
export declare function getEntitiesSubscribedToEvent(eventKey: string): Promise<EntitySubscription[]>;
|
|
19
20
|
export declare function disconnectAllEntitiesFromInstance(entityType?: AuthEntityType): Promise<void>;
|
|
@@ -6,9 +6,11 @@ exports.getConnectedEntityByType = getConnectedEntityByType;
|
|
|
6
6
|
exports.disconnectEntityFromSocketEvent = disconnectEntityFromSocketEvent;
|
|
7
7
|
exports.isEntitySubscribed = isEntitySubscribed;
|
|
8
8
|
exports.isEntityConnected = isEntityConnected;
|
|
9
|
+
exports.getEntitiesSubscribedToEvent = getEntitiesSubscribedToEvent;
|
|
9
10
|
exports.disconnectAllEntitiesFromInstance = disconnectAllEntitiesFromInstance;
|
|
10
11
|
const __1 = require("../../..");
|
|
11
12
|
const instance_utils_1 = require("../../../utilities/instance.utils");
|
|
13
|
+
const auth_1 = require("../../auth");
|
|
12
14
|
const kEntityEvents = (entity) => entity.type ? `socket:events:${entity.type}:${entity.id}` : `socket:events:entity:${entity.id}`;
|
|
13
15
|
exports.kEntityEvents = kEntityEvents;
|
|
14
16
|
const kEntityInstances = (entity) => entity.type ? `socket:instances:${entity.type}:${entity.id}` : `socket:instances:entity:${entity.id}`;
|
|
@@ -45,6 +47,30 @@ async function isEntityConnected(entity) {
|
|
|
45
47
|
const redis = (0, __1.getLibraries)().getRedisService();
|
|
46
48
|
return redis.isMemberOfSet((0, exports.kEntityConnection)(entity.type), entity.id);
|
|
47
49
|
}
|
|
50
|
+
async function getEntitiesSubscribedToEvent(eventKey) {
|
|
51
|
+
const redis = (0, __1.getLibraries)().getRedisService();
|
|
52
|
+
const subscribers = [];
|
|
53
|
+
const allEntityTypes = [
|
|
54
|
+
auth_1.AuthEntityType.USER,
|
|
55
|
+
auth_1.AuthEntityType.SELLER,
|
|
56
|
+
auth_1.AuthEntityType.DELIVERY_BOY,
|
|
57
|
+
auth_1.AuthEntityType.CRM,
|
|
58
|
+
auth_1.AuthEntityType.VENDOR_PARENT,
|
|
59
|
+
auth_1.AuthEntityType.PROFESSIONAL,
|
|
60
|
+
undefined,
|
|
61
|
+
];
|
|
62
|
+
for (const entityType of allEntityTypes) {
|
|
63
|
+
const connectedEntityIds = await redis.getSetMembers((0, exports.kEntityConnection)(entityType));
|
|
64
|
+
for (const entityId of connectedEntityIds) {
|
|
65
|
+
const entity = { id: entityId, type: entityType };
|
|
66
|
+
const isSubscribed = await isEntitySubscribed(entity, eventKey);
|
|
67
|
+
if (isSubscribed) {
|
|
68
|
+
subscribers.push(entity);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return subscribers;
|
|
73
|
+
}
|
|
48
74
|
async function disconnectAllEntitiesFromInstance(entityType) {
|
|
49
75
|
const instanceId = (0, instance_utils_1.getInstanceId)();
|
|
50
76
|
const redis = (0, __1.getLibraries)().getRedisService();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-redis-connections.js","sourceRoot":"/","sources":["libraries/socket/core/socket-redis-connections.ts"],"names":[],"mappings":";;;AAsBA,gEASC;AAED,4DAGC;AAED,0EAmBC;AAED,gDAIC;AAED,8CAGC;AAED,8EA8BC;
|
|
1
|
+
{"version":3,"file":"socket-redis-connections.js","sourceRoot":"/","sources":["libraries/socket/core/socket-redis-connections.ts"],"names":[],"mappings":"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","sourcesContent":["import { getLibraries } from '../../..';\nimport { getInstanceId } from '../../../utilities/instance.utils';\nimport { AuthEntityType } from '../../auth';\n\nexport type EntitySubscription = {\n\tid: string;\n\ttype?: AuthEntityType;\n};\n\nexport const kEntityEvents = (entity: EntitySubscription) =>\n\tentity.type ? `socket:events:${entity.type}:${entity.id}` : `socket:events:entity:${entity.id}`;\nexport const kEntityInstances = (entity: EntitySubscription) =>\n\tentity.type ? `socket:instances:${entity.type}:${entity.id}` : `socket:instances:entity:${entity.id}`;\nexport const kEntityConnection = (entityType?: AuthEntityType) =>\n\tentityType ? `socket:connections:${entityType}` : `socket:connections:all`;\n\nexport interface SocketRedisEventInformation {\n\teventKey: string;\n\tinstanceId: string;\n\tsocketId: string;\n}\n\nexport async function connectEntityToSocketEvent(\n\tentity: EntitySubscription,\n\tsocketRedisEventInformation: SocketRedisEventInformation\n) {\n\tconst redis = getLibraries().getRedisService();\n\n\tawait redis.addToSet(kEntityEvents(entity), JSON.stringify(socketRedisEventInformation));\n\tawait redis.addToSet(kEntityInstances(entity), socketRedisEventInformation.instanceId);\n\tawait redis.addToSet(kEntityConnection(entity.type), entity.id);\n}\n\nexport async function getConnectedEntityByType(type: AuthEntityType): Promise<String[]> {\n\tconst redis = getLibraries().getRedisService();\n\treturn redis.getSetMembers(kEntityConnection(type));\n}\n\nexport async function disconnectEntityFromSocketEvent(\n\tentity: EntitySubscription,\n\tsocketRedisEventInformation: SocketRedisEventInformation\n) {\n\tconst redis = getLibraries().getRedisService();\n\n\tawait redis.removeFromSet(kEntityEvents(entity), JSON.stringify(socketRedisEventInformation));\n\n\tconst remainingEvents = (await redis.getSetMembers(kEntityEvents(entity))).map(\n\t\tr => JSON.parse(r) as SocketRedisEventInformation\n\t);\n\n\tif (remainingEvents.filter(e => e.instanceId === socketRedisEventInformation.instanceId).length === 0) {\n\t\tawait redis.removeFromSet(kEntityInstances(entity), socketRedisEventInformation.instanceId);\n\t}\n\n\tif (remainingEvents.length === 0) {\n\t\tawait redis.removeFromSet(kEntityConnection(entity.type), entity.id);\n\t}\n}\n\nexport async function isEntitySubscribed(entity: EntitySubscription, eventKey: string): Promise<boolean> {\n\tconst redis = getLibraries().getRedisService();\n\tconst events = await redis.getSetMembers(kEntityEvents(entity));\n\treturn events.map(e => JSON.parse(e) as SocketRedisEventInformation).some(e => e.eventKey === eventKey);\n}\n\nexport async function isEntityConnected(entity: EntitySubscription): Promise<boolean> {\n\tconst redis = getLibraries().getRedisService();\n\treturn redis.isMemberOfSet(kEntityConnection(entity.type), entity.id);\n}\n\nexport async function getEntitiesSubscribedToEvent(eventKey: string): Promise<EntitySubscription[]> {\n\tconst redis = getLibraries().getRedisService();\n\tconst subscribers: EntitySubscription[] = [];\n\n\tconst allEntityTypes = [\n\t\tAuthEntityType.USER,\n\t\tAuthEntityType.SELLER,\n\t\tAuthEntityType.DELIVERY_BOY,\n\t\tAuthEntityType.CRM,\n\t\tAuthEntityType.VENDOR_PARENT,\n\t\tAuthEntityType.PROFESSIONAL,\n\t\tundefined,\n\t];\n\n\tfor (const entityType of allEntityTypes) {\n\t\tconst connectedEntityIds = await redis.getSetMembers(kEntityConnection(entityType));\n\n\t\tfor (const entityId of connectedEntityIds) {\n\t\t\tconst entity: EntitySubscription = { id: entityId, type: entityType };\n\t\t\tconst isSubscribed = await isEntitySubscribed(entity, eventKey);\n\t\t\tif (isSubscribed) {\n\t\t\t\tsubscribers.push(entity);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn subscribers;\n}\n\nexport async function disconnectAllEntitiesFromInstance(entityType?: AuthEntityType) {\n\tconst instanceId = getInstanceId();\n\tconst redis = getLibraries().getRedisService();\n\n\tconst connectedEntities = await redis.getSetMembers(kEntityConnection(entityType));\n\tif (!connectedEntities.length) return;\n\n\tfor (const entityId of connectedEntities) {\n\t\tconst entity: EntitySubscription = { id: entityId, type: entityType };\n\t\tconst allEvents = await redis.getSetMembers(kEntityEvents(entity));\n\t\tif (!allEvents.length) continue;\n\n\t\tconst eventsToKeep = allEvents.filter(e => {\n\t\t\tconst parsed = JSON.parse(e) as SocketRedisEventInformation;\n\t\t\treturn parsed.instanceId !== instanceId;\n\t\t});\n\n\t\tconst eventsToRemove = allEvents.filter(e => !eventsToKeep.includes(e));\n\t\tfor (const e of eventsToRemove) {\n\t\t\tawait redis.removeFromSet(kEntityEvents(entity), e);\n\t\t}\n\n\t\tif (!eventsToKeep.some(e => (JSON.parse(e) as SocketRedisEventInformation).instanceId === instanceId)) {\n\t\t\tawait redis.removeFromSet(kEntityInstances(entity), instanceId);\n\t\t}\n\n\t\tif (eventsToKeep.length === 0) {\n\t\t\tawait redis.removeFromSet(kEntityConnection(entityType), entityId);\n\t\t}\n\t}\n}\n"]}
|
package/dist/types/README.md
CHANGED
package/dist/types/package.json
CHANGED