@lyxa.ai/core 1.0.366 → 1.0.368
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/mongo/models/admin-access-control.model.js +1 -1
- package/dist/libraries/mongo/models/admin-access-control.model.js.map +1 -1
- package/dist/libraries/mongo/models/gallery.model.js +1 -1
- package/dist/libraries/mongo/models/gallery.model.js.map +1 -1
- package/dist/libraries/mongo/models/ticket.model.d.ts +2 -0
- package/dist/libraries/mongo/models/ticket.model.js +10 -0
- package/dist/libraries/mongo/models/ticket.model.js.map +1 -1
- package/dist/libraries/mongo/models/user.model.d.ts +1 -1
- package/dist/libraries/socket/socket.types.d.ts +27 -21
- package/dist/libraries/socket/socket.types.js +24 -0
- package/dist/libraries/socket/socket.types.js.map +1 -1
- package/dist/libraries/socket/socket.utils.d.ts +6 -11
- package/dist/libraries/socket/socket.utils.js +9 -12
- package/dist/libraries/socket/socket.utils.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 +3 -12
- package/dist/types/utilities/enum.js +4 -15
- package/dist/types/utilities/enum.js.map +1 -1
- package/dist/types/utilities/validation/common-validation.d.ts +78 -2
- package/dist/types/utilities/validation/global-validation.d.ts +38 -14
- package/dist/utilities/enum.d.ts +3 -12
- package/dist/utilities/enum.js +4 -15
- package/dist/utilities/enum.js.map +1 -1
- package/dist/utilities/validation/common-validation.d.ts +78 -2
- package/dist/utilities/validation/global-validation.d.ts +38 -14
- package/package.json +1 -1
|
@@ -31,7 +31,7 @@ let AdminAccessControl = class AdminAccessControl extends defaultClasses_1.TimeS
|
|
|
31
31
|
};
|
|
32
32
|
exports.AdminAccessControl = AdminAccessControl;
|
|
33
33
|
__decorate([
|
|
34
|
-
(0, typegoose_1.prop)({ required: true, type: String
|
|
34
|
+
(0, typegoose_1.prop)({ required: true, type: String }),
|
|
35
35
|
__metadata("design:type", String)
|
|
36
36
|
], AdminAccessControl.prototype, "email", void 0);
|
|
37
37
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-access-control.model.js","sourceRoot":"/","sources":["libraries/mongo/models/admin-access-control.model.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oDAA2E;AAC3E,4EAAqE;AACrE,wDAA8B;AAC9B,kDAAsE;AACtE,+CAAsC;AAGtC,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,IAAI,GAAG,MAAM,kBAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,OAAO,kBAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAoBM,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,2BAAU;IAE1C,KAAK,CAAU;IAGf,QAAQ,CAAU;IAGlB,KAAK,CAAc;IAGnB,IAAI,CAAa;IAOjB,YAAY,CAAoB;CACvC,CAAA;AAnBY,gDAAkB;AAEvB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"admin-access-control.model.js","sourceRoot":"/","sources":["libraries/mongo/models/admin-access-control.model.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oDAA2E;AAC3E,4EAAqE;AACrE,wDAA8B;AAC9B,kDAAsE;AACtE,+CAAsC;AAGtC,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,IAAI,GAAG,MAAM,kBAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,OAAO,kBAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAoBM,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,2BAAU;IAE1C,KAAK,CAAU;IAGf,QAAQ,CAAU;IAGlB,KAAK,CAAc;IAGnB,IAAI,CAAa;IAOjB,YAAY,CAAoB;CACvC,CAAA;AAnBY,gDAAkB;AAEvB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC;;iDAChB;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;oDACd;AAGlB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,mBAAK,EAAE,CAAC;;iDACjB;AAGnB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAS,EAAE,CAAC;;gDAChC;AAOjB;IALN,IAAA,gBAAI,EAAC;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,uBAAgB;QACtB,OAAO,EAAE,uBAAgB,CAAC,OAAO;KACjC,CAAC;;wDACqC;6BAlB3B,kBAAkB;IAlB9B,IAAA,eAAG,EAAqB,MAAM,EAAE,KAAK,WAAW,IAAI;QACpD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,EAAE,CAAC;IACR,CAAC,CAAC;IAED,IAAA,eAAG,EAAiC,kBAAkB,EAAE,KAAK,WAAW,IAAI;QAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAyB,CAAC;QACvD,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;YACtB,MAAM,CAAC,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,EAAE,CAAC;IACR,CAAC,CAAC;IAED,IAAA,iBAAK,EAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;IACnF,IAAA,wBAAY,EAAC,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,qBAAqB,EAAE,EAAE,CAAC;GAC1D,kBAAkB,CAmB9B","sourcesContent":["import { modelOptions, prop, pre, Ref, index } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport bcrypt from 'bcryptjs';\nimport { AdminRole, ShopOnlineStatus } from '../../../utilities/enum';\nimport { Admin } from './admin.model';\nimport { Query } from 'mongoose';\n\nasync function hashPassword(password: string): Promise<string> {\n\tconst salt = await bcrypt.genSalt(10);\n\treturn bcrypt.hash(password, salt);\n}\n\n@pre<AdminAccessControl>('save', async function (next) {\n\tif (this.isModified('password')) {\n\t\tthis.password = await hashPassword(this.password);\n\t}\n\tnext();\n})\n\n@pre<Query<any, AdminAccessControl>>('findOneAndUpdate', async function (next) {\n\tconst update = this.getUpdate() as Record<string, any>;\n\tif (update?.password) {\n\t\tupdate.password = await hashPassword(update.password);\n\t\tthis.setUpdate(update);\n\t}\n\tnext();\n})\n\n@index({ email: 1 }, { unique: true, partialFilterExpression: { deletedAt: null } })\n@modelOptions({ schemaOptions: { collection: 'adminAccessControls' } })\nexport class AdminAccessControl extends TimeStamps {\n\t@prop({ required: true, type: String})\n\tpublic email!: string;\n\n\t@prop({ required: true, type: String })\n\tpublic password!: string;\n\n\t@prop({ required: true, ref: () => Admin })\n\tpublic admin!: Ref<Admin>;\n\n\t@prop({ required: true, type: String, enum: AdminRole })\n\tpublic role!: AdminRole;\n\n\t@prop({\n\t\ttype: String,\n\t\tenum: ShopOnlineStatus,\n\t\tdefault: ShopOnlineStatus.OFFLINE,\n\t})\n\tpublic onlineStatus?: ShopOnlineStatus;\n}\n"]}
|
|
@@ -44,7 +44,7 @@ __decorate([
|
|
|
44
44
|
__metadata("design:type", Object)
|
|
45
45
|
], Gallery.prototype, "category", void 0);
|
|
46
46
|
__decorate([
|
|
47
|
-
(0, typegoose_1.prop)({ type: String }),
|
|
47
|
+
(0, typegoose_1.prop)({ type: String, maxlength: 50 }),
|
|
48
48
|
__metadata("design:type", String)
|
|
49
49
|
], Gallery.prototype, "brand", void 0);
|
|
50
50
|
exports.Gallery = Gallery = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gallery.model.js","sourceRoot":"/","sources":["libraries/mongo/models/gallery.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAsE;AACtE,4EAAqE;AACrE,kDAAoD;AACpD,qDAA4C;AAIrC,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,2BAAU;IAE/B,KAAK,CAAU;IAGf,SAAS,CAAa;IAGtB,SAAS,CAAY;IAGrB,IAAI,CAAU;IAGd,QAAQ,CAAiB;IAGzB,KAAK,CAAU;CACtB,CAAA;AAlBY,0BAAO;AAEZ;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;;sCAC9C;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAS,EAAE,OAAO,EAAE,gBAAS,CAAC,KAAK,EAAE,CAAC;;0CACrC;AAGtB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;;0CACb;AAGrB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;qCAClB;AAGd;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,yBAAQ,EAAE,CAAC;;yCACE;AAGzB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;
|
|
1
|
+
{"version":3,"file":"gallery.model.js","sourceRoot":"/","sources":["libraries/mongo/models/gallery.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAsE;AACtE,4EAAqE;AACrE,kDAAoD;AACpD,qDAA4C;AAIrC,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,2BAAU;IAE/B,KAAK,CAAU;IAGf,SAAS,CAAa;IAGtB,SAAS,CAAY;IAGrB,IAAI,CAAU;IAGd,QAAQ,CAAiB;IAGzB,KAAK,CAAU;CACtB,CAAA;AAlBY,0BAAO;AAEZ;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;;sCAC9C;AAGf;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAS,EAAE,OAAO,EAAE,gBAAS,CAAC,KAAK,EAAE,CAAC;;0CACrC;AAGtB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;;0CACb;AAGrB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;qCAClB;AAGd;IADN,IAAA,gBAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,yBAAQ,EAAE,CAAC;;yCACE;AAGzB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;;sCAChB;kBAjBV,OAAO;IAFnB,IAAA,wBAAY,EAAC,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC;IAC5D,IAAA,iBAAK,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;GACZ,OAAO,CAkBnB","sourcesContent":["import { index, modelOptions, prop, Ref } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport { MediaType } from '../../../utilities/enum';\nimport { Category } from './category.model';\n\n@modelOptions({ schemaOptions: { collection: 'galleries' } })\n@index({ title: 'text' })\nexport class Gallery extends TimeStamps {\n\t@prop({ required: true, unique: true, type: String, maxlength: 50 })\n\tpublic title!: string;\n\n\t@prop({ type: String, enum: MediaType, default: MediaType.IMAGE })\n\tpublic mediaType?: MediaType;\n\n\t@prop({ required: true, type: [String] })\n\tpublic mediaUrls!: string[];\n\n\t@prop({ required: true, type: String })\n\tpublic logo?: string;\n\n\t@prop({ ref: () => Category })\n\tpublic category?: Ref<Category>;\n\n\t@prop({ type: String, maxlength: 50 })\n\tpublic brand?: string;\n}\n"]}
|
|
@@ -16,6 +16,8 @@ export declare class Ticket extends TimeStamps {
|
|
|
16
16
|
supportReason?: Ref<SupportReason>;
|
|
17
17
|
client: Ref<User | Shop>;
|
|
18
18
|
clientType: UserRef;
|
|
19
|
+
clientName: string;
|
|
20
|
+
clientPhoto: string;
|
|
19
21
|
order?: Ref<Order>;
|
|
20
22
|
assignedAgent?: Ref<Admin>;
|
|
21
23
|
assignedAt?: Date;
|
|
@@ -26,6 +26,8 @@ let Ticket = class Ticket extends defaultClasses_1.TimeStamps {
|
|
|
26
26
|
supportReason;
|
|
27
27
|
client;
|
|
28
28
|
clientType;
|
|
29
|
+
clientName;
|
|
30
|
+
clientPhoto;
|
|
29
31
|
order;
|
|
30
32
|
assignedAgent;
|
|
31
33
|
assignedAt;
|
|
@@ -67,6 +69,14 @@ __decorate([
|
|
|
67
69
|
(0, typegoose_1.prop)({ required: true, type: String, enum: enum_1.UserRef }),
|
|
68
70
|
__metadata("design:type", String)
|
|
69
71
|
], Ticket.prototype, "clientType", void 0);
|
|
72
|
+
__decorate([
|
|
73
|
+
(0, typegoose_1.prop)({ required: true, type: String }),
|
|
74
|
+
__metadata("design:type", String)
|
|
75
|
+
], Ticket.prototype, "clientName", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
(0, typegoose_1.prop)({ required: true, type: String }),
|
|
78
|
+
__metadata("design:type", String)
|
|
79
|
+
], Ticket.prototype, "clientPhoto", void 0);
|
|
70
80
|
__decorate([
|
|
71
81
|
(0, typegoose_1.prop)({ ref: () => order_model_1.Order }),
|
|
72
82
|
__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket.model.js","sourceRoot":"/","sources":["libraries/mongo/models/ticket.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAsE;AACtE,4EAAqE;AAGrE,+CAAsC;AACtC,+CAAsC;AACtC,kDAA4E;AAC5E,uDAA6C;AAE7C,+DAAqD;AACrD,iEAAuD;AAahD,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,2BAAU;IAE9B,QAAQ,CAAU;IAGlB,IAAI,CAAc;IAGlB,MAAM,CAAgB;IAGtB,KAAK,CAAU;IAGf,aAAa,CAAsB;IAGnC,MAAM,CAAoB;IAG1B,UAAU,CAAW;IAGrB,KAAK,CAAc;IAGnB,aAAa,CAAc;IAG3B,UAAU,CAAQ;IAGlB,kBAAkB,CAAU;IAG5B,QAAQ,CAAiB;IAGzB,UAAU,CAAQ;IAGlB,QAAQ,CAAQ;IAGhB,qBAAqB,CAAU;IAG/B,cAAc,CAAU;IAGxB,UAAU,CAAU;IAGpB,MAAM,CAAqB;CAClC,CAAA;
|
|
1
|
+
{"version":3,"file":"ticket.model.js","sourceRoot":"/","sources":["libraries/mongo/models/ticket.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { prop, Ref, index, modelOptions } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport { User } from './user.model';\nimport { Shop } from './shop.model';\nimport { Order } from './order.model';\nimport { Admin } from './admin.model';\nimport { TicketType, TicketStatus, UserRef } from '../../../utilities/enum';\nimport { Chatroom } from './chat-room.model';\nimport { DefaultChat } from './default-chat.model';\nimport { TicketAction } from './ticket-action.model';\nimport { SupportReason } from './support-reason.model';\n\n@modelOptions({\n\tschemaOptions: {\n\t\tcollection: 'tickets',\n\t\ttimestamps: true,\n\t},\n})\n@index({ assignedAgent: 1, status: 1 })\n@index({ type: 1, status: 1, priority: 1 })\n@index({ client: 1, clientType: 1, status: 1 })\n@index({ createdAt: -1 })\n@index({ chatroom: 1 })\nexport class Ticket extends TimeStamps {\n\t@prop({ required: true, type: String, unique: true })\n\tpublic ticketId!: string;\n\n\t@prop({ required: true, type: String, enum: TicketType })\n\tpublic type!: TicketType;\n\n\t@prop({ required: true, type: String, enum: TicketStatus, default: TicketStatus.PENDING })\n\tpublic status!: TicketStatus;\n\n\t@prop({ type: String, required: true })\n\tpublic title!: string;\n\n\t@prop({ ref: () => SupportReason, required: false })\n\tpublic supportReason?: Ref<SupportReason>;\n\n\t@prop({ refPath: 'clientType', required: true })\n\tpublic client!: Ref<User | Shop>;\n\n\t@prop({ required: true, type: String, enum: UserRef })\n\tpublic clientType!: UserRef;\n\n\t@prop({ required: true, type: String })\n\tpublic clientName!: string;\n\n\t@prop({ required: true, type: String })\n\tpublic clientPhoto!: string;\n\n\t@prop({ ref: () => Order })\n\tpublic order?: Ref<Order>;\n\n\t@prop({ ref: () => Admin })\n\tpublic assignedAgent?: Ref<Admin>;\n\n\t@prop({ type: Date })\n\tpublic assignedAt?: Date;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic assignmentAttempts?: number;\n\n\t@prop({ ref: () => Chatroom, required: true })\n\tpublic chatroom!: Ref<Chatroom>;\n\n\t@prop({ type: Date })\n\tpublic resolvedAt?: Date;\n\n\t@prop({ type: Date })\n\tpublic closedAt?: Date;\n\n\t@prop({ type: Number })\n\tpublic resolutionTimeMinutes?: number;\n\n\t@prop({ type: Number, min: 1, max: 5 })\n\tpublic customerRating?: number;\n\n\t@prop({ type: Number })\n\tpublic agentScore?: number;\n\n\t@prop({ ref: () => TicketAction, required: false })\n\tpublic action?: Ref<TicketAction>;\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;
|
|
@@ -1,25 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { SocketServiceQueue } from '../../utilities/enum';
|
|
2
|
+
export declare const SocketSubscriptionType: {
|
|
3
|
+
CHATLIST: {
|
|
4
|
+
ON_MESSAGE: () => {
|
|
5
|
+
type: "chatlist.on_message";
|
|
6
|
+
identifiers: {};
|
|
7
|
+
queue: SocketServiceQueue;
|
|
8
|
+
};
|
|
5
9
|
};
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
[SocketEmits.MESSAGE_RECEIVE]: {
|
|
15
|
-
_id: string;
|
|
16
|
-
senderId: string;
|
|
17
|
-
content: string;
|
|
18
|
-
chatroomId: string;
|
|
19
|
-
createdAt: string;
|
|
10
|
+
CHATROOM: {
|
|
11
|
+
ON_MESSAGE: (chatroomId: string) => {
|
|
12
|
+
type: "chatroom.on_message";
|
|
13
|
+
identifiers: {
|
|
14
|
+
chatroomId: string;
|
|
15
|
+
};
|
|
16
|
+
queue: SocketServiceQueue;
|
|
17
|
+
};
|
|
20
18
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
NOTIFICATION: {
|
|
20
|
+
WEB: () => {
|
|
21
|
+
type: "notification.web";
|
|
22
|
+
identifiers: {};
|
|
23
|
+
queue: SocketServiceQueue;
|
|
24
|
+
};
|
|
24
25
|
};
|
|
25
26
|
};
|
|
27
|
+
type ReturnTypesRecursively<T> = T extends (...args: any) => any ? ReturnType<T> : {
|
|
28
|
+
[K in keyof T]: ReturnTypesRecursively<T[K]>;
|
|
29
|
+
}[keyof T];
|
|
30
|
+
export type SocketSubscription = ReturnTypesRecursively<typeof SocketSubscriptionType>;
|
|
31
|
+
export {};
|
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SocketSubscriptionType = void 0;
|
|
3
4
|
const enum_1 = require("../../utilities/enum");
|
|
5
|
+
exports.SocketSubscriptionType = {
|
|
6
|
+
CHATLIST: {
|
|
7
|
+
ON_MESSAGE: () => ({
|
|
8
|
+
type: 'chatlist.on_message',
|
|
9
|
+
identifiers: {},
|
|
10
|
+
queue: enum_1.SocketServiceQueue.CHAT,
|
|
11
|
+
}),
|
|
12
|
+
},
|
|
13
|
+
CHATROOM: {
|
|
14
|
+
ON_MESSAGE: (chatroomId) => ({
|
|
15
|
+
type: 'chatroom.on_message',
|
|
16
|
+
identifiers: { chatroomId },
|
|
17
|
+
queue: enum_1.SocketServiceQueue.CHAT,
|
|
18
|
+
}),
|
|
19
|
+
},
|
|
20
|
+
NOTIFICATION: {
|
|
21
|
+
WEB: () => ({
|
|
22
|
+
type: 'notification.web',
|
|
23
|
+
identifiers: {},
|
|
24
|
+
queue: enum_1.SocketServiceQueue.NOTIFICATION,
|
|
25
|
+
}),
|
|
26
|
+
},
|
|
27
|
+
};
|
|
4
28
|
//# sourceMappingURL=socket.types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.types.js","sourceRoot":"/","sources":["libraries/socket/socket.types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"socket.types.js","sourceRoot":"/","sources":["libraries/socket/socket.types.ts"],"names":[],"mappings":";;;AAAA,+CAA0D;AAE7C,QAAA,sBAAsB,GAAG;IACrC,QAAQ,EAAE;QACT,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,IAAI,EAAE,qBAA8B;YACpC,WAAW,EAAE,EAAQ;YACrB,KAAK,EAAE,yBAAkB,CAAC,IAAI;SAC9B,CAAC;KACF;IACD,QAAQ,EAAE;QACT,UAAU,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,CAAC;YACpC,IAAI,EAAE,qBAA8B;YACpC,WAAW,EAAE,EAAE,UAAU,EAAE;YAC3B,KAAK,EAAE,yBAAkB,CAAC,IAAI;SAC9B,CAAC;KACF;IACD,YAAY,EAAE;QACb,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACX,IAAI,EAAE,kBAA2B;YACjC,WAAW,EAAE,EAAQ;YACrB,KAAK,EAAE,yBAAkB,CAAC,YAAY;SACtC,CAAC;KACF;CACD,CAAC","sourcesContent":["import { SocketServiceQueue } from '../../utilities/enum';\n\nexport const SocketSubscriptionType = {\n\tCHATLIST: {\n\t\tON_MESSAGE: () => ({\n\t\t\ttype: 'chatlist.on_message' as const,\n\t\t\tidentifiers: {} as {},\n\t\t\tqueue: SocketServiceQueue.CHAT,\n\t\t}),\n\t},\n\tCHATROOM: {\n\t\tON_MESSAGE: (chatroomId: string) => ({\n\t\t\ttype: 'chatroom.on_message' as const,\n\t\t\tidentifiers: { chatroomId },\n\t\t\tqueue: SocketServiceQueue.CHAT,\n\t\t}),\n\t},\n\tNOTIFICATION: {\n\t\tWEB: () => ({\n\t\t\ttype: 'notification.web' as const,\n\t\t\tidentifiers: {} as {},\n\t\t\tqueue: SocketServiceQueue.NOTIFICATION,\n\t\t}),\n\t},\n};\n\ntype ReturnTypesRecursively<T> = T extends (...args: any) => any\n\t? ReturnType<T>\n\t: { [K in keyof T]: ReturnTypesRecursively<T[K]> }[keyof T];\n\nexport type SocketSubscription = ReturnTypesRecursively<typeof SocketSubscriptionType>;\n"]}
|
|
@@ -1,24 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { SocketEmitMap, SocketPayloadMap, SocketSubscriptionIdentifiersMap } from './socket.types';
|
|
1
|
+
import { SocketSubscription } from './socket.types';
|
|
3
2
|
export interface InstanceSockets {
|
|
4
3
|
instanceId: string;
|
|
5
4
|
socketIds: string[];
|
|
6
5
|
}
|
|
7
6
|
export declare function getInstanceSocketsMap(cacheKeys: string[]): Promise<InstanceSockets[]>;
|
|
8
|
-
export declare function publishSocketNotification({ usersId, data,
|
|
7
|
+
export declare function publishSocketNotification({ usersId, data, }: {
|
|
9
8
|
usersId: string[];
|
|
10
9
|
data: {
|
|
11
10
|
title: string;
|
|
12
11
|
message: string;
|
|
13
12
|
};
|
|
14
|
-
socketQueue: SocketServiceQueue;
|
|
15
13
|
}): Promise<void>;
|
|
16
|
-
export declare function publishSockets<
|
|
14
|
+
export declare function publishSockets<TData>({ usersId, subscription, data, }: {
|
|
17
15
|
usersId: string[];
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
data: SocketPayloadMap[TEmit];
|
|
21
|
-
socketEmit: TEmit;
|
|
22
|
-
socketQueue: SocketServiceQueue;
|
|
16
|
+
subscription: SocketSubscription;
|
|
17
|
+
data: TData;
|
|
23
18
|
}): Promise<string[]>;
|
|
24
|
-
export declare function generateCacheKey<T extends
|
|
19
|
+
export declare function generateCacheKey<T extends SocketSubscription>(userId: string | number, subscriptionType: T['type'], identifiers: T['identifiers']): string;
|
|
@@ -7,8 +7,8 @@ exports.generateCacheKey = generateCacheKey;
|
|
|
7
7
|
const event_1 = require("../event");
|
|
8
8
|
const crypto_1 = require("crypto");
|
|
9
9
|
const SocketEmitEvent_1 = require("./SocketEmitEvent");
|
|
10
|
-
const enum_1 = require("../../utilities/enum");
|
|
11
10
|
const index_1 = require("../../index");
|
|
11
|
+
const socket_types_1 = require("./socket.types");
|
|
12
12
|
async function getInstanceSocketsMap(cacheKeys) {
|
|
13
13
|
const instanceMap = {};
|
|
14
14
|
const redis = (0, index_1.getLibraries)().getRedisService();
|
|
@@ -26,30 +26,27 @@ async function getInstanceSocketsMap(cacheKeys) {
|
|
|
26
26
|
socketIds: [...socketSet],
|
|
27
27
|
}));
|
|
28
28
|
}
|
|
29
|
-
async function publishSocketNotification({ usersId, data,
|
|
30
|
-
publishSockets({
|
|
29
|
+
async function publishSocketNotification({ usersId, data, }) {
|
|
30
|
+
await publishSockets({
|
|
31
31
|
usersId,
|
|
32
|
-
|
|
33
|
-
identifiers: {},
|
|
32
|
+
subscription: socket_types_1.SocketSubscriptionType.NOTIFICATION.WEB(),
|
|
34
33
|
data,
|
|
35
|
-
socketEmit: enum_1.SocketEmits.NOTIFICATION,
|
|
36
|
-
socketQueue,
|
|
37
34
|
});
|
|
38
35
|
}
|
|
39
|
-
async function publishSockets({ usersId,
|
|
36
|
+
async function publishSockets({ usersId, subscription, data, }) {
|
|
37
|
+
const { type: subscriptionType, identifiers, queue } = subscription;
|
|
40
38
|
const cacheKeys = usersId.map(userId => generateCacheKey(userId, subscriptionType, identifiers));
|
|
41
39
|
const recipients = await getInstanceSocketsMap(cacheKeys);
|
|
42
|
-
const cacheKeyToSockets = new Set(recipients.map(r => r.instanceId));
|
|
43
40
|
await Promise.all(recipients.map(({ instanceId, socketIds }) => {
|
|
44
41
|
const payload = {
|
|
45
42
|
data,
|
|
46
43
|
sockets: socketIds,
|
|
47
|
-
socketEmit,
|
|
44
|
+
socketEmit: subscriptionType,
|
|
48
45
|
};
|
|
49
|
-
const event = new SocketEmitEvent_1.SocketEmitEvent(
|
|
46
|
+
const event = new SocketEmitEvent_1.SocketEmitEvent(queue, instanceId, payload);
|
|
50
47
|
return (0, event_1.publishEvent)(event);
|
|
51
48
|
}));
|
|
52
|
-
return usersId.filter((_, idx) => !
|
|
49
|
+
return usersId.filter((_, idx) => !recipients.some(r => r.instanceId === cacheKeys[idx]));
|
|
53
50
|
}
|
|
54
51
|
function generateCacheKey(userId, subscriptionType, identifiers) {
|
|
55
52
|
const serializedIdentifiers = Object.entries(identifiers)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.utils.js","sourceRoot":"/","sources":["libraries/socket/socket.utils.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"socket.utils.js","sourceRoot":"/","sources":["libraries/socket/socket.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { publishEvent } from '../event';\nimport { createHash } from 'crypto';\nimport { SocketEmitEvent, SocketEventParams } from './SocketEmitEvent';\nimport { getLibraries } from '../../index';\nimport { SocketSubscription, SocketSubscriptionType } from './socket.types';\n\nexport interface InstanceSockets {\n\tinstanceId: string;\n\tsocketIds: string[];\n}\n\nexport async function getInstanceSocketsMap(cacheKeys: string[]): Promise<InstanceSockets[]> {\n\tconst instanceMap: Record<string, Set<string>> = {};\n\tconst redis = getLibraries().getRedisService();\n\n\tfor (const cacheKey of cacheKeys) {\n\t\tconst instanceIds = await redis.redisClient.smembers(`cacheKey:${cacheKey}:instances`);\n\t\tfor (const instanceId of instanceIds) {\n\t\t\tif (!instanceMap[instanceId]) instanceMap[instanceId] = new Set();\n\t\t\tconst socketIds = await redis.redisClient.smembers(\n\t\t\t\t`cacheKey:${cacheKey}:instance:${instanceId}:sockets`\n\t\t\t);\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\nexport async function publishSocketNotification({\n\tusersId,\n\tdata,\n}: {\n\tusersId: string[];\n\tdata: { title: string; message: string };\n}) {\n\tawait publishSockets({\n\t\tusersId,\n\t\tsubscription: SocketSubscriptionType.NOTIFICATION.WEB(),\n\t\tdata,\n\t});\n}\n\nexport async function publishSockets<TData>({\n\tusersId,\n\tsubscription,\n\tdata,\n}: {\n\tusersId: string[];\n\tsubscription: SocketSubscription;\n\tdata: TData;\n}): Promise<string[]> {\n\tconst { type: subscriptionType, identifiers, queue } = subscription;\n\n\tconst cacheKeys = usersId.map(userId => generateCacheKey(userId, subscriptionType, identifiers));\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\tsocketEmit: subscriptionType,\n\t\t\t};\n\t\t\tconst event = new SocketEmitEvent(queue, instanceId, payload);\n\t\t\treturn publishEvent(event);\n\t\t})\n\t);\n\n\treturn usersId.filter((_, idx) => !recipients.some(r => r.instanceId === cacheKeys[idx]));\n}\n\nexport function generateCacheKey<T extends SocketSubscription>(\n\tuserId: string | number,\n\tsubscriptionType: T['type'],\n\tidentifiers: T['identifiers']\n): string {\n\tconst serializedIdentifiers = Object.entries(identifiers)\n\t\t.sort(([keyA], [keyB]) => keyA.localeCompare(keyB))\n\t\t.map(([key, value]) => `${key}:${JSON.stringify(value)}`)\n\t\t.join('|');\n\n\tconst serialized = `userId:${userId}|subscriptionType:${subscriptionType}|${serializedIdentifiers}`;\n\treturn createHash('sha256').update(serialized).digest('hex');\n}\n"]}
|
package/dist/types/README.md
CHANGED
package/dist/types/package.json
CHANGED
|
@@ -744,18 +744,9 @@ export declare enum OtpMethodType {
|
|
|
744
744
|
WHATSAPP = "whatsapp"
|
|
745
745
|
}
|
|
746
746
|
export declare enum SocketServiceQueue {
|
|
747
|
-
CHAT = "chat.emit",
|
|
748
|
-
NOTIFICATION = "notification.emit",
|
|
749
|
-
ORDER = "order.emit"
|
|
750
|
-
}
|
|
751
|
-
export declare enum SocketSubscriptionType {
|
|
752
|
-
NOTIFICATION = "general",
|
|
753
|
-
ON_CHATROOM = "on_chatroom",
|
|
754
|
-
ON_CHATLIST = "on_chatlist"
|
|
755
|
-
}
|
|
756
|
-
export declare enum SocketEmits {
|
|
757
|
-
MESSAGE_RECEIVE = "message.receive",
|
|
758
|
-
NOTIFICATION = "notification"
|
|
747
|
+
CHAT = "socket.chat.emit",
|
|
748
|
+
NOTIFICATION = "socket.notification.emit",
|
|
749
|
+
ORDER = "socket.order.emit"
|
|
759
750
|
}
|
|
760
751
|
export declare enum DeviceType {
|
|
761
752
|
MOBILE = "mobile",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ServiceMarketingType = exports.MarketingType = exports.FavouriteType = exports.CouponExpirationReason = exports.CouponType = exports.BobType = exports.BobChannelType = exports.BobModel = exports.BobSettlementStatus = exports.BobSettlementType = exports.BobAccountType = exports.ZoneStatus = exports.FaqAccountType = exports.CounterType = exports.BannerUserType = exports.BannerLinkType = exports.BannerClickType = exports.VendorRole = exports.ShopRole = exports.OnlineStatus = exports.ShopOnlineStatus = exports.ChargeType = exports.ClickType = exports.NotificationAccountType = exports.DishCategory = exports.ProductDietaryType = exports.PriceOption = exports.ProductType = exports.CoreAuthIdentityType = exports.UserAppSectionItemType = exports.UserAppSectionType = exports.AdminLogsUpdatedFieldsType = exports.UpdatedField = exports.GeoLocationType = exports.RatingAccountType = exports.SubscriptionStatus = exports.SubscriptionPackage = exports.PaidCurrency = exports.PaymentStatus = exports.PaymentMethod = exports.ValueType = exports.HolidayWorkStatus = exports.WorkStatus = exports.WeekDay = exports.GlobalItemType = exports.AdjustmentStatus = exports.ItemType = exports.Status = exports.AccountType = exports.AgentLiveStatus = void 0;
|
|
4
4
|
exports.ServiceOrderPriority = exports.ProfessionalStatus = exports.Service = exports.ServiceCartStatus = exports.SocketEventType = exports.ChatroomType = exports.UserRef = exports.TicketStatus = exports.TicketType = exports.RewardedToTypeEnum = exports.ReplacementType = exports.ReplacementReason = exports.OrderCanceledBy = exports.LogUser = exports.PayoutStatus = exports.PayoutType = exports.AddRemoveCreditAccountType = exports.SettingsReasonStatus = exports.CancellationReasonTypeEnum = exports.SupportReasonTypeEnum = exports.PlusSettingsPackageType = exports.AddRemoveCreditSettlementType = exports.SettlementType = exports.MediaType = exports.WorkingHourSettingsType = exports.ZoneGeometryType = exports.RiderAssignmentStatus = exports.CourierServiceType = exports.TripLegStatus = exports.DeliveryStatus = exports.CourierOrderPaymentFrom = exports.ShopCourierOrderStatus = exports.ServiceOrderStatus = exports.CourierOrderStatus = exports.RegularOrderStatus = exports.OrderType = exports.Language = exports.OrderSize = exports.RiderBagSize = exports.RiderType = exports.ShiftType = exports.CreatedBy = exports.LiveStatus = exports.AreebaCardStatus = exports.CardUserType = exports.CardType = exports.PaymentPreference = exports.CartStatus = exports.AdminRole = exports.MarketingStatus = void 0;
|
|
5
|
-
exports.ServiceType = exports.ActionType = exports.DeviceType = exports.
|
|
5
|
+
exports.ServiceType = exports.ActionType = exports.DeviceType = exports.SocketServiceQueue = exports.OtpMethodType = exports.ReviewType = exports.FoodNutritionType = exports.AdjustmentReason = exports.FlagReasonType = exports.FlagType = exports.PromotionType = exports.ServiceOrderCanceledBy = exports.TRPCErrorEnum = exports.ShopFilterSortByEnum = exports.ProfessionalScheduleType = exports.ServiceOrderRecurrencePattern = exports.ProfessionalRecurrencePattern = void 0;
|
|
6
6
|
var AgentLiveStatus;
|
|
7
7
|
(function (AgentLiveStatus) {
|
|
8
8
|
AgentLiveStatus["ONLINE"] = "online";
|
|
@@ -863,21 +863,10 @@ var OtpMethodType;
|
|
|
863
863
|
})(OtpMethodType || (exports.OtpMethodType = OtpMethodType = {}));
|
|
864
864
|
var SocketServiceQueue;
|
|
865
865
|
(function (SocketServiceQueue) {
|
|
866
|
-
SocketServiceQueue["CHAT"] = "chat.emit";
|
|
867
|
-
SocketServiceQueue["NOTIFICATION"] = "notification.emit";
|
|
868
|
-
SocketServiceQueue["ORDER"] = "order.emit";
|
|
866
|
+
SocketServiceQueue["CHAT"] = "socket.chat.emit";
|
|
867
|
+
SocketServiceQueue["NOTIFICATION"] = "socket.notification.emit";
|
|
868
|
+
SocketServiceQueue["ORDER"] = "socket.order.emit";
|
|
869
869
|
})(SocketServiceQueue || (exports.SocketServiceQueue = SocketServiceQueue = {}));
|
|
870
|
-
var SocketSubscriptionType;
|
|
871
|
-
(function (SocketSubscriptionType) {
|
|
872
|
-
SocketSubscriptionType["NOTIFICATION"] = "general";
|
|
873
|
-
SocketSubscriptionType["ON_CHATROOM"] = "on_chatroom";
|
|
874
|
-
SocketSubscriptionType["ON_CHATLIST"] = "on_chatlist";
|
|
875
|
-
})(SocketSubscriptionType || (exports.SocketSubscriptionType = SocketSubscriptionType = {}));
|
|
876
|
-
var SocketEmits;
|
|
877
|
-
(function (SocketEmits) {
|
|
878
|
-
SocketEmits["MESSAGE_RECEIVE"] = "message.receive";
|
|
879
|
-
SocketEmits["NOTIFICATION"] = "notification";
|
|
880
|
-
})(SocketEmits || (exports.SocketEmits = SocketEmits = {}));
|
|
881
870
|
var DeviceType;
|
|
882
871
|
(function (DeviceType) {
|
|
883
872
|
DeviceType["MOBILE"] = "mobile";
|