@lyxa.ai/core 1.1.110 → 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.
@@ -254,14 +254,17 @@ export declare const REGISTRY: {
254
254
  orderId?: string | import("mongoose").Types.ObjectId | undefined;
255
255
  }>;
256
256
  output: import("zod").ZodObject<{
257
+ _id: import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>;
257
258
  latitude: import("zod").ZodNumber;
258
259
  longitude: import("zod").ZodNumber;
259
260
  updatedAt: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>;
260
261
  }, "strip", import("zod").ZodTypeAny, {
262
+ _id: import("mongoose").Types.ObjectId;
261
263
  updatedAt: Date;
262
264
  latitude: number;
263
265
  longitude: number;
264
266
  }, {
267
+ _id: string | import("mongoose").Types.ObjectId;
265
268
  updatedAt: string | Date;
266
269
  latitude: number;
267
270
  longitude: number;
@@ -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":"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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 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"]}
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"]}
@@ -1,2 +1,7 @@
1
- export * from './chatroom-message-send.socket.event';
2
1
  export * from './chatlist-message-send.socket.event';
2
+ export * from './chatroom-message-send.socket.event';
3
+ export * from './notification.socket.event';
4
+ export * from './rider-connect.socket.event';
5
+ export * from './rider-location-update.socket.event';
6
+ export * from './ticket-assign.socket.event';
7
+ export * from './ticket-unassign.socket.event';
@@ -14,6 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./chatroom-message-send.socket.event"), exports);
18
17
  __exportStar(require("./chatlist-message-send.socket.event"), exports);
18
+ __exportStar(require("./chatroom-message-send.socket.event"), exports);
19
+ __exportStar(require("./notification.socket.event"), exports);
20
+ __exportStar(require("./rider-connect.socket.event"), exports);
21
+ __exportStar(require("./rider-location-update.socket.event"), exports);
22
+ __exportStar(require("./ticket-assign.socket.event"), exports);
23
+ __exportStar(require("./ticket-unassign.socket.event"), exports);
19
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/socket/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uEAAqD;AACrD,uEAAqD","sourcesContent":["export * from './chatroom-message-send.socket.event';\nexport * from './chatlist-message-send.socket.event';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/socket/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uEAAqD;AACrD,uEAAqD;AACrD,8DAA4C;AAC5C,+DAA6C;AAC7C,uEAAqD;AACrD,+DAA6C;AAC7C,iEAA+C","sourcesContent":["export * from './chatlist-message-send.socket.event';\nexport * from './chatroom-message-send.socket.event';\nexport * from './notification.socket.event';\nexport * from './rider-connect.socket.event';\nexport * from './rider-location-update.socket.event';\nexport * from './ticket-assign.socket.event';\nexport * from './ticket-unassign.socket.event';\n"]}
@@ -12,14 +12,17 @@ export declare const RiderLocationUpdateSocketInputSchema: z.ZodObject<{
12
12
  orderId?: string | import("mongoose").Types.ObjectId | undefined;
13
13
  }>;
14
14
  export declare const RiderLocationUpdateSocketOutputSchema: z.ZodObject<{
15
+ _id: z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("mongoose").Types.ObjectId, string>, z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>]>;
15
16
  latitude: z.ZodNumber;
16
17
  longitude: z.ZodNumber;
17
18
  updatedAt: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Date, string>, z.ZodDate]>, Date, string | Date>, Date, string | Date>;
18
19
  }, "strip", z.ZodTypeAny, {
20
+ _id: import("mongoose").Types.ObjectId;
19
21
  updatedAt: Date;
20
22
  latitude: number;
21
23
  longitude: number;
22
24
  }, {
25
+ _id: string | import("mongoose").Types.ObjectId;
23
26
  updatedAt: string | Date;
24
27
  latitude: number;
25
28
  longitude: number;
@@ -39,14 +42,17 @@ export declare class RiderLocationUpdateSocketEvent extends BaseSocketEvent<type
39
42
  orderId?: string | import("mongoose").Types.ObjectId | undefined;
40
43
  }>;
