@lyxa.ai/core 1.0.348 → 1.0.349
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.
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import { RedisService } from '../redis';
|
|
2
1
|
import { SocketServiceQueue } from '../../utilities/enum';
|
|
3
2
|
export interface InstanceRecipients {
|
|
4
3
|
instanceId: string;
|
|
5
4
|
usersId: string[];
|
|
6
5
|
}
|
|
7
|
-
export declare function getInstanceSocketsMap(
|
|
6
|
+
export declare function getInstanceSocketsMap(cacheKeys: string[]): Promise<{
|
|
8
7
|
instanceId: string;
|
|
9
8
|
socketIds: string[];
|
|
10
9
|
}[]>;
|
|
11
10
|
type PublishToSocketsParams<TData> = {
|
|
12
|
-
redis: RedisService;
|
|
13
11
|
cacheKeys: string[];
|
|
14
12
|
data: TData;
|
|
15
13
|
socketEmitType: string;
|
|
16
14
|
socketQueue: SocketServiceQueue;
|
|
17
15
|
};
|
|
18
|
-
export declare function publishToSockets<TData>({
|
|
16
|
+
export declare function publishToSockets<TData>({ cacheKeys, data, socketEmitType, socketQueue: eventId, }: PublishToSocketsParams<TData>): Promise<void>;
|
|
19
17
|
export {};
|
|
@@ -4,8 +4,10 @@ exports.getInstanceSocketsMap = getInstanceSocketsMap;
|
|
|
4
4
|
exports.publishToSockets = publishToSockets;
|
|
5
5
|
const event_1 = require("../event");
|
|
6
6
|
const SocketEmitEvent_1 = require("./SocketEmitEvent");
|
|
7
|
-
|
|
7
|
+
const index_1 = require("../../index");
|
|
8
|
+
async function getInstanceSocketsMap(cacheKeys) {
|
|
8
9
|
const instanceMap = {};
|
|
10
|
+
const redis = (0, index_1.getLibraries)().getRedisService();
|
|
9
11
|
for (const cacheKey of cacheKeys) {
|
|
10
12
|
const instanceIds = await redis.redisClient.smembers(`cacheKey:${cacheKey}:instances`);
|
|
11
13
|
for (const instanceId of instanceIds) {
|
|
@@ -20,8 +22,8 @@ async function getInstanceSocketsMap(redis, cacheKeys) {
|
|
|
20
22
|
socketIds: [...socketSet],
|
|
21
23
|
}));
|
|
22
24
|
}
|
|
23
|
-
async function publishToSockets({
|
|
24
|
-
const recipients = await getInstanceSocketsMap(
|
|
25
|
+
async function publishToSockets({ cacheKeys, data, socketEmitType, socketQueue: eventId, }) {
|
|
26
|
+
const recipients = await getInstanceSocketsMap(cacheKeys);
|
|
25
27
|
await Promise.all(recipients.map(({ instanceId, socketIds }) => {
|
|
26
28
|
const payload = {
|
|
27
29
|
data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-publisher.js","sourceRoot":"/","sources":["libraries/socket/socket-publisher.ts"],"names":[],"mappings":";;AAUA,
|
|
1
|
+
{"version":3,"file":"socket-publisher.js","sourceRoot":"/","sources":["libraries/socket/socket-publisher.ts"],"names":[],"mappings":";;AAUA,sDAyBC;AAqBD,4CAoBC;AA5ED,oCAAwC;AACxC,uDAAuE;AAEvE,uCAA2C;AAOpC,KAAK,UAAU,qBAAqB,CAC1C,SAAmB;IAEnB,MAAM,WAAW,GAAgC,EAAE,CAAC;IAEpD,MAAM,KAAK,GAAG,IAAA,oBAAY,GAAE,CAAC,eAAe,EAAE,CAAC;IAE/C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,QAAQ,YAAY,CAAC,CAAC;QAEvF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;gBAAE,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YAElE,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,QAAQ,CACjD,YAAY,QAAQ,aAAa,UAAU,UAAU,CACrD,CAAC;YAEF,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,UAAU;QACV,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;KACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAqBM,KAAK,UAAU,gBAAgB,CAAQ,EAC7C,SAAS,EACT,IAAI,EACJ,cAAc,EACd,WAAW,EAAE,OAAO,GACW;IAC/B,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAE1D,MAAM,OAAO,CAAC,GAAG,CAChB,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE;QAC5C,MAAM,OAAO,GAA6B;YACzC,IAAI;YACJ,OAAO,EAAE,SAAS;YAClB,cAAc;SACd,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,iCAAe,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO,IAAA,oBAAY,EAAC,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAC,CACF,CAAC;AACH,CAAC","sourcesContent":["import { publishEvent } from '../event';\nimport { SocketEmitEvent, SocketEventParams } from './SocketEmitEvent';\nimport { SocketServiceQueue } from '../../utilities/enum';\nimport { getLibraries } from '../../index';\n\nexport interface InstanceRecipients {\n\tinstanceId: string;\n\tusersId: string[];\n}\n\nexport async function getInstanceSocketsMap(\n\tcacheKeys: string[]\n): Promise<{ instanceId: string; socketIds: string[] }[]> {\n\tconst instanceMap: Record<string, Set<string>> = {};\n\n\tconst redis = getLibraries().getRedisService();\n\n\tfor (const cacheKey of cacheKeys) {\n\t\tconst instanceIds = await redis.redisClient.smembers(`cacheKey:${cacheKey}:instances`);\n\n\t\tfor (const instanceId of instanceIds) {\n\t\t\tif (!instanceMap[instanceId]) instanceMap[instanceId] = new Set();\n\n\t\t\tconst socketIds = await redis.redisClient.smembers(\n\t\t\t\t`cacheKey:${cacheKey}:instance:${instanceId}:sockets`\n\t\t\t);\n\n\t\t\tsocketIds.forEach(id => instanceMap[instanceId].add(id));\n\t\t}\n\t}\n\n\treturn Object.entries(instanceMap).map(([instanceId, socketSet]) => ({\n\t\tinstanceId,\n\t\tsocketIds: [...socketSet],\n\t}));\n}\n\ntype PublishToSocketsParams<TData> = {\n\tcacheKeys: string[];\n\tdata: TData;\n\tsocketEmitType: string;\n\tsocketQueue: SocketServiceQueue;\n};\n\n/**\n * Example usage:\n *\n * await publishToSockets({\n * redis,\n * cacheKeys: ['user:123', 'user:456'], // target users\n * data: { message: 'Hello, this is a test!' }, // payload to send\n * socketEmitType: 'notification', // event type frontend listens for\n * socketQueue: SocketServiceQueue.SOCKET, // target socket service queue\n * });\n */\n\nexport async function publishToSockets<TData>({\n\tcacheKeys,\n\tdata,\n\tsocketEmitType,\n\tsocketQueue: eventId,\n}: PublishToSocketsParams<TData>) {\n\tconst recipients = await getInstanceSocketsMap(cacheKeys);\n\n\tawait Promise.all(\n\t\trecipients.map(({ instanceId, socketIds }) => {\n\t\t\tconst payload: SocketEventParams<TData> = {\n\t\t\t\tdata,\n\t\t\t\tsockets: socketIds,\n\t\t\t\tsocketEmitType,\n\t\t\t};\n\n\t\t\tconst event = new SocketEmitEvent(eventId, instanceId, payload);\n\t\t\treturn publishEvent(event);\n\t\t})\n\t);\n}\n"]}
|
package/dist/types/README.md
CHANGED
package/dist/types/package.json
CHANGED