@lyxa.ai/core 1.1.10 → 1.1.12
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/event/index.js +1 -1
- package/dist/libraries/event/index.js.map +1 -1
- package/dist/libraries/mongo/models/embedded/shop-search-fields.model.d.ts +9 -9
- package/dist/libraries/mongo/models/embedded/shop-search-fields.model.js +19 -19
- package/dist/libraries/mongo/models/embedded/shop-search-fields.model.js.map +1 -1
- package/dist/libraries/mongo/models/service-category.model.d.ts +2 -1
- package/dist/libraries/mongo/models/service-category.model.js +5 -0
- package/dist/libraries/mongo/models/service-category.model.js.map +1 -1
- package/dist/libraries/mongo/models/user.model.d.ts +1 -1
- package/dist/libraries/socket/BaseSocketEvent.d.ts +4 -3
- package/dist/libraries/socket/BaseSocketEvent.js +7 -0
- package/dist/libraries/socket/BaseSocketEvent.js.map +1 -1
- package/dist/libraries/socket/core/socket-event-registry.d.ts +15 -35
- package/dist/libraries/socket/core/socket-event-registry.js +12 -16
- package/dist/libraries/socket/core/socket-event-registry.js.map +1 -1
- package/dist/libraries/socket/core/socket-redis-connections.js.map +1 -1
- package/dist/libraries/socket/events/chatlist-message-send.socket.event.d.ts +0 -1
- package/dist/libraries/socket/events/chatlist-message-send.socket.event.js +1 -4
- package/dist/libraries/socket/events/chatlist-message-send.socket.event.js.map +1 -1
- package/dist/libraries/socket/events/chatroom-message-send.socket.event.d.ts +0 -1
- package/dist/libraries/socket/events/chatroom-message-send.socket.event.js +0 -3
- package/dist/libraries/socket/events/chatroom-message-send.socket.event.js.map +1 -1
- package/dist/libraries/socket/events/ticket-assign.socket.event.d.ts +159 -0
- package/dist/libraries/socket/events/ticket-assign.socket.event.js +39 -0
- package/dist/libraries/socket/events/ticket-assign.socket.event.js.map +1 -0
- package/dist/libraries/socket/events/ticket-unassign.socket.event.d.ts +24 -0
- package/dist/libraries/socket/events/ticket-unassign.socket.event.js +22 -0
- package/dist/libraries/socket/events/ticket-unassign.socket.event.js.map +1 -0
- package/dist/libraries/socket/socket-event-registry.map.d.ts +9 -0
- package/dist/libraries/socket/socket-event-registry.map.js +27 -0
- package/dist/libraries/socket/socket-event-registry.map.js.map +1 -0
- package/dist/libraries/trpc/middlewares/createSocketSubscriptionProcedure.d.ts +2 -2
- package/dist/libraries/trpc/middlewares/createSocketSubscriptionProcedure.js.map +1 -1
- package/dist/types/README.md +1 -1
- package/dist/types/package.json +1 -1
- package/dist/types/utilities/enum.d.ts +4 -1
- package/dist/types/utilities/enum.js +3 -0
- package/dist/types/utilities/enum.js.map +1 -1
- package/dist/types/utilities/validation/common-validation.d.ts +138 -14
- package/dist/types/utilities/validation/common-validation.js +16 -3
- package/dist/types/utilities/validation/common-validation.js.map +1 -1
- package/dist/types/utilities/validation/global-validation.d.ts +38 -14
- package/dist/utilities/enum.d.ts +4 -1
- package/dist/utilities/enum.js +3 -0
- package/dist/utilities/enum.js.map +1 -1
- package/dist/utilities/validation/common-validation.d.ts +138 -14
- package/dist/utilities/validation/common-validation.js +16 -3
- package/dist/utilities/validation/common-validation.js.map +1 -1
- package/dist/utilities/validation/global-validation.d.ts +38 -14
- package/package.json +1 -1
|
@@ -79,7 +79,7 @@ async function subscribeToSocketEvent() {
|
|
|
79
79
|
}
|
|
80
80
|
async function publishSocketEvent(event, recipients) {
|
|
81
81
|
const redisService = (0, index_1.getLibraries)().getRedisService();
|
|
82
|
-
const localKey = event.
|
|
82
|
+
const localKey = event.getSubscriptionKey();
|
|
83
83
|
const payload = event.payload();
|
|
84
84
|
for (const recipient of recipients) {
|
|
85
85
|
const isSub = await (0, socket_redis_connections_1.isEntitySubscribed)(recipient, localKey);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/event/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/event/index.ts"],"names":[],"mappings":"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","sourcesContent":["import amqp from 'amqplib';\nimport { BaseEvent } from './BaseEvent';\nimport { getInstanceId } from '../../utilities/instance.utils';\nimport { BaseSocketEvent } from '../socket/BaseSocketEvent';\nimport { getLibraries } from '../../index';\nimport { LocalSubs } from '../socket/core/local-subscription-registry';\nimport { isEntitySubscribed, kEntityEvents, kEntityInstances } from '../socket/core/socket-redis-connections';\n\nlet connection: amqp.ChannelModel;\nlet channel: amqp.Channel;\nconst EXCHANGE_NAME = 'lyxa.events';\nconst INSTANCE_ROUTE_PREFIX = 'instance'; // routing key: instance.{instanceName}.{eventType}\n\nexport async function initEventBus(rabbitUrl: string) {\n\tconnection = await amqp.connect(rabbitUrl);\n\tchannel = await connection.createChannel();\n\tawait channel.assertExchange(EXCHANGE_NAME, 'topic', { durable: true });\n\tconsole.log(`EventBus initialized with instance ID: ${getInstanceId()}`);\n}\n\nexport async function publishEvent<TPayload extends Record<string, unknown>>(\n\tevent: BaseEvent<TPayload>\n): Promise<void> {\n\tif (!channel) throw new Error('Channel not initialized. Call initEventBus first.');\n\tconst messageBuffer = Buffer.from(JSON.stringify(event.payload));\n\tchannel.publish(EXCHANGE_NAME, event.eventId, messageBuffer, {\n\t\tcontentType: 'application/json',\n\t});\n\tconsole.log(`Published event [${event.eventId}] with payload`, event.payload);\n}\n\nexport async function subscribeToEvent(\n\teventId: string,\n\tonMessage: (payload: any) => Promise<void>\n): Promise<void> {\n\tif (!channel) throw new Error('Channel not initialized. Call initEventBus first.');\n\tconst queueName = `${eventId}-${getInstanceId()}`;\n\tawait channel.assertQueue(queueName, {\n\t\tdurable: false,\n\t\texclusive: true,\n\t\tautoDelete: true,\n\t});\n\tawait channel.bindQueue(queueName, EXCHANGE_NAME, eventId);\n\tawait channel.consume(\n\t\tqueueName,\n\t\tasync msg => {\n\t\t\tif (msg !== null) {\n\t\t\t\tconst payloadString = msg.content.toString();\n\t\t\t\tconst payload = JSON.parse(payloadString);\n\t\t\t\ttry {\n\t\t\t\t\tawait onMessage(payload);\n\t\t\t\t\tchannel.ack(msg);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconsole.error(`Error handling event [${eventId}] on instance [${getInstanceId()}]`, err);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{ noAck: false }\n\t);\n\tconsole.log(`Subscribed to event [${eventId}] on queue [${queueName}] for instance [${getInstanceId()}]`);\n}\n\nexport async function subscribeToSocketEvent() {\n\tconst queueName = `socket-events-${getInstanceId()}`;\n\tawait channel.assertQueue(queueName, { durable: true });\n\tawait channel.bindQueue(queueName, EXCHANGE_NAME, `instance.${getInstanceId()}`);\n\n\tawait channel.consume(queueName, msg => {\n\t\tif (!msg) return;\n\t\ttry {\n\t\t\tconst { localKey, payload, recipient } = JSON.parse(msg.content.toString('utf8'));\n\t\t\tLocalSubs.emit(recipient, localKey, payload);\n\t\t\tchannel.ack(msg);\n\t\t} catch (e) {\n\t\t\tconsole.error('Failed to handle instance event', e);\n\t\t\tchannel.nack(msg, false, false);\n\t\t}\n\t});\n\n\treturn channel;\n}\nexport async function publishSocketEvent(\n\tevent: BaseSocketEvent<any, any>,\n\trecipients: string[]\n): Promise<void> {\n\tconst redisService = getLibraries().getRedisService();\n\tconst localKey = event.getSubscriptionKey();\n\tconst payload = event.payload();\n\n\tfor (const recipient of recipients) {\n\t\tconst isSub = await isEntitySubscribed(recipient, localKey);\n\t\tif (!isSub) {\n\t\t\t// Not subscribed → push notification fallback\n\t\t\t// TODO: queue push notification for { recipient, eventType, payload }\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst instanceNames = await redisService.getSetMembers(kEntityInstances(recipient));\n\t\tif (!instanceNames.length) {\n\t\t\t// No active instances → push notification fallback\n\t\t\t// TODO: queue push notification for { recipient, eventType, payload }\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Publish to every instance with routing\n\t\tfor (const instanceName of instanceNames) {\n\t\t\tconst routingKey = `${INSTANCE_ROUTE_PREFIX}.${instanceName}`;\n\t\t\tconst messageBuffer = Buffer.from(JSON.stringify({ localKey, payload, recipient }), 'utf8');\n\t\t\tchannel.publish(EXCHANGE_NAME, routingKey, messageBuffer, {\n\t\t\t\tcontentType: 'application/json',\n\t\t\t\tpersistent: true,\n\t\t\t});\n\t\t}\n\t}\n}\n\nexport async function closeEventBus(): Promise<void> {\n\tif (channel) await channel.close();\n\tif (connection) await connection.close();\n\tconsole.log(`EventBus closed for instance [${getInstanceId()}]`);\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export declare class
|
|
2
|
-
autocomplete?: string;
|
|
3
|
-
fulltext?: string;
|
|
1
|
+
export declare class AutoFullTextSearchFields {
|
|
2
|
+
autocomplete?: string[];
|
|
3
|
+
fulltext?: string[];
|
|
4
4
|
}
|
|
5
5
|
export declare class ShopSearchFields {
|
|
6
|
-
name?:
|
|
7
|
-
products?:
|
|
8
|
-
tags?:
|
|
9
|
-
parentCategories?:
|
|
10
|
-
subCategories?:
|
|
11
|
-
brands?:
|
|
6
|
+
name?: AutoFullTextSearchFields;
|
|
7
|
+
products?: AutoFullTextSearchFields;
|
|
8
|
+
tags?: AutoFullTextSearchFields;
|
|
9
|
+
parentCategories?: AutoFullTextSearchFields;
|
|
10
|
+
subCategories?: AutoFullTextSearchFields;
|
|
11
|
+
brands?: AutoFullTextSearchFields;
|
|
12
12
|
}
|
|
@@ -9,21 +9,21 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.ShopSearchFields = exports.
|
|
12
|
+
exports.ShopSearchFields = exports.AutoFullTextSearchFields = void 0;
|
|
13
13
|
const typegoose_1 = require("@typegoose/typegoose");
|
|
14
|
-
class
|
|
14
|
+
class AutoFullTextSearchFields {
|
|
15
15
|
autocomplete;
|
|
16
16
|
fulltext;
|
|
17
17
|
}
|
|
18
|
-
exports.
|
|
18
|
+
exports.AutoFullTextSearchFields = AutoFullTextSearchFields;
|
|
19
19
|
__decorate([
|
|
20
20
|
(0, typegoose_1.prop)({ type: [String] }),
|
|
21
|
-
__metadata("design:type",
|
|
22
|
-
],
|
|
21
|
+
__metadata("design:type", Array)
|
|
22
|
+
], AutoFullTextSearchFields.prototype, "autocomplete", void 0);
|
|
23
23
|
__decorate([
|
|
24
24
|
(0, typegoose_1.prop)({ type: [String] }),
|
|
25
|
-
__metadata("design:type",
|
|
26
|
-
],
|
|
25
|
+
__metadata("design:type", Array)
|
|
26
|
+
], AutoFullTextSearchFields.prototype, "fulltext", void 0);
|
|
27
27
|
class ShopSearchFields {
|
|
28
28
|
name;
|
|
29
29
|
products;
|
|
@@ -34,27 +34,27 @@ class ShopSearchFields {
|
|
|
34
34
|
}
|
|
35
35
|
exports.ShopSearchFields = ShopSearchFields;
|
|
36
36
|
__decorate([
|
|
37
|
-
(0, typegoose_1.prop)({ type:
|
|
38
|
-
__metadata("design:type",
|
|
37
|
+
(0, typegoose_1.prop)({ type: AutoFullTextSearchFields }),
|
|
38
|
+
__metadata("design:type", AutoFullTextSearchFields)
|
|
39
39
|
], ShopSearchFields.prototype, "name", void 0);
|
|
40
40
|
__decorate([
|
|
41
|
-
(0, typegoose_1.prop)({ type:
|
|
42
|
-
__metadata("design:type",
|
|
41
|
+
(0, typegoose_1.prop)({ type: AutoFullTextSearchFields }),
|
|
42
|
+
__metadata("design:type", AutoFullTextSearchFields)
|
|
43
43
|
], ShopSearchFields.prototype, "products", void 0);
|
|
44
44
|
__decorate([
|
|
45
|
-
(0, typegoose_1.prop)({ type:
|
|
46
|
-
__metadata("design:type",
|
|
45
|
+
(0, typegoose_1.prop)({ type: AutoFullTextSearchFields }),
|
|
46
|
+
__metadata("design:type", AutoFullTextSearchFields)
|
|
47
47
|
], ShopSearchFields.prototype, "tags", void 0);
|
|
48
48
|
__decorate([
|
|
49
|
-
(0, typegoose_1.prop)({ type:
|
|
50
|
-
__metadata("design:type",
|
|
49
|
+
(0, typegoose_1.prop)({ type: AutoFullTextSearchFields }),
|
|
50
|
+
__metadata("design:type", AutoFullTextSearchFields)
|
|
51
51
|
], ShopSearchFields.prototype, "parentCategories", void 0);
|
|
52
52
|
__decorate([
|
|
53
|
-
(0, typegoose_1.prop)({ type:
|
|
54
|
-
__metadata("design:type",
|
|
53
|
+
(0, typegoose_1.prop)({ type: AutoFullTextSearchFields }),
|
|
54
|
+
__metadata("design:type", AutoFullTextSearchFields)
|
|
55
55
|
], ShopSearchFields.prototype, "subCategories", void 0);
|
|
56
56
|
__decorate([
|
|
57
|
-
(0, typegoose_1.prop)({ type:
|
|
58
|
-
__metadata("design:type",
|
|
57
|
+
(0, typegoose_1.prop)({ type: AutoFullTextSearchFields }),
|
|
58
|
+
__metadata("design:type", AutoFullTextSearchFields)
|
|
59
59
|
], ShopSearchFields.prototype, "brands", void 0);
|
|
60
60
|
//# sourceMappingURL=shop-search-fields.model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shop-search-fields.model.js","sourceRoot":"/","sources":["libraries/mongo/models/embedded/shop-search-fields.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA4C;AAC5C,MAAa,
|
|
1
|
+
{"version":3,"file":"shop-search-fields.model.js","sourceRoot":"/","sources":["libraries/mongo/models/embedded/shop-search-fields.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA4C;AAC5C,MAAa,wBAAwB;IAE7B,YAAY,CAAY;IAGxB,QAAQ,CAAY;CAC3B;AAND,4DAMC;AAJO;IADH,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;;8DACG;AAGxB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;;0DACE;AAE5B,MAAa,gBAAgB;IAErB,IAAI,CAA4B;IAGhC,QAAQ,CAA4B;IAGpC,IAAI,CAA4B;IAG7B,gBAAgB,CAA4B;IAG5C,aAAa,CAA4B;IAG5C,MAAM,CAA4B;CACzC;AAlBD,4CAkBC;AAhBO;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;8BAC3B,wBAAwB;8CAAC;AAGhC;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;8BACvB,wBAAwB;kDAAC;AAGpC;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;8BAC3B,wBAAwB;8CAAC;AAG7B;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;8BACf,wBAAwB;0DAAC;AAG5C;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;8BAClB,wBAAwB;uDAAC;AAG5C;IADH,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;8BAC5B,wBAAwB;gDAAC","sourcesContent":["import { prop } from '@typegoose/typegoose';\nexport class AutoFullTextSearchFields {\n @prop({ type: [String] })\n\tpublic autocomplete?: string[];\n\n\t@prop({ type: [String] })\n\tpublic fulltext?: string[]; \n}\nexport class ShopSearchFields {\n\t@prop({ type: AutoFullTextSearchFields })\n\tpublic name?: AutoFullTextSearchFields;\n\n\t@prop({ type: AutoFullTextSearchFields })\n\tpublic products?: AutoFullTextSearchFields;\n\n\t@prop({ type: AutoFullTextSearchFields })\n\tpublic tags?: AutoFullTextSearchFields; \n\n @prop({ type: AutoFullTextSearchFields })\n public parentCategories?: AutoFullTextSearchFields; \n\n @prop({ type: AutoFullTextSearchFields })\n public subCategories?: AutoFullTextSearchFields; \n\n @prop({ type: AutoFullTextSearchFields })\n\tpublic brands?: AutoFullTextSearchFields; \n}\n"]}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Ref } from '@typegoose/typegoose';
|
|
2
2
|
import { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';
|
|
3
|
-
import { Status } from '../../../utilities/enum';
|
|
3
|
+
import { ServiceType, Status } from '../../../utilities/enum';
|
|
4
4
|
import { Vendor } from './vendor.model';
|
|
5
5
|
import { Service } from './service.model';
|
|
6
6
|
export declare class ServiceCategory extends TimeStamps {
|
|
7
7
|
name: string;
|
|
8
8
|
service: Ref<Service>;
|
|
9
|
+
serviceType: ServiceType;
|
|
9
10
|
vendor: Ref<Vendor>;
|
|
10
11
|
image?: string;
|
|
11
12
|
status: Status;
|
|
@@ -18,6 +18,7 @@ const service_model_1 = require("./service.model");
|
|
|
18
18
|
let ServiceCategory = class ServiceCategory extends defaultClasses_1.TimeStamps {
|
|
19
19
|
name;
|
|
20
20
|
service;
|
|
21
|
+
serviceType;
|
|
21
22
|
vendor;
|
|
22
23
|
image;
|
|
23
24
|
status;
|
|
@@ -31,6 +32,10 @@ __decorate([
|
|
|
31
32
|
(0, typegoose_1.prop)({ required: true, ref: () => service_model_1.Service }),
|
|
32
33
|
__metadata("design:type", Object)
|
|
33
34
|
], ServiceCategory.prototype, "service", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, typegoose_1.prop)({ required: true, type: String, enum: enum_1.ServiceType }),
|
|
37
|
+
__metadata("design:type", String)
|
|
38
|
+
], ServiceCategory.prototype, "serviceType", void 0);
|
|
34
39
|
__decorate([
|
|
35
40
|
(0, typegoose_1.prop)({ required: true, ref: () => vendor_model_1.Vendor }),
|
|
36
41
|
__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-category.model.js","sourceRoot":"/","sources":["libraries/mongo/models/service-category.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"service-category.model.js","sourceRoot":"/","sources":["libraries/mongo/models/service-category.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA+D;AAC/D,4EAAqE;AACrE,kDAA8D;AAC9D,iDAAwC;AACxC,mDAA0C;AAInC,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,2BAAU;IAEvC,IAAI,CAAU;IAGd,OAAO,CAAe;IAGtB,WAAW,CAAc;IAGtB,MAAM,CAAe;IAGxB,KAAK,CAAU;IAGf,MAAM,CAAU;CACvB,CAAA;AAlBY,0CAAe;AAEpB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;;6CAC7C;AAGd;IADH,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAC,GAAE,EAAE,CAAC,uBAAO,EAAE,CAAC;;gDACjB;AAGtB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAW,EAAE,CAAC;;oDAC1B;AAGtB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,EAAE,CAAC;;+CAChB;AAGxB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;8CACD;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAM,EAAE,OAAO,EAAE,aAAM,CAAC,MAAM,EAAE,CAAC;;+CACtC;0BAjBX,eAAe;IAF3B,IAAA,wBAAY,EAAC,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,EAAE,CAAC;GAExD,eAAe,CAkB3B","sourcesContent":["import { modelOptions, prop, Ref } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport { ServiceType, Status } from '../../../utilities/enum';\nimport { Vendor } from './vendor.model';\nimport { Service } from './service.model';\n\n@modelOptions({ schemaOptions: { collection: 'serviceCategories' } })\n\nexport class ServiceCategory extends TimeStamps {\n\t@prop({ required: true, type: String, trim: true, maxlength: 20 })\n\tpublic name!: string;\n\n @prop({ required: true, ref:()=> Service })\n\tpublic service!: Ref<Service>\n\n\t@prop({ required: true, type: String, enum: ServiceType })\n\tpublic serviceType!: ServiceType\n\n @prop({ required: true, ref: () => Vendor })\n public vendor!: Ref<Vendor>;\n\n\t@prop({ type: String })\n\tpublic image?: string;\n\n\t@prop({ type: String, enum: Status, default: Status.ACTIVE })\n\tpublic status!: Status;\n}\n"]}
|
|
@@ -31,7 +31,7 @@ export declare class User extends TimeStamps {
|
|
|
31
31
|
isPhoneVerified?: boolean;
|
|
32
32
|
onlineStatus?: OnlineStatus;
|
|
33
33
|
fcmTokens?: string[];
|
|
34
|
-
static updateWallet(this: ReturnModelType<typeof User>, userId: string, amount: number): Promise<(import("mongoose").Document<unknown, import("@typegoose/typegoose/lib/types").BeAnObject, User, import("@typegoose/typegoose/lib/types").BeAnyObject
|
|
34
|
+
static updateWallet(this: ReturnModelType<typeof User>, userId: string, amount: number): Promise<(import("mongoose").Document<unknown, import("@typegoose/typegoose/lib/types").BeAnObject, User, import("@typegoose/typegoose/lib/types").BeAnyObject> & Omit<User & {
|
|
35
35
|
_id: import("mongoose").Types.ObjectId;
|
|
36
36
|
} & {
|
|
37
37
|
__v: number;
|
|
@@ -2,10 +2,11 @@ import z, { ZodTypeAny } from 'zod';
|
|
|
2
2
|
import { SocketEventType } from '../../utilities/enum';
|
|
3
3
|
export declare abstract class BaseSocketEvent<SIn extends ZodTypeAny, SOut extends ZodTypeAny> {
|
|
4
4
|
protected readonly _eventType: SocketEventType;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
readonly inputSchema: SIn;
|
|
6
|
+
readonly outputSchema: SOut;
|
|
7
7
|
protected readonly data: z.infer<SOut>;
|
|
8
|
-
|
|
8
|
+
getSubscriptionKey(): string;
|
|
9
|
+
static identifier(input: any): string;
|
|
9
10
|
protected constructor(eventType: SocketEventType, schemas: {
|
|
10
11
|
input: SIn;
|
|
11
12
|
output: SOut;
|
|
@@ -6,6 +6,13 @@ class BaseSocketEvent {
|
|
|
6
6
|
inputSchema;
|
|
7
7
|
outputSchema;
|
|
8
8
|
data;
|
|
9
|
+
getSubscriptionKey() {
|
|
10
|
+
const identifier = this.constructor.identifier(this.data);
|
|
11
|
+
return `${this._eventType}:${identifier}`;
|
|
12
|
+
}
|
|
13
|
+
static identifier(input) {
|
|
14
|
+
return 'default';
|
|
15
|
+
}
|
|
9
16
|
constructor(eventType, schemas, data) {
|
|
10
17
|
this._eventType = eventType;
|
|
11
18
|
this.inputSchema = schemas.input;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseSocketEvent.js","sourceRoot":"/","sources":["libraries/socket/BaseSocketEvent.ts"],"names":[],"mappings":";;;AAGA,MAAsB,eAAe;IACjB,UAAU,CAAkB;
|
|
1
|
+
{"version":3,"file":"BaseSocketEvent.js","sourceRoot":"/","sources":["libraries/socket/BaseSocketEvent.ts"],"names":[],"mappings":";;;AAGA,MAAsB,eAAe;IACjB,UAAU,CAAkB;IACtC,WAAW,CAAM;IACjB,YAAY,CAAO;IACT,IAAI,CAAgB;IAEhC,kBAAkB;QACxB,MAAM,UAAU,GAAI,IAAI,CAAC,WAAsC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtF,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,KAAU;QAC3B,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,YACC,SAA0B,EAC1B,OAAqC,EACrC,IAAmB;QAEnB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;QAEnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEM,OAAO;QACb,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAEM,SAAS;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;CACD;AAlCD,0CAkCC","sourcesContent":["import z, { ZodTypeAny } from 'zod';\nimport { SocketEventType } from '../../utilities/enum';\n\nexport abstract class BaseSocketEvent<SIn extends ZodTypeAny, SOut extends ZodTypeAny> {\n\tprotected readonly _eventType: SocketEventType;\n\treadonly inputSchema: SIn;\n\treadonly outputSchema: SOut;\n\tprotected readonly data: z.infer<SOut>;\n\n\tpublic getSubscriptionKey(): string {\n\t\tconst identifier = (this.constructor as typeof BaseSocketEvent).identifier(this.data);\n\t\treturn `${this._eventType}:${identifier}`;\n\t}\n\n\tstatic identifier(input: any): string {\n\t\treturn 'default';\n\t}\n\n\tprotected constructor(\n\t\teventType: SocketEventType,\n\t\tschemas: { input: SIn; output: SOut },\n\t\tdata: z.infer<SOut>\n\t) {\n\t\tthis._eventType = eventType;\n\t\tthis.inputSchema = schemas.input;\n\t\tthis.outputSchema = schemas.output;\n\n\t\tthis.data = this.outputSchema.parse(data);\n\t}\n\n\tpublic payload(): z.infer<SOut> {\n\t\treturn this.data;\n\t}\n\n\tpublic eventType(): SocketEventType {\n\t\treturn this._eventType;\n\t}\n}"]}
|
|
@@ -1,42 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { ChatroomMessageSendEvent, ChatroomMessageSendInput, ChatroomMessageSendOutput } from '../events/chatroom-message-send.socket.event';
|
|
1
|
+
import { z } from 'zod';
|
|
3
2
|
import { SocketEventType } from '../../../utilities/enum';
|
|
4
3
|
import { BaseSocketEvent } from '../BaseSocketEvent';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}, "strip", z.ZodTypeAny, {
|
|
12
|
-
chatroomId: import("mongoose").Types.ObjectId;
|
|
13
|
-
}, {
|
|
14
|
-
chatroomId: import("mongoose").Types.ObjectId;
|
|
15
|
-
}>;
|
|
16
|
-
readonly output: z.ZodObject<{
|
|
17
|
-
chatroomId: z.ZodEffects<z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>, import("mongoose").Types.ObjectId, import("mongoose").Types.ObjectId>;
|
|
18
|
-
messageId: z.ZodEffects<z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>, import("mongoose").Types.ObjectId, import("mongoose").Types.ObjectId>;
|
|
19
|
-
content: z.ZodString | z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
20
|
-
createdAt: z.ZodEffects<z.ZodEffects<z.ZodDate, Date, Date>, Date, Date>;
|
|
21
|
-
}, "strip", z.ZodTypeAny, {
|
|
22
|
-
content: string;
|
|
23
|
-
createdAt: Date;
|
|
24
|
-
chatroomId: import("mongoose").Types.ObjectId;
|
|
25
|
-
messageId: import("mongoose").Types.ObjectId;
|
|
26
|
-
}, {
|
|
27
|
-
content: string;
|
|
28
|
-
createdAt: Date;
|
|
29
|
-
chatroomId: import("mongoose").Types.ObjectId;
|
|
30
|
-
messageId: import("mongoose").Types.ObjectId;
|
|
31
|
-
}>;
|
|
32
|
-
readonly identifier: typeof ChatroomMessageSendEvent.identifier;
|
|
4
|
+
import { REGISTRY } from '../socket-event-registry.map';
|
|
5
|
+
interface EventRegistration<TEvent extends BaseSocketEvent<any, any>> {
|
|
6
|
+
ctor: new (payload: z.input<TEvent['outputSchema']>) => TEvent;
|
|
7
|
+
schemas: {
|
|
8
|
+
input: TEvent['inputSchema'];
|
|
9
|
+
output: TEvent['outputSchema'];
|
|
33
10
|
};
|
|
34
|
-
|
|
11
|
+
identifier?: (input: z.infer<TEvent['inputSchema']>) => string;
|
|
12
|
+
}
|
|
35
13
|
type Registry = typeof REGISTRY;
|
|
36
|
-
type
|
|
14
|
+
type InputFor<T extends SocketEventType> = z.infer<Registry[T]['schemas']['input']>;
|
|
15
|
+
type OutputFor<T extends SocketEventType> = z.infer<Registry[T]['schemas']['output']>;
|
|
37
16
|
type EventFor<T extends SocketEventType> = InstanceType<Registry[T]['ctor']>;
|
|
38
17
|
export declare class EventFactory {
|
|
39
|
-
static
|
|
40
|
-
static getSubscriptionKey<T extends SocketEventType>(
|
|
18
|
+
static getRegistration<T extends SocketEventType>(eventType: T): Registry[T];
|
|
19
|
+
static getSubscriptionKey<T extends SocketEventType>(eventType: T, input: InputFor<T>, subKey?: string): string;
|
|
20
|
+
static createEvent<T extends SocketEventType>(eventType: T, payload: OutputFor<T>): EventFor<T>;
|
|
41
21
|
}
|
|
42
|
-
export {};
|
|
22
|
+
export type { Registry, EventFor, InputFor, OutputFor, EventRegistration };
|
|
@@ -1,24 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EventFactory = void 0;
|
|
4
|
-
const
|
|
5
|
-
const enum_1 = require("../../../utilities/enum");
|
|
6
|
-
const REGISTRY = {
|
|
7
|
-
[enum_1.SocketEventType.CHATROOM_MESSAGE_SEND]: {
|
|
8
|
-
ctor: chatroom_message_send_socket_event_1.ChatroomMessageSendEvent,
|
|
9
|
-
input: chatroom_message_send_socket_event_1.ChatroomMessageSendEvent.schemas.input,
|
|
10
|
-
output: chatroom_message_send_socket_event_1.ChatroomMessageSendEvent.schemas.output,
|
|
11
|
-
identifier: chatroom_message_send_socket_event_1.ChatroomMessageSendEvent.identifier,
|
|
12
|
-
},
|
|
13
|
-
};
|
|
4
|
+
const socket_event_registry_map_1 = require("../socket-event-registry.map");
|
|
14
5
|
class EventFactory {
|
|
15
|
-
static
|
|
16
|
-
|
|
17
|
-
return new ctor(data);
|
|
6
|
+
static getRegistration(eventType) {
|
|
7
|
+
return socket_event_registry_map_1.REGISTRY[eventType];
|
|
18
8
|
}
|
|
19
|
-
static getSubscriptionKey(
|
|
20
|
-
const { identifier } =
|
|
21
|
-
|
|
9
|
+
static getSubscriptionKey(eventType, input, subKey) {
|
|
10
|
+
const { identifier, schemas } = this.getRegistration(eventType);
|
|
11
|
+
const validatedInput = schemas.input.parse(input);
|
|
12
|
+
const key = identifier?.(validatedInput) ?? subKey ?? 'default';
|
|
13
|
+
return `${eventType}:${key}`;
|
|
14
|
+
}
|
|
15
|
+
static createEvent(eventType, payload) {
|
|
16
|
+
const { ctor } = this.getRegistration(eventType);
|
|
17
|
+
return new ctor(payload);
|
|
22
18
|
}
|
|
23
19
|
}
|
|
24
20
|
exports.EventFactory = EventFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-event-registry.js","sourceRoot":"/","sources":["libraries/socket/core/socket-event-registry.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"socket-event-registry.js","sourceRoot":"/","sources":["libraries/socket/core/socket-event-registry.ts"],"names":[],"mappings":";;;AAGA,4EAAwD;AAaxD,MAAa,YAAY;IACxB,MAAM,CAAC,eAAe,CAA4B,SAAY;QAC7D,OAAO,oCAAQ,CAAC,SAAS,CAAgB,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,kBAAkB,CAA4B,SAAY,EAAE,KAAkB,EAAE,MAAe;QACrG,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC,cAAc,CAAC,IAAI,MAAM,IAAI,SAAS,CAAC;QAChE,OAAO,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,WAAW,CAA4B,SAAY,EAAE,OAAqB;QAChF,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACjD,OAAO,IAAI,IAAI,CAAC,OAAO,CAAgB,CAAC;IACzC,CAAC;CACD;AAhBD,oCAgBC","sourcesContent":["import { z } from 'zod';\nimport { SocketEventType } from '../../../utilities/enum';\nimport { BaseSocketEvent } from '../BaseSocketEvent';\nimport { REGISTRY } from '../socket-event-registry.map';\n\ninterface EventRegistration<TEvent extends BaseSocketEvent<any, any>> {\n\tctor: new (payload: z.input<TEvent['outputSchema']>) => TEvent;\n\tschemas: { input: TEvent['inputSchema']; output: TEvent['outputSchema'] };\n\tidentifier?: (input: z.infer<TEvent['inputSchema']>) => string;\n}\n\ntype Registry = typeof REGISTRY;\ntype InputFor<T extends SocketEventType> = z.infer<Registry[T]['schemas']['input']>;\ntype OutputFor<T extends SocketEventType> = z.infer<Registry[T]['schemas']['output']>;\ntype EventFor<T extends SocketEventType> = InstanceType<Registry[T]['ctor']>;\n\nexport class EventFactory {\n\tstatic getRegistration<T extends SocketEventType>(eventType: T) {\n\t\treturn REGISTRY[eventType] as Registry[T];\n\t}\n\n\tstatic getSubscriptionKey<T extends SocketEventType>(eventType: T, input: InputFor<T>, subKey?: string) {\n\t\tconst { identifier, schemas } = this.getRegistration(eventType);\n\t\tconst validatedInput = schemas.input.parse(input);\n\t\tconst key = identifier?.(validatedInput) ?? subKey ?? 'default';\n\t\treturn `${eventType}:${key}`;\n\t}\n\n\tstatic createEvent<T extends SocketEventType>(eventType: T, payload: OutputFor<T>): EventFor<T> {\n\t\tconst { ctor } = this.getRegistration(eventType);\n\t\treturn new ctor(payload) as EventFor<T>;\n\t}\n}\n\nexport type { Registry, EventFor, InputFor, OutputFor, EventRegistration };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-redis-connections.js","sourceRoot":"/","sources":["libraries/socket/core/socket-redis-connections.ts"],"names":[],"mappings":";;;
|
|
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';\n\nexport const kEntityEvents = (entityId: string) => `socket:events:entity:${entityId}`;\nexport const kEntityInstances = (entityId: string) => `socket:instances:entity:${entityId}`;\nexport const kEntityConnection = () => `socket:connections`;\n\nexport interface SocketRedisEventInformation {\n\teventKey: string;\n\tinstanceId: string;\n\tsocketId: string;\n}\n\n\nexport async function connectEntityToSocketEvent(\n\tentityId: string,\n\tsocketRedisEventInformation: SocketRedisEventInformation\n) {\n\tconst redis = getLibraries().getRedisService();\n\n\tawait redis.addToSet(kEntityEvents(entityId), JSON.stringify(socketRedisEventInformation));\n\tawait redis.addToSet(kEntityInstances(entityId), socketRedisEventInformation.instanceId);\n\tawait redis.addToSet(kEntityConnection(), entityId);\n}\n\nexport async function disconnectEntityFromSocketEvent(\n\tentityId: string,\n\tsocketRedisEventInformation: SocketRedisEventInformation\n) {\n\tconst redis = getLibraries().getRedisService();\n\n\tawait redis.removeFromSet(kEntityEvents(entityId), JSON.stringify(socketRedisEventInformation));\n\n\tconst remainingEvents = (await redis.getSetMembers(kEntityEvents(entityId))).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(entityId), socketRedisEventInformation.instanceId);\n\t}\n\n\tif (remainingEvents.length === 0) {\n\t\tawait redis.removeFromSet(kEntityConnection(), entityId);\n\t}\n}\n\nexport async function isEntitySubscribed(entityId: string, eventKey: string): Promise<boolean> {\n\tconst redis = getLibraries().getRedisService();\n\tconst events = await redis.getSetMembers(kEntityEvents(entityId));\n\treturn events.map(e => JSON.parse(e) as SocketRedisEventInformation).some(e => e.eventKey === eventKey);\n}\n\nexport async function disconnectAllEntitiesFromInstance() {\n\tconst instanceId = getInstanceId();\n\tconst redis = getLibraries().getRedisService();\n\n\tconst connectedEntities = await redis.getSetMembers(kEntityConnection());\n\tif (!connectedEntities.length) return;\n\n\tfor (const entityId of connectedEntities) {\n\t\tconst allEvents = await redis.getSetMembers(kEntityEvents(entityId));\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(entityId), 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(entityId), instanceId);\n\t\t}\n\n\t\tif (eventsToKeep.length === 0) {\n\t\t\tawait redis.removeFromSet(kEntityConnection(), entityId);\n\t\t}\n\t}\n}\n"]}
|
|
@@ -20,10 +20,7 @@ exports.ChatlistMessageSendOutput = zod_1.default.object({
|
|
|
20
20
|
class ChatlistMessageSendEvent extends BaseSocketEvent_1.BaseSocketEvent {
|
|
21
21
|
static schemas = { input: exports.ChatlistMessageSendInput, output: exports.ChatlistMessageSendOutput };
|
|
22
22
|
constructor(payload) {
|
|
23
|
-
super(enum_1.SocketEventType.
|
|
24
|
-
}
|
|
25
|
-
getIdentifier() {
|
|
26
|
-
return enum_1.SocketEventType.CHATROOM_MESSAGE_SEND;
|
|
23
|
+
super(enum_1.SocketEventType.CHATLIST_MESSAGE_RECEIVED, ChatlistMessageSendEvent.schemas, payload);
|
|
27
24
|
}
|
|
28
25
|
}
|
|
29
26
|
exports.ChatlistMessageSendEvent = ChatlistMessageSendEvent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatlist-message-send.socket.event.js","sourceRoot":"/","sources":["libraries/socket/events/chatlist-message-send.socket.event.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,kDAA0D;AAC1D,8DAAmE;AACnE,wDAAqD;AAExC,QAAA,wBAAwB,GAAG,aAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAExC,QAAA,yBAAyB,GAAG,aAAC,CAAC,MAAM,CAAC;IACjD,UAAU,EAAE,0BAAa,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,aAAC,CAAC,MAAM,CAAC;QACrB,OAAO,EAAE,0BAAa,CAAC,MAAM,EAAE;QAC/B,SAAS,EAAE,0BAAa,CAAC,MAAM,CAAC,IAAI,EAAE;KACtC,CAAC;IACF,WAAW,EAAE,0BAAa,CAAC,MAAM,EAAE;CACnC,CAAC,CAAC;AAEH,MAAa,wBAAyB,SAAQ,iCAG7C;IACA,MAAM,CAAU,OAAO,GAAG,EAAE,KAAK,EAAE,gCAAwB,EAAE,MAAM,EAAE,iCAAyB,EAAE,CAAC;IAEjG,YAAY,OAA8C;QACzD,KAAK,CAAC,sBAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"chatlist-message-send.socket.event.js","sourceRoot":"/","sources":["libraries/socket/events/chatlist-message-send.socket.event.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,kDAA0D;AAC1D,8DAAmE;AACnE,wDAAqD;AAExC,QAAA,wBAAwB,GAAG,aAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAExC,QAAA,yBAAyB,GAAG,aAAC,CAAC,MAAM,CAAC;IACjD,UAAU,EAAE,0BAAa,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,aAAC,CAAC,MAAM,CAAC;QACrB,OAAO,EAAE,0BAAa,CAAC,MAAM,EAAE;QAC/B,SAAS,EAAE,0BAAa,CAAC,MAAM,CAAC,IAAI,EAAE;KACtC,CAAC;IACF,WAAW,EAAE,0BAAa,CAAC,MAAM,EAAE;CACnC,CAAC,CAAC;AAEH,MAAa,wBAAyB,SAAQ,iCAG7C;IACA,MAAM,CAAU,OAAO,GAAG,EAAE,KAAK,EAAE,gCAAwB,EAAE,MAAM,EAAE,iCAAyB,EAAE,CAAC;IAEjG,YAAY,OAA8C;QACzD,KAAK,CAAC,sBAAe,CAAC,yBAAyB,EAAE,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7F,CAAC;;AARF,4DASC","sourcesContent":["import z from 'zod';\nimport { SocketEventType } from '../../../utilities/enum';\nimport { DTO, ZodValidation } from '../../../utilities/validation';\nimport { BaseSocketEvent } from '../BaseSocketEvent';\n\nexport const ChatlistMessageSendInput = z.object({});\n\nexport const ChatlistMessageSendOutput = z.object({\n\tchatroomId: ZodValidation.coerce.objectId(),\n\tlastMessage: z.object({\n\t\tcontent: ZodValidation.string(),\n\t\tcreatedAt: ZodValidation.coerce.date(),\n\t}),\n\tunreadCount: ZodValidation.number(),\n});\n\nexport class ChatlistMessageSendEvent extends BaseSocketEvent<\n\ttypeof ChatlistMessageSendInput,\n\ttypeof ChatlistMessageSendOutput\n> {\n\tstatic readonly schemas = { input: ChatlistMessageSendInput, output: ChatlistMessageSendOutput };\n\n\tconstructor(payload: DTO<typeof ChatlistMessageSendOutput>) {\n\t\tsuper(SocketEventType.CHATLIST_MESSAGE_RECEIVED, ChatlistMessageSendEvent.schemas, payload);\n\t}\n}\n"]}
|
|
@@ -51,6 +51,5 @@ export declare class ChatroomMessageSendEvent extends BaseSocketEvent<typeof Cha
|
|
|
51
51
|
}>;
|
|
52
52
|
};
|
|
53
53
|
constructor(payload: DTO<typeof ChatroomMessageSendOutput>);
|
|
54
|
-
getIdentifier(): string;
|
|
55
54
|
static identifier(input: z.infer<typeof ChatroomMessageSendInput>): string;
|
|
56
55
|
}
|
|
@@ -22,9 +22,6 @@ class ChatroomMessageSendEvent extends BaseSocketEvent_1.BaseSocketEvent {
|
|
|
22
22
|
constructor(payload) {
|
|
23
23
|
super(enum_1.SocketEventType.CHATROOM_MESSAGE_SEND, ChatroomMessageSendEvent.schemas, payload);
|
|
24
24
|
}
|
|
25
|
-
getIdentifier() {
|
|
26
|
-
return enum_1.SocketEventType.CHATROOM_MESSAGE_SEND + ':' + ChatroomMessageSendEvent.identifier(this.data);
|
|
27
|
-
}
|
|
28
25
|
static identifier(input) {
|
|
29
26
|
return input.chatroomId.toString();
|
|
30
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatroom-message-send.socket.event.js","sourceRoot":"/","sources":["libraries/socket/events/chatroom-message-send.socket.event.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,kDAA0D;AAC1D,8DAAmE;AACnE,wDAAqD;AAExC,QAAA,wBAAwB,GAAG,aAAC,CAAC,MAAM,CAAC;IAChD,UAAU,EAAE,0BAAa,CAAC,MAAM,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEU,QAAA,yBAAyB,GAAG,aAAC,CAAC,MAAM,CAAC;IACjD,UAAU,EAAE,0BAAa,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC3C,SAAS,EAAE,0BAAa,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE,0BAAa,CAAC,MAAM,EAAE;IAC/B,SAAS,EAAE,0BAAa,CAAC,MAAM,CAAC,IAAI,EAAE;CACtC,CAAC,CAAC;AAEH,MAAa,wBAAyB,SAAQ,iCAG7C;IACA,MAAM,CAAU,OAAO,GAAG,EAAE,KAAK,EAAE,gCAAwB,EAAE,MAAM,EAAE,iCAAyB,EAAE,CAAC;IAEjG,YAAY,OAA8C;QACzD,KAAK,CAAC,sBAAe,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzF,CAAC;
|
|
1
|
+
{"version":3,"file":"chatroom-message-send.socket.event.js","sourceRoot":"/","sources":["libraries/socket/events/chatroom-message-send.socket.event.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AACpB,kDAA0D;AAC1D,8DAAmE;AACnE,wDAAqD;AAExC,QAAA,wBAAwB,GAAG,aAAC,CAAC,MAAM,CAAC;IAChD,UAAU,EAAE,0BAAa,CAAC,MAAM,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEU,QAAA,yBAAyB,GAAG,aAAC,CAAC,MAAM,CAAC;IACjD,UAAU,EAAE,0BAAa,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC3C,SAAS,EAAE,0BAAa,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE,0BAAa,CAAC,MAAM,EAAE;IAC/B,SAAS,EAAE,0BAAa,CAAC,MAAM,CAAC,IAAI,EAAE;CACtC,CAAC,CAAC;AAEH,MAAa,wBAAyB,SAAQ,iCAG7C;IACA,MAAM,CAAU,OAAO,GAAG,EAAE,KAAK,EAAE,gCAAwB,EAAE,MAAM,EAAE,iCAAyB,EAAE,CAAC;IAEjG,YAAY,OAA8C;QACzD,KAAK,CAAC,sBAAe,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,KAA+C;QAChE,OAAO,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;;AAZF,4DAaC","sourcesContent":["import z from 'zod';\nimport { SocketEventType } from '../../../utilities/enum';\nimport { DTO, ZodValidation } from '../../../utilities/validation';\nimport { BaseSocketEvent } from '../BaseSocketEvent';\n\nexport const ChatroomMessageSendInput = z.object({\n\tchatroomId: ZodValidation.coerce.objectId(),\n});\n\nexport const ChatroomMessageSendOutput = z.object({\n\tchatroomId: ZodValidation.coerce.objectId(),\n\tmessageId: ZodValidation.coerce.objectId(),\n\tcontent: ZodValidation.string(),\n\tcreatedAt: ZodValidation.coerce.date(),\n});\n\nexport class ChatroomMessageSendEvent extends BaseSocketEvent<\n\ttypeof ChatroomMessageSendInput,\n\ttypeof ChatroomMessageSendOutput\n> {\n\tstatic readonly schemas = { input: ChatroomMessageSendInput, output: ChatroomMessageSendOutput };\n\n\tconstructor(payload: DTO<typeof ChatroomMessageSendOutput>) {\n\t\tsuper(SocketEventType.CHATROOM_MESSAGE_SEND, ChatroomMessageSendEvent.schemas, payload);\n\t}\n\n\tstatic identifier(input: z.infer<typeof ChatroomMessageSendInput>): string {\n\t\treturn input.chatroomId.toString();\n\t}\n}\n"]}
|