41
44
  output: z.ZodObject<{
45
+ _id: z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("mongoose").Types.ObjectId, string>, z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>]>;
42
46
  latitude: z.ZodNumber;
43
47
  longitude: z.ZodNumber;
44
48
  updatedAt: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Date, string>, z.ZodDate]>, Date, string | Date>, Date, string | Date>;
45
49
  }, "strip", z.ZodTypeAny, {
50
+ _id: import("mongoose").Types.ObjectId;
46
51
  updatedAt: Date;
47
52
  latitude: number;
48
53
  longitude: number;
49
54
  }, {
55
+ _id: string | import("mongoose").Types.ObjectId;
50
56
  updatedAt: string | Date;
51
57
  latitude: number;
52
58
  longitude: number;
@@ -13,6 +13,7 @@ exports.RiderLocationUpdateSocketInputSchema = zod_1.default.object({
13
13
  orderId: validation_1.ZodValidation.objectId('orderId').optional(),
14
14
  });
15
15
  exports.RiderLocationUpdateSocketOutputSchema = zod_1.default.object({
16
+ _id: validation_1.IdSchema,
16
17
  latitude: validation_1.ZodValidation.number('latitude'),
17
18
  longitude: validation_1.ZodValidation.number('longitude'),
18
19
  updatedAt: validation_1.ZodValidation.date('updatedAt'),
@@ -1 +1 @@
1
- {"version":3,"file":"rider-location-update.socket.event.js","sourceRoot":"/","sources":["libraries/socket/events/rider-location-update.socket.event.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,wDAAqD;AACrD,8DAAmE;AACnE,kDAA0D;AAE7C,QAAA,oCAAoC,GAAG,aAAC,CAAC,MAAM,CAAC;IAC5D,OAAO,EAAE,0BAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC1C,OAAO,EAAE,0BAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC;AAEU,QAAA,qCAAqC,GAAG,aAAC,CAAC,MAAM,CAAC;IAC7D,QAAQ,EAAE,0BAAa,CAAC,MAAM,CAAC,UAAU,CAAC;IAC1C,SAAS,EAAE,0BAAa,CAAC,MAAM,CAAC,WAAW,CAAC;IAC5C,SAAS,EAAE,0BAAa,CAAC,IAAI,CAAC,WAAW,CAAC;CAC1C,CAAC,CAAC;AAKH,MAAa,8BAA+B,SAAQ,iCAGnD;IACA,MAAM,CAAU,OAAO,GAAG;QACzB,KAAK,EAAE,4CAAoC;QAC3C,MAAM,EAAE,6CAAqC;KAC7C,CAAC;IAEF,YAAY,OAA2C;QACtD,KAAK,CAAC,sBAAe,CAAC,qBAAqB,EAAE,8BAA8B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,KAA2D;QAC5E,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;;AAfF,wEAgBC","sourcesContent":["import z from 'zod';\nimport { BaseSocketEvent } from '../BaseSocketEvent';\nimport { DTO, ZodValidation } from '../../../utilities/validation';\nimport { SocketEventType } from '../../../utilities/enum';\n\nexport const RiderLocationUpdateSocketInputSchema = z.object({\n\triderId: ZodValidation.objectId('riderId'),\n\torderId: ZodValidation.objectId('orderId').optional(),\n});\n\nexport const RiderLocationUpdateSocketOutputSchema = z.object({\n\tlatitude: ZodValidation.number('latitude'),\n\tlongitude: ZodValidation.number('longitude'),\n\tupdatedAt: ZodValidation.date('updatedAt'),\n});\n\nexport type RiderLocationUpdateSocketInputDTO = DTO<typeof RiderLocationUpdateSocketInputSchema>;\nexport type RiderLocationUpdateSocketOutputDTO = DTO<typeof RiderLocationUpdateSocketOutputSchema>;\n\nexport class RiderLocationUpdateSocketEvent extends BaseSocketEvent<\n\ttypeof RiderLocationUpdateSocketInputSchema,\n\ttypeof RiderLocationUpdateSocketOutputSchema\n> {\n\tstatic readonly schemas = {\n\t\tinput: RiderLocationUpdateSocketInputSchema,\n\t\toutput: RiderLocationUpdateSocketOutputSchema,\n\t};\n\n\tconstructor(payload: RiderLocationUpdateSocketOutputDTO) {\n\t\tsuper(SocketEventType.RIDER_LOCATION_UPDATE, RiderLocationUpdateSocketEvent.schemas, payload);\n\t}\n\n\tstatic identifier(input: z.infer<typeof RiderLocationUpdateSocketInputSchema>): string {\n\t\treturn input.riderId.toString();\n\t}\n}\n"]}
1
+ {"version":3,"file":"rider-location-update.socket.event.js","sourceRoot":"/","sources":["libraries/socket/events/rider-location-update.socket.event.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,wDAAqD;AACrD,8DAA6E;AAC7E,kDAA0D;AAE7C,QAAA,oCAAoC,GAAG,aAAC,CAAC,MAAM,CAAC;IAC5D,OAAO,EAAE,0BAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC1C,OAAO,EAAE,0BAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC;AAEU,QAAA,qCAAqC,GAAG,aAAC,CAAC,MAAM,CAAC;IAC7D,GAAG,EAAE,qBAAQ;IACb,QAAQ,EAAE,0BAAa,CAAC,MAAM,CAAC,UAAU,CAAC;IAC1C,SAAS,EAAE,0BAAa,CAAC,MAAM,CAAC,WAAW,CAAC;IAC5C,SAAS,EAAE,0BAAa,CAAC,IAAI,CAAC,WAAW,CAAC;CAC1C,CAAC,CAAC;AAKH,MAAa,8BAA+B,SAAQ,iCAGnD;IACA,MAAM,CAAU,OAAO,GAAG;QACzB,KAAK,EAAE,4CAAoC;QAC3C,MAAM,EAAE,6CAAqC;KAC7C,CAAC;IAEF,YAAY,OAA2C;QACtD,KAAK,CAAC,sBAAe,CAAC,qBAAqB,EAAE,8BAA8B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,KAA2D;QAC5E,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;;AAfF,wEAgBC","sourcesContent":["import z from 'zod';\nimport { BaseSocketEvent } from '../BaseSocketEvent';\nimport { DTO, IdSchema, ZodValidation } from '../../../utilities/validation';\nimport { SocketEventType } from '../../../utilities/enum';\n\nexport const RiderLocationUpdateSocketInputSchema = z.object({\n\triderId: ZodValidation.objectId('riderId'),\n\torderId: ZodValidation.objectId('orderId').optional(),\n});\n\nexport const RiderLocationUpdateSocketOutputSchema = z.object({\n\t_id: IdSchema,\n\tlatitude: ZodValidation.number('latitude'),\n\tlongitude: ZodValidation.number('longitude'),\n\tupdatedAt: ZodValidation.date('updatedAt'),\n});\n\nexport type RiderLocationUpdateSocketInputDTO = DTO<typeof RiderLocationUpdateSocketInputSchema>;\nexport type RiderLocationUpdateSocketOutputDTO = DTO<typeof RiderLocationUpdateSocketOutputSchema>;\n\nexport class RiderLocationUpdateSocketEvent extends BaseSocketEvent<\n\ttypeof RiderLocationUpdateSocketInputSchema,\n\ttypeof RiderLocationUpdateSocketOutputSchema\n> {\n\tstatic readonly schemas = {\n\t\tinput: RiderLocationUpdateSocketInputSchema,\n\t\toutput: RiderLocationUpdateSocketOutputSchema,\n\t};\n\n\tconstructor(payload: RiderLocationUpdateSocketOutputDTO) {\n\t\tsuper(SocketEventType.RIDER_LOCATION_UPDATE, RiderLocationUpdateSocketEvent.schemas, payload);\n\t}\n\n\tstatic identifier(input: z.infer<typeof RiderLocationUpdateSocketInputSchema>): string {\n\t\treturn input.riderId.toString();\n\t}\n}\n"]}
@@ -22,7 +22,7 @@ Perfect for sharing types between frontend and backend applications.
22
22
 
23
23
  ## Version
24
24
 
25
- Version: 1.1.110
25
+ Version: 1.1.112
26
26
 
27
27
  ## Dependencies
28
28
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lyxa.ai/types",
3
- "version": "1.1.110",
3
+ "version": "1.1.112",
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",
@@ -1,4 +1,3 @@
1
- import dayjs from 'dayjs';
2
1
  export declare const LyxaTimezone = "Asia/Dhaka";
3
2
  export declare const convertTimeToUTC: (timeStr: string, zone?: string) => string;
4
3
  export declare const convertTimeFromUTC: (utcTimeStr: string, zone?: string) => string;
@@ -6,7 +5,3 @@ export declare function normalizeWorkingHourTimeFormat(data: any): any;
6
5
  export declare function deNormalizeWorkingHourTimeFormat(data: any): any;
7
6
  export declare function parseTime(time: string): number;
8
7
  export declare function formatTimeString(time: string): string;
9
- export declare function getCurrentTimeInfo(): {
10
- currentTimeStamp: dayjs.Dayjs;
11
- timeInHHmm: number;
12
- };
@@ -8,7 +8,6 @@ exports.normalizeWorkingHourTimeFormat = normalizeWorkingHourTimeFormat;
8
8
  exports.deNormalizeWorkingHourTimeFormat = deNormalizeWorkingHourTimeFormat;
9
9
  exports.parseTime = parseTime;
10
10
  exports.formatTimeString = formatTimeString;
11
- exports.getCurrentTimeInfo = getCurrentTimeInfo;
12
11
  const dayjs_1 = __importDefault(require("dayjs"));
13
12
  const utc_1 = __importDefault(require("dayjs/plugin/utc"));
14
13
  const timezone_1 = __importDefault(require("dayjs/plugin/timezone"));
@@ -113,12 +112,4 @@ function formatTimeString(time) {
113
112
  }
114
113
  return time.slice(0, 2) + ":" + time.slice(2);
115
114
  }
116
- function getCurrentTimeInfo() {
117
- const currentTimeStamp = (0, dayjs_1.default)().tz(exports.LyxaTimezone);
118
- const timeInHHmm = Number(currentTimeStamp.format('HHmm'));
119
- return {
120
- currentTimeStamp,
121
- timeInHHmm
122
- };
123
- }
124
115
  //# sourceMappingURL=time.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"time.js","sourceRoot":"/","sources":["utilities/time.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport { badRequestError } from './error-common';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nexport const LyxaTimezone = 'Asia/Dhaka';\n\n// input: timeStr: 1500\n// output: 1200\nexport const convertTimeToUTC = (timeStr: string, zone = 'Asia/Beirut') => {\n\tconst hour = Number(timeStr.slice(0, 2));\n\tconst minute = Number(timeStr.slice(2));\n\treturn dayjs()\n\t\t.tz(zone)\n\t\t.set('hour', hour)\n\t\t.set('minute', minute)\n\t\t.set('second', 0)\n\t\t.set('millisecond', 0)\n\t\t.utc()\n\t\t.format('HHmm');\n};\n\n// input: timeStr: 1200\n// output: 1500\nexport const convertTimeFromUTC = (utcTimeStr: string, zone = 'Asia/Beirut') => {\n\tconst hour = Number(utcTimeStr.slice(0, 2));\n\tconst minute = Number(utcTimeStr.slice(2));\n\treturn dayjs()\n\t\t.utc()\n\t\t.set('hour', hour)\n\t\t.set('minute', minute)\n\t\t.set('second', 0)\n\t\t.set('millisecond', 0)\n\t\t.tz(zone)\n\t\t.format('HHmm');\n};\n\n\nexport function normalizeWorkingHourTimeFormat(data: any) {\n\tconst timeRegex = /^(\\d{1,2}):(\\d{1,2})$/;\n\n\tconst convert = (timeStr: string) => {\n\t\tconst match = timeStr.match(timeRegex);\n\t\tif (!match) return timeStr;\n\t\tconst hours = match[1].padStart(2, '0');\n\t\tconst minutes = match[2].padStart(2, '0');\n\t\treturn `${hours}${minutes}`;\n\t};\n\n\tconst transform: any = (obj: any) => {\n\n\t\tif (Array.isArray(obj)) {\n\t\t\treturn obj.map(transform);\n\t\t} else if (typeof obj === 'object' && obj !== null) {\n\t\t\tfor (const key in obj) {\n\t\t\t\tif (typeof obj[key] === 'string' && timeRegex.test(obj[key])) {\n\t\t\t\t\tobj[key] = convert(obj[key]);\n\t\t\t\t} else if (typeof obj[key] === 'object') {\n\t\t\t\t\tobj[key] = transform(obj[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn obj;\n\t};\n\n\treturn transform(JSON.parse(JSON.stringify(data))); // deep copy to avoid mutation\n}\n\nexport function deNormalizeWorkingHourTimeFormat(data: any) {\n\tconst timeRegex = /^(\\d{2})(\\d{2})$/;\n\n\tconst convert = (timeStr: string) => {\n\t\tconst match = timeStr.match(timeRegex);\n\t\tif (!match) return timeStr;\n\t\tconst hours = String(Number(match[1])); // remove leading zero\n\t\tconst minutes = String(Number(match[2])).padStart(2, '0');\n\t\treturn `${hours}:${minutes}`;\n\t};\n\n\tconst transform: any = (obj: any) => {\n\t\tif (Array.isArray(obj)) {\n\t\t\treturn obj.map(transform);\n\t\t} else if (typeof obj === 'object' && obj !== null) {\n\t\t\tfor (const key in obj) {\n\t\t\t\tif (typeof obj[key] === 'string' && timeRegex.test(obj[key])) {\n\t\t\t\t\tobj[key] = convert(obj[key]);\n\t\t\t\t} else if (typeof obj[key] === 'object') {\n\t\t\t\t\tobj[key] = transform(obj[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn obj;\n\t};\n\t// return transform(JSON.parse((data)));\n\treturn transform(JSON.parse(JSON.stringify(data)));\n}\n\nexport function parseTime(time: string): number {\n\tconst [hh, mm] = formatTimeString(time).split(\":\").map(Number);\n\tif (\n\t\tisNaN(hh) || isNaN(mm) ||\n\t\thh < 0 || hh > 23 ||\n\t\tmm < 0 || mm > 59\n\t) {\n\t\tbadRequestError(`Invalid time format: ${formatTimeString(time)}`);\n\t}\n\n\treturn hh * 60 + mm;\n}\n\n// i/p: 0600, o/p: 06:00 \nexport function formatTimeString(time: string): string {\n\tif (!/^\\d{4}$/.test(time)) {\n\t\tbadRequestError(`Invalid time format: ${time}`);\n\t}\n\treturn time.slice(0, 2) + \":\" + time.slice(2);\n}\n\nexport function getCurrentTimeInfo() {\n\tconst currentTimeStamp = dayjs().tz(LyxaTimezone);\n\tconst timeInHHmm = Number(currentTimeStamp.format('HHmm')); // 0930\n\treturn {\n\t\tcurrentTimeStamp,\n\t\ttimeInHHmm\n\t}\n}\n\n"]}
1
+ {"version":3,"file":"time.js","sourceRoot":"/","sources":["utilities/time.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport { badRequestError } from './error-common';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nexport const LyxaTimezone = 'Asia/Dhaka';\n\n// input: timeStr: 1500\n// output: 1200\nexport const convertTimeToUTC = (timeStr: string, zone = 'Asia/Beirut') => {\n const hour = Number(timeStr.slice(0, 2));\n const minute = Number(timeStr.slice(2));\n return dayjs()\n .tz(zone)\n .set('hour', hour)\n .set('minute', minute)\n .set('second', 0)\n .set('millisecond', 0)\n .utc()\n .format('HHmm');\n};\n\n// input: timeStr: 1200\n// output: 1500\nexport const convertTimeFromUTC = (utcTimeStr: string, zone = 'Asia/Beirut') => {\n const hour = Number(utcTimeStr.slice(0, 2));\n const minute = Number(utcTimeStr.slice(2));\n return dayjs()\n .utc()\n .set('hour', hour)\n .set('minute', minute)\n .set('second', 0)\n .set('millisecond', 0)\n .tz(zone)\n .format('HHmm');\n};\n\n\nexport function normalizeWorkingHourTimeFormat(data: any) {\n\tconst timeRegex = /^(\\d{1,2}):(\\d{1,2})$/;\n\n\tconst convert = (timeStr: string) => {\n\t\tconst match = timeStr.match(timeRegex);\n\t\tif (!match) return timeStr;\n\t\tconst hours = match[1].padStart(2, '0');\n\t\tconst minutes = match[2].padStart(2, '0');\n\t\treturn `${hours}${minutes}`;\n\t};\n\n\tconst transform: any = (obj: any) => {\n\t\t\n\t\tif (Array.isArray(obj)) {\n\t\t\treturn obj.map(transform);\n\t\t} else if (typeof obj === 'object' && obj !== null) {\n\t\t\tfor (const key in obj) {\n\t\t\t\tif (typeof obj[key] === 'string' && timeRegex.test(obj[key])) {\n\t\t\t\t\tobj[key] = convert(obj[key]);\n\t\t\t\t} else if (typeof obj[key] === 'object') {\n\t\t\t\t\tobj[key] = transform(obj[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn obj;\n\t};\n\n\treturn transform(JSON.parse(JSON.stringify(data))); // deep copy to avoid mutation\n}\n\nexport function deNormalizeWorkingHourTimeFormat(data: any) {\n\tconst timeRegex = /^(\\d{2})(\\d{2})$/;\n\n\tconst convert = (timeStr: string) => {\n\t\tconst match = timeStr.match(timeRegex);\n\t\tif (!match) return timeStr;\n\t\tconst hours = String(Number(match[1])); // remove leading zero\n\t\tconst minutes = String(Number(match[2])).padStart(2, '0');\n\t\treturn `${hours}:${minutes}`;\n\t};\n\n\tconst transform: any = (obj: any) => {\n\t\tif (Array.isArray(obj)) {\n\t\t\treturn obj.map(transform);\n\t\t} else if (typeof obj === 'object' && obj !== null) {\n\t\t\tfor (const key in obj) {\n\t\t\t\tif (typeof obj[key] === 'string' && timeRegex.test(obj[key])) {\n\t\t\t\t\tobj[key] = convert(obj[key]);\n\t\t\t\t} else if (typeof obj[key] === 'object') {\n\t\t\t\t\tobj[key] = transform(obj[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn obj;\n\t};\n\t// return transform(JSON.parse((data)));\n\treturn transform(JSON.parse(JSON.stringify(data)));\n}\n\nexport function parseTime(time: string): number {\n const [hh, mm] = formatTimeString(time).split(\":\").map(Number);\n if (\n isNaN(hh) || isNaN(mm) ||\n hh < 0 || hh > 23 ||\n mm < 0 || mm > 59\n ) {\n badRequestError(`Invalid time format: ${formatTimeString(time)}`);\n }\n\n return hh * 60 + mm;\n}\n\n// i/p: 0600, o/p: 06:00 \nexport function formatTimeString(time: string): string {\n if (!/^\\d{4}$/.test(time)) {\n badRequestError(`Invalid time format: ${time}`);\n }\n return time.slice(0, 2) + \":\" + time.slice(2);\n}\n\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lyxa.ai/core",
3
- "version": "1.1.110",
3
+ "version": "1.1.112",
4
4
  "description": "The Core system of the Lyxa services.",
5
5
  "author": "elie <42282499+Internalizable@users.noreply.github.com>",
6
6
  "license": "MIT",